<?php
namespace DcSiteBundle\Form;
use CoreBundle\Entity\Forms;
use CoreBundle\Entity\Vehicles\Vehicle;
use CoreBundle\Form\CoreFormsType;
use DcSiteBundle\Form\Transformer\TradeInDataFormTransformer;
use DcSiteBundle\Form\Type\GaClientIdType;
use Doctrine\ORM\EntityRepository;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Contracts\Translation\TranslatorInterface;
class TradeInType extends CoreFormsType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder,$options);
/** @var TranslatorInterface $Translator */
$Translator = $options['translator'];
$Dealer = $options['dealer'];
$builder
->add('model', EntityType::class, ['label' => false,
'class' => Vehicle::class,
'mapped' => false,
'query_builder' => fn(EntityRepository $repo) => $repo->createQueryBuilder('c')
->where('c.dealer = :dealer and c.state = :state')
->setParameters(['dealer' => $Dealer, 'state' => 1]),
'attr' => ['class' => 'js-trade-in-f-model', 'required' => false]]
)
->add('user_brand', TextType::class, ['mapped' => false,'label' => false, 'attr' => ['placeholder' => $Translator->trans('form.brand',[],'dc_base')]])
->add('user_model', TextType::class, ['mapped' => false,'label' => false, 'attr' => ['placeholder' => $Translator->trans('form.model',[],'dc_base')]])
->add('year', TextType::class, ['mapped' => false,'label' => false, 'attr' => ['placeholder' => $Translator->trans('form.year',[],'dc_base')]])
->add('drive_count', TextType::class, ['mapped' => false,'label' => false, 'attr' => ['placeholder' => $Translator->trans('form.drive_count',[],'dc_base')]])
->add('body', TextType::class, ['mapped' => false,'label' => false, 'attr' => ['placeholder' => $Translator->trans('form.body',[],'dc_base')], 'required' => false])
->add('color', TextType::class, ['mapped' => false,'label' => false, 'attr' => ['placeholder' => $Translator->trans('form.color',[],'dc_base')], 'required' => false])
->add('engine', TextType::class, ['mapped' => false,'label' => false, 'attr' => ['placeholder' => $Translator->trans('form.engine',[],'dc_base')], 'required' => false])
->add('volume', TextType::class, ['mapped' => false,'label' => false, 'attr' => ['placeholder' => $Translator->trans('form.volume',[],'dc_base')], 'required' => false])
->add('kpp', TextType::class, ['mapped' => false,'label' => false, 'attr' => ['placeholder' => $Translator->trans('form.kpp',[],'dc_base')], 'required' => false])
->add('drive_type', TextType::class, ['mapped' => false,'label' => false, 'attr' => ['placeholder' => $Translator->trans('form.drive_type',[],'dc_base')], 'required' => false])
->add('air', TextType::class, ['mapped' => false,'label' => false, 'attr' => ['placeholder' => $Translator->trans('form.air',[],'dc_base')], 'required' => false])
->add('salon', TextType::class, ['mapped' => false,'label' => false, 'attr' => ['placeholder' => $Translator->trans('form.salon',[],'dc_base')], 'required' => false])
->add('comment', TextareaType::class, ['mapped' => false,'label' => false, 'attr' => ['placeholder' => $Translator->trans('form.comment',[],'dc_base')], 'required' => false])
;
$builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event): void {
(new TradeInDataFormTransformer($event))->transform();
});
}
public function configureOptions(OptionsResolver $resolver)
{
parent::configureOptions($resolver);
$resolver->setDefault('captcha_type','trade_in_form')
->setRequired('dealer')
;
}
}