app/Plugin/PointExDx/EventSubscriber/AdminOrderEditEventSubscriber.php line 46

Open in your IDE?
  1. <?php
  2. /**
  3.  * Copyright(c) 2019 SYSTEM_KD
  4.  * Date: 2019/06/30
  5.  */
  6. namespace Plugin\PointExDx\EventSubscriber;
  7. use Eccube\Entity\Order;
  8. use Eccube\Event\TemplateEvent;
  9. use Plugin\PointExDx\Config\ConfigSetting;
  10. use Plugin\PointExDx\Service\PlgConfigService\ConfigService;
  11. use Plugin\PointExDx\Service\PointExDxHelper;
  12. use Plugin\PointExDx\Service\TwigRenderService\TwigRenderService;
  13. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  14. class AdminOrderEditEventSubscriber implements EventSubscriberInterface
  15. {
  16.     /** @var TwigRenderService */
  17.     protected $twigRenderService;
  18.     /** @var ConfigService */
  19.     protected $configService;
  20.     /** @var PointExDxHelper */
  21.     protected $pointExHelper;
  22.     public function __construct(
  23.         TwigRenderService $twigRenderService,
  24.         ConfigService $configService,
  25.         PointExDxHelper $pointExHelper
  26.     )
  27.     {
  28.         $this->twigRenderService $twigRenderService;
  29.         $this->configService $configService;
  30.         $this->pointExHelper $pointExHelper;
  31.     }
  32.     /**
  33.      * 受注編集
  34.      *
  35.      * @param TemplateEvent $event
  36.      */
  37.     public function onTemplateAdminOrderEdit(TemplateEvent $event)
  38.     {
  39.         // 設定情報取得
  40.         $rateUse $this->configService->getKeyInteger(ConfigSetting::KEY_RATE_USE);
  41.         $event->setParameter('rate_use'$rateUse);
  42.         // 基準ポイント付与率
  43.         /** @var Order $order */
  44.         $order $event->getParameter('Order');
  45.         $pointRate 0;
  46.         foreach ($order->getOrderItems() as $orderItem) {
  47.             if($orderItem->isProduct()) {
  48.                 $itemPointRate $orderItem->getPointRate();
  49.                 if(!empty($itemPointRate) && $itemPointRate 0) {
  50.                     $pointRate $itemPointRate;
  51.                     break;
  52.                 }
  53.             }
  54.         }
  55.         $event->setParameter('base_point_rate'$pointRate);
  56.         $this->twigRenderService->initRenderService($event);
  57.         $insertPosition 5;
  58.         // タイトル ボーナスポイント
  59.         $this->twigRenderService
  60.             ->insertBuilder()
  61.             ->find('#table-form-field')
  62.             ->find('thead > tr > th')
  63.             ->eq($insertPosition)
  64.             ->setTargetId("point_ex_bonus_title")
  65.             ->setInsertModeAfter();
  66.         // タイトル ポイント付与
  67.         $this->twigRenderService
  68.             ->insertBuilder()
  69.             ->find('#table-form-field')
  70.             ->find('thead > tr > th')
  71.             ->eq($insertPosition 1)
  72.             ->setTargetId("point_ex_nopointflg_title")
  73.             ->setInsertModeAfter();
  74.         // ポイント付与対象
  75.         $child $this->twigRenderService
  76.             ->eachChildBuilder()
  77.             ->findThis()
  78.             ->find('td')
  79.             ->eq($insertPosition)
  80.             ->targetFindAndIndexKey('#point_ex_nopointflg_''pointExIndex2')
  81.             ->setInsertModeAfter();
  82.         $this->twigRenderService
  83.             ->eachBuilder()
  84.             ->find('#table-form-field')
  85.             ->find('tbody > tr')
  86.             ->setEachIndexKey('pointExIndex2')
  87.             ->each($child->build());
  88.         // ボーナスポイント
  89.         $child $this->twigRenderService
  90.             ->eachChildBuilder()
  91.             ->findThis()
  92.             ->find('td')
  93.             ->eq($insertPosition)
  94.             ->targetFindAndIndexKey('#point_ex_bonus_''pointExIndex')
  95.             ->setInsertModeAfter();
  96.         $this->twigRenderService
  97.             ->eachBuilder()
  98.             ->find('#table-form-field')
  99.             ->find('tbody > tr')
  100.             ->setEachIndexKey('pointExIndex')
  101.             ->each($child->build());
  102.         // 購入時点のポイント付与率
  103.         $this->twigRenderService
  104.             ->insertBuilder()
  105.             ->find('.row.justify-content-end.mb-3')
  106.             ->eq(4)
  107.             ->setTargetId('point_ex_point_rate')
  108.             ->setInsertModeAfter();
  109.         $this->twigRenderService->addSupportSnippet(
  110.             '@PointExDx/admin/Order/point_ex_order_edit.twig'
  111.         );
  112.     }
  113.     /**
  114.      * Returns an array of event names this subscriber wants to listen to.
  115.      *
  116.      * The array keys are event names and the value can be:
  117.      *
  118.      *  * The method name to call (priority defaults to 0)
  119.      *  * An array composed of the method name to call and the priority
  120.      *  * An array of arrays composed of the method names to call and respective
  121.      *    priorities, or 0 if unset
  122.      *
  123.      * For instance:
  124.      *
  125.      *  * ['eventName' => 'methodName']
  126.      *  * ['eventName' => ['methodName', $priority]]
  127.      *  * ['eventName' => [['methodName1', $priority], ['methodName2']]]
  128.      *
  129.      * @return array The event names to listen to
  130.      */
  131.     public static function getSubscribedEvents()
  132.     {
  133.         return [
  134.             '@admin/Order/edit.twig' => 'onTemplateAdminOrderEdit',
  135.         ];
  136.     }
  137. }