src/DcSiteBundle/Controller/UsedCarModuleController.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\Factory\Vehicle as VehicleFactory;
  6. use CoreBundle\Model\Api\OnlineService\ApiServer1C;
  7. use CoreBundle\Model\Vehicles\Repository;
  8. use CoreBundle\Model\Vehicles\UsedVehicle;
  9. use CoreBundle\Services\MediaExtensionVidi;
  10. use DcSiteBundle\Services\UsedVehicleService;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use PortalBundle\Model\SeoMetaTag;
  13. use Symfony\Component\Filesystem\Filesystem;
  14. use Symfony\Component\HttpFoundation\JsonResponse;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\HttpFoundation\RequestStack;
  17. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  18. use Symfony\Component\Routing\RouterInterface;
  19. use Twig\Environment;
  20. class UsedCarModuleController extends BaseDcController
  21. {
  22.     public function __construct(CoreFormFactory $coreFormFactorySeoMetaTag $seoMetaTagRequestStack $requestStackRouterInterface $routerFormManager $formManagerEntityManagerInterface $emApiServer1C $apiServer1CSessionInterface $sessionFilesystem $filesystemMediaExtensionVidi $mediaExtensionVidiRepository $vehicleRepositoryVehicleFactory $vehicleFactoryEnvironment $twig)
  23.     {
  24.         parent::__construct($coreFormFactory$seoMetaTag$requestStack$router$formManager$em$apiServer1C$session$filesystem$mediaExtensionVidi$vehicleRepository$vehicleFactory$twig);
  25.     }
  26.     public function usedCatalog(Request $requestUsedVehicleService $usedVehicleService): JsonResponse
  27.     {
  28.         $vehicles $usedVehicleService->getUsedVehiclesForLandRover($this->getDealer(), $request->getLocale(), true);
  29.         $filters $usedVehicleService->getFiltersByData($vehicles);
  30.         return $this->json([
  31.             'success' => true,
  32.             'data' => $vehicles,
  33.             'filters' => $filters
  34.         ]);
  35.     }
  36.     public function usedCars(Request $request): JsonResponse
  37.     {
  38.         $vehicles $this->vehicleRepository->getUsedByDealer($this->getDealer());
  39.         $usedCars = [];
  40.         /** @var UsedVehicle $limitedCar */
  41.         foreach ($vehicles as $vehicle) {
  42.             $vehicle $this->vehicleFactory->createByEntity($vehicle);
  43.             if (!$vehicle || $vehicle->getModel()->getId() != $request->request->get('modelId') || $vehicle->hasReserved()) {
  44.                 continue;
  45.             }
  46.             $galleryItems $vehicle->getGallery() ? $vehicle->getGallery()->getGalleryItems() : null;
  47.             $image $galleryItems && $galleryItems->count() ? $galleryItems->first()->getMedia() : $vehicle->getPreview();
  48.             $usedCars[] = [
  49.                 "id" => $vehicle->getVehicleId(),
  50.                 "name" => $vehicle->getModelName(),
  51.                 "price" => $vehicle->price(),
  52.                 "year" => $vehicle->getYear(),
  53.                 'mileage' => $vehicle->getMileage(),
  54.                 "url" => $this->router->generate('toyota_secondhand_catalog'),
  55.                 "image" => $this->mediaExtensionVidi->getPath($image'reference'),
  56.                 "body" => $vehicle->getBodyTypeName($request->getLocale()),
  57.                 "engine" => $vehicle->getFuelTypeName($request->getLocale()),
  58.                 "transmission" => $vehicle->getTransmissionTypeName($request->getLocale()),
  59.                 "drive" => $vehicle->getDriveUnitTypeName($request->getLocale()),
  60.                 "reserved" => $vehicle->hasReserved(),
  61.             ];
  62.         }
  63.         return new JsonResponse(['success' => true'usedCars' => $usedCars]);
  64.     }
  65. }