app/Plugin/EccubePaymentLite4/EventListener/EventSubscriber/Front/Mypage/AddRegularNavEventSubscriber.php line 53

Open in your IDE?
  1. <?php
  2. namespace Plugin\EccubePaymentLite4\EventListener\EventSubscriber\Front\Mypage;
  3. use Eccube\Event\TemplateEvent;
  4. use Plugin\EccubePaymentLite4\Entity\Config;
  5. use Plugin\EccubePaymentLite4\Entity\MyPageRegularSetting;
  6. use Plugin\EccubePaymentLite4\Entity\RegularOrder;
  7. use Plugin\EccubePaymentLite4\Entity\RegularStatus;
  8. use Plugin\EccubePaymentLite4\Repository\ConfigRepository;
  9. use Plugin\EccubePaymentLite4\Service\IsMypageRegularSettingService;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. class AddRegularNavEventSubscriber implements EventSubscriberInterface
  12. {
  13.     /**
  14.      * @var ConfigRepository
  15.      */
  16.     private $configRepository;
  17.     /**
  18.      * @var IsMypageRegularSettingService
  19.      */
  20.     private $isMypageRegularSettingService;
  21.     public function __construct(
  22.         ConfigRepository $configRepository,
  23.         IsMypageRegularSettingService $isMypageRegularSettingService
  24.     ) {
  25.         $this->configRepository $configRepository;
  26.         $this->isMypageRegularSettingService $isMypageRegularSettingService;
  27.     }
  28.     public static function getSubscribedEvents()
  29.     {
  30.         return [
  31.             '@EccubePaymentLite4/default/Mypage/regular_detail.twig' => 'index',
  32.             '@EccubePaymentLite4/default/Mypage/regular_cycle.twig' => 'index',
  33.             '@EccubePaymentLite4/default/Mypage/regular_cancel.twig' => 'index',
  34.             '@EccubePaymentLite4/default/Mypage/regular_complete.twig' => 'index',
  35.             '@EccubePaymentLite4/default/Mypage/regular_next_delivery_date.twig' => 'index',
  36.             '@EccubePaymentLite4/default/Mypage/regular_product_quantity.twig' => 'index',
  37.             '@EccubePaymentLite4/default/Mypage/regular_resume.twig' => 'index',
  38.             '@EccubePaymentLite4/default/Mypage/regular_shipping.twig' => 'index',
  39.             '@EccubePaymentLite4/default/Mypage/regular_skip.twig' => 'index',
  40.             '@EccubePaymentLite4/default/Mypage/regular_suspend.twig' => 'index',
  41.         ];
  42.     }
  43.     /**
  44.      * 定期ナビゲーションの表示を行うeventSubscriberクラス
  45.      * 定期ステータスが継続、休止以外の場合は定期ナビゲーションは表示しない
  46.      */
  47.     public function index(TemplateEvent $event)
  48.     {
  49.         /** @var Config $Config */
  50.         $Config $this->configRepository->find(1);
  51.         if (!$Config->getRegular()) {
  52.             return;
  53.         }
  54.         /** @var RegularOrder $RegularOrder */
  55.         $RegularOrder $event->getParameter('RegularOrder');
  56.         $RegularStatus $RegularOrder->getRegularStatus();
  57.         // Get regular skip flag
  58.         $regularSkipFlg $RegularOrder->getRegularSkipFlag();
  59.         // 定期ステータスが継続の場合
  60.         if ($RegularStatus->getId() === RegularStatus::CONTINUE) {
  61.             $event->addSnippet('@EccubePaymentLite4/default/Mypage/RegularNav/detail.twig');
  62.             if ($this->isMypageRegularSettingService->handle(MyPageRegularSetting::REGULAR_CYCLE)) {
  63.                 $event->addSnippet('@EccubePaymentLite4/default/Mypage/RegularNav/cycle.twig');
  64.             }
  65.             if ($this->isMypageRegularSettingService->handle(MyPageRegularSetting::NEXT_DELIVERY_DATE)) {
  66.                 $event->addSnippet('@EccubePaymentLite4/default/Mypage/RegularNav/next_delivery_date.twig');
  67.             }
  68.             // お届け先変更は管理画面で表示、非表示の制御を行わない。
  69.             $event->addSnippet('@EccubePaymentLite4/default/Mypage/RegularNav/shipping.twig');
  70.             if ($this->isMypageRegularSettingService->handle(MyPageRegularSetting::NUMBER_OR_ITEMS)) {
  71.                 $event->addSnippet('@EccubePaymentLite4/default/Mypage/RegularNav/product_quantity.twig');
  72.             }
  73.             if ($this->isMypageRegularSettingService->handle(MyPageRegularSetting::SKIP_ONCE) && $regularSkipFlg == 0) {
  74.                 $event->addSnippet('@EccubePaymentLite4/default/Mypage/RegularNav/skip.twig');
  75.             }
  76.             if ($this->isMypageRegularSettingService->handle(MyPageRegularSetting::SUSPEND_AND_RESUME)) {
  77.                 $event->addSnippet('@EccubePaymentLite4/default/Mypage/RegularNav/suspend.twig');
  78.             }
  79.             if ($this->isMypageRegularSettingService->handle(MyPageRegularSetting::CANCELLATION)) {
  80.                 $event->addSnippet('@EccubePaymentLite4/default/Mypage/RegularNav/cancel.twig');
  81.             }
  82.             return;
  83.         }
  84.         // ステータスが休止の場合
  85.         if ($RegularStatus->getId() === RegularStatus::SUSPEND) {
  86.             $event->addSnippet('@EccubePaymentLite4/default/Mypage/RegularNav/detail.twig');
  87.             // お届け先変更は管理画面で表示、非表示の制御を行わない。
  88.             $event->addSnippet('@EccubePaymentLite4/default/Mypage/RegularNav/shipping.twig');
  89.             if ($this->isMypageRegularSettingService->handle(MyPageRegularSetting::NUMBER_OR_ITEMS)) {
  90.                 $event->addSnippet('@EccubePaymentLite4/default/Mypage/RegularNav/product_quantity.twig');
  91.             }
  92.             if ($this->isMypageRegularSettingService->handle(MyPageRegularSetting::CANCELLATION)) {
  93.                 $event->addSnippet('@EccubePaymentLite4/default/Mypage/RegularNav/cancel.twig');
  94.             }
  95.             if ($this->isMypageRegularSettingService->handle(MyPageRegularSetting::SUSPEND_AND_RESUME)) {
  96.                 $event->addSnippet('@EccubePaymentLite4/default/Mypage/RegularNav/resume.twig');
  97.             }
  98.         }
  99.     }
  100. }