<?php

namespace Lc\ShopBundle\Form\Backend\ReductionCart;

use Doctrine\ORM\EntityManagerInterface;

use Lc\ShopBundle\Context\ReductionCartInterface;
use Lc\ShopBundle\Context\ReductionCatalogInterface;
use Lc\ShopBundle\Context\UserInterface;
use Lc\ShopBundle\Repository\GroupUserRepository;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\OptionsResolver\OptionsResolver;

class UncombinableTypesType extends AbstractType
{
        protected $em;

        public function __construct(EntityManagerInterface $entityManager)
        {
                $this->em = $entityManager;
        }

        public function buildForm(FormBuilderInterface $builder, array $options)
        {
                $reductionCartRepo = $this->em->getRepository(ReductionCartInterface::class);
                $types = array();
                foreach ($reductionCartRepo->getValuesOfFieldType() as $type){
                        $types['field.ReductionCart.typeOptions.'.$type['type']] = $type['type'];
                }


                $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($types) {
                        $builder = $event->getForm()->getParent();

                        $builder->add('uncombinableTypes', ChoiceType::class, [
                                'choices'=> $types,
                                'translation_domain'=> 'lcshop',
                                'required' => false,
                                'expanded' => false,
                                'multiple' => true
                        ]);
                });
        }

        public function configureOptions(OptionsResolver $resolver)
        {
                /*$resolver->setDefaults([
                        'data_class' => $this->em->getClassMetadata(ReductionCatalogInterface::class)->getName(),
                ]);*/
        }
}
