src/DcSiteBundle/Controller/Suzuki/CarController.php line 309

Open in your IDE?
  1. <?php
  2. namespace DcSiteBundle\Controller\Suzuki;
  3. use CoreBundle\Component\CoreFormFactory;
  4. use CoreBundle\Component\FormManager;
  5. use CoreBundle\Entity\Forms;
  6. use CoreBundle\Entity\Vehicles\Group;
  7. use CoreBundle\Entity\Vehicles\RecommendGroup;
  8. use CoreBundle\Entity\Vehicles\Vehicle;
  9. use CoreBundle\Entity\Vehicles\VehicleFile;
  10. use CoreBundle\Factory\InStockVehicle;
  11. use CoreBundle\Factory\Vehicle as VehicleFactory;
  12. use CoreBundle\Model\Api\OnlineService\ApiServer1C;
  13. use CoreBundle\Model\Vehicles\Repository;
  14. use CoreBundle\Model\Vehicles\VehicleType;
  15. use CoreBundle\Services\MediaExtensionVidi;
  16. use DateTime;
  17. use DcSiteBundle\Enum\DealerPathEnum;
  18. use DcSiteBundle\Model\CreditModel;
  19. use DcSiteBundle\Services\AccessoryService;
  20. use DcSiteBundle\Services\CarInStockService;
  21. use DcSiteBundle\Services\HistoryManager;
  22. use DcSiteBundle\Services\ModelRange\Pages\PagesService;
  23. use DcSiteBundle\Services\UsedVehicleService;
  24. use DcSiteBundle\Services\VehicleService;
  25. use DcSiteBundle\Services\VehicleViewService;
  26. use Doctrine\ORM\EntityManagerInterface;
  27. use InsuranceBundle\Model\Program;
  28. use PortalBundle\Model\SeoMetaTag;
  29. use Symfony\Component\Filesystem\Filesystem;
  30. use Symfony\Component\HttpFoundation\Request;
  31. use Symfony\Component\HttpFoundation\RequestStack;
  32. use Symfony\Component\HttpFoundation\Response;
  33. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  34. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  35. use Symfony\Component\Routing\RouterInterface;
  36. use Twig\Environment;
  37. class CarController extends BaseController
  38. {
  39.     private CarInStockService $carInStockService;
  40.     private UsedVehicleService $usedVehicleService;
  41.     public function __construct(CarInStockService $carInStockServiceUsedVehicleService $usedVehicleServiceCoreFormFactory $coreFormFactorySeoMetaTag $seoMetaTagRequestStack $requestStackRouterInterface $routerFormManager $formManagerEntityManagerInterface $emApiServer1C $apiServer1CSessionInterface $sessionFilesystem $filesystemMediaExtensionVidi $mediaExtensionVidiRepository $vehicleRepositoryVehicleFactory $vehicleFactoryEnvironment $twig)
  42.     {
  43.         $this->carInStockService $carInStockService;
  44.         $this->usedVehicleService $usedVehicleService;
  45.         parent::__construct($coreFormFactory$seoMetaTag$requestStack$router$formManager$em$apiServer1C$session$filesystem$mediaExtensionVidi$vehicleRepository$vehicleFactory$twig);
  46.     }
  47.     public function car(Request $requestVehicleService $vehicleServiceAccessoryService $accessoryServiceHistoryManager $historyManager$car): ?Response
  48.     {
  49.         $Dealer $this->getDealer();
  50.         $vehicle $this->vehicleFactory->createByUrl($car$Dealer);
  51.         if (!$vehicle) {
  52.             throw new NotFoundHttpException();
  53.         }
  54.         $VehicleEm $vehicle->getVehicleEntity();
  55.         $vehiclePrice $vehicleService->getVehiclePrice($VehicleEm);
  56.         $vehicleColor $vehicleService->getVehicleColor($VehicleEm);
  57.         $carInStock $this->carInStockService->getCarInStockByModel($this->getDealer(), $request->getLocale(), $VehicleEm->getModel(), 4);
  58.         $vehicleFaqs $vehicleService->getVehicleFaqs($VehicleEm);
  59.         $vehicleAccessory $accessoryService->getAccessoriesByDealerVehicleType($Dealer);
  60.         $files = [];
  61.         foreach ($vehicle->getFiles() as $row) {
  62.             $files[] = [
  63.                 'files' => $row,
  64.                 'position' => $row->getPosition(),
  65.             ];
  66.         }
  67.         usort($files, fn($a$b) => $a['position'] <=> $b['position']);
  68.         $historyManager->setUserCarHistory($this->getUser(), $vehicle->getVehicleEntity());
  69.         $TdForm = new Forms();
  70.         $TdForm->setVehicle($vehicle->getVehicleEntity());
  71.         $form $this->CoreFormFactory()
  72.             ->callMeForm(new Forms(), true);
  73.         $form->get('dealer')->setData($this->getDealer());
  74.         return $this->baseSuzukiRender('@DcSite/Suzuki/Car/car-card.html.twig', [
  75.             'model' => $vehicle,
  76.             'vehiclePrice' => $vehiclePrice,
  77.             'vehicleColor' => $vehicleColor,
  78.             'carInStock' => $carInStock,
  79.             'faqs' => $vehicleFaqs,
  80.             'vehicleAccessory' => $vehicleAccessory,
  81.             'modelFiles' => $files,
  82.             'buyForm' => $this->CoreFormFactory()->buyForm(null$vehicle->getVehicleEntity(), nullnullfalsefalse$vehicle->getPrice())->createView(),
  83.             'buyPartsForm' => $this->CoreFormFactory()->buyPartsForm($this->getDealer())->createView(),
  84.             'testDrivePageForm' => $this->CoreFormFactory()->testDriveForm($this->getDealer(), $TdForm)->createView(),
  85.             'structuredData' => $this->getCarPageStructuredData($request$vehicle),
  86.             'callMeForm' => $form->createView()
  87.         ]);
  88.     }
  89.     public function carConfiguraion(VehicleService $vehicleService$car): Response
  90.     {
  91.         $Dealer $this->getDealer();
  92.         $Vehicle $this->vehicleFactory->createByUrl($car$Dealer);
  93.         if (!$Vehicle) {
  94.             throw new NotFoundHttpException();
  95.         }
  96.         $VehicleEm $Vehicle->getVehicleEntity();
  97.         $vehicleEquipment $vehicleService->getVehicleEquipment($VehicleEm);
  98.         return $this->baseSuzukiRender('@DcSite/Suzuki/Car/configuration.html.twig', [
  99.             'model' => $Vehicle,
  100.             'vehicleEquipment' => $vehicleEquipment,
  101.         ]);
  102.     }
  103.     public function moto(Request $requestHistoryManager $historyManagerVehicleService $vehicleService$moto)
  104.     {
  105.         $Dealer $this->getDealer();
  106.         $Vehicle $this->vehicleFactory->createByUrl($moto$Dealer);
  107.         if (!$Vehicle) {
  108.             throw new NotFoundHttpException();
  109.         }
  110.         $historyManager->setUserCarHistory($this->getUser(), $Vehicle->getVehicleEntity());
  111.         $vehicleFaqs $vehicleService->getVehicleFaqs($Vehicle->getVehicleEntity());
  112.         $carInStock $this->carInStockService->getCarInStockByModel($this->getDealer(),$request->getLocale(),$Vehicle->getVehicleEntity()->getModel(), 4);
  113.         return $this->baseSuzukiRender(
  114.             '@DcSite/Suzuki/Car/moto-card.html.twig',
  115.             [
  116.                 'model' => $Vehicle,
  117.                 'carInStock' => $carInStock,
  118.                 'faqs' => $vehicleFaqs,
  119.                 'buyForm' => $this->CoreFormFactory()->buyForm(null$Vehicle->getVehicleEntity())->createView(),
  120.                 'buyPartsForm' => $this->CoreFormFactory()->buyPartsForm($this->getDealer())->createView(),
  121.                 'structuredData' => $this->getCarPageStructuredData($request$Vehicle),
  122.                 'testDriveForm' =>
  123.                     $this->CoreFormFactory()
  124.                         ->motoTestDriveForm($this->getDealer(), null$Vehicle->getVehicleEntity()->getId())
  125.                         ->createView(),
  126.             ]
  127.         );
  128.     }
  129.     public function motoConfiguraion($moto): Response
  130.     {
  131.         $Dealer $this->getDealer();
  132.         $Vehicle $this->vehicleFactory->createByUrl($moto$Dealer);
  133.         if (!$Vehicle) {
  134.             throw new NotFoundHttpException();
  135.         }
  136.         return $this->baseSuzukiRender('@DcSite/Suzuki/Car/moto-configuration.html.twig', [
  137.             'model' => $Vehicle,
  138.         ]);
  139.     }
  140.     public function testDrive(): ?Response
  141.     {
  142.         return $this->baseSuzukiRender('@DcSite/Suzuki/Car/test-drive.html.twig', [
  143.             'testDrivePageForm' => $this->CoreFormFactory()->testDriveForm($this->getDealer(), null, [
  144.                 'child' => false,
  145.                 'widthTime' => true
  146.             ])->createView(),
  147.         ]);
  148.     }
  149.     public function lineUpCar(Request $requestPagesService $pagesService): Response
  150.     {
  151.         $cars $this->vehicleRepository->getVehicleByType($this->getDealer(), VehicleType::PASSENGER_TYPE);
  152.         $carsResult = [];
  153.         foreach ($cars as $car) {
  154.             $model $this->vehicleFactory->createByEntity($car);
  155.             if (!$model) {
  156.                 continue;
  157.             }
  158.             $carsResult[] = $model;
  159.         }
  160.         $moto $this->vehicleRepository->getVehicleByType($this->getDealer(), VehicleType::MOTO_TYPE);
  161.         $selection = [];
  162.         $motoResult = [];
  163.         /** @var Vehicle $item */
  164.         foreach ($moto as $item) {
  165.             $group $item->getGroup();
  166.             if (!$group) {
  167.                 continue;
  168.             }
  169.             if (!isset($motoResult[$group->getId()])) {
  170.                 $motoResult[$group->getId()] = [
  171.                     'id' => $group->getId(),
  172.                     'hasPrice' => false,
  173.                     'title' => $group->getTitle($request->getLocale()),
  174.                     'image' => $group->getPreview(),
  175.                     'position' => $group->getPosition(),
  176.                     'items' => [],
  177.                 ];
  178.             }
  179.             $motoResult[$group->getId()]['items'][] = [
  180.                 'title' => $item->getModel()->getTitle(),
  181.                 'url' => $item->getUrl(),
  182.             ];
  183.             $motoItem $this->vehicleFactory->createByEntity($item);
  184.             if ($motoItem && $motoItem->price() > 0) {
  185.                 $motoResult[$group->getId()]['hasPrice'] = true;
  186.             }
  187.         }
  188.         usort($selection, fn($a$b) => ($a['position'] == $b['position']) ? : (($a['position'] < $b['position']) ? -1));
  189.         usort($motoResult, fn($a$b) => ($a['position'] == $b['position']) ? : (($a['position'] < $b['position']) ? -1));
  190.         return $this->baseSuzukiRender('@DcSite/Suzuki/Car/model-lineup.html.twig', [
  191.             'cars' => $carsResult,
  192.             'moto' => $motoResult,
  193.             'selection' => $selection,
  194.             'catalogModelRangePages' => $pagesService
  195.                 ->setLang($request->getLocale())
  196.                 ->getPages($this->getDealer())
  197.         ]);
  198.     }
  199.     public function lineUpCarPage(Request $requestPagesService $pagesServicestring $url): ?Response
  200.     {
  201.         $page $pagesService->setLang($request->getLocale())->getPage($this->getDealer(), $url);
  202.         if (empty($page)) {
  203.             throw new NotFoundHttpException();
  204.         }
  205.         return $this->baseSuzukiRender('@DcSite/Suzuki/Car/model-lineup-page.html.twig', ['page' => $page]);
  206.     }
  207.     public function lineUpMoto(): ?Response
  208.     {
  209.         $moto $this->vehicleRepository
  210.             ->getVehicleByType($this->getDealer(), VehicleType::MOTO_TYPE);
  211.         $motoResult = [];
  212.         $selection = [];
  213.         /** @var Vehicle $item */
  214.         foreach ($moto as $item) {
  215.             $model $this->vehicleFactory->createByEntity($item);
  216.             if (!$model) {
  217.                 continue;
  218.             }
  219.             $motoResult[] = $model;
  220.         }
  221.         return $this->baseSuzukiRender('@DcSite/Suzuki/Car/moto-model-lineup.html.twig', [
  222.             'moto' => $motoResult,
  223.             'selection' => $selection,
  224.         ]);
  225.     }
  226.     public function selection(Request $request): ?Response
  227.     {
  228.         $id $request->get('id');
  229.         $recomendGroup $this->em->getRepository(RecommendGroup::class)->find($id);
  230.         if (!$recomendGroup) {
  231.             throw  $this->createNotFoundException();
  232.         }
  233.         $moto $this->vehicleRepository->getByRecommendGroup($this->getDealer(), $id);
  234.         $motoResult = [];
  235.         /** @var Vehicle $item */
  236.         foreach ($moto as $item) {
  237.             $model $this->vehicleFactory->createByEntity($item);
  238.             if (!$model) {
  239.                 continue;
  240.             }
  241.             $motoResult[] = $model;
  242.         }
  243.         return $this->baseSuzukiRender('@DcSite/Suzuki/Car/catalog-scooter.html.twig', [
  244.             'recomendGroup' => $recomendGroup,
  245.             'moto' => $motoResult,
  246.         ]);
  247.     }
  248.     public function group(Request $request): ?Response
  249.     {
  250.         $id $request->get('id');
  251.         $Group $this->em->getRepository(Group::class)->find($id);
  252.         if (!$Group) {
  253.             throw  $this->createNotFoundException();
  254.         }
  255.         $moto $this->vehicleRepository->findByGroup($id$this->getDealer());
  256.         $motoResult = [];
  257.         /** @var Vehicle $item */
  258.         foreach ($moto as $item) {
  259.             $model $this->vehicleFactory->createByEntity($item);
  260.             if (!$model) {
  261.                 continue;
  262.             }
  263.             $motoResult[] = $model;
  264.         }
  265.         return $this->baseSuzukiRender('@DcSite/Suzuki/Car/catalog-city-bike.html.twig', [
  266.             'Group' => $Group,
  267.             'moto' => $motoResult,
  268.         ]);
  269.     }
  270.     public function carInStock(Request $request): Response
  271.     {
  272.         $vehicles $this->carInStockService->getCarInStockByDealer(
  273.             $this->getDealer(),
  274.             VehicleType::PASSENGER_TYPE,
  275.             $request->getLocale()
  276.         );
  277.         $this->carInStockService->sortVehicleByDealer($vehicles$this->getDealer()->getUniqueId());
  278.         return $this->baseSuzukiRender('@DcSite/Suzuki/Car/car-in-stocks.html.twig', ['vehicles' => $vehicles]);
  279.     }
  280.     public function motoInStock(Request $request): ?Response
  281.     {
  282.         $vehicles $this->carInStockService->getCarInStockByDealer(
  283.             $this->getDealer(),
  284.             VehicleType::MOTO_TYPE,
  285.             $request->getLocale()
  286.         );
  287.         $this->carInStockService->sortVehicleByDealer($vehicles$this->getDealer()->getUniqueId());
  288.         return $this->baseSuzukiRender('@DcSite/Suzuki/Car/moto-in-stocks.html.twig', ['vehicles' => $vehicles]);
  289.     }
  290.     //  Used Moto
  291.     public function usedMotoCatalog(): ?Response
  292.     {
  293.         $technique $this->usedVehicleService->getMotosData($this->getDealer(), trueVehicleType::MOTO_TYPE);
  294.         $craftedTech = [];
  295.         /** @var Vehicle $tech */
  296.         foreach ($technique as $tech) {
  297.             $techModel $this->vehicleFactory->createByEntity($tech);
  298.             if (!$techModel) {
  299.                 continue;
  300.             }
  301.             $craftedTech[] = [
  302.                 "id" => $techModel->getVehicleId(),
  303.                 "title" => $techModel->getFullName(),
  304.                 "price" => $techModel->price(),
  305.                 "year" => $techModel->getYear(),
  306.                 'mileage' => $techModel->getMileage(),
  307.                 "link" => $techModel->getUrl(),
  308.                 "image" => $this->mediaExtensionVidi->getPath($tech->getPreview(), 'small')
  309.             ];
  310.         }
  311.         return $this->baseSuzukiRender('@DcSite/Suzuki/Car/used-moto-in-stocks.html.twig', [
  312.             'tech' => $craftedTech,
  313.             'commissionForm' => $this->CoreFormFactory()->commissionTechnologyForm()->createView()
  314.         ]);
  315.     }
  316. //  Used Moto ID
  317.     public function usedMotoID($url)
  318.     {
  319.         $vehicle $this->vehicleFactory->createByUrl($url$this->getDealer());
  320.         if (!$vehicle) {
  321.             return $this->redirectToRoute('suzuki_used_moto_catalog', [], 301);
  322.         }
  323.         $forms = new Forms();
  324.         $forms->setVehicle($vehicle->getVehicleEntity());
  325.         $forms->setDealer($this->getDealer());
  326.         return $this->baseSuzukiRender('@DcSite/Suzuki/Car/used-moto-in-stocks-id.html.twig', [
  327.             'car' => $vehicle,
  328.             'buyForm' => $this->CoreFormFactory()->buyForm($forms$vehicle->getVehicleEntity())->createView(),
  329.         ]);
  330.     }
  331.     public function carInStockSingle(Request $requestInStockVehicle $inStockVehicleFactory$url): Response
  332.     {
  333.         $car $inStockVehicleFactory->createByUrl($url$this->getDealer());
  334.         if (!$car) {
  335.             $car $inStockVehicleFactory->createByUrl($url$this->getDealer(), false);
  336.             if ($car) {
  337.                 return $this->redirectToRoute('suzuki_card_car', ['car' => $car->getVehicle()->getUrl()], Response::HTTP_MOVED_PERMANENTLY);
  338.             } else {
  339.                 throw new NotFoundHttpException();
  340.             }
  341.         }
  342.         $options $car->getOptions($request->getLocale());
  343.         $form $this->CoreFormFactory()
  344.             ->callMeForm(new Forms(), true);
  345.         $form->get('dealer')->setData($this->getDealer());
  346.         return $this->baseSuzukiRender('@DcSite/Suzuki/Car/car-in-stock-card.html.twig', [
  347.             'model' => $car,
  348.             'buyInStockForm' => $this->CoreFormFactory()->buyInStockForm(null$car->getInStockEntity())->createView(),
  349.             'options' => $options,
  350.             'callMeForm' => $form->createView()
  351.         ]);
  352.     }
  353.     public function configurator(Request $request)
  354.     {
  355.         $url $request->get('car');
  356.         $Vehicle false;
  357.         //TODO remove magic numbers
  358.         $carId 0;
  359.         if ($url != 'start') {
  360.             $Vehicle $this->vehicleFactory->createByUrl($url$this->getDealer());
  361.             if (!$Vehicle) {
  362.                 return $this->redirectToRoute('suzuki_car_stock', [], 301);
  363.             }
  364.             $carId $Vehicle->getVehicleId();
  365.         }
  366.         $hash $request->query->get('hash');
  367.         return $this->baseSuzukiRender('@DcSite/Suzuki/Configurator/index.html.twig', [
  368.             'carId' => $carId,
  369.             'car' => $Vehicle,
  370.             'baseType' => Program::BASE_COEFFICIENT_TYPE,
  371.             'listType' => Program::LIST_COEFFICIENT_TYPE,
  372.             'optionType' => Program::OPTION_COEFFICIENT_TYPE,
  373.             'hash' => $hash,
  374.         ]);
  375.     }
  376.     public function priceList(Request $request): ?Response
  377.     {
  378.         $vehicles $this->vehicleRepository->getNewByDealer($this->getDealer());
  379.         $result = [];
  380.         /** @var Vehicle $car */
  381.         foreach ($vehicles as $car) {
  382.             $vehicleId $car->getId();
  383.             $files $car->getFiles();
  384.             if (!$files->count()) {
  385.                 continue;
  386.             }
  387.             $item = [
  388.                 'car' => $car,
  389.                 'files' => [],
  390.             ];
  391.             /** @var VehicleFile $file */
  392.             foreach ($files as $file) {
  393.                 $item['files'][] = [
  394.                     'title' => $file->getTitle($request->getLocale()),
  395.                     'href' => $this->router->generate('base_download_file', ['id' => $file->getId()])
  396.                 ];
  397.             }
  398.             $result[$vehicleId] = $item;
  399.             $position[$vehicleId] = $car->getPosition();
  400.         }
  401.         array_multisort($positionSORT_ASC$result);
  402.         return $this->baseSuzukiRender('@DcSite/Suzuki/Car/price-list-and-catalog.html.twig', ['cars' => $result]);
  403.     }
  404.     public function archive(): ?Response
  405.     {
  406.         $vehicles $this->vehicleRepository->getDisabled($this->getDealer());
  407.         $result = [];
  408.         foreach ($vehicles as $vehicle) {
  409.             $model $this->vehicleFactory->createByEntity($vehicle);
  410.             if (!$model) {
  411.                 continue;
  412.             }
  413.             $result[] = $model;
  414.         }
  415.         return $this->baseSuzukiRender('@DcSite/Suzuki/Car/archive.html.twig', ['cars' => $result]);
  416.     }
  417.     public function usedCarCatalog(Request $request): ?Response
  418.     {
  419.         $vehicles $this->usedVehicleService->getUsedVehicles(
  420.             $this->getDealer(),
  421.             DealerPathEnum::SUZUKI,
  422.             $request->getLocale(),
  423.             true,
  424.             null,
  425.             VehicleType::PASSENGER_TYPE
  426.         );
  427.         return $this->baseSuzukiRender('@DcSite/Suzuki/Car/used-car-catalog.html.twig', ['vehicles' => $vehicles]);
  428.     }
  429.     public function secondhandSingle(Request $requestVehicleViewService $vehicleViewServiceCreditModel $creditModel$url): ?Response
  430.     {
  431.         if (!$url) {
  432.             throw new NotFoundHttpException();
  433.         }
  434.         $vehicle $this->vehicleFactory->createUsedByUrl($url);
  435.         if (!$vehicle) {
  436.             throw new NotFoundHttpException();
  437.         }
  438.         $vehicleViewService->saveViewVehicle($vehicle$request->getClientIp(), new DateTime());
  439.         $viewedCars = [];
  440.         if (isset($_COOKIE['viewedCars'])) {
  441.             $viewedCars json_decode($_COOKIE['viewedCars']);
  442.             if (!in_array($vehicle->getVehicleId(), $viewedCars)) {
  443.                 $viewedCars[] = $vehicle->getVehicleId();
  444.             }
  445.         } else {
  446.             setcookie('viewedCars'json_encode([$vehicle->getVehicleId()]));
  447.         }
  448.         $viewedCarEntities $this->em->getRepository(Vehicle::class)
  449.             //TODO remove magic numbers
  450.             ->findBy(['id' => array_slice(array_reverse(array_diff($viewedCars, [$vehicle->getVehicleId()])), 03)]);
  451.         $viewedCarFactories = [];
  452.         foreach ($viewedCarEntities as $viewedCarEntity) {
  453.             $viewedCarFactory $this->vehicleFactory->createByEntity($viewedCarEntity);
  454.             $galleryItems $viewedCarFactory->getGallery()
  455.                 ? $viewedCarFactory->getGallery()->getGalleryItems()
  456.                 : null;
  457.             $image $galleryItems && $galleryItems->count()
  458.                 ? $galleryItems->first()->getMedia()
  459.                 : $viewedCarFactory->getPreview();
  460.             $viewedCarFactories[] = [
  461.                 'vehicle' => $viewedCarFactory,
  462.                 'image' => $this->mediaExtensionVidi->getPath($image'reference'),
  463.                 'link' => $this->router
  464.                     ->generate('suzuki_used_car_single', ['url' => $viewedCarFactory->getUrl()]),
  465.             ];
  466.         }
  467.         $galleryItems $vehicle->getGallery()->getGalleryItems();
  468.         $gallery_images = [];
  469.         if ($galleryItems && $galleryItems->count()) {
  470.             foreach ($galleryItems as $galleryItem) {
  471.                 $gallery_images[] = $this->mediaExtensionVidi
  472.                     ->getPath($galleryItem->getMedia(), 'reference');
  473.             }
  474.         }
  475.         $similarVehicles = [];
  476.         $similar $this->vehicleRepository->getSimilarVehicles($vehicletruefalsetrue);
  477.         foreach ($similar as $vehicleItem) {
  478.             $vehicleItemGallery $this->vehicleFactory
  479.                 ->createByEntity($vehicleItem->getVariation()->getVehicle())
  480.                 ->getGallery()
  481.                 ->getGalleryItems();
  482.             $vehicleItemGalleryImages = [];
  483.             if ($vehicleItemGallery && $vehicleItemGallery->count()) {
  484.                 foreach ($vehicleItemGallery as $vehicleItemGallery_item) {
  485.                     $vehicleItemGalleryImages[] = $this->mediaExtensionVidi
  486.                         ->getPath($vehicleItemGallery_item->getMedia(), 'reference');
  487.                 }
  488.             }
  489.             $similarVehicles[] = [
  490.                 'vehicle' => $this->vehicleFactory->createByEntity($vehicleItem->getVariation()->getVehicle()),
  491.                 'creditPayment' => $creditModel->getMinPayment($this->vehicleFactory->createByEntity($vehicleItem->getVariation()->getVehicle())),
  492.                 'link' => $this->router->generate('suzuki_used_car_single', ['url' => $vehicle->getUrl()]),
  493.                 'gallery' => $vehicleItemGalleryImages
  494.             ];
  495.         }
  496.         $options $vehicle->getOptionsArray($request->getLocale());
  497.         return $this->baseSuzukiRender('@DcSite/Suzuki/Car/used-car-single.html.twig', [
  498.             'secondhand' => $vehicle,
  499.             'options' => $options,
  500.             'buyForm' => $this->CoreFormFactory()->buyForm(null$vehicle->getVehicleEntity(), nullnulltruefalse$vehicle->getPrice())->createView(),
  501.             'consultationForm' => $this->CoreFormFactory()->buyForm(null$vehicle->getVehicleEntity())->createView(),
  502.             'gallary' => $gallery_images,
  503.             'creditPayment' => $creditModel->getMinPayment($vehicle),
  504.             'similarCars' => $similarVehicles,
  505.             'viewedCars' => $viewedCarFactories,
  506.             'structuredCarData' => $this->getCarStructuredDataCarUsed($request$vehicle)
  507.         ]);
  508.     }
  509. }