<?php/* * Copyright(c) 2020 RACCOON HOLDINGS, Inc. All rights reserved. * https://paid.jp/ */namespace Plugin\Paid4\EventSubscriber;use Doctrine\ORM\EntityManagerInterface;use Eccube\Entity\Customer;use Eccube\Event\EccubeEvents;use Eccube\Event\EventArgs;use Eccube\Event\TemplateEvent;use Plugin\Paid4\Service\PaidApi\PaidHelperMember;use Plugin\Paid4\Service\PaidCustomerService;use Plugin\Paid4\Util\PaidUtil;use Symfony\Component\EventDispatcher\EventSubscriberInterface;//use Symfony\Component\HttpKernel\Event\FilterResponseEvent;use Symfony\Component\HttpKernel\Event\ResponseEvent; // ここを修正use Symfony\Component\HttpKernel\KernelEvents;class AdminCustomerEditEventSubscriber implements EventSubscriberInterface{ /** * @var EntityManagerInterface */ protected $entityManager; /** * @var PaidHelperMember */ private $paidHelperMember; /** * @var PaidCustomerService */ private $paidCustomerService; /** * OrderEditIndexCompleteListener constructor. * * @param EntityManagerInterface $entityManager * @param PaidHelperMember $PaidHelperMember * @param PaidCustomerService $paidCustomerService */ public function __construct( EntityManagerInterface $entityManager, PaidHelperMember $PaidHelperMember, PaidCustomerService $paidCustomerService ) { $this->entityManager = $entityManager; $this->paidHelperMember = $PaidHelperMember; $this->paidCustomerService = $paidCustomerService; } public function onResponse(ResponseEvent $event) { } /** * @return array */ public static function getSubscribedEvents(): array { return [ KernelEvents::RESPONSE => ['onResponse'], EccubeEvents::ADMIN_CUSTOMER_EDIT_INDEX_INITIALIZE => 'onAdminEntryIndexInitialize', '@admin/Customer/edit.twig' => 'onAdminCustomerEditTwig', '@admin/Customer/index.twig' => 'onAdminCustomerIndexTwig', ]; } /** * @param EventArgs $event */ public function onAdminEntryIndexInitialize(EventArgs $event) { $request = $event->getRequest(); $builder = $event->getArgument("builder"); /* @var $form \Symfony\Component\Form\FormInterface */ $form = $builder->getForm(); $form->handleRequest($request); /** @var Customer $Customer */ $Customer = $event->getArgument("Customer"); if (!is_null($Customer->getPaidCustomer())) { $PaidCustomer = $Customer->getPaidCustomer(); if (!is_null($PaidCustomer->getId())) { // 過去のステータスを取得 $old_paid_confirm = $PaidCustomer->getPaidConfirm(); $this->serLogMessage('ADMIN_CUSTOMER_EDIT_INDEX_INITIALIZE - paid利用状況API開始'); $member_status = $this->paidHelperMember->getMemberStatus($Customer); $this->serLogMessage('ADMIN_CUSTOMER_EDIT_INDEX_INITIALIZE - paid利用状況API終了'); if ($old_paid_confirm != $member_status) { $this->serLogMessage('ADMIN_CUSTOMER_EDIT_INDEX_INITIALIZE - paid会員ステータス変更開始'); $PaidCustomer->setPaidConfirm($member_status); $this->entityManager->flush($PaidCustomer); $this->serLogMessage('ADMIN_CUSTOMER_EDIT_INDEX_INITIALIZE - paid会員ステータス変更終了'); } } } } /** * 管理画面 -> 会員情報 -> 編集 */ public function onAdminCustomerEditTwig(TemplateEvent $event) { $event->addSnippet('@Paid4/admin/Customer/paid_customer_area.twig'); } /** * 管理画面 -> 会員一覧 */ public function onAdminCustomerIndexTwig(TemplateEvent $event) { $event->addSnippet('@Paid4/admin/Customer/index.twig'); $pagination = $event->getParameter('pagination'); $PaidEntryLinks = array(); /** @var Customer $Customer */ foreach ($pagination as $Customer) { $isPaidEntry = false; if ($Customer instanceof Customer) { $PaidCustomer = $Customer->getPaidCustomer(); if (!is_null($Customer->getPaidCustomer())) { if ($PaidCustomer->getPaidRegister() == $this->paidCustomerService->getRegisterUnregisteredId() || is_null($PaidCustomer->getPaidRegister())) { $isPaidEntry = true; } //paid利用NG if ($PaidCustomer->getPaidUse() == $this->paidCustomerService->getUseNotAvailableId()) { $isPaidEntry = false; } } else { $isPaidEntry = true; } $PaidEntryLinks[$Customer->getId()] = $isPaidEntry; } } $event->setParameter('paid_entry_link_states', $PaidEntryLinks); } /** * @param string $Message */ private function serLogMessage($Message = '') { PaidUtil::logInfo(__NAMESPACE__ . get_class($this) . ' - ' . $Message); }}