<?php
namespace Plugin\GmoPs42\EventDispatcher;
use Eccube\Entity\Order;
use Eccube\Entity\Payment;
use Eccube\Event\TemplateEvent;
use Plugin\GmoPs42\Form\Type\Admin\PdType;
use Plugin\GmoPs42\Service\Method\GmoPs;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Form\FormFactoryInterface;
class EventSubscriber implements EventSubscriberInterface
{
/** @var FormFactoryInterface */
private $formFactory;
public function __construct(FormFactoryInterface $formFactory)
{
$this->formFactory = $formFactory;
}
public static function getSubscribedEvents()
{
return [
'Shopping/index.twig' => 'onTwigShoppingIndex',
'@admin/Order/edit.twig' => 'onTwigAdminOrderEdit',
];
}
public function onTwigShoppingIndex(TemplateEvent $event)
{
$event->addSnippet('@GmoPs42/Shopping/_index.twig');
}
public function onTwigAdminOrderEdit(TemplateEvent $event)
{
$event->addSnippet('@GmoPs42/admin/Order/_edit.twig');
/** @var Order $order */
$order = $event->getParameter('Order');
// Order が存在しない場合は非表示
if (!$order || !$order->getId()) {
$event->setParameter('gmops_disp', false);
return;
}
// GMO後払い情報が存在せず、決済がGMO後払い以外の場合には非表示
/** @var Payment $payment */
$payment = $order->getPayment();
if ((!$order->getOrderPayments() || $order->getOrderPayments()->count() === 0) && (!$payment || $payment->getMethodClass() !== GmoPs::class)) {
$event->setParameter('gmops_disp', false);
return;
}
$form = $this->formFactory->create(PdType::class, null, [
'order' => $order,
]);
$event->setParameter('gmops_disp', true);
$event->setParameter('pd_form', $form->createView());
}
}