- <?php
- namespace DcSiteBundle\Form;
- use CoreBundle\Entity\Dealer;
- use CoreBundle\Entity\Forms;
- use CoreBundle\Entity\Vehicles\Vehicle;
- use CoreBundle\Form\CoreFormsType;
- use DcSiteBundle\Form\Transformer\TestDriveDataFormTransformer;
- use Symfony\Bridge\Doctrine\Form\Type\EntityType;
- use Symfony\Component\Form\CallbackTransformer;
- use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
- use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
- use Symfony\Component\Form\Extension\Core\Type\HiddenType;
- use Symfony\Component\Form\Extension\Core\Type\TextType;
- use Symfony\Component\Form\FormBuilderInterface;
- use Symfony\Component\Form\FormEvents;
- use Symfony\Component\OptionsResolver\OptionsResolver;
- use Symfony\Contracts\Translation\TranslatorInterface;
- class TestDriveType extends CoreFormsType
- {
-     public function buildForm(FormBuilderInterface $builder, array $options)
-     {
-         parent::buildForm($builder,$options);
-         $Dealer = $options['dealer'];
-         $dealerId = (!is_null($Dealer))?$Dealer->getId() : null;
-         $isUsed = $options['is_used'];
-         $queryBuilder = $options['query_builder'];
-         /** @var TranslatorInterface $Translator */
-         $Translator = $options['translator'];
-         $withChild = $options['child'];
-         $widthTime = $options['widthTime'];
-         $communicationType = $options['communication'];
-         $builder->add('dealer', HiddenType::class, ['mapped' => false, 'data' => $dealerId]);
-         if($builder->getForm()->getData()->getVehicle()) {
-             $builder->add('vehicle', HiddenType::class, ['mapped' => false, 'data' => $builder->getForm()->getData()->getVehicle()->getId()]);
-         } else {
-             $builder->add('vehicle', HiddenType::class, ['mapped' => false]);
-         }
-         $builder->add('tdCars', TextType::class, ['mapped' => false, 'required' => false]);
-         $builder->add('route', HiddenType::class, ['mapped' => false]);
-         $builder->add('callback', HiddenType::class, ['mapped' => false]);
-         if($communicationType) {
-             $builder
-                 ->add('communication', ChoiceType::class, [
-                         'label' => $Translator->trans('form.communication',[],'dc_base'),
-                         'required' => true,
-                         'mapped' => false,
-                         'data' => 'phone',
-                         'choices' => array_flip(['phone' => 'Телефон', 'email' => 'E-mail', 'viber' => 'Viber']),
-                         'expanded' => true,
-                         'multiple' => false,
-                         'attr' => [
-                             'class' => 'js-td-communication checkbox__btn'
-                         ],
-                     ]
-                 );
-         }
-         if($withChild) {
-             $builder
-                 ->add('with_child', CheckboxType::class, [
-                         'label' => $Translator->trans('form.with_child',[],'dc_base'),
-                         'required' => false,
-                         'mapped' => false,
-                         'attr' => [
-                             'class' => 'js-td-child'
-                         ],
-                     ]
-                 );
-         }
-     }
-     public function configureOptions(OptionsResolver $resolver)
-     {
-         parent::configureOptions($resolver);
-         $resolver->setDefault('captcha_type', 'test_drive_form')
-             ->setDefault('is_used', false)
-             ->setDefault('query_builder', false)
-             ->setDefault('child', false)
-             ->setDefault('widthTime', true)
-             ->setDefault('communication', false)
-             ->setRequired('dealer')
-         ;
-     }
- }
-