src/DcSiteBundle/Controller/CarInStockModuleController.php line 35

Open in your IDE?
  1. <?php
  2. namespace DcSiteBundle\Controller;
  3. use CoreBundle\Component\CoreFormFactory;
  4. use CoreBundle\Component\FormManager;
  5. use CoreBundle\Entity\Vehicles\InStock;
  6. use CoreBundle\Factory\InStockVehicle;
  7. use CoreBundle\Factory\Vehicle as VehicleFactory;
  8. use CoreBundle\Model\Api\OnlineService\ApiServer1C;
  9. use CoreBundle\Model\Vehicles\InStockRepository;
  10. use CoreBundle\Model\Vehicles\Repository;
  11. use CoreBundle\Services\MediaExtensionVidi;
  12. use DcSiteBundle\Services\CarInStockService;
  13. use Doctrine\ORM\EntityManagerInterface;
  14. use PortalBundle\Model\SeoMetaTag;
  15. use Symfony\Component\Filesystem\Filesystem;
  16. use Symfony\Component\HttpFoundation\JsonResponse;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\RequestStack;
  19. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  20. use Symfony\Component\Routing\RouterInterface;
  21. use Twig\Environment;
  22. class CarInStockModuleController extends BaseDcController
  23. {
  24.     private CarInStockService $carInStockService;
  25.     public function __construct(CarInStockService $carInStockServiceCoreFormFactory $coreFormFactorySeoMetaTag $seoMetaTagRequestStack $requestStackRouterInterface $routerFormManager $formManagerEntityManagerInterface $emApiServer1C $apiServer1CSessionInterface $sessionFilesystem $filesystemMediaExtensionVidi $mediaExtensionVidiRepository $vehicleRepositoryVehicleFactory $vehicleFactoryEnvironment $twig)
  26.     {
  27.         $this->carInStockService $carInStockService;
  28.         parent::__construct($coreFormFactory$seoMetaTag$requestStack$router$formManager$em$apiServer1C$session$filesystem$mediaExtensionVidi$vehicleRepository$vehicleFactory$twig);
  29.     }
  30.     public function init(Request $request): JsonResponse
  31.     {
  32.         $vehicles $this->carInStockService->getCarInStockByDealer(
  33.             $this->getDealer(),
  34.             $request->request->get('vehicleType'),
  35.             $request->getLocale()
  36.         );
  37.         $this->carInStockService->sortVehicleByDealer($vehicles$this->getDealer()->getUniqueId());
  38.         return $this->json(
  39.             [
  40.                 'success' => true,
  41.                 'result' => $vehicles,
  42.                 'minPrice' => $vehicles['minPrice'],
  43.                 'maxPrice' => $vehicles['maxPrice']
  44.             ]
  45.         );
  46.     }
  47.     public function byVehicle(Request $requestInStockRepository $inStockRepositoryModelInStockVehicle $inStockVehicleFactory): JsonResponse
  48.     {
  49.         $id $request->get('id');
  50.         $limit $request->get('limit');
  51.         if ($id == 'all') {
  52.             $inStock $inStockRepositoryModel->getByDealer($this->getDealer(), $limit);
  53.         } else {
  54.             $inStock $inStockRepositoryModel->getByVehicleId($id);
  55.         }
  56.         $result = [];
  57.         /** @var InStock $item */
  58.         foreach ($inStock as $item) {
  59.             $inStockModel $inStockVehicleFactory->createByEntity($item);
  60.             if (!$inStockModel->getFuelType() || !$inStockModel->getTransmissionType() || !$inStockModel->getDriveUnitType()) {
  61.                 //continue;
  62.             }
  63.             $result[] = [
  64.                 'id' => $inStockModel->getId(),
  65.                 'price' => $inStockModel->price(),
  66.                 'fullPrice' => $inStockModel->hasActionPrice() ? $inStockModel->fullPrice() : 0,
  67.                 'inDelivery' => $inStockModel->getInDelivery(),
  68.                 'name' => $inStockModel->getFullName(),
  69.                 'image' => $this->mediaExtensionVidi->getPath($inStockModel->getPreview(), 'small_in_stock'),
  70.                 'url' => $this->router->generate('base_car_in_stock_card', ['url' => $inStockModel->getUrl()]),
  71.                 'year' => $inStockModel->getYear(),
  72.                 'fuelType' => [
  73.                     'id' => $inStockModel->getFuelType() ? $inStockModel->getFuelType()->getId() : null,
  74.                     'name' => $inStockModel->getFuelType() ? $inStockModel->getFuelTypeName($request->getLocale()) : null,
  75.                 ],
  76.                 'transmissionType' => [
  77.                     'id' => $inStockModel->getTransmissionType() ? $inStockModel->getTransmissionType()->getId() : null,
  78.                     'name' => $inStockModel->getTransmissionType() ? $inStockModel->getTransmissionTypeName($request->getLocale()) : null,
  79.                 ],
  80.                 'driveUnit' => [
  81.                     'id' => $inStockModel->getDriveUnitType() ? $inStockModel->getDriveUnitType()->getId() : null,
  82.                     'name' => $inStockModel->getDriveUnitType() ? $inStockModel->getDriveUnitTypeName($request->getLocale()) : null,
  83.                 ],
  84.                 'power' => $inStockModel->getEnginePower($request->getLocale()),
  85.             ];
  86.         }
  87.         $urlInStock '';
  88.         //TODO remove magic number
  89.         if ($this->getDealer()->getId() === 7) {
  90.             $urlInStock $this->router->generate('toyota_odessa_car_in_stock_catalog');
  91.         } else if ($this->getDealer()->getId() !== && $this->getDealer()->getId() !== 14) {
  92.             $urlInStock $this->router->generate(str_replace(' '''strtolower($this->getDealer()->getBrand()->getName())) . '_car_stock');
  93.         }
  94.         return $this->json([
  95.             'result' => $result,
  96.             'urlInStock' => $urlInStock,
  97.         ]);
  98.     }
  99. }