- <?php
- 
- namespace CoreBundle\Component;
- 
- 
- use CoreBundle\Entity\ViDiDepartment;
- use ImporterBundle\Form\OrderType;
- use ImporterBundle\Form\InsuranceType;
- use Doctrine\ORM\NonUniqueResultException;
- use CoreBundle\Entity\Dealer;
- use CoreBundle\Entity\Forms;
- use CoreBundle\Entity\User;
- use CoreBundle\Entity\Vehicles\InStock;
- use CoreBundle\Entity\Vehicles\Vehicle;
- use CoreBundle\Form\CallOrderType;
- use CoreBundle\Form\FeedbackQuestionType;
- use CoreBundle\Form\FeedbackType;
- use DcSiteBundle\Entity\Vacancy;
- use DcSiteBundle\Entity\VacancyForm;
- use DcSiteBundle\Form\BuyInStockType;
- use DcSiteBundle\Form\BuyPartsType;
- use DcSiteBundle\Form\BuySparePartsType;
- use DcSiteBundle\Form\BuyType;
- use DcSiteBundle\Form\CallMeType;
- use DcSiteBundle\Form\CallMeWithDealersType;
- use DcSiteBundle\Form\CommissionTechnologyType;
- use DcSiteBundle\Form\CorpSaleType;
- use DcSiteBundle\Form\CreditType;
- use DcSiteBundle\Form\ExtendedWarrantyType;
- use DcSiteBundle\Form\FindPartType;
- use DcSiteBundle\Form\InsuranceExtendType;
- use DcSiteBundle\Form\LeasingType;
- use DcSiteBundle\Form\MotoTestDriveType;
- use DcSiteBundle\Form\OilTOType;
- use DcSiteBundle\Form\OnlineServiceRegistrationType;
- use DcSiteBundle\Form\OrderGoodsType;
- use DcSiteBundle\Form\RentType;
- use DcSiteBundle\Form\RepairPhotoType;
- use DcSiteBundle\Form\SaveDesignType;
- use DcSiteBundle\Form\SendQuestionType;
- use DcSiteBundle\Form\ServiceCampaingCarType;
- use DcSiteBundle\Form\ServiceConsultType;
- use DcSiteBundle\Form\ServicesOrderType;
- use DcSiteBundle\Form\ServiceType;
- use DcSiteBundle\Form\TestDriveType;
- use DcSiteBundle\Form\TiresConfiguratorType;
- use DcSiteBundle\Form\TiresHotelType;
- use DcSiteBundle\Form\TradeInType;
- use DcSiteBundle\Form\UnicommerceFleetUpdateType;
- use DcSiteBundle\Form\VacancyType;
- use DcSiteBundle\Form\WaterTestDriveType;
- use DcSiteBundle\Form\WithoutPayOrderType;
- use Doctrine\ORM\EntityManagerInterface;
- use ImporterBundle\Form\OrderVehicleType;
- use ImporterBundle\Form\SparePartsType;
- use InsuranceBundle\Form\OrderInsuranceType;
- use PortalBundle\Form\SupportType;
- use Symfony\Component\Form\FormFactory;
- use Symfony\Component\Form\FormInterface;
- use Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage;
- use Symfony\Contracts\Translation\TranslatorInterface;
- 
- /**
-  * Class CoreFormFactory
-  * @package CoreBundle\Component
-  */
- class CoreFormFactory
- {
-     /**
-      * @var TranslatorInterface
-      */
-     private TranslatorInterface $translator;
- 
-     private $coreFactory;
- 
-     /**
-      * @var UsageTrackingTokenStorage
-      */
-     private $tokenStorage;
- 
-     /**
-      * @var EntityManagerInterface
-      */
-     private $em;
- 
-     public function __construct(TranslatorInterface $translator, FormFactory $coreFactory,
-                                 EntityManagerInterface $em, UsageTrackingTokenStorage $ts)
-     {
-         $this->translator = $translator;
-         $this->tokenStorage = $ts;
-         $this->em = $em;
-         $this->coreFactory = $coreFactory;
-     }
- 
-     private function setUserData($data = null)
-     {
-         if (!$data) {
-             $data = new Forms();
-         }
-         $Token = $this->tokenStorage->getToken();
- 
-         if (!$Token) {
-             return $data;
-         }
- 
-         $User = $Token->getUser();
-         if (!($User instanceof User)) {
-             return $data;
-         }
-         $data->setName($User->getName());
-         $data->setPhone($User->getPhone());
-         $data->setEmail($User->getEmail());
-         return $data;
-     }
- 
-     /**
-      * @param Dealer $dealer
-      * @param Forms $data
-      * @param array $options
-      * @param bool $byOurVehicles
-      * @return FormInterface
-      */
-     public function testDriveForm(Dealer $dealer = null, Forms $data = null, $options = [], $byOurVehicles = false)
-     {
-         if (!isset($options['query_builder'])) {
-             if ($byOurVehicles) {
-                 $queryBuilder = $this->em->getRepository(Vehicle::class)->createQueryBuilder('v')
-                     ->where('v.state = 1')
-                     ->andWhere('v.test_drive = 1');
-             } else {
-                 $queryBuilder = $this->em->getRepository(Vehicle::class)->createQueryBuilder('v')
-                     ->join('v.model', 'm')
-                     ->join('m.testdrive', 't')
-                     ->where('v.state = 1')
-                     ->andWhere('t.state = 1')
-                     ->groupBy('v.id');
-             }
-             if ($dealer) {
-                 $queryBuilder->andWhere('v.dealer = :dealer')
-                     ->setParameter('dealer', $dealer);
-             }
-             $options['query_builder'] = $queryBuilder;
-         }
- 
-         $data = $this->setUserData($data);
-         $options = array_merge($options, [
-             'dealer' => $dealer,
-             'translator' => $this->translator,
-             'ga_events' => [
-                 'event_category' => 'test-drive',
-                 'event_label' => 'test-drive',
-             ]
-         ]);
-         return $this->coreFactory->create(TestDriveType::class, $data, $options);
-     }
- 
-     /**
-      * @param Dealer $dealer
-      * @param Forms $data
-      * @return FormInterface
-      */
-     public function feedbackForm(Forms $data = null)
-     {
-         $data = $this->setUserData($data);
- 
-         return $this->coreFactory->create(FeedbackType::class, $data, [
-             'translator' => $this->translator,
-         ]);
-     }
- 
-     /**
-      * @param Forms|null $data
-      * @param bool $communication
-      * @param null $defaultType
-      * @param null $fullForm
-      * @param bool $privacyUrl
-      * @return FormInterface
-      */
-     public function serviceForm(Forms $data = null, $communication = false, $defaultType = null, $fullForm = null, $privacyUrl = false)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(ServiceType::class, $data, [
-             'translator' => $this->translator,
-             'defaultType' => $defaultType,
-             'communication' => $communication,
-             'fullForm' => $fullForm,
-             'privacyUrl' => $privacyUrl,
-             'ga_events' => [
-                 'event_category' => 'sto-all',
-                 'event_label' => 'sto',
-             ]
- 
-         ]);
-     }
- 
-     /**
-      * @param Forms $data
-      * @param Vehicle $car
-      * @return FormInterface
-      */
-     public function buyForm(Forms $data = null, $vehicle = null, $variationId = null, $dealer = null, $usedCar = false, $inStockCar = false, $price = 0)
-     {
-         $data = $this->setUserData($data);
-         $queryBuilder = null;
-         /** @var Vehicle $vehicle */
-         if ($vehicle instanceof Vehicle) {
-             $data->setVehicle($vehicle);
-             $queryBuilder = $this->em->getRepository(Vehicle::class)->createQueryBuilder('v')
-                 ->where('v.id = :vehicle')
-                 ->setParameter('vehicle', $vehicle);
-         } elseif ($dealer) {
-             $queryBuilder = $this->em->getRepository(Vehicle::class)->createQueryBuilder('v')
-                 ->where('v.dealer = :dealer')
-                 ->setParameter('dealer', $dealer);
-         }
- 
-         $eventCategory = 'car-order';
-         $eventLabel = 'order-car';
-         $fbqContentName = 'Buy_Automobili';
- 
- 
-         if ($vehicle && $vehicle->getVehicleType() == 4) {
-             $eventCategory = 'moto';
-             $eventLabel = 'order-moto';
-         }
- 
-         if ($usedCar) {
-             $eventLabel = 'order-used-car-stock';
-             $fbqContentName = 'Buy_used';
-         }
- 
-         if ($inStockCar) {
-             $eventLabel = 'order-car-stock';
-             $fbqContentName = 'Buy_InStock';
-         }
- 
-         return $this->coreFactory->create(BuyType::class, $data, [
-             'translator' => $this->translator,
-             'variationId' => $variationId,
-             'query_builder' => $queryBuilder,
-             'ga_events' => [
-                 'event_category' => $eventCategory,
-                 'event_label' => $eventLabel,
-             ],
-             'fbq_track' => [
-                 'content_name' => $fbqContentName,
-                 'value' => $price,
-                 'model' => $vehicle ? $vehicle->getModel()->getTitle() : null,
-             ],
-         ]);
-     }
- 
-     public function preorderForm(Forms $data = null, $vehicle = null, $variationId = null, $dealer = null)
-     {
-         $data = $this->setUserData($data);
-         $queryBuilder = null;
-         if ($vehicle instanceof Vehicle) {
-             $data->setVehicle($vehicle);
-             $queryBuilder = $this->em->getRepository(Vehicle::class)->createQueryBuilder('v')
-                 ->where('v.id = :vehicle')
-                 ->setParameter('vehicle', $vehicle);
-         } elseif ($dealer) {
-             $queryBuilder = $this->em->getRepository(Vehicle::class)->createQueryBuilder('v')
-                 ->where('v.dealer = :dealer')
-                 ->setParameter('dealer', $dealer);
-         }
-         return $this->coreFactory->create(BuyType::class, $data, [
-             'translator' => $this->translator,
-             'variationId' => $variationId,
-             'query_builder' => $queryBuilder,
-             'ga_events' => [
-                 'event_category' => 'car-order',
-                 'event_label' => 'order-car',
-             ]
-         ]);
-     }
- 
-     /**
-      * @param Forms $data
-      * @param InStock $car
-      * @return FormInterface
-      */
-     public function buyInStockForm(Forms $data = null, InStock $car = null)
-     {
-         $data = $this->setUserData($data);
-         $isMoto = false;
- 
-         if ($car) {
-             $isMoto = $car->getVehicleItem()->getVehicle()->getVehicleType() == 4 ? true : false;
-             $data->setVehicleInStock($car);
-         }
- 
-         return $this->coreFactory->create(BuyInStockType::class, $data, [
-             'translator' => $this->translator,
-             'car' => $car,
-             'ga_events' => [
-                 'event_category' => $isMoto ? 'moto' : 'car-order',
-                 'event_label' => $isMoto ? 'order-moto' : 'order-car-stock',
-             ],
-             'fbq_track' => [
-                 'content_name' => 'Buy_InStock',
-                 'value' => $car ? $car->getVehicleItem()->getPrice() : 0,
-                 'model' => $car ? $car->getVehicleItem()->getVehicle()->getModel()->getTitle() : null,
-             ],
-         ]);
-     }
- 
-     /**
-      * @param Forms|null $datak
-      * @param Dealer|null $dealer
-      * @return FormInterface
-      * @throws NonUniqueResultException
-      */
-     public function orderCallForm(Forms $data = null, Dealer $dealer = null, $departmentType = null, $withoutEmail = false, $locale = 'ua')
-     {
-         $data = $this->setUserData($data);
-         if ($departmentType && $dealer) {
-             $department = $this->em->getRepository(ViDiDepartment::class)->getByType($departmentType, $dealer);
-             $data->setDepartment($department);
-         }
-         return $this->coreFactory->create(CallOrderType::class, $data, [
-             'translator' => $this->translator,
-             'dealer' => $dealer,
-             'locale' => $locale,
-             'without_email' => $withoutEmail,
-             'ga_events' => [
-                 'event_category' => 'call-question',
-                 'event_label' => 'call-back',
-             ]
-         ]);
-     }
- 
-     public function extendedWarrantyForm(Forms $data = null, Dealer $dealer = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(ExtendedWarrantyType::class, $data, [
-             'translator' => $this->translator,
-             'dealer' => $dealer,
-         ]);
-     }
- 
-     /**
-      * @param $question
-      * @param null $departmentType
-      * @param Forms $data
-      * @param Dealer|null $dealer
-      * @param bool $communication
-      * @return FormInterface
-      * @throws NonUniqueResultException
-      */
-     public function fbDefQuestionForm($question, $departmentType = null, Forms $data = null, Dealer $dealer = null, $communication = false, $gaEvents = null)
-     {
-         $data = $this->setUserData($data);
-         if ($departmentType) {
-             $department = $this->em->getRepository(ViDiDepartment::class)->getByType($departmentType, $dealer);
-             $data->setDepartment($department);
-         }
-         $events = $gaEvents ?: [
-             'event_category' => 'call-question',
-             'event_label' => 'ask-question',
-         ];
-         return $this->coreFactory->create(FeedbackQuestionType::class, $data, [
-             'default_question' => $question,
-             'departmentType' => $departmentType,
-             'translator' => $this->translator,
-             'dealer' => $dealer,
-             'communication' => $communication,
-             'ga_events' => $events
-         ]);
-     }
- 
- 
-     /**
-      * @param Forms $data
-      * @param Dealer|null $dealer
-      * @param bool $communication
-      * @return FormInterface
-      */
-     public function feedbackQuestionForm(Forms $data = null, Dealer $dealer = null, $communication = false, $locale = 'ua')
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(FeedbackQuestionType::class, $data, [
-             'translator' => $this->translator,
-             'dealer' => $dealer,
-             'locale' => $locale,
-             'communication' => $communication,
-             'ga_events' => [
-                 'event_category' => 'call-question',
-                 'event_label' => 'ask-question',
-             ]
-         ]);
-     }
- 
- 
-     /**
-      * @param Dealer $dealer
-      * @param Forms $data
-      * @return FormInterface
-      */
-     public function creditForm(Dealer $dealer = null, Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(CreditType::class, $data, [
-             'dealer' => $dealer,
-             'translator' => $this->translator,
-         ]);
-     }
- 
-     /**
-      * @param Dealer $dealer
-      * @param Forms $data
-      * @return FormInterface
-      */
-     public function leasingForm(Dealer $dealer = null, Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(LeasingType::class, $data, [
-             'dealer' => $dealer,
-             'translator' => $this->translator,
-         ]);
-     }
- 
-     public function unicommerceFleetUpdate(Dealer $dealer = null, Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(UnicommerceFleetUpdateType::class, $data, [
-             'dealer' => $dealer,
-             'translator' => $this->translator,
-         ]);
-     }
- 
-     /**
-      * @param Dealer $dealer
-      * @param Forms $data
-      * @return FormInterface
-      */
-     public function tradeInFrom(Dealer $dealer, Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(TradeInType::class, $data, [
-             'dealer' => $dealer,
-             'translator' => $this->translator
-         ]);
-     }
- 
-     /**
-      * @param Forms $data
-      * @return FormInterface
-      */
-     public function orderMandatoryForm(Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(OrderInsuranceType::class, $data, [
-             'translator' => $this->translator,
-             'orderType' => OrderInsuranceType::MANDATORY_ORDER_INSURANCE,
-         ]);
-     }
- 
-     /**
-      * @param Forms $data
-      * @return FormInterface
-      */
-     public function orderCascoForm(Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(OrderInsuranceType::class, $data, [
-             'translator' => $this->translator,
-             'orderType' => OrderInsuranceType::CASCO_ORDER_INSURANCE,
-         ]);
-     }
- 
-     /**
-      * @param Forms $data
-      * @return FormInterface
-      */
-     public function orderHomeInsuranceForm(Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(OrderInsuranceType::class, $data, [
-             'translator' => $this->translator,
-             'orderType' => OrderInsuranceType::HOME_INSURANCE,
-         ]);
-     }
- 
-     /**
-      * @param Forms $data
-      * @return FormInterface
-      */
-     public function orderVoluntaryForm(Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(OrderInsuranceType::class, $data, [
-             'translator' => $this->translator,
-             'orderType' => OrderInsuranceType::VOLUNTARY_ORDER_INSURANCE,
-         ]);
-     }
- 
-     /**
-      * @param Forms $data
-      * @return FormInterface
-      */
-     public function orderCivilianForm(Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(OrderInsuranceType::class, $data, [
-             'translator' => $this->translator,
-             'orderType' => OrderInsuranceType::REGISTRATION_AUTO_CIVILIAN,
-         ]);
-     }
- 
-     /**
-      * @param Dealer $dealer
-      * @param Forms $data
-      * @return FormInterface
-      */
-     public function buyPartsForm(Dealer $dealer = null, Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(BuyPartsType::class, $data, [
-             'translator' => $this->translator,
-             'dealer' => $dealer,
-             'ga_events' => [
-                 'event_category' => 'order-accessory',
-                 'event_label' => 'order-accessory',
-             ]
-         ]);
-     }
- 
- 
-     /**
-      * @param Dealer $dealer
-      * @param Forms $data
-      * @param string $locale
-      * @return FormInterface
-      */
-     public function corpSalesForm(Dealer $dealer = null, $locale = null, Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(CorpSaleType::class, $data, [
-             'translator' => $this->translator,
-             'locale' => $locale,
-             'dealer' => $dealer,
-             'ga_events' => [
-                 'event_category' => 'corporate',
-                 'event_label' => 'corporate',
-             ],
-         ]);
-     }
- 
-     /**
-      * @param Dealer $dealer
-      * @param Vacancy $vacancy
-      * @param VacancyForm $data
-      * @return FormInterface
-      */
-     public function vacancyForm(Dealer $dealer = null, Vacancy $vacancy = null, VacancyForm $data = null)
-     {
-         return $this->coreFactory->create(VacancyType::class, $data, [
-             'translator' => $this->translator,
-             'vacancy' => $vacancy,
-             'dealer' => $dealer,
-         ]);
-     }
- 
-     /**
-      * @param null $servicesType
-      * @param null $locale
-      * @param Forms|null $data
-      * @return FormInterface
-      */
-     public function servicesOrderForm($servicesType = null, $locale = null, $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(ServicesOrderType::class, $data, [
-             'servicesType' => $servicesType,
-             'locale' => $locale,
-             'translator' => $this->translator,
-             'ga_events' => [
-                 'event_category' => 'call-question',
-                 'event_label' => 'services-order',
-             ]
-         ]);
-     }
- 
-     /**
-      * @param Dealer $dealer
-      * @param Forms $data
-      * @return FormInterface
-      */
-     public function repairPhotoForm(Dealer $dealer = null, Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(RepairPhotoType::class, $data, [
-             'dealer' => $dealer,
-             'translator' => $this->translator,
-             'ga_events' => [
-                 'event_category' => 'sto-all',
-                 'event_label' => 'remont-kyzova',
-             ]
-         ]);
-     }
- 
-     public function supportForm(Forms $data = null, $locale = 'ru', bool $filterPalmira = false)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(SupportType::class, $data, [
-             'translator' => $this->translator,
-             'locale' => $locale,
-             'ga_events' => [
-                 'event_category' => 'call-question',
-                 'event_label' => 'call-back',
-             ],
-             'filterPalmira' => $filterPalmira,
-         ]);
-     }
- 
-     public function rentForm(Dealer $dealer = null, Forms $data = null, $withOutTime = false)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(RentType::class, $data, [
-             'translator' => $this->translator,
-             'ga_events' => [
-                 'event_category' => 'call-question',
-                 'event_label' => 'rent-car',
-                 'withOutTime' => $withOutTime,
-             ]
-         ]);
-     }
- 
-     public function rentLuggageForm(Dealer $dealer = null, Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(RentType::class, $data, [
-             'translator' => $this->translator,
-             'equipment_rent_type' => 'luggage',
-             'ga_events' => [
-                 'event_category' => 'call-question',
-                 'event_label' => 'rent-car',
-             ]
-         ]);
-     }
- 
-     public function findPartForm(Dealer $dealer = null, Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(FindPartType::class, $data, [
-             'dealer' => $dealer,
-             'translator' => $this->translator,
-             'ga_events' => [
-                 'event_category' => 'service_parts',
-                 'event_label' => 'order_parts',
-             ]
-         ]);
-     }
- 
-     public function insuranceExtendForm(Dealer $dealer = null, Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(InsuranceExtendType::class, $data, [
-             'translator' => $this->translator
-         ]);
- 
-     }
- 
-     public function commissionTechnologyForm(Dealer $dealer = null, Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(CommissionTechnologyType::class, $data, [
-             'translator' => $this->translator
-         ]);
-     }
- 
-     public function buySparePartsForm(Dealer $dealer = null, Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(BuySparePartsType::class, $data, [
-             'dealer' => $dealer,
-             'translator' => $this->translator,
-         ]);
-     }
- 
-     public function tiresConfiguratorForm(Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(TiresConfiguratorType::class, $data, [
-             'translator' => $this->translator
-         ]);
-     }
- 
-     public function subServiceForm(\ImporterBundle\Entity\Forms $data = null, $communication = false, $defaultType = null, $fullForm = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(\ImporterBundle\Form\ServiceType::class, $data, [
-             'translator' => $this->translator,
-             'defaultType' => $defaultType,
-             'communication' => $communication,
-             'fullForm' => $fullForm,
-         ]);
-     }
- 
-     public function subSparePartsForm(\ImporterBundle\Entity\Forms $data = null)
-     {
-         return $this->coreFactory->create(SparePartsType::class, $data, [
-             'translator' => $this->translator,
-         ]);
-     }
- 
-     public function subOrderForm($item = null, \ImporterBundle\Entity\Forms $data = null)
-     {
-         return $this->coreFactory->create(OrderType::class, $data, [
-             'translator' => $this->translator,
-             'buy_item' => $item,
-         ]);
-     }
- 
-     public function subOrderVehicleForm(\ImporterBundle\Entity\Forms $data, Vehicle $vehicle = null)
-     {
-         $queryBuilder = null;
- 
-         if ($vehicle !== null) {
-             $data->setVehicle($vehicle);
-             $queryBuilder = $this->em->getRepository(Vehicle::class)->createQueryBuilder('v')
-                 ->where('v.id = :vehicle')
-                 ->setParameter('vehicle', $vehicle);
-         }
- 
-         return $this->coreFactory->create(OrderVehicleType::class, $data, [
-             'translator' => $this->translator,
-             'query_builder' => $queryBuilder,
-             'ga_events' => [
-                 'event_category' => 'car-order',
-                 'event_label' => 'order-car',
-             ]
- 
-         ]);
-     }
- 
-     public function subCommissionTechnologyForm(\ImporterBundle\Entity\Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(\ImporterBundle\Form\CommissionTechnologyType::class, $data, [
-             'translator' => $this->translator
-         ]);
-     }
- 
-     public function subBuyForm(\ImporterBundle\Entity\Forms $data = null, $vehicle = null, $variationId = null, $dealer = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(\ImporterBundle\Form\BuyType::class, $data, [
-             'translator' => $this->translator,
-             'variationId' => $variationId
-         ]);
-     }
- 
-     public function buySubPartsForm(\ImporterBundle\Entity\Dealer $dealer = null, \ImporterBundle\Entity\Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(\ImporterBundle\Form\BuyPartsType::class, $data, [
-             'translator' => $this->translator,
-         ]);
-     }
- 
-     public function subFeedbackQuestionForm(\ImporterBundle\Entity\Forms $data = null, \ImporterBundle\Entity\Dealer $dealer = null, $communication = false, $question = false)
-     {
-         $options = [
-             'translator' => $this->translator,
-             'default_question' => $question,
-         ];
-         return $this->coreFactory->create(\ImporterBundle\Form\FeedbackQuestionType::class, $data, $options);
-     }
- 
-     /**
-      * @param $question
-      * @param null $departmentType
-      * @param Forms $data
-      * @param Dealer|null $dealer
-      * @param bool $communication
-      * @return FormInterface
-      * @throws NonUniqueResultException
-      */
-     public function subfbDefQuestionForm($question, $departmentType = null, Forms $data = null, Dealer $dealer = null, $communication = false, $gaEvents = null)
-     {
-         $data = $this->setUserData($data);
-         if ($departmentType) {
-             $department = $this->em->getRepository(ViDiDepartment::class)->getByType($departmentType, $dealer);
-             $data->setDepartment($department);
-         }
-         $events = $gaEvents ?: [
-             'event_category' => 'call-question',
-             'event_label' => 'ask-question',
-         ];
-         return $this->coreFactory->create(FeedbackQuestionType::class, $data, [
-             'default_question' => $question,
-             'departmentType' => $departmentType,
-             'translator' => $this->translator,
-             'dealer' => $dealer,
-             'communication' => $communication,
-             'ga_events' => $events
-         ]);
-     }
- 
- 
-     public function subCreditForm(\ImporterBundle\Entity\Forms $data = null)
-     {
-         return $this->coreFactory->create(\ImporterBundle\Form\CreditType::class, $data, [
-             'translator' => $this->translator,
-         ]);
-     }
- 
-     public function subInsuranceForm(\ImporterBundle\Entity\Forms $data = null)
-     {
-         return $this->coreFactory->create(InsuranceType::class, $data, [
-             'translator' => $this->translator,
-         ]);
-     }
- 
-     public function subTestDriveForm(\ImporterBundle\Entity\Forms $data = null)
-     {
-         return $this->coreFactory->create(\ImporterBundle\Form\TestDriveType::class, $data, [
-             'translator' => $this->translator,
-         ]);
-     }
- 
-     public function orderGoodsForm(Dealer $dealer = null, Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(OrderGoodsType::class, $data, [
-             'translator' => $this->translator
-         ]);
-     }
- 
-     public function motoTestDriveForm(Dealer $dealer = null, Forms $data = null, $vehicle = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(MotoTestDriveType::class, $data, [
-             'translator' => $this->translator,
-             'vehicle' => $vehicle,
-         ]);
-     }
- 
-     /**
-      * @param Dealer|null $dealer
-      * @param Forms|null $data
-      * @param array|null $vehicle
-      * @param array|null $testDrive
-      * @return FormInterface
-      */
-     public function WaterTestDriveForm(Dealer $dealer = null, Forms $data = null, $vehicle = null, $test_drive = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(WaterTestDriveType::class, $data, [
-             'translator' => $this->translator,
-             'vehicle' => $vehicle,
-             'test_drive' => $test_drive,
-         ]);
-     }
- 
-     public function oilTOForm(Forms $data = null)
-     {
-         return $this->coreFactory->create(OilTOType::class, $data, [
-             'translator' => $this->translator,
-         ]);
-     }
- 
-     public function serviceCampaingCarForm(Forms $data = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(ServiceCampaingCarType::class, $data, [
-             'translator' => $this->translator,
-         ]);
-     }
- 
-     public function saveDesignForm(Forms $data = null, Dealer $dealer = null, Vehicle $vehicle = null)
-     {
-         $data = $this->setUserData($data);
-         if ($vehicle instanceof Vehicle) {
-             $data->setVehicle($vehicle);
-         }
-         return $this->coreFactory->create(SaveDesignType::class, $data, [
-             'translator' => $this->translator,
-         ]);
-     }
- 
-     public function sendQuestionForm(Forms $data = null, Dealer $dealer = null, $select_dealer = null, $default_question = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(SendQuestionType::class, $data, [
-             'translator' => $this->translator,
-             'select_dealer' => $select_dealer,
-             'default_question' => $default_question,
-         ]);
-     }
- 
-     public function onlineServiceRegistrationForm(Forms $data = null, Dealer $dealer = null, $select_dealer = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(OnlineServiceRegistrationType::class, $data, [
-             'translator' => $this->translator,
-             'select_dealer' => $select_dealer,
-         ]);
-     }
- 
-     public function withoutPayOrderForm(Forms $data = null, Dealer $dealer = null, User $user = null, $select_dealer = null)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(WithoutPayOrderType::class, $data, [
-             'translator' => $this->translator,
-             'select_dealer' => $select_dealer,
-         ]);
-     }
- 
-     public function callMeForm(Forms $data = null, bool $isIncludeDealer = false, bool $isIncludeWhatsApp = false)
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(CallMeType::class, $data, [
-             'translator' => $this->translator,
-             'is_include_whatsapp' => $isIncludeWhatsApp,
-             'is_include_dealer' => $isIncludeDealer
-         ]);
-     }
- 
-     public function callMeFormWithDealers(Forms $data = null, $dealers = [])
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(CallMeWithDealersType::class, $data, [
-             'translator' => $this->translator,
-             'dealers' => $dealers,
-         ]);
-     }
- 
-     public function tiresHotelForm(Forms $data = null, $dealers = [])
-     {
-         $data = $this->setUserData($data);
-         return $this->coreFactory->create(TiresHotelType::class, $data, [
-             'translator' => $this->translator,
-             'dealers' => $dealers,
-         ]);
-     }
- 
-     public function serviceConsultForm(Forms $data = null, $services = [], $select_service = null)
-     {
-         $data = $this->setUserData($data);
- 
-         return $this->coreFactory->create(ServiceConsultType::class, $data, [
-             'translator' => $this->translator,
-             'services' => $services,
-             'select_service' => $select_service
-         ]);
-     }
- 
- }
-