<?php

namespace OfficeBrain\Bundle\BannerBundle\Form;

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

/**
 *
 * @author OfficeBrain 4571 <info@officebrain.com>
 *
 * Decsription: Banner Mster Type Form
 *
 */
class BannerMasterType extends AbstractType
{
    protected $searchApiManager;
    protected $culture;
    protected $language;
    protected $finalArr;
    
    /**
     * @author Employee Id: 4571
     *
     * Description : This function is used to set member variables default value
     *
     * @param 1: $searchApiManager
     * @param 2: $locale
     *  @param 2: $language
     *
     * @return: NULL
     *
     * @throws Exception: Null
     */
    public function __construct($searchApiManager, $locale, $language)
    {
        $this->searchApiManager = $searchApiManager;
        $this->culture =  $locale;
        $this->language = $language;
        if (isset($this->culture) && $this->culture != "") {
            list($this->languageCode, $this->countryCode) = explode("_", $this->culture);
        }
    }
    
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('bannerTypeName', 'text', array('label' => 'bannertype.header.form.banner_type_name'))
            ->add('bannerCategory', 'choice', array(
                //'choices'  => array('Category'=>'bannertype.header.form.banner_category.category','CategoryList'=>'bannertype.header.form.banner_category.category_list', 'Page'=>'bannertype.header.form.banner_category.page', 'Search' =>'bannertype.header.form.banner_category.search', 'Home'=>'bannertype.header.form.banner_category.home'),
            		'choices'  => array('Motivating_Ideas'=>'Motivating Ideas','Home_small'=>'bannertype.header.form.banner_category.home_small','Home'=>'bannertype.header.form.banner_category.home', 'SearchList' =>'Search List', 'Category'=>'Category & Subcategory','Page'=>'Cms Page'),
                    'label' => 'bannertype.header.form.banner_category.label',
            		'placeholder' => 'bannertype.header.form.banner_category.placeholder'
            ))
            ->add('slug', 'text', array( 'label' => 'bannertype.header.form.page'))
            ->add('keywords', 'textarea', array( 'label' => 'bannertype.header.form.search'))
            ->add('categoryId', 'choice', array('choices' => $this->getCategorySubCategoryList(), 'label' => 'bannertype.header.form.category'))
            
            //->add('whereToShow', 'choice', array(
            //        'choices'  => array('top'=>'top', 'right' =>'right', 'left'=>'left', 'bottom'=>'bottom'),
             //       'label' => 'bannertype.header.form.where_to_show'
              //    ))
            //->add('height', 'text', array( 'label' => 'bannertype.header.form.height'))
            //->add('width', 'text', array( 'label' => 'bannertype.header.form.width'))
            ->add('bannerDimensions', 'choice', array(
            	'choices'  => array('180x180'=>'Home page small banner','960x370'=>'bannertype.header.form.banner_dimensions.960_370', 'full'=>'bannertype.header.form.banner_dimensions.full'),
            	'label' => 'bannertype.header.form.banner_dimensions.label',
            	'placeholder' => 'bannertype.header.form.banner_dimensions.placeholder',
            ))
            
            //->add('imageSize', 'text', array( 'label' => 'bannertype.header.form.size'))
            ->add('status', 'choice', array(
				'choices'  => array('1'=>'bannertype.banner.list.active', '0' =>'bannertype.banner.list.blocked'),
                'label' => 'bannertype.header.form.status'
            ));
            /* ->add('save', 'submit', array(
                'attr' => array('class' => 'save btn btn-default'),
            )); */
    }
    
    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'OfficeBrain\Bundle\BannerBundle\Entity\BannerMaster'
        ));
    }

    /**
     * @return string
     */
    public function getName()
    {
        return 'officebrain_bundle_bannerbundle_bannermaster';
    }
    
    /**
     * @author Employee Id: 4571
     *
     * Description : This function fetches all the category and sub categories list
     *
     **/
    public function getCategorySubCategoryList()
    {
        $this->finalArr = array();
        
        $categoryAndSubCategoryList = array();
        $categoryListArray = $this->searchApiManager->getCategorySubCategoryList();
        $this->getAllCategoryInOneLevel($categoryListArray);

        return $this->finalArr;
    }
    
    private function getAllCategoryInOneLevel($categoryListArray)
    {
        foreach ($categoryListArray as $key => $val) {
            if (isset($val['child'])) {
                $this->finalArr[$val['pms_id']] = $val['cat_name'];
                //$this->finalArr[$val['pms_id']]['name'] = $val['cat_name'];
                $this->getAllCategoryInOneLevel($val['child']);
            } else {
                $this->finalArr[$val['pms_id']] = $val['cat_name'];
                //$this->finalArr[$val['pms_id']]['name'] = $val['cat_name'];
            }
        }
        return true;
    }
}
