<?php

namespace OfficeBrain\Bundle\RewardReferralBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;

class ReferralMasterType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('id', 'hidden')
            ->add('referralRecipient', 'collection', array(
                    'type' => new ReferralRecipientType(),
                    'allow_add' => true,
                    'allow_delete' => true,
                    'by_reference' => false,
                    //'prototype_name' => "email",
                    'delete_empty' => true,
                    'options' => array(
                            'label' => false
                        )
                ))

        ;
        
        $builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) {
            $referralMaster = $event->getData();
            //$form = $event->getForm();
            
            foreach ($referralMaster->getReferralRecipient() as $referralRecipient) {
                if (!$referralRecipient->getEmail()) {
                    $referralMaster->removeReferralRecipient($referralRecipient);
                }
            }
            return $referralMaster;
        });
    }
    
    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'OfficeBrain\Bundle\RewardReferralBundle\Entity\ReferralMaster'
        ));
    }

    /**
     * @return string
     */
    public function getName()
    {
        return 'officebrain_bundle_rewardreferralbundle_referralmaster';
    }
}
