app/Plugin/GmoPaymentGatewaySubs42/Event.php line 186

Open in your IDE?
  1. <?php
  2. /*
  3.  * Copyright(c) 2022 GMO Payment Gateway, Inc. All rights reserved.
  4.  * http://www.gmo-pg.com/
  5.  */
  6. namespace Plugin\GmoPaymentGatewaySubs42;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Eccube\Event\EccubeEvents;
  9. use Eccube\Event\EventArgs;
  10. use Eccube\Event\TemplateEvent;
  11. use Eccube\Service\CartService;
  12. use Plugin\GmoPaymentGateway42\Service\PaymentHelperCredit;
  13. use Plugin\GmoPaymentGatewaySubs42\Entity\Master\SubsStatus;
  14. use Plugin\GmoPaymentGatewaySubs42\Entity\GmoOrderExtended;
  15. use Plugin\GmoPaymentGatewaySubs42\Entity\GmoSubsConfig;
  16. use Plugin\GmoPaymentGatewaySubs42\Entity\GmoSubsCustomer;
  17. use Plugin\GmoPaymentGatewaySubs42\Entity\GmoSubsOrder;
  18. use Plugin\GmoPaymentGatewaySubs42\Entity\GmoSubsOrderItem;
  19. use Plugin\GmoPaymentGatewaySubs42\Repository\GmoSubsConfigRepository;
  20. use Plugin\GmoPaymentGatewaySubs42\Service\SubsCustomerHelper;
  21. use Plugin\GmoPaymentGatewaySubs42\Service\SubsOrderHelper;
  22. use Plugin\GmoPaymentGatewaySubs42\Service\SubsPaymentHelper;
  23. use Plugin\GmoPaymentGatewaySubs42\Util\PaymentUtil;
  24. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  25. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  26. class Event implements EventSubscriberInterface
  27. {
  28.     /**
  29.      * @var EntityManagerInterface
  30.      */
  31.     protected $entityManager;
  32.     /**
  33.      * @var Eccube\Service\CartService
  34.      */
  35.     protected $cartService;
  36.     /**
  37.      * @var TokenStorageInterface
  38.      */
  39.     protected $tokenStorage;
  40.     /**
  41.      * @var Plugin\GmoPaymentGateway42\Service\PaymentHelperCredit
  42.      */
  43.     protected $paymentHelperCredit;
  44.     /**
  45.      * @var Plugin\GmoPaymentGatewaySubs42\Repository\GmoSubsConfigRepository
  46.      */
  47.     protected $gmoSubsConfigRepository;
  48.     /**
  49.      * @var Plugin\GmoPaymentGatewaySubs42\Service\SubsCustomerHelper
  50.      */
  51.     protected $subsCustomerHelper;
  52.     /**
  53.      * @var Plugin\GmoPaymentGatewaySubs42\Service\SubsOrderHelper
  54.      */
  55.     protected $subsOrderHelper;
  56.     /**
  57.      * @var Plugin\GmoPaymentGatewaySubs42\Service\SubsPaymentHelper
  58.      */
  59.     protected $subsPaymentHelper;
  60.     /**
  61.      * コンストラクタ
  62.      *
  63.      * @param EntityManagerInterface $entityManager
  64.      * @param CartService $cartService
  65.      * @param TokenStorageInterface $tokenStorage
  66.      * @param PaymentHelperCredit $paymentHelperCredit
  67.      * @param GmoSubsConfigRepository $gmoSubsConfigRepository
  68.      * @param SubsCustomerHelper $subsCustomerHelper
  69.      * @param SubsOrderHelper $subsOrderHelper
  70.      * @param SubsPaymentHelper $subsPaymentHelper
  71.      */
  72.     public function __construct(
  73.         EntityManagerInterface $entityManager,
  74.         CartService $cartService,
  75.         TokenStorageInterface $tokenStorage,
  76.         PaymentHelperCredit $paymentHelperCredit,
  77.         GmoSubsConfigRepository $gmoSubsConfigRepository,
  78.         SubsCustomerHelper $subsCustomerHelper,
  79.         SubsOrderHelper $subsOrderHelper,
  80.         SubsPaymentHelper $subsPaymentHelper
  81.     ) {
  82.         $this->entityManager $entityManager;
  83.         $this->cartService $cartService;
  84.         $this->tokenStorage $tokenStorage;
  85.         $this->paymentHelperCredit $paymentHelperCredit;
  86.         $this->gmoSubsConfigRepository $gmoSubsConfigRepository;
  87.         $this->subsCustomerHelper $subsCustomerHelper;
  88.         $this->subsOrderHelper $subsOrderHelper;
  89.         $this->subsPaymentHelper $subsPaymentHelper;
  90.     }
  91.     /**
  92.      * @return array
  93.      */
  94.     public static function getSubscribedEvents()
  95.     {
  96.         return [
  97.             EccubeEvents::FRONT_SHOPPING_COMPLETE_INITIALIZE
  98.                 => 'onShoppingComplete',
  99.             'Shopping/login.twig' => 'onShoppingLoginTwig',
  100.             'Shopping/index.twig' => 'onShoppingIndexTwig',
  101.             'Mypage/index.twig' => 'onMypageNaviTwig',
  102.             'Mypage/history.twig' => 'onMypageNaviTwig',
  103.             'Mypage/favorite.twig' => 'onMypageNaviTwig',
  104.             'Mypage/change.twig' => 'onMypageNaviTwig',
  105.             'Mypage/change_complete.twig' => 'onMypageNaviTwig',
  106.             'Mypage/delivery.twig' => 'onMypageNaviTwig',
  107.             'Mypage/delivery_edit.twig' => 'onMypageNaviTwig',
  108.             'Mypage/withdraw.twig' => 'onMypageNaviTwig',
  109.             '@GmoPaymentGateway42/mypage_card.twig' => 'onMypageCardTwig',
  110.             '@GmoPaymentGatewaySubs42/mypage_subs_orders.twig'
  111.                 => 'onMypageSubsOrderNaviTwig',
  112.             '@GmoPaymentGatewaySubs42/mypage_subs_order.twig'
  113.                 => 'onMypageSubsOrderNaviTwig',
  114.             '@admin/Order/edit.twig' => 'onAdminOrderEditTwig',
  115.             '@admin/Customer/edit.twig' => 'onAdminCustomerEditTwig',
  116.         ];
  117.     }
  118.     /**
  119.      * 注文完了イベント
  120.      * 注文完了した受注が定期受注の場合、定期会員/定期受注/明細を作成する
  121.      *
  122.      * @param EventArgs $event イベント
  123.      */
  124.     public function onShoppingComplete(EventArgs $event)
  125.     {
  126.         PaymentUtil::logInfo("Event::onShoppingComplete start.");
  127.         // 受注を取得
  128.         $Order $event->getArgument('Order');
  129.         // 定期商品を含む受注かどうかを判定する
  130.         if (!$Order->isSubscriptionOrder()) {
  131.             // 通常受注
  132.             PaymentUtil::logInfo
  133.                 ("Event::onShoppingComplete normal order exit.");
  134.             return;
  135.         }
  136.         // 定期受注
  137.         PaymentUtil::logInfo('Subscription order found!');
  138.         // 定期会員未登録の場合は生成する
  139.         $GmoSubsCustomer =
  140.             $this->subsCustomerHelper->createSubsCustomer($Order);
  141.         // 定期受注を生成する
  142.         $GmoSubsOrder $this->subsOrderHelper->createSubsOrder($Order);
  143.         $this->entityManager->persist($GmoSubsCustomer);
  144.         $this->entityManager->persist($Order);
  145.         $this->entityManager->persist($GmoSubsOrder);
  146.         $this->entityManager->flush();
  147.         PaymentUtil::logInfo("Event::onShoppingComplete end.");
  148.     }
  149.     /**
  150.      * フロント -> 商品購入時ログイン
  151.      */
  152.     public function onShoppingLoginTwig(TemplateEvent $event)
  153.     {
  154.         $Cart $this->cartService->getCart();
  155.         $event->setParameter('Cart'$Cart);
  156.         $event->addSnippet('@GmoPaymentGatewaySubs42/shopping_login.twig');
  157.     }
  158.     /**
  159.      * フロント -> 商品購入
  160.      */
  161.     public function onShoppingIndexTwig(TemplateEvent $event)
  162.     {
  163.         $GmoSubsConfig $this->gmoSubsConfigRepository->get();
  164.         $event->setParameter('GmoSubsConfig'$GmoSubsConfig);
  165.         $event->addSnippet('@GmoPaymentGatewaySubs42/shopping_index.twig');
  166.     }
  167.     /**
  168.      * フロント -> マイページ -> ナビ
  169.      */
  170.     public function onMypageNaviTwig(TemplateEvent $event)
  171.     {
  172.         $GmoSubsCustomer null;
  173.         $token $this->tokenStorage->getToken();
  174.         if (!is_null($token)) {
  175.             $Customer $token->getUser();
  176.             if (!is_null($Customer)) {
  177.                 $GmoSubsCustomer $Customer->getGmoSubsCustomer();
  178.             }
  179.         }
  180.         $event->setParameter('GmoSubsCustomer'$GmoSubsCustomer);
  181.         $event->addSnippet('@GmoPaymentGatewaySubs42/mypage_navi.twig');
  182.     }
  183.     /**
  184.      * フロント -> マイページ -> カード情報編集
  185.      */
  186.     public function onMypageCardTwig(TemplateEvent $event)
  187.     {
  188.         $GmoSubsCustomer null;
  189.         $token $this->tokenStorage->getToken();
  190.         if (!is_null($token)) {
  191.             $Customer $token->getUser();
  192.             if (!is_null($Customer)) {
  193.                 $GmoSubsCustomer $Customer->getGmoSubsCustomer();
  194.             }
  195.         }
  196.         $event->setParameter('GmoSubsCustomer'$GmoSubsCustomer);
  197.         $event->addSnippet('@GmoPaymentGatewaySubs42/mypage_card.twig');
  198.     }
  199.     /**
  200.      * フロント -> マイページ -> 定期一覧/編集
  201.      */
  202.     public function onMypageSubsOrderNaviTwig(TemplateEvent $event)
  203.     {
  204.         $event->setParameter
  205.             ('isAvailableCardEdit',
  206.              $this->subsPaymentHelper->isAvailableCardEdit());
  207.         $event->addSnippet('@GmoPaymentGateway42/mypage_navi.twig');
  208.         $this->onMypageNaviTwig($event);
  209.     }
  210.     /**
  211.      * 管理画面 -> 受注管理 -> 受注一覧 -> 受注修正
  212.      */
  213.     public function onAdminOrderEditTwig(TemplateEvent $event)
  214.     {
  215.         $event->addSnippet('@GmoPaymentGatewaySubs42/admin/order_edit.twig');
  216.     }
  217.     /**
  218.      * 管理画面 -> 会員管理 -> 会員一覧 -> 会員修正
  219.      */
  220.     public function onAdminCustomerEditTwig(TemplateEvent $event)
  221.     {
  222.         $event->addSnippet('@GmoPaymentGatewaySubs42/admin/customer_edit.twig');
  223.     }
  224. }