app/Plugin/SSNext/SSNextEvent.php line 83

Open in your IDE?
  1. <?php
  2. namespace Plugin\SSNext;
  3. use Doctrine\ORM\EntityManager;
  4. use Eccube\Entity\BaseInfo;
  5. use Eccube\Entity\MailHistory;
  6. use Eccube\Entity\Order;
  7. use Eccube\Event\EccubeEvents;
  8. use Eccube\Event\EventArgs;
  9. use Eccube\Event\TemplateEvent;
  10. use Eccube\Repository\BaseInfoRepository;
  11. use Eccube\Repository\MailHistoryRepository;
  12. use Eccube\Service\PointHelper;
  13. use Plugin\SSNext\Repository\ConfigRepository;
  14. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  15. class SSNextEvent implements EventSubscriberInterface
  16. {
  17.     /**
  18.      * @var ConfigRepository
  19.      */
  20.     protected $configRepository;
  21.     /**
  22.      * @var \Swift_Mailer
  23.      */
  24.     protected $mailer;
  25.     /**
  26.      * @var \Twig_Environment
  27.      */
  28.     protected $twig;
  29.     /**
  30.      * @var MailHistoryRepository
  31.      */
  32.     protected $mailHistoryRepository;
  33.     /**
  34.      * @var EntityManager
  35.      */
  36.     protected $entityManager;
  37.     /**
  38.      * @var BaseInfo
  39.      */
  40.     protected $baseInfo;
  41.     protected $pointHelper;
  42.     public function __construct(ConfigRepository $configRepository,
  43.                                 \Twig_Environment $twig,
  44.                                 \Swift_Mailer $mailer,
  45.                                 EntityManager $entityManager,
  46.                                 BaseInfoRepository $baseInfoRepository,
  47.                                 MailHistoryRepository $mailHistoryRepository,
  48.                                 PointHelper $pointHelper)
  49.     {
  50.         $this->configRepository $configRepository;
  51.         $this->mailer $mailer;
  52.         $this->twig $twig;
  53.         $this->mailHistoryRepository $mailHistoryRepository;
  54.         $this->entityManager $entityManager;
  55.         $this->baseInfo $baseInfoRepository->get();
  56.         $this->pointHelper $pointHelper;
  57.     }
  58.     public static function getSubscribedEvents()
  59.     {
  60.         return [
  61.             EccubeEvents::MAIL_ORDER => 'onMailOrder',
  62.             '@admin/Product/index.twig' => 'onAdminProductIndexTwig',
  63.         ];
  64.     }
  65.     public function onAdminProductIndexTwig(TemplateEvent $event)
  66.     {
  67.         $event->addSnippet('@SSNext/admin/Product/index.twig');
  68.     }
  69.     public function onMailOrder(EventArgs $eventArgs)
  70.     {
  71.         if ($this->configRepository->get()->getOrderMail() == "") {
  72.             return;
  73.         }
  74.         /** @var Order $Order */
  75.         $Order $eventArgs->getArgument('Order');
  76.         if ($Order->isNextSendFlg()) {
  77.             return;
  78.         }
  79.         $body $this->twig->render('@SSNext/default/Mail/order.twig', [
  80.             'Order' => $Order,
  81.             'point_price' => -$this->pointHelper->pointToDiscount($Order->getUsePoint()),
  82.         ]);
  83.         $message = (new \Swift_Message())
  84.             ->setSubject('NE受注取り込み用メール')
  85.             ->setFrom(array($this->baseInfo->getEmail01() => $this->baseInfo->getShopName()))
  86.             ->setTo($this->configRepository->get()->getOrderMail())
  87.             ->setBcc($this->baseInfo->getEmail04())
  88.             ->setBody($body);
  89.         $this->mailer->send($message);
  90.         /*
  91.         $MailHistory = new MailHistory();
  92.         $MailHistory->setMailSubject($message->getSubject())
  93.             ->setMailBody($message->getBody())
  94.             ->setOrder($Order)
  95.             ->setSendDate(new \DateTime());
  96.         $this->mailHistoryRepository->save($MailHistory);
  97.         */
  98.         $this->entityManager->persist($Order);
  99.     }
  100. }