local/modules/FairDelivery/EventListeners/OrderBeforePaymentListener.php line 47

  1. <?php
  2. namespace FairDelivery\EventListeners;
  3. use FairDelivery\FairDelivery;
  4. use FairDelivery\Model\FairDelivery as ModelFairDelivery;
  5. use FairDelivery\Services\FairDeliveryService;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\RequestStack;
  9. use Thelia\Core\Event\TheliaEvents;
  10. use Thelia\Core\Event\Order\OrderEvent;
  11. use Thelia\Log\Tlog;
  12. /**
  13.  * Class OrderBeforePaymentListener
  14.  * @package FairDelivery
  15.  * @author FrançoisCarfantan <f.carfantan@orange.fr>
  16.  */
  17. class OrderBeforePaymentListener implements EventSubscriberInterface
  18. {
  19.     protected RequestStack $requestStack;
  20.     protected FairDeliveryService $fdService;
  21.    
  22.    
  23.     public function __construct(RequestStack $requestStackFairDeliveryService $fdService)
  24.     {
  25.         $this->requestStack $requestStack;
  26.         $this->fdService $fdService;
  27.     }
  28.     protected function checkModule($id)
  29.     {
  30.         return $id == FairDelivery::getModuleId();
  31.     }
  32.       /**
  33.      * @return Request
  34.      */
  35.     public function getRequest()
  36.     {
  37.         return $this->requestStack->getCurrentRequest();;
  38.     }
  39.   
  40.     public function setDeliveryType(OrderEvent $orderEvent)
  41.     {
  42.         if ($this->checkModule($orderEvent->getDeliveryModule())) {
  43.             $request $this->getRequest();
  44.             $request->getSession()->set('fair_id',$request->get('fair-id'));
  45.         }
  46.         return ;
  47.     }
  48.       /**
  49.      * @param OrderEvent $orderEvent
  50.      * @throws \Propel\Runtime\Exception\PropelException
  51.      */
  52.     public function saveFairDeliveryOrder(OrderEvent $orderEvent)
  53.     {
  54.         if ($this->checkModule($orderEvent->getOrder()->getDeliveryModuleId())) {
  55.             $request $this->getRequest();
  56.             $fairId intval($request->getSession()->get('fair_id'));
  57.             $orderId $orderEvent->getOrder()->getId();
  58.             $this->fdService->saveFairDelivery($fairId,$orderId);
  59.             $request->getSession()->set('order_id',$orderId);
  60.         }
  61.         return;
  62.     }
  63.     public static function getSubscribedEvents()
  64.     {
  65.         return array(
  66.             TheliaEvents::ORDER_SET_DELIVERY_MODULE => array('setDeliveryType'64),
  67.             TheliaEvents::ORDER_BEFORE_PAYMENT      => array('saveFairDeliveryOrder'256)
  68.         );
  69.     }
  70. }