app/Customize/Controller/Admin/Order/ShippingController.php line 187

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.ec-cube.co.jp/
  8.  *
  9.  * For the full copyright and license information, please view the LICENSE
  10.  * file that was distributed with this source code.
  11.  */
  12. namespace Customize\Controller\Admin\Order;
  13. use Doctrine\Common\Collections\ArrayCollection;
  14. use Eccube\Controller\AbstractController;
  15. use Eccube\Entity\Order;
  16. use Eccube\Entity\OrderItem;
  17. use Eccube\Entity\Shipping;
  18. use Eccube\Form\Type\Admin\SearchProductType;
  19. use Eccube\Form\Type\Admin\ShippingType;
  20. use Eccube\Repository\CategoryRepository;
  21. use Eccube\Repository\DeliveryRepository;
  22. use Eccube\Repository\OrderItemRepository;
  23. use Eccube\Repository\ShippingRepository;
  24. use Customize\Service\MailService;
  25. use Eccube\Service\OrderStateMachine;
  26. use Eccube\Service\PurchaseFlow\PurchaseContext;
  27. use Eccube\Service\PurchaseFlow\PurchaseFlow;
  28. use Eccube\Service\TaxRuleService;
  29. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  30. use Symfony\Component\Form\Extension\Core\Type\CollectionType;
  31. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  32. use Symfony\Component\Form\FormEvent;
  33. use Symfony\Component\Form\FormEvents;
  34. use Symfony\Component\HttpFoundation\JsonResponse;
  35. use Symfony\Component\HttpFoundation\Request;
  36. use Symfony\Component\HttpFoundation\Response;
  37. use Symfony\Component\Routing\Annotation\Route;
  38. use Symfony\Component\Serializer\SerializerInterface;
  39. use Eccube\Repository\OrderPdfRepository;
  40. use Eccube\Service\OrderPdfService;
  41. use Eccube\Entity\OrderPdf;
  42. use Eccube\Form\Type\Admin\OrderPdfType;
  43. use Eccube\Entity\MailHistory;
  44. use Eccube\Repository\MailTemplateRepository;
  45. class ShippingController extends AbstractController
  46. {
  47.     /**
  48.      * @var OrderItemRepository
  49.      */
  50.     protected $orderItemRepository;
  51.     /**
  52.      * @var CategoryRepository
  53.      */
  54.     protected $categoryRepository;
  55.     /**
  56.      * @var DeliveryRepository
  57.      */
  58.     protected $deliveryRepository;
  59.     /**
  60.      * @var TaxRuleService
  61.      */
  62.     protected $taxRuleService;
  63.     /**
  64.      * @var ShippingRepository
  65.      */
  66.     protected $shippingRepository;
  67.     /**
  68.      * @var SerializerInterface
  69.      */
  70.     protected $serializer;
  71.     /**
  72.      * @var \Eccube\Service\MailService
  73.      */
  74.     protected $mailService;
  75.     /**
  76.      * @var OrderStateMachine
  77.      */
  78.     protected $orderStateMachine;
  79.     /**
  80.      * @var PurchaseFlow
  81.      */
  82.     protected $purchaseFlow;
  83.     /** @var OrderPdfRepository */
  84.     protected $orderPdfRepository;
  85.     /** @var OrderPdfService */
  86.     protected $orderPdfService;
  87.     /**
  88.      * @var MailTemplateRepository
  89.      */
  90.     protected $mailTemplateRepository;
  91.     /**
  92.      * EditController constructor.
  93.      *
  94.      * @param MailService $mailService
  95.      * @param OrderItemRepository $orderItemRepository
  96.      * @param CategoryRepository $categoryRepository
  97.      * @param DeliveryRepository $deliveryRepository
  98.      * @param TaxRuleService $taxRuleService
  99.      * @param ShippingRepository $shippingRepository
  100.      * @param SerializerInterface $serializer
  101.      * @param OrderStateMachine $orderStateMachine
  102.      * @param PurchaseFlow $orderPurchaseFlow
  103.      */
  104.     public function __construct(
  105.         MailService $mailService,
  106.         OrderItemRepository $orderItemRepository,
  107.         CategoryRepository $categoryRepository,
  108.         DeliveryRepository $deliveryRepository,
  109.         TaxRuleService $taxRuleService,
  110.         ShippingRepository $shippingRepository,
  111.         SerializerInterface $serializer,
  112.         OrderStateMachine $orderStateMachine,
  113.         OrderPdfRepository $orderPdfRepository,
  114.         PurchaseFlow $orderPurchaseFlow,
  115.         OrderPdfService $orderPdfService,
  116.         MailTemplateRepository $mailTemplateRepository
  117.     ) {
  118.         $this->mailService $mailService;
  119.         $this->orderItemRepository $orderItemRepository;
  120.         $this->categoryRepository $categoryRepository;
  121.         $this->deliveryRepository $deliveryRepository;
  122.         $this->taxRuleService $taxRuleService;
  123.         $this->shippingRepository $shippingRepository;
  124.         $this->serializer $serializer;
  125.         $this->orderStateMachine $orderStateMachine;
  126.         $this->purchaseFlow $orderPurchaseFlow;
  127.         $this->orderPdfRepository $orderPdfRepository;
  128.         $this->orderPdfService $orderPdfService;
  129.         $this->mailTemplateRepository $mailTemplateRepository;
  130.     }
  131.     /**
  132.      * @Route("/%eccube_admin_route%/shipping/notify_mail/{id}", requirements={"id" = "\d+"}, name="admin_shipping_notify_mail", methods={"PUT"})
  133.      *
  134.      * @param Shipping $Shipping
  135.      *
  136.      * @return JsonResponse
  137.      *
  138.      * @throws \Twig_Error
  139.      */
  140.     public function notifyMail(Request $requestShipping $Shipping)
  141.     {
  142.         $this->isTokenValid();
  143.         $pdfPath null;
  144.         if ($request->get('deliveryNote'false)) {
  145.             $pdfPath $this->createPdf($Shipping->getId());
  146.         }
  147.         $this->mailService->sendShippingNotifyMail($Shipping$request->get('deliveryNote'false), $pdfPath);
  148.         $Shipping->setMailSendDate(new \DateTime());
  149.         $this->shippingRepository->save($Shipping);
  150.         $this->entityManager->flush();
  151.         return $this->json([
  152.             'mail' => true,
  153.             'shipped' => false,
  154.         ]);
  155.     }
  156.     /**
  157.      * @Route("/%eccube_admin_route%/shipping/notify_mail_order/{id}", requirements={"id" = "\d+"}, name="admin_shipping_notify_mail_order", methods={"PUT"})
  158.      *
  159.      * @param Shipping $Shipping
  160.      *
  161.      * @return JsonResponse
  162.      *
  163.      * @throws \Twig_Error
  164.      */
  165.     public function notifyMailOrder(Request $requestShipping $Shipping)
  166.     {
  167.         $this->isTokenValid();
  168.         $Order $Shipping->getOrder();
  169.         // メール送信
  170.         $subject $request->get('subject''');
  171.         $data $request->get('tpl_data''');
  172.         $template_id $request->get('template_id'null);
  173.         if($template_id) {
  174.             $MailTemplate $this->mailTemplateRepository->find($template_id);
  175.         }
  176.         switch($template_id) {
  177.             case $this->getParameter('eccube_order_mail_template_id'):
  178.                 $this->mailService->sendOrderMail($Order);
  179.                 break;
  180.             case $this->getParameter('eccube_temporary_order_notify_mail_template_id'):
  181.                 $this->mailService->sendOrderTemporaryMail($Order);
  182.                 break;
  183.             default:
  184.                 break;
  185.         }
  186.         $message $this->mailService->sendCustomMail($Shipping$template_id);
  187.         // $message = $this->mailService->sendAdminOrderMail($Order, $data);
  188.         // 送信履歴を保存.
  189.         $MailHistory = new MailHistory();
  190.         $MailHistory
  191.             ->setMailSubject($message->getSubject())
  192.             ->setMailBody($message->getTextBody())
  193.             ->setSendDate(new \DateTime())
  194.             ->setOrder($Order);
  195.         $this->entityManager->persist($MailHistory);
  196.         $this->entityManager->flush();
  197.         return $this->json([
  198.             'mail' => true,
  199.             'shipped' => false,
  200.         ]);
  201.     }
  202.     private function createPdf($id)
  203.     {
  204.         /** @var OrderPdf $OrderPdf */
  205.         $OrderPdf $this->orderPdfRepository->find($this->getUser());
  206.         if (!$OrderPdf) {
  207.             $OrderPdf = new OrderPdf();
  208.             $OrderPdf
  209.                 ->setTitle(trans('admin.order.delivery_note_title__default'))
  210.                 ->setMessage1(trans('admin.order.delivery_note_message__default1'))
  211.                 ->setMessage2(trans('admin.order.delivery_note_message__default2'))
  212.                 ->setMessage3(trans('admin.order.delivery_note_message__default3'));
  213.         }
  214.         $arrData = array();
  215.         $arrData['ids'] = $id;
  216.         $arrData['issue_date'] = new \DateTime();
  217.         $arrData['title'] = trans('admin.order.delivery_note_title__default');
  218.         $arrData['message1'] = trans('admin.order.delivery_note_message__default1');
  219.         $arrData['message2'] = trans('admin.order.delivery_note_message__default2');
  220.         $arrData['message3'] = trans('admin.order.delivery_note_message__default3');
  221.         $arrData['note1'] = '';
  222.         $arrData['note2'] = '';
  223.         $arrData['note3'] = '';
  224.         // 購入情報からPDFを作成する
  225.         $status $this->orderPdfService->makePdf($arrData);
  226.         // 異常終了した場合の処理
  227.         if (!$status) {
  228.             $this->addError('admin.order.export.pdf.download.failure''admin');
  229.             log_info('Unable to create pdf files! Process have problems!');
  230.             return;
  231.         }
  232.         // TCPDF::Outputを実行するとプロパティが初期化されるため、ファイル名を事前に取得しておく
  233.         $pdfFileName $this->orderPdfService->getPdfFileName();
  234.         $pdfPath $this->eccubeConfig['eccube_theme_user_data_dir'].'/order_pdf/'.$pdfFileName;
  235.         $this->orderPdfService->Output($pdfPath'F');
  236.         return $pdfPath;
  237.     }
  238. }