src/DcSiteBundle/Controller/Unicommerce/CarController.php line 32

Open in your IDE?
  1. <?php
  2. namespace DcSiteBundle\Controller\Unicommerce;
  3. use CoreBundle\Component\CoreFormFactory;
  4. use CoreBundle\Component\FormManager;
  5. use CoreBundle\Entity\Vehicles\Category;
  6. use CoreBundle\Entity\Vehicles\Group;
  7. use CoreBundle\Factory\Vehicle as VehicleFactory;
  8. use CoreBundle\Model\Api\OnlineService\ApiServer1C;
  9. use CoreBundle\Model\Vehicles\Repository;
  10. use CoreBundle\Services\MediaExtensionVidi;
  11. use DcSiteBundle\Services\VehicleService;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use PortalBundle\Model\SeoMetaTag;
  14. use Symfony\Component\Filesystem\Filesystem;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\HttpFoundation\RequestStack;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  19. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  20. use Symfony\Component\Routing\RouterInterface;
  21. use Twig\Environment;
  22. class CarController extends BaseController
  23. {
  24.     public function __construct(CoreFormFactory $coreFormFactorySeoMetaTag $seoMetaTagRequestStack $requestStackRouterInterface $routerFormManager $formManagerEntityManagerInterface $emApiServer1C $apiServer1CSessionInterface $sessionFilesystem $filesystemMediaExtensionVidi $mediaExtensionVidiRepository $vehicleRepositoryVehicleFactory $vehicleFactoryEnvironment $twig)
  25.     {
  26.         parent::__construct($coreFormFactory$seoMetaTag$requestStack$router$formManager$em$apiServer1C$session$filesystem$mediaExtensionVidi$vehicleRepository$vehicleFactory$twig);
  27.     }
  28.     public function carCatalog(Request $request$category): ?Response
  29.     {
  30.         $category $request->get('category');
  31.         $catalogCategory $this->em->getRepository(Category::class)->findOneBy(['url' => $category]);
  32.         if (!$catalogCategory) {
  33.             throw new NotFoundHttpException();
  34.         }
  35.         $catalogGroup $this->em->getRepository(Group::class)->getGroupByCategory($catalogCategory$this->getDealer());
  36.         $vehicleGroup = [];
  37.         if ($catalogGroup) {
  38.             /** @var Group $group */
  39.             foreach ($catalogGroup as $group) {
  40.                 $vehiclesRepo $this->vehicleRepository->getByCategoryGroup($catalogCategory$group$this->getDealer());
  41.                 $vehicles $this->vehicleFactory->createByEntities($vehiclesRepo);
  42.                 $vehicleGroup[] = [
  43.                     'group' => $group,
  44.                     'vehicles' => $vehicles,
  45.                 ];
  46.             }
  47.         } else {
  48.             $vehiclesRepo $this->vehicleRepository->getByCategory($catalogCategory$this->getDealer());
  49.             $vehicleGroup[] = [
  50.                 'group' => null,
  51.                 'vehicles' => $this->vehicleFactory->createByEntities($vehiclesRepo),
  52.             ];
  53.         }
  54.         return $this->baseUnicommerceRender('@DcSite/Unicommerce/Car/car-catalog.html.twig', [
  55.             'seoMeta' => $this->seoMetaTag->getSeoMeta($request),
  56.             'catalogCategory' => $catalogCategory,
  57.             'vehicleGroup' => $vehicleGroup,
  58.         ]);
  59.     }
  60.     public function carCatalogGroup(Request $request): ?Response
  61.     {
  62.         $category $request->get('category');
  63.         $group $request->get('group');
  64.         $catalogCategory $this->em->getRepository(Category::class)->findOneBy(['url' => $category]);
  65.         if (!$catalogCategory) {
  66.             throw new NotFoundHttpException();
  67.         }
  68.         $catalogGroup $this->em->getRepository(Group::class)->findOneBy(['dealer' => $this->getDealer(), 'url' => $group]);
  69.         if (!$catalogGroup) {
  70.             throw new NotFoundHttpException();
  71.         }
  72.         $vehiclesRepo $this->vehicleRepository->getByCategoryGroup($catalogCategory$catalogGroup$this->getDealer());
  73.         $vehicles $this->vehicleFactory->createByEntities($vehiclesRepo);
  74.         return $this->baseUnicommerceRender('@DcSite/Unicommerce/Car/car-catalog-group.html.twig', [
  75.             'catalogCategory' => $catalogCategory,
  76.             'catalogGroup' => $catalogGroup,
  77.             'vehicles' => $vehicles,
  78.         ]);
  79.     }
  80.     public function carSingle(Request $requestVehicleService $vehicleService): ?Response
  81.     {
  82.         $category $request->get('category');
  83.         $group $request->get('group');
  84.         $vehicleUrl $request->get('vehicleUrl');
  85.         $catalogCategory $this->em->getRepository(Category::class)->findOneBy(['url' => $category]);
  86.         if (!$catalogCategory) {
  87.             throw new NotFoundHttpException();
  88.         }
  89.         $catalogGroup null;
  90.         if ($group) {
  91.             $catalogGroup $this->em->getRepository(Group::class)->findOneBy(['dealer' => $this->getDealer(), 'url' => $group]);
  92.             if (!$catalogGroup) {
  93.                 throw new NotFoundHttpException();
  94.             }
  95.         }
  96.         $vehicle $this->vehicleFactory->createByUrl($vehicleUrl$this->getDealer());
  97.         $galleryImages = [];
  98.         if ($vehicle->getGallery()) {
  99.             $galleryItems $vehicle->getGallery()->getGalleryItems();
  100.             foreach ($galleryItems as $galleryItem) {
  101.                 $galleryImages[] = $this->mediaExtensionVidi->getPath($galleryItem->getMedia(), 'reference');
  102.             }
  103.         }
  104.         if (!$vehicle) {
  105.             throw new NotFoundHttpException();
  106.         }
  107.         $vehicleEm $vehicle->getVehicleEntity();
  108.         $vehiclePrice $vehicleService->getVehiclePrice($vehicleEm);
  109.         $vehicleEquipment $vehicleService->getVehicleEquipment($vehicleEm);
  110.         $vehicleFile $vehicleService->getVehicleFile($vehicleEm);
  111.         $vehicleFaqs $vehicleService->getVehicleFaqs($vehicleEm);
  112.         return $this->baseUnicommerceRender('@DcSite/Unicommerce/Car/car-card-single.html.twig', [
  113.             'catalogCategory' => $catalogCategory,
  114.             'catalogGroup' => $catalogGroup,
  115.             'vehicle' => $vehicle,
  116.             'vehiclePrice' => $vehiclePrice,
  117.             'vehicleEquipment' => $vehicleEquipment,
  118.             'vehicleFile' => $vehicleFile,
  119.             'faqs' => $vehicleFaqs,
  120.             'serviceOrderForm' => $this->CoreFormFactory()->subFeedbackQuestionForm()->createView(),
  121.             'galleryImages' => $galleryImages
  122.         ]);
  123.     }
  124. }