src/DcSiteBundle/Controller/Toyota/ServiceController.php line 107

Open in your IDE?
  1. <?php
  2. namespace DcSiteBundle\Controller\Toyota;
  3. use AcquiringBundle\Entity\Order;
  4. use CoreBundle\Component\CoreFormFactory;
  5. use CoreBundle\Component\FormManager;
  6. use CoreBundle\Entity\Dealer;
  7. use CoreBundle\Entity\Forms;
  8. use CoreBundle\Entity\Model;
  9. use CoreBundle\Entity\ServicePage;
  10. use CoreBundle\Factory\Vehicle as VehicleFactory;
  11. use CoreBundle\Model\Api\OnlineService\ApiServer1C;
  12. use CoreBundle\Model\Vehicles\Repository;
  13. use CoreBundle\Model\ViDiDepartmentModel;
  14. use CoreBundle\Model\ViDiWorkerModel;
  15. use CoreBundle\Services\MediaExtensionVidi;
  16. use DcSiteBundle\Entity\OnlineServiceBooking;
  17. use DcSiteBundle\Entity\Part;
  18. use DcSiteBundle\Model\Form\ServiceForm;
  19. use DcSiteBundle\Services\RentVehicleService;
  20. use DcSiteBundle\Services\ServicePageService;
  21. use DcSiteBundle\Services\VehicleService;
  22. use Doctrine\ORM\EntityManagerInterface;
  23. use MyBundle\Service\OrderService;
  24. use PortalBundle\Model\SeoMetaTag;
  25. use stdClass;
  26. use Symfony\Component\Filesystem\Filesystem;
  27. use Symfony\Component\HttpFoundation\JsonResponse;
  28. use Symfony\Component\HttpFoundation\Request;
  29. use Symfony\Component\HttpFoundation\RequestStack;
  30. use Symfony\Component\HttpFoundation\Response;
  31. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  32. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  33. use Symfony\Component\Routing\RouterInterface;
  34. use Twig\Environment;
  35. class ServiceController extends BaseController
  36. {
  37.     public function __construct(CoreFormFactory $coreFormFactorySeoMetaTag $seoMetaTagRequestStack $requestStackRouterInterface $routerFormManager $formManagerEntityManagerInterface $emApiServer1C $apiServer1CSessionInterface $sessionFilesystem $filesystemMediaExtensionVidi $mediaExtensionVidiRepository $vehicleRepositoryVehicleFactory $vehicleFactoryEnvironment $twig)
  38.     {
  39.         parent::__construct($coreFormFactory$seoMetaTag$requestStack$router$formManager$em$apiServer1C$session$filesystem$mediaExtensionVidi$vehicleRepository$vehicleFactory$twig);
  40.     }
  41.     public function signIn(Request $requestServicePageService $servicePageService): ?Response
  42.     {
  43.         switch ($request->get('serviceType')) {
  44.             case 'guarantee':
  45.                 $defType ServiceForm::BROKE_SERVICE_TYPE;
  46.                 break;
  47.             case 'body-repair':
  48.                 $defType ServiceForm::BODY_SERVICE_TYPE;
  49.                 break;
  50.             default:
  51.                 $defType null;
  52.         }
  53.         $serviceForm $this->CoreFormFactory()->serviceForm(nulltrue$defType);
  54.         $services $servicePageService->getServiceByDealer($this->getDealer());
  55.         return $this->baseToyotaRender('@DcSite/Toyota/Service/sign-in.html.twig', [
  56.             'serviceForm' => $serviceForm->createView(),
  57.             'dealerName' => $this->getDealer()->getBrand()->getName(),
  58.             'services' => $services,
  59.         ]);
  60.     }
  61.     public function servicePage(Request $requestServicePageService $servicePageServiceViDiWorkerModel $viDiWorkerModel): ?Response
  62.     {
  63.         /** @var ServicePage $servicePage */
  64.         $servicePage $this->em->getRepository(ServicePage::class)->findOneBy(['dealer' => $this->getDealer(), 'state' => true'url' => $request->get('url')]);
  65.         if (!$servicePage) {
  66.             throw $this->createNotFoundException('service page not exists');
  67.         }
  68.         $pageServiceJobs $servicePageService->getPageServiceJobByPage($this->getDealer());
  69.         $pageNearbyService $servicePageService->getServiceByNearbyService($this->getDealer(), $servicePage);
  70.         $facilities explode(', '$this->getDealer()->getFacilities());
  71.         $workers $viDiWorkerModel->getAllByDealer($this->getDealer(), $request->getLocale());
  72.         $departmentService array_filter($workers, fn($row) => $row['department']->getId() === 29);
  73.         $departmentService array_values($departmentService);
  74.         $departmentService $departmentService[0] ?? [];
  75.         return $this->baseToyotaRender('@DcSite/Toyota/Service/service-page.html.twig', [
  76.             'servicePage' => $servicePage,
  77.             'pageServiceJobs' => $pageServiceJobs,
  78.             'pageNearbyService' => $pageNearbyService,
  79.             'dealerFacilities' => $facilities,
  80.             'departmentService' => $departmentService,
  81.         ]);
  82.     }
  83.     public function express(Request $request): Response
  84.     {
  85.         //TODO need some documentation
  86.         return $this->baseToyotaRender('@DcSite/Toyota/Service/express.html.twig');
  87.     }
  88.     public function guarantee(Request $request): Response
  89.     {
  90.         return $this->baseToyotaRender('@DcSite/Toyota/Service/guarantee.html.twig');
  91.     }
  92.     public function extendedWarranty(Request $request): ?Response
  93.     {
  94.         return $this->baseToyotaRender('@DcSite/Toyota/Service/extended-warranty.html.twig');
  95.     }
  96.     public function assistance(Request $request): Response
  97.     {
  98.         return $this->baseToyotaRender('@DcSite/Toyota/Service/assistance.html.twig');
  99.     }
  100.     public function tireHotel(Request $request): Response
  101.     {
  102.         return $this->baseToyotaRender('@DcSite/Toyota/Service/tire-hotel.html.twig', [
  103.             'tireHotelOrder' => $this->CoreFormFactory()->serviceForm()->createView(),
  104.         ]);
  105.     }
  106.     public function bodyRepair(): Response
  107.     {
  108.         $repairPhotoForm $this->CoreFormFactory()->repairPhotoForm();
  109.         return $this->baseToyotaRender('@DcSite/Toyota/Service/body-repair.html.twig', [
  110.             'repairPhotoForm' => $repairPhotoForm->createView(),
  111.         ]);
  112.     }
  113.     public function spares(): Response
  114.     {
  115.         return $this->baseToyotaRender('@DcSite/Toyota/Service/spares.html.twig', [
  116.             'spareForm' => $this->CoreFormFactory()->buySparePartsForm($this->getDealer())->createView(),
  117.         ]);
  118.     }
  119.     public function loyalty(): ?Response
  120.     {
  121.         return $this->baseToyotaRender('@DcSite/Toyota/Service/loyalty.html.twig');
  122.     }
  123.     public function searchPart(Request $request): JsonResponse
  124.     {
  125.         $search $request->request->get('searchString');
  126.         $dealerId $request->request->get('dealer');
  127.         if ($dealerId) {
  128.             $dealer $this->em->getRepository(Dealer::class)->find($dealerId);
  129.         } else {
  130.             $dealer $this->getDealer();
  131.         }
  132.         $part $this->em->getRepository(Part::class)
  133.             ->findOneBy(['dealer' => $dealer'number' => $search'state' => 1]);
  134.         if (!$part) {
  135.             return new JsonResponse(['success' => false]);
  136.         }
  137.         //TODO remove magic numbers
  138.         return new JsonResponse(['success' => true'data' => [
  139.             'isInStock' => $part->getCount() > 0,
  140.             'price' => $part->getPrice(),
  141.             'id' => $part->getId(),
  142.             'title' => $part->getNameByLocale($request->getLocale()),
  143.         ]]);
  144.     }
  145.     public function tuning(): ?Response
  146.     {
  147.         return $this->baseToyotaRender('@DcSite/Toyota/Service/tuning.html.twig',
  148.             [
  149.                 'form' => $this
  150.                     ->CoreFormFactory()
  151.                     ->fbDefQuestionForm(
  152.                         'Заказ тюнинга',
  153.                         ViDiDepartmentModel::DEPARTMENT_TYPE_SERVICE,
  154.                         null,
  155.                         $this->getDealer())->createView(),
  156.             ]
  157.         );
  158.     }
  159.     public function accessoriesTest(): Response
  160.     {
  161.         $userId $this->getUser()
  162.             ? $this->getUser()->getId()
  163.             : null;
  164.         $dealerId $this->getDealer()->getId();
  165.         return $this->baseToyotaRender('@DcSite/Toyota/Service/accessories-test.html.twig',
  166.             compact('dealerId''userId'));
  167.     }
  168.     public function regulations(VehicleService $vehicleService): ?Response
  169.     {
  170.         $models $vehicleService->getModelsForRegulationsTo($this->getDealer());
  171.         return $this->baseToyotaRender('@DcSite/Toyota/Service/regulation-to.html.twig', [
  172.             'dealer' => $this->getDealer(),
  173.             'models' => $models,
  174.         ]);
  175.     }
  176.     public function regulationsModel($model): ?Response
  177.     {
  178.         $model $this->em->getRepository(Model::class)->findOneBy(['url' => $model]);
  179.         if (!$model) {
  180.             throw new NotFoundHttpException();
  181.         }
  182.         return $this->baseToyotaRender('@DcSite/Toyota/Service/regulation-to-single.html.twig', [
  183.             'model' => $model->getId(),
  184.             'modelTitle' => $model->getTitle(),
  185.         ]);
  186.     }
  187.     public function multiConsultationEnter(): ?Response
  188.     {
  189.         return $this->baseToyotaRender('@DcSite/Toyota/Service/consultation.html.twig');
  190.     }
  191.     public function multiConsultationForm(): ?Response
  192.     {
  193.         return $this->baseToyotaRender('@DcSite/Toyota/Service/consultation-form.html.twig');
  194.     }
  195.     public function multiConsultationFormOnline(): ?Response
  196.     {
  197.         return $this->baseToyotaRender('@DcSite/Toyota/Service/consultation-form-online.html.twig');
  198.     }
  199.     public function multiConsultationTestdriveForm(): ?Response
  200.     {
  201.         return $this->baseToyotaRender('@DcSite/Toyota/Service/consultation-testdrive-form.html.twig');
  202.     }
  203.     public function gasEquipment(): ?Response
  204.     {
  205.         return $this->baseToyotaRender('@DcSite/Toyota/Service/gas-equipment.html.twig');
  206.     }
  207. //    Oil
  208.     public function motorOils(): ?Response
  209.     {
  210.         return $this->baseToyotaRender('@DcSite/Toyota/Service/motor-oils.html.twig');
  211.     }
  212.     public function oil5w30(Request $request): ?Response
  213.     {
  214.         return $this->baseToyotaRender('@DcSite/Toyota/Service/motor-oils-5w-30.html.twig', [
  215.             'spareForm' => $this->CoreFormFactory()->buySparePartsForm($this->getDealer())->createView(),
  216.         ]);
  217.     }
  218.     //TODO need some documentation for this numbers
  219. //    1
  220.     public function afeOw16(): ?Response
  221.     {
  222.         return $this->baseToyotaRender('@DcSite/Toyota/Service/motor-oils-afe-ow-16.html.twig');
  223.     }
  224. //    2
  225.     public function afeOw20(): ?Response
  226.     {
  227.         return $this->baseToyotaRender('@DcSite/Toyota/Service/motor-oils-afe-ow-20.html.twig');
  228.     }
  229. //    3
  230.     public function pfeOw30(): ?Response
  231.     {
  232.         return $this->baseToyotaRender('@DcSite/Toyota/Service/motor-oils-pfe-ow-30.html.twig');
  233.     }
  234. //    4
  235.     public function fuelEconomy5w30(): ?Response
  236.     {
  237.         return $this->baseToyotaRender('@DcSite/Toyota/Service/motor-oils-fuel-economy-5w-30.html.twig');
  238.     }
  239. //    5
  240.     public function premiumFuelEconomy5w30(): ?Response
  241.     {
  242.         return $this->baseToyotaRender('@DcSite/Toyota/Service/motor-oils-prem-fuel-economy-5w-30.html.twig');
  243.     }
  244. //    6
  245.     public function sae5w40(): ?Response
  246.     {
  247.         return $this->baseToyotaRender('@DcSite/Toyota/Service/motor-oils-sae-5w-40.html.twig');
  248.     }
  249. //    transmission oil
  250.     public function transmissionOils(): ?Response
  251.     {
  252.         return $this->baseToyotaRender('@DcSite/Toyota/Service/transmission-oils.html.twig');
  253.     }
  254. //    1
  255.     public function sae75w90gl5(): ?Response
  256.     {
  257.         return $this->baseToyotaRender('@DcSite/Toyota/Service/transmission-oils-sae-75w-90-gl5.html.twig');
  258.     }
  259. //    2
  260.     public function sae75w90gl4(): ?Response
  261.     {
  262.         return $this->baseToyotaRender('@DcSite/Toyota/Service/transmission-oils-sae-75w-90-gl4.html.twig');
  263.     }
  264. //    3
  265.     public function lsdSae85w90(): ?Response
  266.     {
  267.         return $this->baseToyotaRender('@DcSite/Toyota/Service/transmission-oils-lsd-sae-85w-90.html.twig');
  268.     }
  269. //    4
  270.     public function lt75w85Sae75w85(): ?Response
  271.     {
  272.         return $this->baseToyotaRender('@DcSite/Toyota/Service/transmission-oils-lt-75w-85-sae-75w-85.html.twig');
  273.     }
  274. //    5
  275.     public function hypoidGearLsdSae85w90(): ?Response
  276.     {
  277.         return $this->baseToyotaRender('@DcSite/Toyota/Service/transmission-oils-hypoid-gear-lsd-sae-85w-90.html.twig');
  278.     }
  279. //    6
  280.     public function lf75w(): ?Response
  281.     {
  282.         return $this->baseToyotaRender('@DcSite/Toyota/Service/transmission-oils-lf-75w.html.twig');
  283.     }
  284. //    7
  285.     public function dexron3(): ?Response
  286.     {
  287.         return $this->baseToyotaRender('@DcSite/Toyota/Service/transmission-oils-dexron-3.html.twig');
  288.     }
  289. //    8
  290.     public function t4(): ?Response
  291.     {
  292.         return $this->baseToyotaRender('@DcSite/Toyota/Service/transmission-oils-t-4.html.twig');
  293.     }
  294. //    9
  295.     public function ws(): ?Response
  296.     {
  297.         return $this->baseToyotaRender('@DcSite/Toyota/Service/transmission-oils-ws.html.twig');
  298.     }
  299.     public function cvtFe(): ?Response
  300.     {
  301.         return $this->baseToyotaRender('@DcSite/Toyota/Service/transmission-oils-cvt-fe.html.twig');
  302.     }
  303.     public function mobService(Request $request): Response
  304.     {
  305.         return $this->baseToyotaRender('@DcSite/Toyota/Service/mobile-service.html.twig', [
  306.             'serviceForm' => $this->CoreFormFactory()->serviceForm()->createView(),
  307.         ]);
  308.     }
  309.     public function manuals(): ?Response
  310.     {
  311.         return $this->baseToyotaRender('@DcSite/Toyota/Service/manuals.html.twig');
  312.     }
  313.     public function mobilityOptions(): ?Response
  314.     {
  315.         return $this->baseToyotaRender('@DcSite/Toyota/Service/mobility-options.html.twig');
  316.     }
  317.     public function nightServiceAgreement(): ?Response
  318.     {
  319.         return $this->baseToyotaRender('@DcSite/Toyota/Service/night-service-agreement.html.twig', [
  320.             'dealer' => $this->getDealer()
  321.         ]);
  322.     }
  323.     public function replacementCar(): ?Response
  324.     {
  325.         return $this->baseToyotaRender('@DcSite/Toyota/Service/replacement-car.html.twig');
  326.     }
  327.     public function replacementCarSingle(Request $request): Response
  328.     {
  329.         $booking null;
  330.         if ($request->get('bookingId')) {
  331.             $booking $this->em->getRepository(OnlineServiceBooking::class)->find($request->get('bookingId'));
  332.         }
  333.         if ($request->get('hash')) {
  334.             $order $this->em->getRepository(Order::class)->findOneBy(['hash' => $request->get('hash')]);
  335.         }
  336.         $form $this->CoreFormFactory()
  337.             ->callMeForm(new Forms(), true);
  338.         $form->get('dealer')->setData($this->getDealer());
  339.         return $this->baseToyotaRender('@DcSite/Toyota/Service/replacement-car-single.html.twig', [
  340.             'booking' => $booking,
  341.             'dealer' => $this->getDealer(),
  342.             'order' => isset($order) ? $order->getId() : null,
  343.             'callMeFormPopUp' => $form->createView()
  344.         ]);
  345.     }
  346.     public function orderForRentCar(OrderService $orderService): JsonResponse
  347.     {
  348.         return $this->json($orderService->createOrderWithoutUserForRentCar($this->getDealer()));
  349.     }
  350.     public function getAvailableRentCar(RentVehicleService $rentVehicleService): JsonResponse
  351.     {
  352.         $result $rentVehicleService->getRentCarFrom1C($this->getDealer());
  353.         if (!$result) {
  354.             $result = new stdClass();
  355.             $result->success false;
  356.         } else {
  357.             $result->success true;
  358.         }
  359.         return new JsonResponse($result);
  360.     }
  361.     public function saveReplacementCarForm(Request $requestRentVehicleService $rentVehicleService): JsonResponse
  362.     {
  363.         $rentVehicleService->saveForm(
  364.             $this->getDealer(),
  365.             $request->request->all(),
  366.             $request->getHost());
  367.         return new JsonResponse([
  368.             'success' => true,
  369.         ]);
  370.     }
  371. }