src/DcSiteBundle/Controller/Jaguar/CarController.php line 77

Open in your IDE?
  1. <?php
  2. namespace DcSiteBundle\Controller\Jaguar;
  3. use CoreBundle\Component\CoreFormFactory;
  4. use CoreBundle\Component\FormManager;
  5. use CoreBundle\Entity\Forms;
  6. use CoreBundle\Factory\InStockVehicle;
  7. use CoreBundle\Factory\Vehicle as VehicleFactory;
  8. use CoreBundle\Model\Api\OnlineService\ApiServer1C;
  9. use CoreBundle\Model\Vehicles\Repository;
  10. use CoreBundle\Model\WinnerRate;
  11. use CoreBundle\Services\MediaExtensionVidi;
  12. use DcSiteBundle\Services\CarInStockService;
  13. use DcSiteBundle\Services\HistoryManager;
  14. use DcSiteBundle\Services\UsedVehicleService;
  15. use DcSiteBundle\Services\VehicleService;
  16. use Doctrine\ORM\EntityManagerInterface;
  17. use Doctrine\ORM\NonUniqueResultException;
  18. use InsuranceBundle\Model\Program;
  19. use PortalBundle\Model\SeoMetaTag;
  20. use Symfony\Component\Filesystem\Filesystem;
  21. use Symfony\Component\HttpFoundation\Request;
  22. use Symfony\Component\HttpFoundation\RequestStack;
  23. use Symfony\Component\HttpFoundation\Response;
  24. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  25. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  26. use Symfony\Component\Routing\RouterInterface;
  27. use Twig\Environment;
  28. class CarController extends BaseController
  29. {
  30.     private CarInStockService $carInStockService;
  31.     private UsedVehicleService $usedVehicleService;
  32.     public function __construct(CoreFormFactory $coreFormFactorySeoMetaTag $seoMetaTagRequestStack $requestStackRouterInterface $routerFormManager $formManagerEntityManagerInterface $emApiServer1C $apiServer1CSessionInterface $sessionFilesystem $filesystemMediaExtensionVidi $mediaExtensionVidiRepository $vehicleRepositoryVehicleFactory $vehicleFactoryEnvironment $twigCarInStockService $carInStockServiceUsedVehicleService $usedVehicleService)
  33.     {
  34.         $this->carInStockService $carInStockService;
  35.         $this->usedVehicleService $usedVehicleService;
  36.         parent::__construct($coreFormFactory$seoMetaTag$requestStack$router$formManager$em$apiServer1C$session$filesystem$mediaExtensionVidi$vehicleRepository$vehicleFactory$twig);
  37.     }
  38.     public function car(Request $requestVehicleService $vehicleServiceHistoryManager $historyManager$car): ?Response
  39.     {
  40.         $Dealer $this->getDealer();
  41.         $vehicle $this->vehicleFactory->createByUrl($car$Dealer);
  42.         if (!$vehicle) {
  43.             throw new NotFoundHttpException();
  44.         }
  45.         $VehicleEm $vehicle->getVehicleEntity();
  46.         $vehicleColor $vehicleService->getVehicleColor($VehicleEm);
  47.         $carInStock $this->carInStockService->getCarInStockByModel($this->getDealer(), $request->getLocale(), $VehicleEm->getModel(), 4);
  48.         $vehicleFaqs $vehicleService->getVehicleFaqs($VehicleEm);
  49.         $historyManager->setUserCarHistory($this->getUser(), $vehicle->getVehicleEntity());
  50.         $TdForm = new Forms();
  51.         $TdForm->setVehicle($vehicle->getVehicleEntity());
  52.         return $this->baseJaguarRender('@DcSite/Jaguar/Car/car-card.html.twig', [
  53.             'model' => $vehicle,
  54.             'vehicleColor' => $vehicleColor,
  55.             'carInStock' => $carInStock,
  56.             'faqs' => $vehicleFaqs,
  57.             'buyForm' => $this->CoreFormFactory()->buyForm(null$vehicle->getVehicleEntity(), nullnulltruefalse$vehicle->getPrice())->createView(),
  58.             'buyInStockForm' => $this->CoreFormFactory()->buyInStockForm()->createView(),
  59.             'buyPartsForm' => $this->CoreFormFactory()->buyPartsForm($this->getDealer())->createView(),
  60.             'testDrivePageForm' => $this->CoreFormFactory()->testDriveForm($this->getDealer(), $TdForm)->createView(),
  61.             'structuredData' => $this->getCarPageStructuredData($request$vehicle)
  62.         ]);
  63.     }
  64.     public function carConfiguraion(VehicleService $vehicleService$car): ?Response
  65.     {
  66.         $Dealer $this->getDealer();
  67.         $Vehicle $this->vehicleFactory->createByUrl($car$Dealer);
  68.         if (!$Vehicle) {
  69.             throw new NotFoundHttpException();
  70.         }
  71.         $VehicleEm $Vehicle->getVehicleEntity();
  72.         $vehiclePrice $vehicleService->getVehiclePrice($VehicleEm);
  73.         $vehicleEquipment $vehicleService->getVehicleEquipment($VehicleEm);
  74.         return $this->baseJaguarRender('@DcSite/Jaguar/Car/configuration.html.twig', [
  75.             'model' => $Vehicle,
  76.             'vehiclePrice' => $vehiclePrice,
  77.             'vehicleEquipment' => $vehicleEquipment,
  78.         ]);
  79.     }
  80.     public function modelLineup(Request $request): ?Response
  81.     {
  82.         $vehicles $this->carInStockService->getCarInStockByDealer(
  83.             $this->getDealer(),
  84.             null,
  85.             $request->getLocale()
  86.         );
  87.         $this->carInStockService->sortVehicleByDealer($vehicles$this->getDealer()->getUniqueId());
  88.         return $this->baseJaguarRender('@DcSite/Jaguar/Car/model-lineup.html.twig', [
  89.             'buyInStockForm' => $this->CoreFormFactory()->buyInStockForm()->createView(),
  90.             'vehicles' => $vehicles
  91.         ]);
  92.     }
  93.     public function carInStock(Request $requestInStockVehicle $inStockVehicle$url)
  94.     {
  95.         $car $inStockVehicle->createByUrl($url$this->getDealer());
  96.         if (!$car) {
  97.             $car $inStockVehicle->createByUrl($url$this->getDealer(), false);
  98.             if ($car) {
  99.                 return $this->redirectToRoute('jaguar_card_car', ['car' => $car->getVehicle()->getUrl()], 301);
  100.             } else {
  101.                 return $this->redirectToRoute('jaguar_car_stock', [], 301);
  102.             }
  103.         }
  104.         $options $car->getOptions($request->getLocale());
  105.         return $this->baseJaguarRender('@DcSite/Jaguar/Car/in-stock-single.html.twig', [
  106.             'model' => $car,
  107.             'buyInStockForm' => $this->CoreFormFactory()->buyInStockForm(null$car->getInStockEntity())->createView(),
  108.             'options' => $options,
  109.             'structuredCarData' => $this->getCarStructuredDataCarInStock($request$car)
  110.         ]);
  111.     }
  112.     public function configurator(Request $request$url): ?Response
  113.     {
  114.         $Car false;
  115.         if ($url !== 'start') {
  116.             $Car $this->vehicleFactory->createByUrl($url$this->getDealer());
  117.             if (!$Car) {
  118.                 throw new NotFoundHttpException();
  119.             }
  120.         }
  121.         $hash $request->query->get('hash');
  122.         return $this->baseJaguarRender('@DcSite/Jaguar/Configurator/index.html.twig', [
  123.             'carId' => $Car $Car->getVehicleId() : 0,
  124.             'baseType' => Program::BASE_COEFFICIENT_TYPE,
  125.             'listType' => Program::LIST_COEFFICIENT_TYPE,
  126.             'optionType' => Program::OPTION_COEFFICIENT_TYPE,
  127.             'hash' => $hash,
  128.         ]);
  129.     }
  130.     public function testDrive(): ?Response
  131.     {
  132.         return $this->baseJaguarRender('@DcSite/Jaguar/Car/test-drive.html.twig', [
  133.             'testDrivePageForm' => $this->CoreFormFactory()->testDriveForm($this->getDealer(), null, [
  134.                 'child' => false,
  135.                 'widthTime' => true,
  136.                 'privacyUrl' => $this->router->generate('jaguar_cokie')
  137.             ])->createView()
  138.         ]);
  139.     }
  140.     public function used(Request $request): ?Response
  141.     {
  142.         $vehicles $this->usedVehicleService->getUsedVehiclesForLandRover($this->getDealer(), $request->getLocale());
  143.         return $this->baseJaguarRender('@DcSite/Jaguar/Used/used.html.twig', ['vehicles' => array_slice($vehicles08)]);
  144.     }
  145.     public function usedCard(Request $requestWinnerRate $winnerRate$id): ?Response
  146.     {
  147.         $vehicle $this->vehicleFactory->createById($id);
  148.         if (!$vehicle) {
  149.             throw new NotFoundHttpException();
  150.         }
  151.         $rate $winnerRate->getRateWinner($this->getDealer());
  152.         if ($vehicle->getDealer()->getId() === 6) {
  153.             $priceEU $vehicle->price() / $this->getDealer()->getRate();
  154.         } else {
  155.             $priceEU $vehicle->getVehicleItemPrice();
  156.         }
  157.         return $this->baseJaguarRender('@DcSite/Jaguar/Used/card-used.html.twig', [
  158.             'vehicle' => $vehicle,
  159.             'consultationForm' => $this->CoreFormFactory()->buyForm(null$vehicle->getVehicleEntity(), nullnulltruenull$vehicle->getPrice())->createView(),
  160.             'priceUA' => $vehicle->price(),
  161.             'priceEU' => $priceEU,
  162.             'structuredCarData' => $this->getCarStructuredDataCarUsed($request$vehicle)
  163.         ]);
  164.     }
  165.     public function archive(): ?Response
  166.     {
  167.         $vehicles $this->vehicleRepository->getDisabled($this->getDealer());
  168.         $result = [];
  169.         foreach ($vehicles as $vehicle) {
  170.             $model $this->vehicleFactory->createByEntity($vehicle);
  171.             if (!$model) {
  172.                 continue;
  173.             }
  174.             $result[] = $model;
  175.         }
  176.         return $this->baseJaguarRender('@DcSite/Jaguar/Car/archive.html.twig', ['cars' => $result]);
  177.     }
  178. }