src/Controller/VehicleController.php line 82

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Sio;
  4. use App\Entity\SioRti;
  5. use App\Entity\Vehicle;
  6. use App\Repository\InfoRepository;
  7. use App\Repository\MakeRepository;
  8. use App\Repository\SectionRepository;
  9. use App\Repository\SioRepository;
  10. use App\Repository\SubSectionRepository;
  11. use App\Repository\VehicleRepository;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. class VehicleController extends AbstractController
  16. {
  17.     #[Route('/{makeName}/{vehicleName}/{year}')]
  18.     public function index(VehicleRepository $vehicleRepoMakeRepository $makeRepostring $makeName,
  19.                           string            $vehicleNameint $year): Response
  20.     {
  21.         $vehicle $this->getVehicle($vehicleRepo$makeRepo$makeName$vehicleName$year);
  22.         $breadcrumbs = [
  23.             ['url' => '/''name' => 'Makes'],
  24.             ['url' => '/'$makeName'name' => $makeName],
  25.             ['url' =>  '/'$makeName.'/'.$year'name' => $year],
  26.             ['url' => null'name' => $vehicle->getModelDesc()],
  27.         ];
  28.         return $this->render('vehicle/index.html.twig', [
  29.             'controller_name' => 'VehicleController',
  30.             'vehicle' => $vehicle,
  31.             'books_and_sections' => $vehicleRepo->getBooksAndSections($vehicle),
  32.             'breadcrumbs' => $breadcrumbs,
  33.             'showDtc' => $vehicleRepo->hasDtc($vehicle),
  34.         ]);
  35.     }
  36.     #[Route('/{makeName}/{vehicleName}/{year}/bulletins')]
  37.     public function bulletins(VehicleRepository $vehicleRepoMakeRepository $makeRepostring $makeName,
  38.                               string            $vehicleNameint $year): Response
  39.     {
  40.         $vehicle $this->getVehicle($vehicleRepo$makeRepo$makeName$vehicleName$year);
  41.         $breadcrumbs = [
  42.             ['url' => '/''name' => 'Makes'],
  43.             ['url' => '/'$makeName'name' => $makeName],
  44.             ['url' =>  '/'$makeName.'/'.$year'name' => $year],
  45.             ['url' => $vehicle->getSeoUrl(), 'name' => $vehicle->getModelDesc()],
  46.             ['url' => null'name' => 'Bulletins'],
  47.         ];
  48.         return $this->render('vehicle/bulletins.html.twig', [
  49.             'controller_name' => 'VehicleController',
  50.             'vehicle' => $vehicle,
  51.             'bulletins' => $vehicleRepo->getBulletins($vehicle),
  52.             'breadcrumbs' => $breadcrumbs,
  53.         ]);
  54.     }
  55.     #[Route('/{makeName}/{vehicleName}/{year}/dtc')]
  56.     public function dtcs(VehicleRepository $vehicleRepoMakeRepository $makeRepostring $makeName,
  57.                               string            $vehicleNameint $year): Response
  58.     {
  59.         $vehicle $this->getVehicle($vehicleRepo$makeRepo$makeName$vehicleName$year);
  60.         $breadcrumbs = [
  61.             ['url' => '/''name' => 'Makes'],
  62.             ['url' => '/'$makeName'name' => $makeName],
  63.             ['url' =>  '/'$makeName.'/'.$year'name' => $year],
  64.             ['url' => $vehicle->getSeoUrl(), 'name' => $vehicle->getModelDesc()],
  65.             ['url' => null'name' => 'DTC'],
  66.         ];
  67.         return $this->render('vehicle/dtcs.html.twig', [
  68.             'controller_name' => 'VehicleController',
  69.             'vehicle' => $vehicle,
  70.             'dtcs' => $vehicleRepo->getDtcs($vehicle),
  71.             'breadcrumbs' => $breadcrumbs,
  72.         ]);
  73.     }
  74.     #[Route('/{makeName}/{vehicleName}/{year}/dtc/{cellId}')]
  75.     public function dtc(VehicleRepository $vehicleRepoMakeRepository $makeRepoInfoRepository $infoRepository,
  76.                         string $makeName,
  77.                               string            $vehicleNameint $yearint $cellId): Response
  78.     {
  79.         /** @var SioRti $info */
  80.         $info $infoRepository->findOneBy(['cell' => $cellId]);
  81.         $vehicle $this->getVehicle($vehicleRepo$makeRepo$makeName$vehicleName$year);
  82.         $breadcrumbs = [
  83.             ['url' => '/''name' => 'Makes'],
  84.             ['url' => '/'$makeName'name' => $makeName],
  85.             ['url' =>  '/'$makeName.'/'.$year'name' => $year],
  86.             ['url' => $vehicle->getSeoUrl(), 'name' => $vehicle->getModelDesc()],
  87.             ['url' => $vehicle->getSeoUrl().'/dtc''name' => 'DTC'],
  88.             ['url' => null'name' => $info->getPsdSieTitleDesc()],
  89.         ];
  90.         return $this->render('vehicle/info.html.twig', [
  91.             'controller_name' => 'VehicleController',
  92.             'vehicle' => $vehicle,
  93.             'title' => $info->getPsdSieTitleDesc(),
  94.             'documents' => $vehicleRepo->getContentCellId($vehicle$cellId),
  95.             'breadcrumbs' => $breadcrumbs,
  96.         ]);
  97.     }
  98.     #[Route('/{makeName}/{vehicleName}/{year}/bulletins/{infoId}')]
  99.     public function bulletin(VehicleRepository $vehicleRepoMakeRepository $makeRepoSioRepository $infoRepository,
  100.                              string            $makeNamestring $vehicleNameint $yearint $infoId): Response
  101.     {
  102.         /** @var Sio $info */
  103.         $info $infoRepository->findOneBy(['infoId' => $infoId]);
  104.         if (!$info) {
  105.             return $this->render('404.html.twig', ['breadcrumbs' => []]);
  106.         }
  107.         $vehicle $this->getVehicle($vehicleRepo$makeRepo$makeName$vehicleName$year);
  108.         $breadcrumbs = [
  109.             ['url' => '/''name' => 'Makes'],
  110.             ['url' => '/'$makeName'name' => $makeName],
  111.             ['url' =>  '/'$makeName.'/'.$year'name' => $year],
  112.             ['url' => $vehicle->getSeoUrl(), 'name' => $vehicle->getModelDesc()],
  113.             ['url' => $vehicle->getSeoUrl().'/bulletins''name' => 'Bulletins'],
  114.             ['url' => null'name' => $info->getRefDesc()],
  115.         ];
  116.         return $this->render('vehicle/bulletin.html.twig', [
  117.             'controller_name' => 'VehicleController',
  118.             'vehicle' => $vehicle,
  119.             'title' => $info->getRefDesc(),
  120.             'document' => $vehicleRepo->getBulletinContent($vehicle$infoId),
  121.             'breadcrumbs' => $breadcrumbs,
  122.         ]);
  123.     }
  124.     #[Route('/{makeName}/{vehicleName}/{year}/doc/{infoId}')]
  125.     public function docInfo(MakeRepository $makeRepoVehicleRepository $vehicleRepo,  SioRepository $infoRepository,
  126.                              string            $makeNamestring $vehicleNameint $yearint $infoId): Response
  127.     {
  128.         /** @var Sio $info */
  129.         $info $infoRepository->findOneBy(['infoId' => $infoId]);
  130.         if (!$info) {
  131.             return $this->render('404.html.twig', ['breadcrumbs' => []]);
  132.         }
  133.         $vehicle $this->getVehicle($vehicleRepo$makeRepo$makeName$vehicleName$year);
  134.         $breadcrumbs = [
  135.             ['url' => '/''name' => 'Makes'],
  136.             ['url' => '/'$makeName'name' => $makeName],
  137.             ['url' =>  '/'$makeName.'/'.$year'name' => $year],
  138.             ['url' => $vehicle->getSeoUrl(), 'name' => $vehicle->getModelDesc()],
  139.             ['url' => null'name' => $info->getRefDesc()],
  140.         ];
  141.         return $this->render('vehicle/bulletin.html.twig', [
  142.             'controller_name' => 'VehicleController',
  143.             'vehicle' => $vehicle,
  144.             'title' => $info->getRefDesc(),
  145.             'document' => $vehicleRepo->getDocContent($vehicle$infoId),
  146.             'breadcrumbs' => $breadcrumbs,
  147.         ]);
  148.     }
  149.     #[Route('/{makeName}/{vehicleName}/{year}/{bookId}/{sectionId}')]
  150.     public function subsections(VehicleRepository $vehicleRepoMakeRepository $makeRepoSectionRepository $secRepo,
  151.                                 string            $makeNamestring $vehicleNameint $yearint $bookId,
  152.                                 int               $sectionId): Response
  153.     {
  154.         $section $secRepo->getSection($sectionId$bookId);
  155.         $vehicle $this->getVehicle($vehicleRepo$makeRepo$makeName$vehicleName$year);
  156.         $breadcrumbs = [
  157.             ['url' => '/''name' => 'Makes'],
  158.             ['url' => '/'$makeName'name' => $makeName],
  159.             ['url' =>  '/'$makeName.'/'.$year'name' => $year],
  160.             ['url' => $vehicle->getSeoUrl(), 'name' => $vehicle->getModelDesc()],
  161.             ['url' => null'name' => $section->getCompSecTitle()],
  162.         ];
  163.         return $this->render('vehicle/subsections.html.twig', [
  164.             'controller_name' => 'VehicleController',
  165.             'vehicle' => $vehicle,
  166.             'section' => $section,
  167.             'subsections' => $vehicleRepo->getSubsections($vehicle$section),
  168.             'breadcrumbs' => $breadcrumbs,
  169.         ]);
  170.     }
  171.     #[Route('/{makeName}/{vehicleName}/{year}/{bookId}/{sectionId}/{mspsdId}')]
  172.     public function getCellList(VehicleRepository $vehicleRepoMakeRepository $makeRepoSectionRepository $secRepo,
  173.                                 SubSectionRepository $subSecRepo,
  174.                                 string            $makeNamestring $vehicleNameint $yearint $bookId,
  175.                                 int               $sectionIdint $mspsdId): Response
  176.     {
  177.         $section $secRepo->getSection($sectionId$bookId);
  178.         $subSecRepo $subSecRepo->getSubSection($sectionId$bookId$mspsdId);
  179.         $vehicle $this->getVehicle($vehicleRepo$makeRepo$makeName$vehicleName$year);
  180.         $breadcrumbs = [
  181.             ['url' => '/''name' => 'Makes'],
  182.             ['url' => '/'$makeName'name' => $makeName],
  183.             ['url' =>  '/'$makeName.'/'.$year'name' => $year],
  184.             ['url' => $vehicle->getSeoUrl(), 'name' => $vehicle->getModelDesc()],
  185.             ['url' => $vehicle->getSeoUrl().'/'.$bookId.'/'.$sectionId'name' => $section->getCompSecTitle()],
  186.             ['url' => null'name' => $subSecRepo->getCompSubsecTitle()],
  187.         ];
  188.         return $this->render('vehicle/info-list.html.twig', [
  189.             'controller_name' => 'VehicleController',
  190.             'vehicle' => $vehicle,
  191.             'section' => $section,
  192.             'cellGroup' => $vehicleRepo->getCellList($vehicle$section$mspsdId),
  193.             'breadcrumbs' => $breadcrumbs,
  194.         ]);
  195.     }
  196.     #[Route('/{makeName}/{vehicleName}/{year}/{bookId}/{sectionId}/{mspsdId}/{cellId}')]
  197.     public function getCell(VehicleRepository $vehicleRepoMakeRepository $makeRepoInfoRepository $infoRepository,
  198.                             SubSectionRepository $subSecRepo,
  199.                             SectionRepository $secRepostring $makeNamestring $vehicleNameint $yearint $bookId,
  200.                             int               $sectionIdint $mspsdIdint $cellId): Response
  201.     {
  202.         /** @var SioRti $info */
  203.         $info $infoRepository->findOneBy(['cell' => $cellId]);
  204.         if (!$info) {
  205.             return $this->render('404.html.twig', ['breadcrumbs' => []]);
  206.         }
  207.         $section $secRepo->getSection($sectionId$bookId);
  208.         $subSecRepo $subSecRepo->getSubSection($sectionId$bookId$mspsdId);
  209.         $vehicle $this->getVehicle($vehicleRepo$makeRepo$makeName$vehicleName$year);
  210.         $breadcrumbs = [
  211.             ['url' => '/''name' => 'Makes'],
  212.             ['url' => '/'$makeName'name' => $makeName],
  213.             ['url' =>  '/'$makeName.'/'.$year'name' => $year],
  214.             ['url' => $vehicle->getSeoUrl(), 'name' => $vehicle->getModelDesc()],
  215.             ['url' => $vehicle->getSeoUrl().'/'.$bookId.'/'.$sectionId'name' => $section->getCompSecTitle()],
  216.             ['url' => $vehicle->getSeoUrl().'/'.$bookId.'/'.$sectionId.'/'.$mspsdId'name' => $subSecRepo->getCompSubsecTitle()],
  217.             ['url' => null'name' => $info->getPsdSieTitleDesc()],
  218.         ];
  219.         return $this->render('vehicle/info.html.twig', [
  220.             'controller_name' => 'VehicleController',
  221.             'vehicle' => $vehicle,
  222.             'section' => $section,
  223.             'title' => $info->getPsdSieTitleDesc(),
  224.             'documents' => $vehicleRepo->getContentCellId($vehicle$cellId$bookId$sectionId$mspsdId),
  225.             'breadcrumbs' => $breadcrumbs,
  226.         ]);
  227.     }
  228.     private function getVehicle(VehicleRepository $vehicleRepoMakeRepository $makeRepostring $makeName,
  229.                                 string            $vehicleNameint $year): Vehicle
  230.     {
  231.         $make $makeRepo->findOneBy(['seoUrl' => $makeName]);
  232.         $vehicle $vehicleRepo->findOneBy([
  233.             'mktgDiv' => $make->getMktgDivId(),
  234.             'seoUrl' => $vehicleName,
  235.             'modelYear' => $year,
  236.         ]);
  237.         return $vehicle;
  238.     }
  239. }