app/Plugin/OrderStatusEx/EventSubscriber/PointExDxEventSubscriber.php line 36

Open in your IDE?
  1. <?php
  2. /**
  3.  * Copyright(c) 2022 SYSTEM_KD
  4.  * Date: 2022/11/19
  5.  */
  6. namespace Plugin\OrderStatusEx\EventSubscriber;
  7. use Eccube\Entity\Master\OrderStatus;
  8. use Eccube\Event\EventArgs;
  9. use Plugin\OrderStatusEx\Entity\OrderStatusEvent;
  10. use Plugin\OrderStatusEx\Repository\OrderStatusEventRepository;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. class PointExDxEventSubscriber implements EventSubscriberInterface
  13. {
  14.     /** @var OrderStatusEventRepository */
  15.     protected $orderStatusEventRepository;
  16.     public function __construct(
  17.         OrderStatusEventRepository $orderStatusEventRepository
  18.     )
  19.     {
  20.         $this->orderStatusEventRepository $orderStatusEventRepository;
  21.     }
  22.     /**
  23.      * ポイント拡張プラグイン
  24.      * 初回購入と判定する受注状況の差し替え
  25.      *
  26.      * @param EventArgs $event
  27.      * @return void
  28.      */
  29.     public function onPointExDxHookStatus(EventArgs $event)
  30.     {
  31.         $targets $this->orderStatusEventRepository->getNoOrderStatusEvents();
  32.         // キャンセル対象を置き換え
  33.         $exclude = [
  34.             OrderStatus::PENDING,
  35.             OrderStatus::PROCESSING,
  36.         ];
  37.         /** @var OrderStatusEvent $target */
  38.         foreach ($targets as $target) {
  39.             $exclude[] = $target->getOrderStatusId();
  40.         }
  41.         $event->setArgument('exclude'$exclude);
  42.     }
  43.     public static function getSubscribedEvents()
  44.     {
  45.         return [
  46.             'point_ex_dx.hook_states' => 'onPointExDxHookStatus'
  47.         ];
  48.     }
  49. }