src/Modules/Package/Controller/PackageController.php line 69

  1. <?php
  2. namespace App\Modules\Package\Controller;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\HttpFoundation\JsonResponse;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use App\Controller\BaseController;
  8. use App\Common\Modules\Payment\Service\PaymentService as CommonPaymentService;
  9. use App\Modules\Package\Service\PackageService;
  10. use App\Modules\Package\Service\PackageRepositoryService;
  11. use App\Modules\Package\Service\PackageOrderService;
  12. use App\Modules\Package\Entity\PackageOrder;
  13. use App\Modules\Package\Form\OrderType;
  14. use App\Modules\Package\Service\PaymentService;
  15. class PackageController extends BaseController
  16. {
  17.     private $_doctrine;
  18.     private $_packageService;
  19.     private $_packageRepositoryService;
  20.     private $_packageOrderService;
  21.     private $_paymentService;
  22.     
  23.     public function __construct(
  24.             ManagerRegistry $doctrine,
  25.             PackageService $packageService,
  26.             PackageRepositoryService $packageRepositoryService,
  27.             PackageOrderService $packageOrderService,
  28.             PaymentService $paymentService)
  29.     {
  30.         $this->_doctrine $doctrine;
  31.         $this->_packageService $packageService;
  32.         $this->_packageRepositoryService $packageRepositoryService;
  33.         $this->_packageOrderService $packageOrderService;
  34.         $this->_paymentService $paymentService;
  35.     }
  36.     
  37.     public function index(Request $request)
  38.     {
  39.         // czy podano referral id handlowca polecajacego strone, zapamietanie go i ustawienie pozniej w zamowieniu
  40.         
  41.         if (($referralId $request->query->get(PackageOrderService::REFERRAR_LINK_QUERY_PARAM_NAME)) != '')
  42.             $this->_packageOrderService->setReferralTrader($referralId);
  43.         
  44.         // czy podano id vouchera z rabatem
  45.         
  46.         if (($voucherId $request->query->get(PackageOrderService::VOUCHER_ID_QUERY_PARAM_NAME)) != '')
  47.             $this->_packageOrderService->setVoucher($voucherId);
  48.         $result $this->_packageRepositoryService->getQueryBuilder()
  49.                 ->orderBy('t.price''ASC')
  50.                 ->getQuery()
  51.                 ->getResult();
  52.         
  53.         $packages = array();
  54.         
  55.         foreach($result as $package)
  56.             $packages[] = $this->_packageService->getDetails($package);
  57.         
  58.         return $this->render('Modules/Package/Templates/Package/list.html.twig', [
  59.             'packages' => $packages,
  60.             'traderUser' => $this->_packageOrderService->getReferralTrader(),
  61.             'voucher' => $this->_packageOrderService->getVoucher()
  62.         ]);
  63.     }
  64.     
  65.     public function details($slug)
  66.     {
  67.         $package $this->_packageRepositoryService->findBySlug($slug);
  68.         
  69.         if (!$package)
  70.             throw $this->createNotFoundException();
  71.         
  72.         return $this->render('Modules/Package/Templates/Package/details.html.twig', [
  73.             'data' => $this->_packageService->getDetails($package)
  74.         ]);        
  75.     }
  76.     
  77.     public function buy(Request $request$slug)
  78.     {
  79.         $package $this->_packageRepositoryService->findBySlug($slug);
  80.         
  81.         if (!$package)
  82.             throw $this->createNotFoundException();
  83.         
  84.         $form $this->createForm(OrderType::class);
  85.         $form->handleRequest($request);
  86.         if ($form->isSubmitted())
  87.         {
  88.             if ($form->isValid())
  89.             {
  90.                 $order $this->_packageOrderService->add($form$package);
  91.                 return $this->redirectToRoute('package_go_to_payment', ['orderId' => $order->getId(), 'key' => $this->_packageOrderService->getOrderAccessKey($order), 'paymentMethodId' => CommonPaymentService::PAYMENT_METHOD_PRZELEWY24_ID]);
  92.             }   
  93.         }
  94.         
  95.         return $this->render('Modules/Package/Templates/Package/buy.html.twig', [
  96.             'packageData' => $this->_packageService->getDetails($package),
  97.             'form' => $form->createView(),
  98.             'traderUser' => $this->_packageOrderService->getReferralTrader()
  99.         ]);
  100.     }
  101.     
  102.     public function buyUpdateFormAjax(Request $request$slug)
  103.     {
  104.         $package $this->_packageRepositoryService->findBySlug($slug);
  105.         
  106.         if (!$package)
  107.             throw $this->createNotFoundException();
  108.         
  109.         $form $this->createForm(OrderType::class, null, ['validation_groups' => false]);
  110.         $form->handleRequest($request);        
  111.         
  112.         return new JsonResponse(array(
  113.             'html' => $this->renderView('Modules/Package/Templates/Package/partials/orderForm.html.twig', array(
  114.                 'packageData' => $this->_packageService->getDetails($package),
  115.                 'form' => $form->createView(),
  116.                 'traderUser' => $this->_packageOrderService->getReferralTrader()
  117.             ))
  118.         ));
  119.     }
  120.     
  121.     public function goToPayment($orderId$key$paymentMethodId)
  122.     {
  123.         $order $this->_doctrine->getRepository(PackageOrder::class)->find($orderId);
  124.         
  125.         if (!$order || !$this->_packageOrderService->isOrderKeyValid($order$key))
  126.             throw $this->createNotFoundException();
  127.         $this->_paymentService->processPaymentMethod($order$paymentMethodId);
  128.         
  129.         $this->throwHttpError400();
  130.     }
  131.     
  132.     public function paymentVerify($orderId$key$paymentMethodId)
  133.     {
  134.         $order $this->_doctrine->getRepository(PackageOrder::class)->find($orderId);
  135.         
  136.         if (!$order || !$this->_packageOrderService->isOrderKeyValid($order$key))
  137.             return new Response();
  138.         $this->_paymentService->verify($order$paymentMethodId);
  139.         
  140.         return new Response();
  141.     }    
  142.     public function paymentSuccess($orderId$key)
  143.     {
  144.         $order $this->_doctrine->getRepository(PackageOrder::class)->find($orderId);
  145.         
  146.         if (!$order || !$this->_packageOrderService->isOrderKeyValid($order$key))
  147.             throw $this->createNotFoundException();
  148.         
  149.         return $this->render('Modules/Package/Templates/Package/paymentSuccess.html.twig', [
  150.             'order' => $order
  151.         ]);
  152.     }
  153. }