src/ImporterBundle/Controller/Yamaha/MainController.php line 22

Open in your IDE?
  1. <?php
  2. namespace ImporterBundle\Controller\Yamaha;
  3. use CoreBundle\Component\CoreFormFactory;
  4. use CoreBundle\Factory\Vehicle;
  5. use CoreBundle\Model\Vehicles\Repository;
  6. use CoreBundle\Services\MediaExtensionVidi;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use ImporterBundle\Entity\MainSlider;
  9. use ImporterBundle\Model\Post;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\HttpFoundation\RedirectResponse;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\RequestStack;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\RouterInterface;
  16. use Twig\Environment;
  17. class MainController extends BaseController
  18. {
  19.     public function __construct(RequestStack $requestStackEntityManagerInterface $emCoreFormFactory $coreFormFactoryMediaExtensionVidi $mediaExtensionVidiRouterInterface $routerEnvironment $twig)
  20.     {
  21.         parent::__construct($requestStack$em$coreFormFactory$mediaExtensionVidi$router$twig);
  22.     }
  23.     public function redirectImporterYamaha(): RedirectResponse
  24.     {
  25.         return $this->redirectToRoute('yamaha_importer_homepage', [], Response::HTTP_MOVED_PERMANENTLY);
  26.     }
  27.     public function index(Request $requestVehicle $vehicleFactoryRepository $repositoryModel): ?Response
  28.     {
  29.         $slides $this->em->getRepository(MainSlider::class)
  30.             //TODO remove magic numbers
  31.             ->findBy(['dealer' => $this->getDealer(), 'state' => 1], ['position' => 'ASC']);
  32.         $postRepo $this->em->getRepository(\ImporterBundle\Entity\Post::class)
  33.             //TODO remove magic numbers
  34.             ->findBy(['dealer' => $this->getDealer(), 'state' => 1], ['date_create' => 'DESC']);
  35.         $cars $repositoryModel
  36.             ->getNewByDealer($this->getDealer()->getBrand()->getDealer()->first());
  37.         $categories = [];
  38.         $bodies = [];
  39.         foreach ($cars as $crafted) {
  40.             $crafted $vehicleFactory->createByEntity($crafted);
  41.             if (!$crafted) {
  42.                 continue;
  43.             }
  44.             if (!$crafted->getBodyType()) {
  45.                 continue;
  46.             }
  47.             $categoryId $crafted->getCategory()->getId();
  48.             $categoryUrl $crafted->getCategory()->getUrl();
  49.             $categoryName $crafted->getCategory()->getTitle($request->getLocale());
  50.             $categoryImage $crafted->getCategory()->getImage();
  51.             $bodyId $crafted->getBodyType()->getId();
  52.             $bodies[$categoryUrl][$bodyId] = [
  53.                 'id' => $bodyId,
  54.                 'name' => $crafted->getBodyTypeName($request->getLocale()),
  55.             ];
  56.             $categories[$categoryUrl] = [
  57.                 'id' => $categoryId,
  58.                 'name' => $categoryName,
  59.                 'url' => $categoryUrl,
  60.                 'image' => $categoryImage,
  61.             ];
  62.         }
  63.         $posts = [];
  64.         $router $this->router;
  65.         foreach ($postRepo as $post) {
  66.             $link '';
  67.             if ($post->getPostType() == Post::POST_TYPE_NEWS) {
  68.                 $link $router->generate('yamaha_importer_about_news_single', ['url' => $post->getUrl()]);
  69.                 $typeLink $router->generate('yamaha_importer_about_news');
  70.             }
  71.             if ($post->getPostType() == Post::POST_TYPE_ACTIONS) {
  72.                 $link $router->generate('yamaha_importer_stocks_single', ['url' => $post->getUrl()]);
  73.                 $typeLink $router->generate('yamaha_importer_stocks');
  74.             }
  75.             $posts[$post->getPostType()]['types'] = [
  76.                 'id' => $post->getPostType(),
  77.                 'name' => $post->getTypeName($request->getLocale()),
  78.                 'link' => $typeLink,
  79.             ];
  80.             if (
  81.                 isset($posts[$post->getPostType()]) &&
  82.                 isset($posts[$post->getPostType()]['posts']) &&
  83.                 //TODO remove magic numbers
  84.                 count($posts[$post->getPostType()]['posts']) >= 3
  85.             ) {
  86.                 continue;
  87.             }
  88.             $posts[$post->getPostType()]['posts'][$post->getId()] = [
  89.                 'id' => $post->getId(),
  90.                 'title' => $post->getTitle($request->getLocale()),
  91.                 'image' => $post->getImage($request->getLocale()),
  92.                 'link' => $link,
  93.                 'content' => $post->getContentByLocale($request->getLocale()),
  94.                 'url' => $post->getUrl(),
  95.                 'date' => $post->getDateCreate(),
  96.             ];
  97.         }
  98.         return $this->baseImporterYamahaRender('@Importer/Yamaha/Main/index.html.twig', [
  99.             'categories' => $categories,
  100.             'bodies' => $bodies,
  101.             'slides' => $slides,
  102.             'cars' => $cars,
  103.             'posts' => $posts,
  104.         ]);
  105.     }
  106.     public function footerMenuInit(Request $requestRepository $repositoryModelVehicle $vehicleFactory): JsonResponse
  107.     {
  108.         $vehicles $repositoryModel->getNewByDealer($this->getDealer());
  109.         $bodies = [];
  110.         foreach ($vehicles as $vehicle) {
  111.             $crafted $vehicleFactory->createByEntity($vehicle);
  112.             if (!$crafted) {
  113.                 continue;
  114.             }
  115.             $bodyId $crafted->getBodyType()->getId();
  116.             $bodyName $crafted->getBodyTypeName($request->getLocale());
  117.             $bodies[$bodyId] = [
  118.                 'id' => $bodyId,
  119.                 'name' => $bodyName,
  120.                 'link' => $this->router->generate('yamaha_catalog_all_groups_by_body', ['bodyId' => $bodyId]),
  121.             ];
  122.         }
  123.         return $this->json(['success' => true'bodies' => $bodies]);
  124.     }
  125.     public function notFound(Request $request): ?Response
  126.     {
  127.         $Response = new Response();
  128.         $Response->setStatusCode(Response::HTTP_NOT_FOUND);
  129.         return $this->baseImporterYamahaRender('@Importer/Yamaha/404.html.twig', ['_locale' => $request->getLocale()], $Response);
  130.     }
  131.     public function testDrive(): ?Response
  132.     {
  133.         return $this->baseImporterYamahaRender('@Importer/Yamaha/test-drive.html.twig', [
  134.             'testDriveForm' => $this->CoreFormFactory()->subTestDriveForm()->createView(),
  135.         ]);
  136.     }
  137.     public function conditionOfSales(): ?Response
  138.     {
  139.         return $this->baseImporterYamahaRender('@Importer/Yamaha/condition-of-sales.html.twig');
  140.     }
  141. }