<?php
namespace Plugin\ClaimPdf42\Controller\ClaimDownload;
use Eccube\Controller\AbstractController;
use Knp\Component\Pager\PaginatorInterface;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Eccube\Repository\PageRepository;
use Eccube\Repository\ProductRepository;
use Symfony\Component\HttpFoundation\Response;
use Eccube\Repository\OrderRepository;
use Eccube\Entity\BaseInfo;
use Eccube\Entity\Master\ProductStatus;
use Eccube\Event\EccubeEvents;
use Eccube\Event\EventArgs;
use Eccube\Form\Type\AddCartType;
use Eccube\Form\Type\SearchProductType;
use Eccube\Repository\BaseInfoRepository;
use Eccube\Repository\CustomerFavoriteProductRepository;
use Eccube\Repository\Master\ProductListMaxRepository;
use Eccube\Service\PurchaseFlow\PurchaseContext;
use Eccube\Service\PurchaseFlow\PurchaseFlow;
use Knp\Bundle\PaginatorBundle\Pagination\SlidingPagination;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use Symfony\Component\Form\FormBuilder;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Eccube\Repository\ShippingRepository;
use Plugin\ClaimPdf42\Entity\ClaimPdf;
use Plugin\ClaimPdf42\Entity\ClaimHistory;
use Plugin\ClaimPdf42\Form\Type\Admin\ClaimPdfType;
use Plugin\ClaimPdf42\Form\Type\Admin\ClaimHistoryType;
use Plugin\ClaimPdf42\Repository\ClaimPdfRepository;
use Plugin\ClaimPdf42\Repository\ClaimHistoryRepository;
use Plugin\ClaimPdf42\Service\ClaimPdfService;
// ページ表示作業
// dtb_page
// INSERT INTO `dtb_page` (`master_page_id`, `page_name`, `url`, `file_name`, `edit_type`, `author`, `description`, `keyword`, `meta_robots`, `meta_tags`, `discriminator_type`) VALUES(NULL, 'NEWS 詳細', 'cm_blog_page_detail', 'web/detail', 2, NULL, NULL, NULL, NULL, NULL, 'page');
// dtb_page_layout
// page_id を 合わせるために、dtb_page_layout の page_id を 162 にする必要があります。
// INSERT INTO `dtb_page_layout` (``, `layout_id`, `sort_no`, `discriminator_type`) VALUES (162, 2, 129, 'pagelayout');
class ClaimDownloadController extends AbstractController
{
/**
* @var OrderRepository
*/
protected $orderRepository;
/**
* MypageController constructor.
*
* @param OrderRepository $orderRepository
*/
/**
* @var ClaimPdfRepository
*/
protected $claimPdfRepository;
public function __construct(
PageRepository $pageRepository,
ProductRepository $productRepository,
OrderRepository $orderRepository,
ClaimPdfRepository $claimPdfRepository,
shippingRepository $shippingRepository
) {
$this->pageRepository = $pageRepository;
$this->productRepository = $productRepository;
$this->orderRepository = $orderRepository;
$this->claimPdfRepository = $claimPdfRepository;
$this->shippingRepository = $shippingRepository;
}
/**
* @Route("/ClaimeDownload/{id}/", name="claim_download")
* @Template("web/ClaimDownload.twig")
*/
public function index(Request $request, $id)
{
$ErrorMessage = null;
// paginator
$Order = $this->orderRepository->findBy(['pre_order_id'=>$id]);
if (!$Order) {
$ErrorMessage = '受注情報が存在しません';
return [
'ErrorMessage' => $ErrorMessage,
];
}
$Shopping = $Order[0]->getShippings()->first();
if (!$Shopping) {
throw new NotFoundHttpException('Shopping not found');
}
dump($Shopping->getId());
$ids[] = $Shopping->getId();
$orderId_tmp = "";
$orderId_cnt = 0;
// 受注ID配列テーブルを作成する
foreach ($ids as $id) {
// 出荷番号から出荷情報を取得する
$Shipping = $this->shippingRepository->find($id);
// 出荷情報から受注情報を取得する
$orderData_tmp = $Shipping->getOrder();
// 設定条件:初回または同一受注番号でない場合(複数配送の場合は同一受注番号が複数存在する)
if ($orderId_tmp == "" or $orderId_tmp != $orderData_tmp->getId()) {
// 受注番号を取得して設定
$orderIdDatas[$orderId_cnt] = $orderData_tmp->getId();
$orderId_tmp = $orderIdDatas[$orderId_cnt];
$orderId_cnt++;
}
}
/** @var ClaimPdf $ClaimPdf */
$ClaimPdf = $this->claimPdfRepository->find($this->getUser());
//dump($ClaimPdf);
if (empty($ClaimPdf)) {
$ClaimPdf = new ClaimPdf();
$ClaimPdf
->setTitleNouhin(trans('admin.order.delivery_note_title_nouhin__default'))
->setMessage1Nouhin(trans('admin.order.delivery_note_message__default1'))
->setMessage2Nouhin(trans('admin.order.delivery_note_message__default2'))
->setMessage3Nouhin(trans('admin.order.delivery_note_message__default3'))
->setTitleNouhinShipping(trans('admin.order.delivery_note_title_otodoke__default'))
->setMessage1NouhinShipping(trans('admin.order.delivery_note_message__default7'))
->setMessage2NouhinShipping(trans('admin.order.delivery_note_message__default8'))
->setMessage3NouhinShipping(trans(''))
->setTitleOtodoke(trans('admin.order.delivery_note_title_otodoke__default'))
->setMessage1Otodoke(trans('admin.order.delivery_note_message__default7'))
->setMessage2Otodoke(trans('admin.order.delivery_note_message__default8'))
->setMessage3Otodoke(trans(''))
->setTitleSeikyu(trans('admin.order.delivery_note_title_seikyu__default'))
->setMessage1Seikyu(trans('admin.order.delivery_note_message__default4'))
->setMessage2Seikyu(trans('admin.order.delivery_note_message__default5'))
->setMessage3Seikyu(trans('admin.order.delivery_note_message__default6'))
->setHurikomiBank(trans(''))
->setHurikomiBankSiten(trans(''))
->setHurikomiBankKouza(trans(''))
->setHurikomiFreeArea(trans(''));
}
/**
* @var FormBuilder
*/
$builder = $this->formFactory->createBuilder(ClaimPdfType::class, $ClaimPdf);
/* @var \Symfony\Component\Form\Form $form */
$form = $builder->getForm();
// Formへの設定
$form->get('ids')->setData(implode(',', $ids));
$form->get('orderids')->setData(implode(',', $orderIdDatas));
//$form->get('orderdatetime_st')->setData($orderDatetimeStart);
//$form->get('orderdatetime_en')->setData($orderDatetimeEnd);
return [
'form' => $form->createView(),
'ErrorMessage' => $ErrorMessage,
];
}
}