src/Modules/VoucherCart/Controller/CartController.php line 93

  1. <?php
  2. namespace App\Modules\VoucherCart\Controller;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use Symfony\Component\HttpFoundation\JsonResponse;
  5. use App\Modules\VoucherCart\Service\CartService;
  6. use App\Modules\VoucherCart\Service\PredefinedVoucherService;
  7. use App\Modules\VoucherCart\Service\OrderService;
  8. use App\Modules\VoucherCart\Form\CartType;
  9. class CartController extends BaseController
  10. {
  11.     private $_cartService;
  12.     private $_predefinedVoucherService;
  13.     private $_orderService;
  14.     
  15.     public function __construct(
  16.             CartService $cartService,
  17.             PredefinedVoucherService $predefinedVoucherService,
  18.             OrderService $orderService)
  19.     {
  20.         $this->_cartService $cartService;
  21.         $this->_predefinedVoucherService $predefinedVoucherService;
  22.         $this->_orderService $orderService;
  23.     }
  24.     
  25.     public function details(Request $request)
  26.     {
  27.         $cartData $this->_cartService->getDetails();
  28.         
  29.         if ($cartData['vouchers'])
  30.         {
  31.             $form $this->createForm(CartType::class);
  32.             $form->handleRequest($request);
  33.             if ($form->isSubmitted())
  34.             {
  35.                 if ($form->isValid())
  36.                 {
  37.                     $this->_cartService->updateCartFromForm($form);
  38.                     
  39.                     $order $this->_orderService->add($form$errorMessage);
  40.                     
  41.                     if ($errorMessage == '')
  42.                         return $this->redirectToRoute('voucher_cart_go_to_payment', ['orderId' => $order->getId(), 'paymentMethodId' => $form['paymentMethod']->getData(), 'key' => $this->_orderService->getOrderAccessKey($order)]);
  43.                     else
  44.                         $this->addFlash('error'$errorMessage);
  45.                 }
  46.             }
  47.         }
  48.         
  49.         return $this->render('Modules/VoucherCart/Templates/Cart/details.html.twig', [
  50.             'formType' => isset($form) ? $form->getConfig()->getType()->getInnerType() : null,
  51.             'form' => isset($form) ? $form->createView() : null
  52.         ]);
  53.     }
  54.     
  55.     public function detailsUpdateAjax(Request $request)
  56.     {
  57.         $form $this->createForm(CartType::class, null, ['validation_groups' => false]);
  58.         $form->handleRequest($request);
  59.         
  60.         $this->_cartService->updateCartFromForm($form);
  61.         
  62.         $formType $form->getConfig()->getType()->getInnerType();
  63.         
  64.         if (!$formType->cartData['vouchers'])
  65.             $form null;
  66.         return new JsonResponse(array(
  67.             'html' => $this->renderView('Modules/VoucherCart/Templates/Cart/partials/detailsForm.html.twig', array(
  68.                 'formType' => $formType,
  69.                 'form' => $form ?? null
  70.             ))
  71.         ));
  72.     }
  73.     
  74.     public function addPredefinedVoucherAjax($id)
  75.     {
  76.         $voucherData $this->_predefinedVoucherService->getDetails($id);
  77.         
  78.         if (!$voucherData)
  79.             $this->throwHttpError400();
  80.         
  81.         $this->_cartService->addPredefinedVoucher($voucherData1$errorMessage);
  82.         
  83.         return new JsonResponse([
  84.             'error_message' => $errorMessage
  85.         ]);
  86.     }
  87.     
  88.     public function cartWidget()
  89.     {
  90.         return $this->render('Modules/VoucherCart/Templates/Cart/partials/cartWidget.html.twig', [
  91.             'data' => $this->_cartService->getDetails()
  92.         ]);        
  93.     }
  94. }