app/Plugin/Coupon42/Event.php line 91

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.ec-cube.co.jp/
  8.  *
  9.  * For the full copyright and license information, please view the LICENSE
  10.  * file that was distributed with this source code.
  11.  */
  12. namespace Plugin\Coupon42;
  13. use Doctrine\ORM\EntityManagerInterface;
  14. use Eccube\Entity\Order;
  15. use Eccube\Event\TemplateEvent;
  16. use Eccube\Repository\OrderRepository;
  17. use Plugin\Coupon42\Entity\Coupon;
  18. use Plugin\Coupon42\Repository\CouponOrderRepository;
  19. use Plugin\Coupon42\Repository\CouponRepository;
  20. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  21. /**
  22.  * Class Event.
  23.  */
  24. class Event implements EventSubscriberInterface
  25. {
  26.     /**
  27.      * @var CouponOrderRepository
  28.      */
  29.     private $couponOrderRepository;
  30.     /**
  31.      * @var EntityManagerInterface
  32.      */
  33.     private $entityManager;
  34.     /**
  35.      * @var CouponRepository
  36.      */
  37.     private $couponRepository;
  38.     /**
  39.      * @var OrderRepository
  40.      */
  41.     private $orderRepository;
  42.     /**
  43.      * @var \Twig\Environment
  44.      */
  45.     private $twig;
  46.     /**
  47.      * Event constructor.
  48.      *
  49.      * @param CouponOrderRepository $couponOrderRepository
  50.      * @param EntityManagerInterface $entityManager
  51.      * @param CouponRepository $couponRepository
  52.      * @param OrderRepository $orderRepository
  53.      * @param \Twig\Environment $twig
  54.      */
  55.     public function __construct(CouponOrderRepository $couponOrderRepositoryEntityManagerInterface $entityManagerCouponRepository $couponRepositoryOrderRepository $orderRepository\Twig\Environment $twig)
  56.     {
  57.         $this->couponOrderRepository $couponOrderRepository;
  58.         $this->entityManager $entityManager;
  59.         $this->couponRepository $couponRepository;
  60.         $this->orderRepository $orderRepository;
  61.         $this->twig $twig;
  62.     }
  63.     /**
  64.      * Todo: admin.order.delete.complete has been deleted.
  65.      *
  66.      * @return array
  67.      */
  68.     public static function getSubscribedEvents()
  69.     {
  70.         return [
  71.             'Shopping/index.twig' => 'index',
  72.             'Shopping/confirm.twig' => 'index',
  73.             'Mypage/history.twig' => 'onRenderMypageHistory',
  74.             '@admin/Order/edit.twig' => 'onRenderAdminOrderEdit',
  75.         ];
  76.     }
  77.     /**
  78.      * @param TemplateEvent $event
  79.      */
  80.     public function index(TemplateEvent $event)
  81.     {
  82.         $parameters $event->getParameters();
  83.         // 登録がない、レンダリングをしない
  84.         /** @var Order $Order */
  85.         $Order $parameters['Order'];
  86.         // クーポンが未入力でクーポン情報が存在すればクーポン情報を削除
  87.         $CouponOrder $this->couponOrderRepository->getCouponOrder($Order->getPreOrderId());
  88.         $parameters['CouponOrder'] = $CouponOrder;
  89.         $event->setParameters($parameters);
  90.         if (strpos($event->getView(), 'index.twig') !== false) {
  91.             $event->addSnippet('@Coupon42/default/coupon_shopping_item.twig');
  92.         } else {
  93.             $event->addSnippet('@Coupon42/default/coupon_shopping_item_confirm.twig');
  94.         }
  95.     }
  96.     /**
  97.      * Hook point add coupon information to mypage history.
  98.      *
  99.      * @param TemplateEvent $event
  100.      */
  101.     public function onRenderMypageHistory(TemplateEvent $event)
  102.     {
  103.         log_info('Coupon trigger onRenderMypageHistory start');
  104.         $parameters $event->getParameters();
  105.         if (is_null($parameters['Order'])) {
  106.             return;
  107.         }
  108.         $Order $parameters['Order'];
  109.         // クーポン受注情報を取得する
  110.         $CouponOrder $this->couponOrderRepository->findOneBy([
  111.             'order_id' => $Order->getId(),
  112.         ]);
  113.         if (is_null($CouponOrder)) {
  114.             return;
  115.         }
  116.         // set parameter for twig files
  117.         $parameters['coupon_cd'] = $CouponOrder->getCouponCd();
  118.         $parameters['coupon_name'] = $CouponOrder->getCouponName();
  119.         $event->setParameters($parameters);
  120.         $event->addSnippet('@Coupon42/default/mypage_history_coupon.twig');
  121.         log_info('Coupon trigger onRenderMypageHistory finish');
  122.     }
  123.     /**
  124.      * [order/{id}/edit]表示の時のEvent Fork.
  125.      * クーポン関連項目を追加する.
  126.      *
  127.      * @param TemplateEvent $event
  128.      */
  129.     public function onRenderAdminOrderEdit(TemplateEvent $event)
  130.     {
  131.         log_info('Coupon trigger onRenderAdminOrderEdit start');
  132.         $parameters $event->getParameters();
  133.         if (is_null($parameters['Order'])) {
  134.             return;
  135.         }
  136.         $Order $parameters['Order'];
  137.         // クーポン受注情報を取得する
  138.         $CouponOrder $this->couponOrderRepository->findOneBy(['order_id' => $Order->getId()]);
  139.         if (is_null($CouponOrder)) {
  140.             return;
  141.         }
  142.         // set parameter for twig files
  143.         $parameters['coupon_cd'] = $CouponOrder->getCouponCd();
  144.         $parameters['coupon_name'] = $CouponOrder->getCouponName();
  145.         $parameters['coupon_change_status'] = $CouponOrder->getOrderChangeStatus();
  146.         $event->setParameters($parameters);
  147.         // add twig
  148.         $event->addSnippet('@Coupon42/admin/order_edit_coupon.twig');
  149.         log_info('Coupon trigger onRenderAdminOrderEdit finish');
  150.     }
  151. }