<?php

namespace OfficeBrain\Bundle\EmailBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Symfony\Component\Translation\Translator;

class EmailEventMasterType extends AbstractType
{
    /**
     *
     * @param $parentEdit
     */
    public function __construct($parentEdit = '')
    {        
        $this->parentEdit = $parentEdit;     
    }
    
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name', 'text', array( 'label' => 'email.event.form.name'))
            ->add('description', 'textarea', array( 'label' => 'email.event.form.description'))
            ->add('eventKey', 'text', array( 'label' => 'email.event.form.event_key'))
            ->add('parentId', 'entity', array(
                    'class'=>'OfficeBrain\Bundle\EmailBundle\Entity\EmailEventMaster',
                    'query_builder'=> function (\OfficeBrain\Bundle\EmailBundle\Entity\EmailEventMasterRepository $repository) {
                                    return $repository->createQueryBuilder('s')->where('s.deletedAt is NULL and s.parentId is NULL')->orderBy('s.id', 'ASC');},
                    'property'=>'name',
                    'placeholder' => 'Select Parent Event',
                    'multiple'=>false,
                    'required'=>false,
                    'disabled' => (!empty($this->parentEdit))?'disabled':''
                    )
                )
            ->add('priority', 'choice', array('choices'  => array('1' => 'High', '2' => 'Medium', '3' => 'Low'), 'label' => 'email.event.form.priority'))
            ->add('isOptional', 'checkbox', array('label' => 'email.event.form.isoptional'))
            ->add('subject', 'text', array( 'label' => 'email.event.form.subject'))
            ->add('template', 'entity', array(
                    'class'=>'OfficeBrain\Bundle\EmailBundle\Entity\EmailTemplateMaster',
                    'query_builder'=> function (\OfficeBrain\Bundle\EmailBundle\Entity\EmailTemplateMasterRepository $repository) {
                                    return $repository->createQueryBuilder('s')->where('s.deletedAt is NULL')->orderBy('s.id', 'ASC');},
                    'property'=>'name',
                    'placeholder' => 'Select Template',
                    'multiple'=>false,
                    'required'=>false
                    )
                )
            ->add('sendtoUser', 'checkbox', array('label' => 'email.event.form.sendtouser'))
            ->add('sendtoAdmin', 'checkbox', array('label' => 'email.event.form.sendtoadmin'))
            ->add('toEmail', 'text', array( 'label' => 'email.event.form.toemail'))
            ->add('fromName', 'text', array( 'label' => 'email.event.form.fromname'))
            ->add('fromEmail', 'text', array( 'label' => 'email.event.form.fromemail'))
            ->add('replyToEmail', 'text', array( 'label' => 'email.event.form.replytoemail'))
            ->add('ccEmail', 'text', array( 'label' => 'email.event.form.ccemail'))
            ->add('bccEmail', 'text', array( 'label' => 'email.event.form.bccemail'))
            ->add('status', 'choice', array('choices'  => array('0' => 'InActive', '1' => 'Active'), 'label' => 'email.event.form.status'))
        ;
    }
    
    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'OfficeBrain\Bundle\EmailBundle\Entity\EmailEventMaster'
        ));
    }

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