- <?php
- namespace DcSiteBundle\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;
- class CallMeType extends CoreFormsType
- {
-     public function buildForm(FormBuilderInterface $builder, array $options)
-     {
-         $isIncludeWhatsapp = $options['is_include_whatsapp'];
-         $isIncludeDealer = $options['is_include_dealer'];
-         unset($options['is_include_whatsapp'], $options['is_include_dealer']);
-         parent::buildForm($builder, $options);
-         $translator = $options['translator'];
-         $messageType = [
-             'call' => $translator->trans('form.call', [], 'dc_base'),
-             'viber' => 'Viber',
- //            'telegram' => 'Telegram',
-         ];
-         if ($isIncludeWhatsapp) {
-             $messageType['whatsapp'] = 'WhatsApp';
-         }
-         $builder->add('message_type', ChoiceType::class, [
-             'choices' => array_flip($messageType),
-             'required' => true,
-             'mapped' => false,
-             'label' => false,
-             'expanded' => true,
-             'multiple' => false,
-             'data' => 'call',
-         ]);
-         if ($isIncludeDealer) {
-             $builder->add('dealer', EntityType::class, [
-                 'class' => Dealer::class,
-                 'choice_label' => fn($dealer) => $dealer->getNameByLocale($translator->getLocale()),
-                 'label' => false,
-                 'required' => false,
-                 'attr' => [
-                     'required' => 'required' // додає required на фронтенді
-                 ],
-                 'query_builder' => fn(EntityRepository $er) => $er->createQueryBuilder('d')
-                     ->where('d.id NOT IN (:dealerIds)')
-                     ->setParameter('dealerIds', [5, 7, 16, 36, 39, 40, 41, 44]),
-                 'placeholder' => $translator->trans('car_page.dealer_center', [], 'dc_base'),
-             ]);
-         }
-     }
-     /**
-      * @param OptionsResolver $resolver
-      */
-     public function configureOptions(OptionsResolver $resolver)
-     {
-         parent::configureOptions($resolver);
-         $resolver->setDefault('captcha_type', 'call_me_form');
-         $resolver
-             ->setDefined('is_include_whatsapp')
-             ->setDefined('is_include_dealer');
-     }
- }
-