app/Plugin/ReceiptPdf2/Controller/ReceiptPdfController.php line 74

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of Receipt Pdf plugin
  4.  *
  5.  * Copyright (C) 2018 NinePoint Co. LTD. All Rights Reserved.
  6.  *
  7.  * Copyright (C) 2016 LOCKON CO.,LTD. All Rights Reserved.
  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 Plugin\ReceiptPdf2\Controller;
  13. use Eccube\Controller\AbstractController;
  14. use Eccube\Repository\OrderPdfRepository;
  15. use Eccube\Repository\ShippingRepository;
  16. use Plugin\ReceiptPdf2\Common\ReceiptPdfCommonData;
  17. use Plugin\ReceiptPdf2\Entity\ReceiptPdfConfig;
  18. use Plugin\ReceiptPdf2\Form\Type\ReceiptPdfType;
  19. use Plugin\ReceiptPdf2\Repository\ReceiptPdfConfigRepository;
  20. use Plugin\ReceiptPdf2\Repository\ReceiptPdfRepository;
  21. use Plugin\ReceiptPdf2\Service\ReceiptPdfService;
  22. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
  23. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
  24. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  25. use Symfony\Component\HttpFoundation\RedirectResponse;
  26. use Symfony\Component\HttpFoundation\Request;
  27. use Symfony\Component\HttpFoundation\Response;
  28. class ReceiptPdfController extends AbstractController
  29. {
  30.     /** @var ReceiptPdfConfigRepository */
  31.     protected $receiptPdfConfigRepository;
  32.     /** @var ReceiptPdfService */
  33.     protected $receiptPdfService;
  34.     /** @var ReceiptPdfRepository */
  35.     protected $receiptPdfRepository;
  36.     /** @var ShippingRepository */
  37.     protected $shippingRepository;
  38.     /**
  39.      * OrderController constructor.
  40.      *
  41.      * @param ReceiptPdfConfigRepository $receiptPdfConfigRepository
  42.      * @param ReceiptPdfService $receiptPdfService
  43.      * 
  44.      */
  45.     public function __construct(
  46.         ReceiptPdfConfigRepository $receiptPdfConfigRepository,
  47.         ReceiptPdfService $receiptPdfService,
  48.         ReceiptPdfRepository $receiptPdfRepository,
  49.         ShippingRepository $shippingRepository
  50.     ) {
  51.         $this->receiptPdfConfigRepository $receiptPdfConfigRepository;
  52.         $this->receiptPdfService $receiptPdfService;
  53.         $this->receiptPdfRepository $receiptPdfRepository;
  54.         $this->shippingRepository $shippingRepository;
  55.     }
  56.     /**
  57.      * @Route("/%eccube_admin_route%/receipt_pdf2/receipt_pdf", name="plugin_admin_receipt_pdf")
  58.      * @Template("@ReceiptPdf2/admin/receipt_pdf.twig")
  59.      *
  60.      * @param Request $request
  61.      *
  62.      * @return array|RedirectResponse
  63.      */
  64.     public function index(Request $request)
  65.     {
  66.         // requestから出荷番号IDの一覧を取得する.
  67.         $ids $request->get('ids', []);
  68.         if (count($ids) == 0) {
  69.             $this->addError('出荷番号IDが取得できませんでした。''admin');
  70.             log_info('The Order cannot found!');
  71.             return $this->redirectToRoute('admin_order');
  72.         }
  73.         $ReceiptPdfConfig $this->receiptPdfConfigRepository->find($this->getUser());
  74.         $common = new ReceiptPdfCommonData();
  75.         if (!$ReceiptPdfConfig) {
  76.             $ReceiptPdfConfig = new ReceiptPdfConfig();
  77.             $ReceiptPdfConfig
  78.                 ->setTitle($common::DEFAULT_DATA_TITLE)
  79.                 ->setMessage1($common::DEFAULT_DATA_MESSAGE1)
  80.                 ->setMessage2($common::DEFAULT_DATA_MESSAGE2)
  81.                 ->setMessage3($common::DEFAULT_DATA_MESSAGE3);
  82.         }
  83.         // 複数配送の確認
  84.         $is_multiple 0;
  85.         foreach ($ids as $id) {
  86.             $Shipping $this->shippingRepository->find($id);
  87.             $Order $Shipping->getOrder();
  88.             if ($Order->isMultiple()) {
  89.                 ++$is_multiple;
  90.             }
  91.         }
  92.         $builder $this->formFactory->createBuilder(ReceiptPdfType::class, $ReceiptPdfConfig);
  93.         $builder->get('is_multiple')->setData($is_multiple)->setDataLocked(true);
  94.         $form $builder->getForm();
  95.         // Formへの設定
  96.         $form->get('ids')->setData(implode(','$ids));
  97.         return [
  98.             'form' => $form->createView(),
  99.         ];
  100.     }
  101.     /**
  102.      * @Route("/%eccube_admin_route%/receipt_pdf2/admin_receipt_pdf_download", name="admin_receipt_pdf_download")
  103.      *
  104.      * @param Request $request
  105.      *
  106.      * @return Response
  107.      */
  108.     public function exportPdfDownload(Request $request)
  109.     {
  110. file_put_contents('/home/dober/testman.biz/public_html/yamaria-ec-demo/var/log/dev/debug.log'"export pdf\n"FILE_APPEND);
  111.         $builder $this->formFactory->createBuilder(ReceiptPdfType::class);
  112.         $form $builder->getForm();
  113.         $form->handleRequest($request);
  114.         // Validation
  115.         if (!$form->isValid()) {
  116.             $this->addError('必要な項目が入力させていません。''admin');
  117.             log_info('The parameter is invalid!');
  118.             // 帳票出力画面を表示
  119.             return $this->showReceiptPdf($form);
  120.         }
  121.         $arrData $form->getData();
  122.         $specification_flg $form->get('specification_flg')->getData();
  123.         $receipt_flg $form->get('receipt_flg')->getData();
  124.         if(($specification_flg != 1) && ($receipt_flg != 1)){
  125.             // 帳票出力画面を表示
  126.             return $this->showReceiptPdf($form);
  127.         }
  128.         // 購入情報からPDFを作成する
  129.         $status $this->receiptPdfService->makePdf($arrData);
  130.         // 異常終了した場合の処理
  131.         if (!$status) {
  132.             $this->addError('PDF作成に失敗しました。''admin');
  133.             log_info('Unable to create pdf files! Process have problems!');
  134.             // 帳票出力画面を表示
  135.             return $this->showReceiptPdf($form);
  136.         }
  137.         // 出荷番号をStringからarrayに変換
  138.         $ids explode(','$arrData['ids']);
  139.         // 出荷番号件数をカウント
  140.         $countIds count($ids);
  141.         
  142.         // ダウンロードする
  143.         $response = new Response(
  144.             $this->receiptPdfService->outputPdf($countIds),
  145.             200,
  146.             ['content-type' => 'application/pdf']
  147.         );
  148.         $downloadKind $form->get('download_kind')->getData();
  149.         // レスポンスヘッダーにContent-Dispositionをセットし、ファイル名を指定
  150.         if ($downloadKind == 1) {
  151.             $response->headers->set('Content-Disposition''attachment; filename="'.$this->receiptPdfService->getPdfFileName($countIds).'"');
  152.         } else {
  153.             $response->headers->set('Content-Disposition''inline; filename="'.$this->receiptPdfService->getPdfFileName($countIds).'"');
  154.         }
  155.         log_info('OrderPdf download success!', ['Order ID' => implode(','$request->get('ids', []))]);
  156.         $arrData['admin'] = $this->getUser();
  157.         $isSpecificationDataSave $form->get('default1')->getData();
  158.         if ($isSpecificationDataSave == 1) {
  159.             // Save input to DB
  160.             $this->receiptPdfRepository->specificationDataSave($arrData);
  161.         }
  162.         $isReceiptDataSave $form->get('default2')->getData();
  163.         if ($isReceiptDataSave == 1) {
  164.             // Save input to DB
  165.             $this->receiptPdfRepository->receiptDataSave($arrData);
  166.         }
  167.         return $response;
  168.     }
  169.     /**
  170.      * showReceiptPdf
  171.      */
  172.     public function showReceiptPdf($form)
  173.     {
  174.         $common = new ReceiptPdfCommonData();
  175.         //$pluginPath = $this->eccubeConfig->get('plugin_realdir').$common::TWIG_FILE_PATH;
  176.         $pluginPath $common::TWIG_FILE_PATH;
  177.     return $this->render($pluginPath, [
  178.             'form' => $form->createView(),
  179.         ]);
  180.     }
  181. }