<?php

namespace OfficeBrain\CustomBundle\CmsBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Validator\Constraints as Assert;

class InvoiceRequestType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('senderName')
            ->add('poNumber')
            ->add('companyName','text', array(
            		'required' => false,
            		'constraints'=>array( new Assert\NotBlank(array('message'=>'invoice_request.company_name.not_blank')))
            ))
            ->add('fax')
            ->add('email')
        ;
            
            
		$builder->addEventListener(
            		FormEvents::PRE_SUBMIT, function (FormEvent $event){
            			$form = $event->getForm();
            			$data = $event->getData();
            			
            			if ((isset($data['fax']) && isset($data['email']) && $data['fax'] == '' && $data['email'] == '')) {
            				$form->add('email', 'text',array('constraints' => new NotBlank(array('message' => 'invoice_request.email_or_fax.not_blank')), ));
            			}
            			
            			if (isset($data['email']) && $data['email'] != '') {
            				$form->add('email', 'text',array('constraints' => new Email(array('message' => 'invoice_request.email_or_fax.valid','checkMX' => true)), ));
            			}
            		}
            		);
    }
    
    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'OfficeBrain\CustomBundle\CmsBundle\Entity\InvoiceRequest'
        ));
    }

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