app/Plugin/OrderStatusEx/EventSubscriber/SearchEventSubscriber.php line 64

Open in your IDE?
  1. <?php
  2. /**
  3.  * Copyright(c) 2022 SYSTEM_KD
  4.  * Date: 2022/11/26
  5.  */
  6. namespace Plugin\OrderStatusEx\EventSubscriber;
  7. use Eccube\Event\EccubeEvents;
  8. use Eccube\Event\EventArgs;
  9. use Plugin\OrderStatusEx\Entity\OrderStatusEvent;
  10. use Plugin\OrderStatusEx\Repository\OrderStatusEventRepository;
  11. use Plugin\OrderStatusEx\Service\OrderStatusExConfigService;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. class SearchEventSubscriber implements EventSubscriberInterface
  14. {
  15.     /** @var OrderStatusEventRepository */
  16.     protected $orderStatusEventRepository;
  17.     /** @var OrderStatusExConfigService */
  18.     protected $orderStatusExConfigService;
  19.     public function __construct(
  20.         OrderStatusEventRepository $orderStatusEventRepository,
  21.         OrderStatusExConfigService $orderStatusExConfigService
  22.     )
  23.     {
  24.         $this->orderStatusEventRepository $orderStatusEventRepository;
  25.         $this->orderStatusExConfigService $orderStatusExConfigService;
  26.     }
  27.     public function onAdminAdminIndexOrder(EventArgs $event)
  28.     {
  29.         $excludes $event->getArgument('excludes');
  30.         if ($this->orderStatusExConfigService->isStrictMode()) {
  31.             // 直接保持モード
  32.             $status = [
  33.                 OrderStatusEvent::EVENT_GROUP_CANCEL,
  34.                 OrderStatusEvent::EVENT_GROUP_RETURN,
  35.                 OrderStatusEvent::EVENT_GROUP_DELIVERY,
  36.             ];
  37.             $orderStatusExEvents $this->orderStatusEventRepository->findOrderStatusEvents($status);
  38.         } else {
  39.             // 標準へ集約するため追加分は全て除く
  40.             $orderStatusExEvents $this->orderStatusEventRepository->getNoDefaultOrderStatus();
  41.         }
  42.         /** @var OrderStatusEvent $orderStatusExEvent */
  43.         foreach ($orderStatusExEvents as $orderStatusExEvent) {
  44.             $targetOrderStatusId $orderStatusExEvent->getOrderStatusId();
  45.             $excludes[] = $targetOrderStatusId;
  46.         }
  47.         $event->setArgument('excludes'$excludes);
  48.     }
  49.     public function onAdminAdminIndexSales(EventArgs $event)
  50.     {
  51.         $excludes $event->getArgument('excludes');
  52.         // 取消・返品相当のステータス追加
  53.         $orderStatusExEvents $this->orderStatusEventRepository->getNoOrderStatusEvents();
  54.         /** @var OrderStatusEvent $orderStatusExEvent */
  55.         foreach ($orderStatusExEvents as $orderStatusExEvent) {
  56.             $targetOrderStatusId $orderStatusExEvent->getOrderStatusId();
  57.             $excludes[] = $targetOrderStatusId;
  58.         }
  59.         $event->setArgument('excludes'$excludes);
  60.     }
  61.     public static function getSubscribedEvents()
  62.     {
  63.         return [
  64.             // ホーム 件数一覧
  65.             EccubeEvents::ADMIN_ADMIM_INDEX_ORDER => 'onAdminAdminIndexOrder',
  66.             // ホーム 売上状況
  67.             EccubeEvents::ADMIN_ADMIM_INDEX_SALES => 'onAdminAdminIndexSales',
  68.         ];
  69.     }
  70. }