src/Controller/Front/SubscriptionController.php line 51

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Front;
  3. use App\Application\Service\Cart\CartService;
  4. use App\Application\Service\Front\SubscriptionService;
  5. use App\Application\Service\Session\SessionService;
  6. use App\Entity\System\Customer;
  7. use App\Service\SecurityService;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\RequestStack;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. class SubscriptionController extends AbstractController
  16. {
  17.     private SubscriptionService $subscriptionService;
  18.     private RequestStack $requestStack;
  19.     private ParameterBagInterface $parameterBag;
  20.     private SessionService $sessionService;
  21.     private CartService $cartService;
  22.     private SecurityService $securityService;
  23.     public function __construct(
  24.         SubscriptionService $subscriptionService,
  25.         RequestStack $requestStack,
  26.         ParameterBagInterface $parameterBag,
  27.         SessionService $sessionService,
  28.         CartService $cartService,
  29.         SecurityService $securityService
  30.     ) {
  31.         $this->subscriptionService $subscriptionService;
  32.         $this->requestStack $requestStack;
  33.         $this->parameterBag $parameterBag;
  34.         $this->sessionService $sessionService;
  35.         $this->cartService $cartService;
  36.         $this->securityService $securityService;
  37.     }
  38.     /**
  39.      * @Route("/{_locale}/subscription/checkout", name="checkout", defaults={"_locale":"es"})
  40.      * @Route("/subscription/checkout", name="checkout_wo_locale")
  41.      *
  42.      * @param Request $request
  43.      *
  44.      * @return Response
  45.      */
  46.     public function checkout(Request $request): Response
  47.     {
  48.         if ($cartId $this->sessionService->get('id_cart_services')) {
  49.             $this->cartService->cleanCart((int)$cartId);
  50.         }
  51.         $parameters = [
  52.             'isNewShopSelected' => (int)$request->get('isNewShopSelected'),
  53.             'catalogId' => $request->get('catalogId'),
  54.             'themeId' => $request->get('themeId'),
  55.             'idSubscription' => $request->get('idSubscription'),
  56.             'goToStepServices' => (bool)$request->get('goToStepServices'),
  57.             'serviceProductId' => (int)$request->get('serviceProductId'),
  58.             'paypalSandbox' => \json_encode($this->parameterBag->get('paypal_sandbox')),
  59.             'paypalFraudNet' => $this->parameterBag->get('paypal_fraud_net'),
  60.             'sessionUuid' => $this->securityService->findSessionCustomerId().time().random_int(1999999),
  61.             'websideId' => $this->parameterBag->get('paypal_merchant_id').'_services_checkout',
  62.         ];
  63.         $this->subscriptionService->checkout($parameters);
  64.         return $this->render('front/subscription/checkout_react.html.twig'$parameters);
  65.     }
  66.     /**
  67.      * @Route("/subscription/packPurchaseProcess", name="packPurchaseProcess")
  68.      */
  69.     public function packPurchaseProcess(): Response
  70.     {
  71.         $customer $this->getUser();
  72.         if (!$customer instanceof Customer) {
  73.             return $this->render(
  74.                 'front/subscription/end_purchases_error.html.twig',
  75.                 [
  76.                     'title' => '',
  77.                     'msg' => [
  78.                         'message' => 'Ha ocurrido un error al recuperar el usuario',
  79.                     ],
  80.                 ]
  81.             );
  82.         }
  83.         $legacySubscriptionController = new \subscriptionController();
  84.         $legacySubscriptionController->packPurchaseProcess($customer);
  85.         $serviceOperationResult $this->requestStack->getSession()->get('serviceOperationResult');
  86.         $serviceOperationData $this->requestStack->getSession()->get('serviceOperationData');
  87.         $this->requestStack->getSession()->remove('serviceOperationResult');
  88.         $this->requestStack->getSession()->remove('serviceOperationData');
  89.         if ($serviceOperationResult === 'error') {
  90.             return $this->render(
  91.                 'front/subscription/end_purchases_error.html.twig',
  92.                 $serviceOperationData
  93.             );
  94.         }
  95.         $subscriptionData $this->subscriptionService->getPostSubscriptionInfo();
  96.         return $this->render('front/subscription/end_purchases.html.twig', [
  97.             'orderId' => $subscriptionData['orderId'],
  98.             'totalOrder' => $subscriptionData['orderTotal'],
  99.             'packName' => $subscriptionData['packName'],
  100.         ]);
  101.     }
  102.     /**
  103.      * @Route("/subscription/finishPackPurchaseProcess", name="finishPackPurchaseProcess")
  104.      */
  105.     public function finishPackPurchaseProcess(): Response
  106.     {
  107.         $subscriptionData $this->subscriptionService->getPostSubscriptionInfo();
  108.         return $this->render('front/subscription/end_purchases.html.twig', [
  109.             'orderId' => $subscriptionData['orderId'],
  110.             'totalOrder' => $subscriptionData['orderTotal'],
  111.             'packName' => $subscriptionData['packName'],
  112.         ]);
  113.     }
  114.     /**
  115.      * @Route("/subscription/ajaxGetDataToShowEndPurchase", name="ajaxGetDataToShowEndPurchase")
  116.      *
  117.      * @return JsonResponse
  118.      */
  119.     public function ajaxGetDataToShowEndPurchase(): JsonResponse
  120.     {
  121.         $subscription = new \subscriptionController();
  122.         $response = ['receivedParams' => $subscription->ajaxGetDataToShowEndPurchase()];
  123.         return new JsonResponse($response);
  124.     }
  125.     /**
  126.      * @Route("/{_locale}/subscription/createServices", name="subscriptionCreateServicesByCardPayment", defaults={"_locale":"es"})
  127.      * @Route("/subscription/createServices", name="subscriptionCreateServicesByCardPaymentWoLocale")
  128.      *
  129.      * @param Request $request
  130.      *
  131.      * @return Response
  132.      */
  133.     public function subscriptionCreateServicesByCardPayment(): Response
  134.     {
  135.         $subscription = new \subscriptionController();
  136.         $subscription->createServices();
  137.         $serviceOperationResult $this->requestStack->getSession()->get('serviceOperationResult');
  138.         $serviceOperationData $this->requestStack->getSession()->get('serviceOperationData');
  139.         $this->requestStack->getSession()->remove('serviceOperationResult');
  140.         $this->requestStack->getSession()->remove('serviceOperationData');
  141.         if ($serviceOperationResult === 'error') {
  142.             return $this->render(
  143.                 'front/subscription/end_purchases_error.html.twig',
  144.                 $serviceOperationData
  145.             );
  146.         }
  147.         $subscriptionData $this->subscriptionService->getPostSubscriptionInfo();
  148.         return $this->render('front/subscription/end_purchases.html.twig', [
  149.             'orderId' => $subscriptionData['orderId'],
  150.             'totalOrder' => $subscriptionData['orderTotal'],
  151.             'packName' => $subscriptionData['packName'],
  152.         ]);
  153.     }
  154.     /**
  155.      * @Route("/{_locale}/subscription/endPackCreditCard", name="endPackCreditCard", defaults={"_locale":"es"})
  156.      * @Route("/subscription/endPackCreditCard", name="endPackCreditCardWoLocale")
  157.      *
  158.      * @param Request $request
  159.      *
  160.      * @return Response
  161.      */
  162.     public function endPackCreditCard(Request $request): Response
  163.     {
  164.         $subscription = new \subscriptionController();
  165.         $subscription->endPackCreditCard($request->get('token'));
  166.         // $subscription->createServices();
  167.         $serviceOperationResult $this->requestStack->getSession()->get('serviceOperationResult');
  168.         $serviceOperationData $this->requestStack->getSession()->get('serviceOperationData');
  169.         $this->requestStack->getSession()->remove('serviceOperationResult');
  170.         $this->requestStack->getSession()->remove('serviceOperationData');
  171.         if ($serviceOperationResult === 'error') {
  172.             return $this->render(
  173.                 'front/subscription/end_purchases_error.html.twig',
  174.                 $serviceOperationData
  175.             );
  176.         }
  177.         $subscriptionData $this->subscriptionService->getPostSubscriptionInfo();
  178.         return $this->render('front/subscription/end_purchases.html.twig', [
  179.             'orderId' => $subscriptionData['orderId'],
  180.             'totalOrder' => $subscriptionData['orderTotal'],
  181.             'packName' => $subscriptionData['packName'],
  182.         ]);
  183.     }
  184.     /**
  185.      * @Route("/{_locale}/subscription/createPackBillingAgreement", name="createPackBillingAgreement", defaults={"_locale":"es"})
  186.      * @Route("/subscription/createPackBillingAgreement", name="createPackBillingAgreementWoLocale")
  187.      *
  188.      * @param Request $request
  189.      *
  190.      * @return Response
  191.      */
  192.     public function createPackBillingAgreement(Request $request): Response
  193.     {
  194.         $subscription = new \subscriptionController();
  195.         $subscription->createPackBillingAgreement($request->get('token'));
  196.         $serviceOperationResult $this->requestStack->getSession()->get('serviceOperationResult');
  197.         $serviceOperationData $this->requestStack->getSession()->get('serviceOperationData');
  198.         $this->requestStack->getSession()->remove('serviceOperationResult');
  199.         $this->requestStack->getSession()->remove('serviceOperationData');
  200.         if ($serviceOperationResult === 'error') {
  201.             return $this->render(
  202.                 'front/subscription/end_purchases_error.html.twig',
  203.                 $serviceOperationData
  204.             );
  205.         }
  206.         $subscriptionData $this->subscriptionService->getPostSubscriptionInfo();
  207.         return $this->render('front/subscription/end_purchases.html.twig', [
  208.             'orderId' => $subscriptionData['orderId'],
  209.             'totalOrder' => $subscriptionData['orderTotal'],
  210.             'packName' => $subscriptionData['packName'],
  211.         ]);
  212.     }
  213. }