app/Plugin/TeikiOrder42/EventSubscriber/Controller/Admin/OrderEditControllerSubscriber.php line 82

Open in your IDE?
  1. <?php
  2. namespace Plugin\TeikiOrder42\EventSubscriber\Controller\Admin;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Eccube\Common\EccubeConfig;
  5. use Eccube\Event\TemplateEvent;
  6. use Eccube\Event\EventArgs;
  7. use Eccube\Event\EccubeEvents;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Plugin\TeikiOrder42\Entity\TeikiOrder;
  10. use Plugin\TeikiOrder42\Repository\TeikiOrderRepository;
  11. use Plugin\TeikiOrder42\Service\TeikiProductService;
  12. use Plugin\TeikiOrder42\Repository\Master\OrganizationRepository;
  13. use Plugin\TeikiOrder42\Repository\Master\ClaimTimesRepository;
  14. class OrderEditControllerSubscriber implements EventSubscriberInterface
  15. {
  16.     /**
  17.      * @var EntityManagerInterface
  18.      */
  19.     private $entityManager;
  20.     /**
  21.      * @var TeikiOrderRepository
  22.      */
  23.     private $teikiOrderRepository;
  24.     /**
  25.      * @var TeikiProductService
  26.      */
  27.     private $teikiProductService;
  28.     /**
  29.      * @var OrganizationRepository
  30.      */
  31.     private $organizationRepository;
  32.     /**
  33.      * @var ClaimTimesRepository
  34.      */
  35.     private $claimTimesRepository;
  36.     /**
  37.      * Event constructor.
  38.      * @param EntityManagerInterface $entityManager
  39.      * @param TeikiOrderRepository $teikiOrderRepository
  40.      * @param TeikiProductService $teikiProductService
  41.      * @param OrganizationRepository $organizationRepository
  42.      * @param ClaimTimesRepository $claimTimesRepository
  43.      */
  44.     public function __construct(
  45.         EntityManagerInterface $entityManager,
  46.         TeikiOrderRepository $teikiOrderRepository,
  47.         TeikiProductService $teikiProductService,
  48.         OrganizationRepository $organizationRepository,
  49.         ClaimTimesRepository $claimTimesRepository
  50.     ) {
  51.         $this->entityManager $entityManager;
  52.         $this->teikiOrderRepository $teikiOrderRepository;
  53.         $this->teikiProductService $teikiProductService;
  54.         $this->organizationRepository $organizationRepository;
  55.         $this->claimTimesRepository $claimTimesRepository;
  56.     }
  57.     /**
  58.      * @return array
  59.      */
  60.     public static function getSubscribedEvents()
  61.     {
  62.         return [
  63.             '@admin/Order/edit.twig' => ['AdminOrderEdit'1],
  64.             EccubeEvents::ADMIN_ORDER_EDIT_INDEX_PROGRESS => 'AdminOrderEditIndexProgress',
  65.             EccubeEvents::ADMIN_ORDER_EDIT_INDEX_COMPLETE => 'AdminOrderEditIndexComplete',
  66.         ];
  67.     }
  68.     /**
  69.      * @param TemplateEvent $event
  70.      */
  71.     public function AdminOrderEdit(TemplateEvent $event)
  72.     {
  73.         $event->addSnippet('@TeikiOrder42/admin/Order/edit.twig');
  74.     }
  75.     /**
  76.      * @param EventArgs $event
  77.      */
  78.     public function AdminOrderEditIndexProgress(EventArgs $event)
  79.     {
  80.         $TargetOrder $event->getArgument('TargetOrder');
  81.         $builder $event->getArgument('builder');
  82.         $form $builder->getForm();
  83.         if ($TargetOrder) {
  84.             foreach ($TargetOrder->getOrderItems() as $OrderItem) {
  85.                 if ($OrderItem->isProduct() && $OrderItem->getProductClass()->getSaleType()->getId() == 4) {
  86.                     $ProductClass $OrderItem->getProductClass();
  87.                     $teiki_start_date $this->teikiProductService->getDBStartDate($ProductClass);
  88.                     $teiki_end_date $this->teikiProductService->getDBEndDate($ProductClass);
  89.                     $TeikiOrder $this->teikiOrderRepository->findOneBy(['Order' => $TargetOrder->getId()]);
  90.                 }
  91.             }
  92.         }
  93.     }
  94.     /**
  95.      * @param EventArgs $event
  96.      */
  97.     public function AdminOrderEditIndexComplete(EventArgs $event)
  98.     {
  99.         $TargetOrder $event->getArgument('TargetOrder');
  100.         $form $event->getArgument('form');
  101.         $OriginOrder $event->getArgument('OriginOrder');
  102.         $teiki_flg 0;
  103.         if ($TargetOrder) {
  104.             foreach ($TargetOrder->getOrderItems() as $OrderItem) {
  105.                 if ($OrderItem->isProduct() && $OrderItem->getProductClass()->getSaleType()->getId() == 4) {
  106.                     $ProductClass $OrderItem->getProductClass();
  107.                     $teiki_start_date $this->teikiProductService->getDBStartDate($ProductClass);
  108.                     $teiki_end_date $this->teikiProductService->getDBEndDate($ProductClass);
  109.                     $TeikiOrder $this->teikiOrderRepository->findOneBy(['Order' => $TargetOrder->getId()]);
  110.                     if(!$TeikiOrder) {
  111.                         $TeikiOrder = new TeikiOrder();
  112.                         $TeikiOrder
  113.                             ->setOrder($TargetOrder)
  114.                             ->setTeikiStartDate(new \DateTime($teiki_start_date))
  115.                             ->setTeikiEndDate(new \DateTime($teiki_end_date))
  116.                             ->setOrganization($this->organizationRepository->find(0))
  117.                             ->setClaimTimes($this->claimTimesRepository->find(1))
  118.                             ->setClaimDate1($TargetOrder->getOrderDate())
  119.                             ->setClaimPrice1($TargetOrder->getPaymentTotal())
  120.                             ->setAutoTeikiOrderUpdateFlg(1);
  121.                     } else {
  122.                         if ($teiki_end_date != $TargetOrder->getTeikiOrder()->getTempTeikiEndDate()) {
  123.                             $teiki_end_date $TargetOrder->getTeikiOrder()->getTempTeikiEndDate();
  124.                         }
  125.                         $TeikiOrder
  126.                             ->setTeikiStartDate(new \DateTime($teiki_start_date))
  127.                             ->setTeikiEndDate(new \DateTime($teiki_end_date));
  128.                             #->setTeikiEndDate(new \DateTime($TargetOrder->getTeikiOrder()->getTempTeikiEndDate()));
  129.                     }
  130.                     $this->entityManager->persist($TeikiOrder);
  131.                     $this->entityManager->flush();
  132.                     $teiki_flg 1;
  133.                     break;
  134.                 }
  135.             }
  136.             if($teiki_flg == 1) {
  137.                 $TargetOrder->setTeikiFlg(1);
  138.                 $this->entityManager->persist($TargetOrder);
  139.                 $this->entityManager->flush();
  140.             } else {
  141.                 $TargetOrder->setTeikiFlg(0);
  142.                 $this->entityManager->persist($TargetOrder);
  143.                 $this->entityManager->flush();
  144.             }
  145.         }
  146.     }
  147. }