app/Plugin/TeikiOrder42/Controller/TeikiOrderController.php line 44

Open in your IDE?
  1. <?php
  2. namespace Plugin\TeikiOrder42\Controller;
  3. use Eccube\Controller\AbstractController;
  4. use Eccube\Entity\Product;
  5. use Eccube\Entity\Master\ProductStatus;
  6. use Eccube\Repository\ProductRepository;
  7. use Eccube\Form\Type\AddCartType;
  8. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  9. use Symfony\Component\Form\FormError;
  10. use Symfony\Component\HttpFoundation\RedirectResponse;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. class TeikiOrderController extends AbstractController
  14. {
  15.     /**
  16.      * @var ProductRepository
  17.      */
  18.     protected $productRepository;
  19.     /**
  20.      * CouponShoppingController constructor.
  21.      *
  22.      */
  23.     public function __construct(
  24.         ProductRepository $productRepository
  25.     )
  26.     {
  27.         $this->productRepository $productRepository;
  28.     }
  29.     /**
  30.      * 定期購入ページ.
  31.      *
  32.      * @Route("/kenkoukyoushitsu/teiki", name="kenkoukyoushitsu_teiki")
  33.      * @Template("Kenkoukyoushitsu/teiki.twig")
  34.      *
  35.      * @param Request $request
  36.      * @param Product $Product
  37.      */
  38.     public function teiki(Request $request)
  39.     {
  40.         $Product $this->productRepository->find($this->getParameter('TEIKI_PRODUCT_ID'));
  41.         if (!$this->checkVisibility($Product)) {
  42.             throw new NotFoundHttpException();
  43.         }
  44.         $builder $this->formFactory->createNamedBuilder(
  45.             '',
  46.             AddCartType::class,
  47.             null,
  48.             [
  49.                 'product' => $Product,
  50.                 'id_add_product_id' => false,
  51.             ]
  52.         );
  53.         return [
  54.             'form' => $builder->getForm()->createView(),
  55.             'Product' => $Product,
  56.         ];
  57.     }
  58.     /**
  59.      * 定期購入ページ(学割).
  60.      *
  61.      * @Route("/kenkoukyoushitsu/teiki/gakuwari", name="kenkoukyoushitsu_teiki_gakuwari")
  62.      * @Template("Kenkoukyoushitsu/gakuwari.twig")
  63.      *
  64.      * @param Request $request
  65.      * @param Product $Product
  66.      */
  67.     public function gakuwari(Request $request)
  68.     {
  69.         $Product $this->productRepository->find($this->getParameter('TEIKI_PRODUCT_ID'));
  70.         if (!$this->checkVisibility($Product)) {
  71.             throw new NotFoundHttpException();
  72.         }
  73.         $builder $this->formFactory->createNamedBuilder(
  74.             '',
  75.             AddCartType::class,
  76.             null,
  77.             [
  78.                 'product' => $Product,
  79.                 'id_add_product_id' => false,
  80.             ]
  81.         );
  82.         return [
  83.             'form' => $builder->getForm()->createView(),
  84.             'Product' => $Product,
  85.         ];
  86.     }
  87.     /**
  88.      * 閲覧可能な商品かどうかを判定
  89.      *
  90.      * @param Product $Product
  91.      *
  92.      * @return boolean 閲覧可能な場合はtrue
  93.      */
  94.     protected function checkVisibility(Product $Product)
  95.     {
  96.         $is_admin $this->session->has('_security_admin');
  97.         // 管理ユーザの場合はステータスやオプションにかかわらず閲覧可能.
  98.         if (!$is_admin) {
  99.             // 在庫なし商品の非表示オプションが有効な場合.
  100.             // if ($this->BaseInfo->isOptionNostockHidden()) {
  101.             //     if (!$Product->getStockFind()) {
  102.             //         return false;
  103.             //     }
  104.             // }
  105.             // 公開ステータスでない商品は表示しない.
  106.             if ($Product->getStatus()->getId() !== ProductStatus::DISPLAY_SHOW) {
  107.                 return false;
  108.             }
  109.         }
  110.         return true;
  111.     }
  112. }