<?php

namespace OfficeBrain\Bundle\RequestInfoBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Symfony\Component\Validator\Constraints as Assert;



class RequestInfoType extends AbstractType
{

	private $config;
	private $coreManager;
	private $options;
	private $state;
	private $userType;

	public function __construct($config=array(), $coreManager=null, $options=null) {
		$this->config = (isset ( $config )) ? $config : array ();
		$this->coreManager = $coreManager;
		$this->userType=$this->coreManager->getUserType();
		$this->options['distributor'] = (isset ( $options ['distributor'] )) ? $options ['distributor'] : array ();
		$this->state = array();
		$stateList = $this->coreManager->getLocateDistributorStateDataAPI();
		foreach($stateList as $key=>$value){
			$this->state[$value['key']] = $value['value'];
		}
	}

    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {

        $builder->add('note','textarea', array(
        		'required'=>true,'attr'=>array('placeholder'=>''),'constraints' => array(new Assert\NotBlank(array('message' => 'request_info.registered_user.note.not_blank')),
        )));

        $builder->add('product_id', 'hidden');
        $builder->add('erp_id', 'hidden');
		
        if(isset($this->config['preferred_distributor']) && $this->config['preferred_distributor']['status']==1 && in_array($this->userType, $this->config['preferred_distributor']['option']['user_type']) && $this->config['preferred_distributor']['option']['show'] == 1 && $this->config['preferred_distributor']['option']['option']['state']==1){
        	 $builder
	        	->add('state', 'choice', array(
	            				'required' => true,
	            				'empty_value' => 'request_info.select_state_label',
	            				'choices' => $this->state,
	        					'data'=>'',
	        					'constraints'=>array(new Assert\NotBlank(array('message' => 'request_info.select_state.not_blank')))
	            		));
        }elseif(isset($this->config['preferred_distributor']) && $this->config['preferred_distributor']['status']==1 && in_array($this->userType, $this->config['preferred_distributor']['option']['user_type']) &&  $this->config['preferred_distributor']['option']['show'] == 0){
            $builder->add('state', 'hidden',array('data'=>'0'));
        }

        if(isset($this->config['preferred_distributor']) && $this->config['preferred_distributor']['status']==1 && in_array($this->userType, $this->config['preferred_distributor']['option']['user_type']) && $this->config['preferred_distributor']['option']['show'] == 1 && $this->config['preferred_distributor']['option']['option']['distributor']==1){
        	 $builder
	        	->add('distributor', 'choice', array(
	            				'required' => true,
	            				'empty_value' => 'request_info.select_distributor_label',
	        					'choices' => $this->options['distributor'],
	        					'data'=>'',
	        					'constraints'=>array(new Assert\NotBlank(array('message' => 'request_info.select_distributor.not_blank')))
	            		));
        }elseif(isset($this->config['preferred_distributor']) && $this->config['preferred_distributor']['status']==1 && in_array($this->userType, $this->config['preferred_distributor']['option']['user_type']) && $this->config['preferred_distributor']['option']['show'] == 0){
            $builder->add('distributor', 'hidden',array('data'=>'1'));
        }
    }

    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'OfficeBrain\Bundle\RequestInfoBundle\Entity\RequestInfo'
        ));
    }

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