app/Plugin/NZReceipt42/Event/TemplateEventSubscriber.php line 54

Open in your IDE?
  1. <?php
  2. namespace Plugin\NZReceipt42\Event;
  3. use Eccube\Repository\OrderRepository;
  4. use Plugin\NZReceipt42\Repository\ConfigRepository;
  5. use Plugin\NZReceipt42\Repository\ReceiptHistoryRepository;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Eccube\Event\TemplateEvent;
  8. use Symfony\Component\Security\Core\Security;
  9. class TemplateEventSubscriber implements EventSubscriberInterface
  10. {
  11.     /**
  12.      * @var ConfigRepository
  13.      */
  14.     private $configRepository;
  15.     /**
  16.      * @var ReceiptHistoryRepository
  17.      */
  18.     private $receiptHistoryRepository;
  19.     /**
  20.      * @var Security
  21.      */
  22.     private $security;
  23.     // 入金済み
  24.     const ORDER_STATUS_PAID 6;
  25.     // 発送済み
  26.     const ORDER_STATUS_DELIVERED 5;
  27.     public function __construct(
  28.         ConfigRepository $configRepository,
  29.         ReceiptHistoryRepository $receiptHistoryRepository,
  30.         Security $security
  31.     ) {
  32.         $this->configRepository $configRepository;
  33.         $this->receiptHistoryRepository $receiptHistoryRepository;
  34.         $this->security $security;
  35.     }
  36.     public static function getSubscribedEvents()
  37.     {
  38.         return [
  39.             'Mypage/history.twig' => 'onMypageHistory',
  40.         ];
  41.     }
  42.     /**
  43.      * マイページ注文詳細に領収書ボタン追加
  44.      */
  45.     public function onMypageHistory(TemplateEvent $event)
  46.     {
  47.         $Config $this->configRepository->get();
  48.         // Configがnullの場合はデフォルトで有効とする
  49.         if ($Config && !$Config->isEnabled()) {
  50.             return;
  51.         }
  52.         $parameters $event->getParameters();
  53.         $Order $parameters['Order'] ?? null;
  54.         if (!$Order) {
  55.             return;
  56.         }
  57.         // 発行可能かチェック
  58.         $statusId $Order->getOrderStatus()->getId();
  59.         $canIssue in_array($statusId, [self::ORDER_STATUS_PAIDself::ORDER_STATUS_DELIVERED]);
  60.         // 発行履歴を取得
  61.         $History $this->receiptHistoryRepository->findByOrder($Order);
  62.         $parameters['nz_receipt_can_issue'] = $canIssue;
  63.         $parameters['nz_receipt_history'] = $History;
  64.         $event->setParameters($parameters);
  65.         $event->addSnippet('@NZReceipt42/default/history_button.twig');
  66.     }
  67. }