app/Plugin/ApexVolumeUp/Event.php line 52

Open in your IDE?
  1. <?php
  2. namespace Plugin\ApexVolumeUp;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Eccube\Entity\Master\OrderItemType;
  5. use Eccube\Entity\Order;
  6. use Eccube\Entity\OrderItem;
  7. use Eccube\Event\TemplateEvent;
  8. use Eccube\Repository\OrderItemRepository;
  9. use Plugin\ApexSetupFee\Form\Type\SetupFeeOrderType;
  10. use Plugin\ApexVolumeUp\Service\VolumeUpService;
  11. use Plugin\ApexVolumeUp\Entity\VolumeUp;
  12. use Plugin\ApexVolumeUp\Form\Type\VolumeUpType;
  13. use Plugin\ApexVolumeUp\Repository\VolumeUpRepository;
  14. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  15. use Symfony\Component\Form\FormFactoryInterface;
  16. class Event implements EventSubscriberInterface
  17. {
  18.     /**
  19.      * Event constructor.
  20.      *
  21.      */
  22.     public function __construct(
  23.         EntityManagerInterface $entityManager,
  24.         VolumeUpRepository $volumeUpRepository,
  25.         VolumeUpService $volumeUpService,
  26.         FormFactoryInterface $formFactory
  27.     ) {
  28.         $this->entityManager $entityManager;
  29.         $this->volumeUpRepository $volumeUpRepository;
  30.         $this->volumeUpService $volumeUpService;
  31.         $this->formFactory $formFactory;
  32.     }
  33.     
  34.     /**
  35.      * @return array
  36.      */
  37.     public static function getSubscribedEvents()
  38.     {
  39.         return [
  40.             'Shopping/index.twig' => 'index',
  41.             'Shopping/confirm.twig' => 'index',
  42.             'Mypage/history.twig' => 'onRenderMypageHistory',
  43.         ];
  44.     }
  45.     /**
  46.      * @param TemplateEvent $event
  47.      */
  48.     public function index(TemplateEvent $event)
  49.     {
  50.         $parameters $event->getParameters();
  51.         /** @var Order $Order */
  52.         $Order $parameters['Order'];
  53.         
  54.         // ボリュームアップを取得
  55.         $VolumeUp $this->volumeUpRepository->findOneBy(['pre_order_id' => $Order->getPreOrderId()]);
  56.         if(is_null($VolumeUp)){
  57.             $this->volumeUpService->saveVolumeUp($Order);
  58.             $VolumeUp $this->volumeUpRepository->findOneBy(['pre_order_id' => $Order->getPreOrderId()]);
  59.         }
  60.         $parameters['VolumeUp'] = $VolumeUp;
  61.         $event->setParameters($parameters);
  62.         $VolumeUpForm $this->formFactory->createBuilder(VolumeUpType::class, $VolumeUp)->getForm();
  63.         $parameters['VolumeUpForm'] = $VolumeUpForm->createView();
  64.         $event->setParameters($parameters);
  65.         if (strpos($event->getView(), 'index.twig') !== false) {
  66.             $event->addSnippet('@ApexVolumeUp/default/shopping_index.twig');
  67.         } else {
  68.             $event->addSnippet('@ApexVolumeUp/default/shopping_confirm.twig');
  69.         }
  70.     }
  71.     /**
  72.      * Hook point add coupon information to mypage history.
  73.      *
  74.      * @param TemplateEvent $event
  75.      */
  76.     public function onRenderMypageHistory(TemplateEvent $event)
  77.     {
  78.         log_info('VolumeUp trigger onRenderMypageHistory start');
  79.         $parameters $event->getParameters();
  80.         if (is_null($parameters['Order'])) {
  81.             return;
  82.         }
  83.         $Order $parameters['Order'];
  84.         // ボリュームアップ情報を取得する
  85.         $VolumeUp $this->volumeUpRepository->findOneBy([
  86.             'order_id' => $Order->getId(),
  87.         ]);
  88.         if (is_null($VolumeUp)) {
  89.             return;
  90.         }
  91.         // set parameter for twig files
  92.         $parameters['VolumeUp'] = $VolumeUp;
  93.         $event->setParameters($parameters);
  94.         $event->addSnippet('@ApexVolumeUp/default/mypage_history.twig');
  95.         log_info('VolumeUp trigger onRenderMypageHistory finish');
  96.     }
  97. }