<?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');
}
}