src/DcSiteBundle/Controller/Subaru/MainController.php line 40

Open in your IDE?
  1. <?php
  2. namespace DcSiteBundle\Controller\Subaru;
  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\Services\MediaExtensionVidi;
  9. use DcSiteBundle\Entity\SalesContract;
  10. use DcSiteBundle\Entity\TermsMaintenance;
  11. use DcSiteBundle\Services\Subaru\VehicleService;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use PortalBundle\Model\SeoMetaTag;
  14. use Symfony\Component\Filesystem\Filesystem;
  15. use Symfony\Component\HttpFoundation\JsonResponse;
  16. use Symfony\Component\HttpFoundation\RedirectResponse;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\RequestStack;
  19. use Symfony\Component\HttpFoundation\Response;
  20. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  21. use Symfony\Component\Routing\RouterInterface;
  22. use Twig\Environment;
  23. class MainController extends BaseController
  24. {
  25.     public function __construct(CoreFormFactory $coreFormFactorySeoMetaTag $seoMetaTagRequestStack $requestStackRouterInterface $routerFormManager $formManagerEntityManagerInterface $emApiServer1C $apiServer1CSessionInterface $sessionFilesystem $filesystemMediaExtensionVidi $mediaExtensionVidiRepository $vehicleRepositoryVehicleFactory $vehicleFactoryEnvironment $twig)
  26.     {
  27.         parent::__construct($coreFormFactory$seoMetaTag$requestStack$router$formManager$em$apiServer1C$session$filesystem$mediaExtensionVidi$vehicleRepository$vehicleFactory$twig);
  28.     }
  29.     public function redirectSubaru(): RedirectResponse
  30.     {
  31.         return $this->redirectToRoute('subaru_homepage', [], 301);
  32.     }
  33.     public function index(Request $requestVehicleService $vehicleService): Response
  34.     {
  35.         return $this->baseSubaruRender('@DcSite/Subaru/Main/index.html.twig', [
  36.             'cars' => $vehicleService->getVehiclesForHeader($this->getDealer(), $request),
  37.             'dealer' => $this->getDealer(),
  38.         ]);
  39.     }
  40.     public function initMenu(Request $request): JsonResponse
  41.     {
  42.         $envUrl $_ENV['APP_ENV'] == 'dev' 'http' 'https';
  43.         $baseUrl $envUrl '://' $this->getParameter('subaru_host');
  44.         $Dealer $this->getDealer();
  45.         $menu $this->getModelMenuItems($request->getLocale(), 'reference');
  46.         foreach ($menu as &$category) {
  47.             foreach ($category['cars'] as &$car) {
  48.                 $car['url'] = $baseUrl $this->router->generate('subaru_card_car', [
  49.                             'car' => $car['url'],
  50.                         ]
  51.                     );
  52.             }
  53.         }
  54.         $menu array_reverse($menu);
  55.         return new JsonResponse($menu);
  56.     }
  57.     public function notFound(): ?Response
  58.     {
  59.         $Response = new Response();
  60.         $Response->setStatusCode(Response::HTTP_NOT_FOUND);
  61.         return $this->baseSubaruRender('@DcSite/Subaru/404.html.twig', [], $Response);
  62.     }
  63.     public function contacts(): ?Response
  64.     {
  65.         return $this->baseSubaruRender('@DcSite/Subaru/Contacts/contacts.html.twig');
  66.     }
  67.     public function stocks(): ?Response
  68.     {
  69.         return $this->baseSubaruRender('@DcSite/Subaru/Stocks/car-stocks.html.twig');
  70.     }
  71.     public function stocksSingle(): ?Response
  72.     {
  73.         return $this->baseSubaruRender('@DcSite/Subaru/Stocks/stocks-single.html.twig');
  74.     }
  75.     public function conditionOfSales(): ?Response
  76.     {
  77.         $filesByType $this->em->getRepository(SalesContract::class)->getFilesByTypes($this->getDealer());
  78.         return $this->baseSubaruRender('@DcSite/Subaru/condition-of-sales.html.twig', [
  79.             'filesByType' => $filesByType,
  80.         ]);
  81.     }
  82.     public function termsMaintenance(): ?Response
  83.     {
  84.         $files $this->em->getRepository(TermsMaintenance::class)->findBy(['dealer' => $this->getDealer()], ['begin_date' => 'ASC']);
  85.         return $this->baseSubaruRender('@DcSite/Subaru/terms-maintenance.html.twig', [
  86.             'mainFile' => array_pop($files),
  87.             'files' => $files,
  88.             'dealer' => $this->getDealer(),
  89.         ]);
  90.     }
  91. }