app/Plugin/EccubePaymentLite4/EventListener/EventSubscriber/Front/Mypage/Withdraw/WithdrawIndexInitialize.php line 39

Open in your IDE?
  1. <?php
  2. namespace Plugin\EccubePaymentLite4\EventListener\EventSubscriber\Front\Mypage\Withdraw;
  3. use Eccube\Event\EccubeEvents;
  4. use Eccube\Event\EventArgs;
  5. use Plugin\EccubePaymentLite4\Entity\RegularOrder;
  6. use Plugin\EccubePaymentLite4\Entity\RegularStatus;
  7. use Plugin\EccubePaymentLite4\Repository\RegularOrderRepository;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  10. class WithdrawIndexInitialize implements EventSubscriberInterface
  11. {
  12.     /**
  13.      * @var RegularOrderRepository
  14.      */
  15.     private $regularOrderRepository;
  16.     /**
  17.      * @var SessionInterface
  18.      */
  19.     private $session;
  20.     public function __construct(
  21.         RegularOrderRepository $regularOrderRepository,
  22.         SessionInterface $session
  23.     ) {
  24.         $this->regularOrderRepository $regularOrderRepository;
  25.         $this->session $session;
  26.     }
  27.     public static function getSubscribedEvents()
  28.     {
  29.         return [
  30.             EccubeEvents::FRONT_MYPAGE_WITHDRAW_INDEX_INITIALIZE => 'index',
  31.         ];
  32.     }
  33.     public function index(EventArgs $eventArgs)
  34.     {
  35.         $Customer unserialize($this->session->get('_security_customer'))->getUser();
  36.         /** @var RegularOrder[] $RegularOrders */
  37.         $RegularOrders $this->regularOrderRepository->findBy([
  38.             'Customer' => $Customer,
  39.         ]);
  40.         foreach ($RegularOrders as $RegularOrder) {
  41.             if ($RegularOrder->getRegularStatus()->getId() === RegularStatus::CANCELLATION) {
  42.                 continue;
  43.             }
  44.             // 解約以外のステータスの定期受注がある場合は、Requestのmodeの値を空にすることで、
  45.             // Controllerでの解約の処理が実行されないようにしている。
  46.             $eventArgs->getRequest()->request->set('mode''');
  47.             return;
  48.         }
  49.     }
  50. }