app/Plugin/EccubePaymentLite4/EventListener/EventSubscriber/Front/Shopping/AddDescriptionShoppingConfirmEventSubscriber.php line 47

Open in your IDE?
  1. <?php
  2. namespace Plugin\EccubePaymentLite4\EventListener\EventSubscriber\Front\Shopping;
  3. use Eccube\Entity\Master\SaleType;
  4. use Eccube\Event\TemplateEvent;
  5. use Plugin\EccubePaymentLite4\Entity\Config;
  6. use Plugin\EccubePaymentLite4\Repository\ConfigRepository;
  7. use Plugin\EccubePaymentLite4\Service\Method\Credit;
  8. use Symfony\Component\DependencyInjection\ContainerInterface;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. use Plugin\EccubePaymentLite4\Service\RegularDiscountService;
  11. class AddDescriptionShoppingConfirmEventSubscriber implements EventSubscriberInterface
  12. {
  13.     /**
  14.      * @var ConfigRepository
  15.      */
  16.     private $configRepository;
  17.     /**
  18.      * @var ContainerInterface
  19.      */
  20.     private $container;
  21.     /**
  22.      * @var RegularDiscountService
  23.      */
  24.     private $regularDiscountService;
  25.     public function __construct(
  26.         ConfigRepository $configRepository,
  27.         ContainerInterface $container,
  28.         RegularDiscountService $regularDiscountService
  29.     ) {
  30.         $this->configRepository $configRepository;
  31.         $this->container $container;
  32.         $this->regularDiscountService $regularDiscountService;
  33.     }
  34.     public static function getSubscribedEvents()
  35.     {
  36.         return [
  37.             'Shopping/confirm.twig' => 'confirm',
  38.         ];
  39.     }
  40.     public function confirm(TemplateEvent $event)
  41.     {
  42.         /** @var Order $Order */
  43.         $Order $event->getParameter('Order');
  44.         $quantity 0;
  45.         $ProductOrderItems $Order->getProductOrderItems();
  46.         foreach ($ProductOrderItems as $OrderItems){
  47.             $quantity += $OrderItems->getQuantity();
  48.         }
  49.         /** @var SaleType $SaleType */
  50.         $SaleType $Order->getShippings()->first()->getDelivery()->getSaleType();
  51.         $discountPrice = [];
  52.         for ($regularCount 1$regularCount <= 5$regularCount++) {
  53.             $discountPrice[$regularCount] = 0;
  54.             foreach ($Order->getItems() as $item) {
  55.                 $ProductClass $item->getProductClass();
  56.                 /** @var RegularDiscount $RegularDiscount */
  57.                 $RegularDiscount $ProductClass $ProductClass->getRegularDiscount() : null;
  58.                 if ($item->isProduct() && $RegularDiscount) {
  59.                     $discountRate $this->regularDiscountService->getDiscountRate($RegularDiscount->getDiscountId(), $regularCount);
  60.                     $discountPrice[$regularCount] += !empty($discountRate) ? $this->regularDiscountService->getDiscountPrice($item$discountRate) : 0;
  61.                 }
  62.             }
  63.         }
  64.         if ($SaleType->getName() === '定期商品') {
  65.             $event->setParameter('total_quantity_item'$quantity);
  66.             $event->setParameter('ProductOrderItems'$ProductOrderItems);
  67.             $event->setParameter('first_discount'$discountPrice[1]);
  68.             $event->setParameter('second_discount'$discountPrice[2]);
  69.             $event->setParameter('third_discount'$discountPrice[3]);
  70.             $event->setParameter('forth_discount'$discountPrice[4]);
  71.             $event->setParameter('fifth_discount'$discountPrice[5]);
  72.             $event->addSnippet('@EccubePaymentLite4/default/Shopping/specified_commercial_transactions.twig');
  73.         }
  74.         $event->addSnippet('@EccubePaymentLite4/default/Shopping/specified_commercial_payment_time.twig');
  75.     }
  76. }