<?php
 
 
 
namespace PortalBundle\Form;
 
 
use CoreBundle\Entity\Dealer;
 
use CoreBundle\Form\CoreFormsType;
 
use Doctrine\ORM\EntityRepository;
 
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
 
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
 
use Symfony\Component\Form\FormBuilderInterface;
 
use Symfony\Component\OptionsResolver\OptionsResolver;
 
use Symfony\Contracts\Translation\TranslatorInterface;
 
 
class SupportType extends CoreFormsType
 
{
 
    public function buildForm(FormBuilderInterface $builder, array $options)
 
    {
 
        /** @var TranslatorInterface $translator */
 
        $translator = $options['translator'];
 
        $builder
 
            ->add('support_type', ChoiceType::class, [
 
                'choices' => array_flip(\PortalBundle\Model\Form\SupportType::getTypes($options['locale'])),
 
                'label' => $translator->trans('base.support_type', [], 'portal_base'),
 
                'mapped' => false,
 
            ])
 
            ->add('dealer', EntityType::class, [
 
                'class' => Dealer::class,
 
                'choice_label' => fn($dealer) => $dealer->getNameByLocale($translator->getLocale()),
 
                'label' => $translator->trans('base.dc', [], 'portal_base'),
 
                'required'   => true,
 
                'placeholder' => 'Не вибраний',
 
                'query_builder' => function (EntityRepository $er) use ($options) {
 
                    $qb = $er->createQueryBuilder('d');
 
 
                    if ($options['filterPalmira']) {
 
                        return $qb->where('d.id != :toyotaPalmiraId')
 
                            ->setParameter('toyotaPalmiraId', 7);
 
                    }
 
 
                    return $qb;
 
                }
 
            ])
 
        ;
 
        parent::buildForm($builder, $options);
 
    }
 
 
    public function configureOptions(OptionsResolver $resolver)
 
    {
 
        parent::configureOptions($resolver);
 
        $resolver
 
            ->setDefault('captcha_type', 'support_form')
 
            ->setDefined('locale')
 
            ->setDefault('filterPalmira', false)
 
        ;
 
    }
 
}