<?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 EmailTemplateMasterType extends AbstractType
{
	private $projectSettings;

	public function __construct($projectSettings)
	{
		$this->projectSettings = $projectSettings;
	}

    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name', 'text', array( 'label' => 'email.template.form.name'))
            ->add('description', 'textarea', array( 'label' => 'email.template.form.description'))
            ->add('header', 'entity', array(
                    'class'=>'OfficeBrain\Bundle\EmailBundle\Entity\EmailTemplateHeaderMaster',
                    'query_builder'=> function (\OfficeBrain\Bundle\EmailBundle\Entity\EmailTemplateHeaderMasterRepository $repository) {
                        return $repository->createQueryBuilder('s')->where('s.deletedAt is NULL AND s.instanceId = :instanceId')->setParameter(':instanceId', $this->projectSettings['instance_id'])->orderBy('s.id', 'ASC');},
                        'property'=>'name',
                        'placeholder' => 'Select Header',
                        'multiple'=>false,
                        'required'=>false
            )
            )
            ->add('template', 'entity', array(
                    'class' => 'OfficeBrainEmailBundle:EmailPredefinedTemplate',
                    'label' => 'email.template.form.predefined_template',
                    'property' => 'name',
                    'data' => 'Blank Template',
            		'placeholder' => 'Select Predefined Template',
                    'expanded' => false,
                    'multiple' => false,
                    'required' => false,
                    'mapped' => false
                ))
            ->add('content', 'collection', array('type' => new EmailTemplateLanguageType(), 'cascade_validation' => true))
            ->add('isDefault', 'hidden', array( 'label' => 'email.template.form.setdefault'))
            ->add('status', 'choice', array('choices'  => array('0' => 'InActive', '1' => 'Active'), 'label' => 'email.event.form.status'))
        ;
           if($options['data']->getId()){
               $builder->remove('template'); 
            }                 
    }
    
    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'OfficeBrain\Bundle\EmailBundle\Entity\EmailTemplateMaster', 'cascade_validation' => true
        ));
    }

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