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