src/Controller/RoadAssistance/RoadAssistanceController.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\Controller\RoadAssistance;
  3. use App\Controller\BaseController;
  4. use App\Entity\RoadAssistance\RoadAssistance;
  5. use App\Manager\BitbagStatic\BlockManager;
  6. use App\Manager\Partner\PartnerManager;
  7. use App\Entity\Order\Order;
  8. use App\Manager\Cart\CartManager;
  9. use App\Service\AuthTokenService;
  10. use App\Manager\RoadAssistance\RoadAssistanceManager;
  11. use App\Service\StaticPagesBitbagService;
  12. use Symfony\Component\HttpFoundation\JsonResponse;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
  16. class RoadAssistanceController extends BaseController
  17. {
  18.     public function indexAction(): Response
  19.     {
  20.         return $this->render('@templates/Front/RoadAssistance/index.html.twig', [
  21.             'productPrice' => RoadAssistance::SELL_PRICE,
  22.             'accordionBlocksFaq' => StaticPagesBitbagService::getAllFilteredBlocks($this->getEntityManager(), BlockManager::BLOCK_ACCORDION_TEXT_ROAD_ASSISTANCE_CODE_PATTERN),
  23.             'keywordsForSeo' => StaticPagesBitbagService::getFirstFilteredBlocks($this->getEntityManager(), BlockManager::BLOCK_SEO_META_ROAD_ASSISTANCE_KEYWORD_CODE_PATTERN),
  24.             'descriptionForSeo' => StaticPagesBitbagService::getFirstFilteredBlocks($this->getEntityManager(), BlockManager::BLOCK_SEO_META_ROAD_ASSISTANCE_DESCRIPTION_CODE_PATTERN)
  25.         ]);
  26.     }
  27.     public function submitData(Request $request): Response
  28.     {
  29.         $response $this->getContainer()->get('app.service.road_assistance.road_assistance')
  30.             ->storeNewRoadAssistanceInCart(RoadAssistance::FLAG_SOURCE_PRODUCT_PAGE);
  31.         return new JsonResponse($response);
  32.     }
  33.     /**
  34.      * @param Request $request
  35.      * @return Response
  36.      */
  37.     public function removeFromCart(Request $request): Response
  38.     {
  39.         $roadAssistanceService $this->getContainer()->get('app.service.road_assistance.road_assistance');
  40.         $result $roadAssistanceService->removeRoadAssistanceFromCartSessionByRegistrationPlate($request->get('registrationPlate'));
  41.         return new Response(json_encode(array('result' => $result)));
  42.     }
  43.     public function checkAlreadyActive(Request $request): Response
  44.     {
  45.         $roadAssistanceService $this->getContainer()->get('app.service.road_assistance.road_assistance');
  46.         return new Response(json_encode(array('isActive' => $roadAssistanceService->isAlreadyActiveForRegistrationPlateAndValidFrom($request->request->all()))));
  47.     }
  48.     public function iframe(Request $request): Response
  49.     {
  50.         $partnerService $this->getContainer()->get('app.service.partner.partner');
  51.         $partnerService->verifyToken($requestPartnerManager::CAN_ISSUE_ROAD_ASSISTANCE_INDEX);
  52.         $partner $partnerService->retrievePartner($request->get('partnerPublicToken'));
  53.         $request->getSession()->set('iframeSourceLink'$this->generateUrl('app_shop_road_assistance_iframe', [
  54.             'partnerPublicToken' => $partner->getPublicToken()
  55.         ]));
  56.         PartnerManager::checkQRCodeFlow($request);
  57.         return $this->render('@templates/Front/RoadAssistance/iframe.html.twig', [
  58.             'productPrice' => RoadAssistance::SELL_PRICE,
  59.             'publicToken' => $partner->getPublicToken()
  60.         ]);
  61.     }
  62.     public function addToCartById(Order $orderRequest $request): Response
  63.     {
  64.         $clientIp $request->getClientIp();
  65.         $session $request->getSession();
  66.         foreach ($order->getRoadAssistance() as $roadAssistance) {
  67.             if (!RoadAssistanceManager::isRoadAssistanceAlreadyInCart($session$roadAssistance->getRegistrationPlate())) {
  68.                 $cartItem RoadAssistanceManager::constructRoadAssistanceForCartFromObject(
  69.                     $roadAssistance$clientIpRoadAssistance::FLAG_SOURCE_REMARKETING
  70.                 );
  71.                 CartManager::setToCart($sessionCartManager::ROAD_ASSISTANCE_PRODUCT_NAME, [$cartItem]);
  72.             }
  73.         }
  74.         $authTokenService = new AuthTokenService();
  75.         if ($token $authTokenService->authenticateUserWithToken($request$this->getEntityManager())) {
  76.             $this->get('security.token_storage')->setToken($token);
  77.             $event = new InteractiveLoginEvent($request$token);
  78.             $this->dispatcher->dispatch($event'security.interactive_login');
  79.             $session $request->getSession();
  80.             $session->set('_sylius.cart.FASHION_WEB'180);
  81.             $session->save();
  82.         }
  83.         $utm = [
  84.             'utm_source' => $request->get('utm_source'),
  85.             'utm_medium' => $request->get('utm_medium'),
  86.             'utm_campaign' => $request->get('utm_campaign'),
  87.             'utm_term' => $request->get('utm_term'),
  88.             'utm_content' => $request->get('utm_content'),
  89.             'utm_id' => $request->get('utm_id')
  90.         ];
  91.         return $this->render('@templates/ShopCustom/Redirect/wait_to_be_redirected.html.twig',[
  92.             'url' => $this->generateUrl('app_shop_customer_info'$utm)
  93.         ]);
  94.     }
  95. }