app/Customize/Controller/TopController.php line 270

Open in your IDE?
  1. <?php
  2. namespace Customize\Controller;
  3. use Customize\Entity\DeliveryDiscountSetting;
  4. use Customize\Enum\FaqType;
  5. use Customize\Enum\SeasonCode;
  6. use Customize\Repository\CampaignRepository;
  7. use Customize\Repository\ConfirmDeliveryRepository;
  8. use Customize\Repository\CouponRepository;
  9. use Customize\Repository\CustomPluginCouponRepository;
  10. use Customize\Repository\DeliveryDiscountSettingRepository;
  11. use Customize\Repository\FaqRepository;
  12. use Customize\Repository\PriceRepository;
  13. use Customize\Repository\ProductRepository;
  14. use Customize\Repository\SeasonRepository;
  15. use Customize\Repository\WorkingTimeRepository;
  16. use Customize\Service\DeiveryDateService;
  17. use DateTime;
  18. use Eccube\Entity\Delivery;
  19. use Eccube\Repository\CategoryRepository;
  20. use Eccube\Repository\DeliveryRepository;
  21. use Eccube\Repository\NewsRepository;
  22. use Eccube\Repository\TagRepository;
  23. use Plugin\CouponPro42\Repository\CouponRepository as RepositoryCouponRepository;
  24. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
  25. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
  26. use Symfony\Component\HttpFoundation\Response;
  27. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  28. use Symfony\Component\HttpFoundation\Request;
  29. class TopController extends BaseController
  30. {
  31.   /**
  32.    * @var NewsRepository
  33.    */
  34.   protected $newsRepository;
  35.   protected $seasonRepository;
  36.   protected $couponRepository;
  37.   protected $campaignRepository;
  38.   protected $productRepository;
  39.   protected $tagRepository;
  40.   protected $cateRepository;
  41.   protected $customPluginCouponRepository;
  42.   protected $couponOrderProRepository;
  43.   protected $WorkingTimeRepository;
  44.   protected $confirmDeliveryRepository;
  45.   protected $deliveryRepository;
  46.   protected $priceRepository;
  47.   protected $faqRepository;
  48.   protected $deliveryDateService;
  49.   protected $deliveryDiscountSettingRepository;
  50.   public function __construct(
  51.     NewsRepository $newsRepository,
  52.     SeasonRepository $seasonRepository,
  53.     CouponRepository $couponRepository,
  54.     CampaignRepository $campaignRepository,
  55.     ProductRepository $productRepository,
  56.     TagRepository $tagRepository,
  57.     CustomPluginCouponRepository $customPluginCouponRepository,
  58.     CategoryRepository $categoryRepository,
  59.     RepositoryCouponRepository $couponOrderProRepository,
  60.     WorkingTimeRepository $workingTimeRepository,
  61.     ConfirmDeliveryRepository $confirmDeliveryRepository,
  62.     DeliveryRepository $deliveryRepository,
  63.     PriceRepository $priceRepository,
  64.     FaqRepository $faqRepository,
  65.     DeiveryDateService $deliveryDateService,
  66.     DeliveryDiscountSettingRepository $deliveryDiscountSettingRepository
  67.   ) {
  68.     $this->newsRepository $newsRepository;
  69.     $this->seasonRepository $seasonRepository;
  70.     $this->couponRepository $couponRepository;
  71.     $this->campaignRepository $campaignRepository;
  72.     $this->productRepository $productRepository;
  73.     $this->tagRepository $tagRepository;
  74.     $this->cateRepository $categoryRepository;
  75.     $this->customPluginCouponRepository $customPluginCouponRepository;
  76.     $this->couponOrderProRepository $couponOrderProRepository;
  77.     $this->WorkingTimeRepository $workingTimeRepository;
  78.     $this->confirmDeliveryRepository $confirmDeliveryRepository;
  79.     $this->deliveryRepository $deliveryRepository;
  80.     $this->priceRepository $priceRepository;
  81.     $this->faqRepository $faqRepository;
  82.     $this->deliveryDateService $deliveryDateService;
  83.     $this->deliveryDiscountSettingRepository $deliveryDiscountSettingRepository;
  84.   }
  85.   /**
  86.    * @Method("GET")
  87.    * @Route("/terms")
  88.    * @Template("@user_data/terms.twig")
  89.    */
  90.   public function terms()
  91.   {
  92.     return;
  93.   }
  94.   /**
  95.    * @Method("GET")
  96.    * @Route("/", name="homepage", methods={"GET"})
  97.    * @Template("@user_data/index.twig")
  98.    */
  99.   public function index(Request $request)
  100.   {
  101.     $season $this->seasonRepository->findActiveSeason();
  102.     if ($this->isGranted('ROLE_USER')) {
  103.       $Customer $this->getUser();
  104.       $couponPro $this->couponOrderProRepository->fetchCouponsForMypage($Customer);
  105.     }else {
  106.       $couponPro $this->couponOrderProRepository->fetchCouponsForMypage(null);
  107.     }
  108.     $campaigns $this->campaignRepository->findActiveCampaigns();
  109.     $newsList $this->newsRepository->findPublishedNews();
  110.     $newsNoti $this->newsRepository->findPublishedNewsNoti();
  111.     $products $this->productRepository->getQueryBuilderBySearchDataUser([
  112.       'name' => $request->get('name'),
  113.       'tags' => $request->get('tags'),
  114.       'category_id' => $request->get('category')
  115.     ]);
  116.     $tags $this->tagRepository->findAll();
  117.     $categories $this->cateRepository->findAll();
  118.     return [
  119.       'season' => $season,
  120.       'couponPro' => $couponPro,
  121.       'campaigns' => $campaigns,
  122.       'newsList' => $newsList,
  123.       'newsNoti' => $newsNoti,
  124.       'products' => $products,
  125.       'tags' => $tags,
  126.       'categories' => $categories,
  127.       'form' => [
  128.         'name' => $request->get('name'),
  129.         'tags' => $request->get('tags'),
  130.         'category_id' => $request->get('category')
  131.       ]
  132.     ];
  133.   }
  134.   /**
  135.    * 指定した新着情報を削除する。
  136.    *
  137.    * @Route("/workingtime/check-status", name="workingtime_check_status", methods={"GET", "POST"})
  138.    *
  139.    * @return json
  140.    */
  141.   public function checkStatus(Request $request)
  142.   {
  143.     $date = new \DateTime($request->get('date'));
  144.     $workingtime $this->WorkingTimeRepository->findOneBy(['day' => $date]);
  145.     $result false;
  146.     if ($workingtime) {
  147.       $result $workingtime->getStatus() ? 'rest' 'work';
  148.     } else {
  149.       $result 'normal';
  150.     }
  151.     return $this->json([
  152.       'result' => $result
  153.     ]);
  154.   }
  155.   /**
  156.    * @Method("GET")
  157.    * @Route("/specified")
  158.    * @Template("@user_data/specified.twig")
  159.    */
  160.   public function specified()
  161.   {
  162.     return;
  163.   }
  164.   /**
  165.    * @Method("GET")
  166.    * @Route("/privacy")
  167.    * @Template("@user_data/privacy.twig")
  168.    */
  169.   public function privacy()
  170.   {
  171.     return;
  172.   }
  173.   /**
  174.    * @Method("GET")
  175.    * @Route("/trading_card-design")
  176.    * @Template("@user_data/trading_card-design.twig")
  177.    */
  178.   public function trading_card_design()
  179.   {
  180.     $category $this->cateRepository->findOneBy(['name' => 'トレカ']);
  181.     return [
  182.       'category' => $category
  183.     ];
  184.   }
  185.   /**
  186.    * @Method("GET")
  187.    * @Route("/sticker-design")
  188.    * @Template("@user_data/sticker-design.twig")
  189.    */
  190.   public function sticker_design()
  191.   {
  192.     $category $this->cateRepository->findOneBy(['name' => 'ステッカー']);
  193.     return [
  194.       'category' => $category
  195.     ];
  196.   }
  197.   /**
  198.    * @Method("GET")
  199.    * @Route("/payment")
  200.    * @Template("@user_data/payment.twig")
  201.    */
  202.   public function payment()
  203.   {
  204.     return;
  205.   }
  206.   /**
  207.    * @Method("GET")
  208.    * @Route("/delivery")
  209.    * @Template("@user_data/delivery.twig")
  210.    */
  211.   public function delivery()
  212.   {
  213.     $deliveries $this->deliveryRepository->getActiveDeliveries();
  214.     $deliveryDisount $this->deliveryDiscountSettingRepository->getFirstSetting();
  215.     $type_discount $deliveryDisount ?  $deliveryDisount->getType() : null;
  216.     $discount $deliveryDisount ?  $deliveryDisount->getDiscount() : null;
  217.     $min_order $deliveryDisount ?  $deliveryDisount->getMinOrder() : null;
  218.     $internationalFee = [];
  219.     foreach($deliveries as $delivery){
  220.         $international_fee $delivery->getInternational();
  221.         if($international_fee && !in_array($international_fee$internationalFee)){
  222.           $internationalFee[] = $international_fee;
  223.         }
  224.     }
  225.     $minInternationalFee count($internationalFee) > min($internationalFee) : null;
  226.     
  227.     if($type_discount){
  228.       $type_discount $type_discount === DeliveryDiscountSetting::TYPE_PERCENT '%' "円";
  229.     }
  230.     return ['deliveries' => $deliveries'minInternationalFee' => $minInternationalFee'deliveryDiscount' => ['type' => $type_discount'discount' => $discount'MinOrder' => $min_order]];
  231.   }
  232.   /**
  233.    * @Method("GET")
  234.    * @Route("/faq")
  235.    * @Template("@user_data/faq.twig")
  236.    */
  237.   public function faq()
  238.   {
  239.     $faqs $this->faqRepository->getAllBySortNo();
  240.     $types FaqType::getList();
  241.     return [
  242.       'faqs' => $faqs,
  243.       'types'=> $types
  244.     ];
  245.   }
  246.   /**
  247.    * @Method("GET")
  248.    * @Route("/keyholder-design")
  249.    * @Template("@user_data/keyholder-design.twig")
  250.    */
  251.   public function keyholder_design()
  252.   {
  253.     $category $this->cateRepository->findOneBy(['name' => 'アクリルキーホルダー']);
  254.     return [
  255.       'category' => $category
  256.     ];
  257.   }
  258.   /**
  259.    * @Method("GET")
  260.    * @Route("/stand-design")
  261.    * @Template("@user_data/stand-design.twig")
  262.    */
  263.   public function stand_design()
  264.   {
  265.     $category $this->cateRepository->findOneBy(['name' => 'アクリルスタンド']);
  266.     return [
  267.       'category' => $category
  268.     ];
  269.   }
  270.   /**
  271.    * @Method("GET")
  272.    * @Route("/badge-design")
  273.    * @Template("@user_data/badge-design.twig")
  274.    */
  275.   public function badge_design()
  276.   {
  277.     $category $this->cateRepository->findOneBy(['name' => 'バッジ']);
  278.     return [
  279.       'category' => $category
  280.     ];
  281.   }
  282.   /**
  283.    * @Method("GET")
  284.    * @Route("/other-design")
  285.    * @Template("@user_data/other-design.twig")
  286.    */
  287.   public function other_design()
  288.   {
  289.     $category $this->cateRepository->findOneBy(['name' => 'その他']);
  290.     return [
  291.       'category' => $category
  292.     ];
  293.   }
  294.   /**
  295.    * @Method("GET")
  296.    * @Route("/delivery_confirmation")
  297.    * @Template("@user_data/delivery_confirmation.twig")
  298.    */
  299.   public function delivery_confirmation()
  300.   {
  301.     $season $this->seasonRepository->findActiveSeason()->getCode() ?? SeasonCode::Normal;
  302.     $categories $this->cateRepository->findAll();
  303.     $products $this->productRepository->getProductRoot();
  304.     $data $this->confirmDeliveryRepository->getDataDelivery($season);
  305.     $startDate = new \DateTime('first day of this month');
  306.     $endDate = new \DateTime('last day of next month');
  307.     $calendars $this->WorkingTimeRepository->createQueryBuilder('wt')
  308.       ->where('wt.day BETWEEN :start AND :end')
  309.       ->setParameter('start'$startDate->format('Y-m-d'))
  310.       ->setParameter('end'$endDate->format('Y-m-d'))
  311.       ->getQuery()
  312.       ->getResult();
  313.     $workingtimes = [];
  314.     foreach($calendars as $calendar) {
  315.       $workingtimes[] = [
  316.         'status' => $calendar->getStatus(),
  317.         'date' => date_format($calendar->getDay(), "Y-m-d")
  318.       ];
  319.     }
  320.     return [
  321.       'categories' => $categories,
  322.       'products' => $products,
  323.       'data' => $data,
  324.       'workingtimes' => $workingtimes,
  325.     ];
  326.   }
  327.   /**
  328.    * @Method("GET")
  329.    * @Route("/get_delivery/{id}")
  330.    * @return JsonResponse
  331.    */
  332.   public function getDelivery($id)
  333.   {
  334.     $season $this->seasonRepository->findActiveSeason()->getCode() ?? SeasonCode::Normal;
  335.     $data $this->priceRepository->queryDeliveryConfirm($id$season);
  336.     return $this->json([
  337.       'data' => $data
  338.     ]);
  339.   }
  340.   /**
  341.    * @Method("GET")
  342.    * @Route("/sample")
  343.    * @Template("@user_data/sample.twig")
  344.    */
  345.   public function sample()
  346.   {
  347.     $products_sample $this->productRepository->getProductSample();
  348.     return [
  349.       'products_sample' => $products_sample
  350.     ];
  351.   }
  352.   /**
  353.    * @Method("GET")
  354.    * @Route("/sticker-mat")
  355.    * @Template("@user_data/sticker-mat.twig")
  356.    */
  357.   public function stickerMat()
  358.   {
  359.     $date $this->deliveryDateService->deliveryDate($day 4, new DateTime('2025-01-09'));
  360.     dd($date);
  361.     return;
  362.   }
  363.   /**
  364.    * @Method("GET")
  365.    * @Route("/keyholder-size_s")
  366.    * @Template("@user_data/keyholder-size_s.twig")
  367.    */
  368.   public function keyHolderSizeS()
  369.   {
  370.     return;
  371.   }
  372.   /**
  373.    * @Method("GET")
  374.    * @Route("/stand-size_s")
  375.    * @Template("@user_data/stand-size_s.twig")
  376.    */
  377.   public function standSizeS()
  378.   {
  379.     return;
  380.   }
  381.   /**
  382.    * @Method("GET")
  383.    * @Route("/badge-can_hook")
  384.    * @Template("@user_data/badge-can_hook.twig")
  385.    */
  386.   public function badgeCanHook()
  387.   {
  388.     return;
  389.   }
  390.   /**
  391.    * @Method("GET")
  392.    * @Route("/trading_card-regular")
  393.    * @Template("@user_data/trading_card-regular.twig")
  394.    */
  395.   public function tradingCardRegular()
  396.   {
  397.     return;
  398.   }
  399.   /**
  400.    * @Method("GET")
  401.    * @Route("/other-artprint")
  402.    * @Template("@user_data/other-artprint.twig")
  403.    */
  404.   public function otherArtprint()
  405.   {
  406.     return;
  407.   }
  408.   /**
  409.    * @Method("GET")
  410.    * @Route("/other")
  411.    * @Template("@user_data/other.twig")
  412.    */
  413.   public function other()
  414.   {
  415.     return;
  416.   }
  417.   /**
  418.    * @Method("GET")
  419.    * @Route("/keyholder")
  420.    * @Template("@user_data/keyholder.twig")
  421.    */
  422.   public function keyholder()
  423.   {
  424.     return;
  425.   }
  426.   /**
  427.    * @Method("GET")
  428.    * @Route("/stand")
  429.    * @Template("@user_data/stand.twig")
  430.    */
  431.   public function stand()
  432.   {
  433.     return;
  434.   }
  435.   /**
  436.    * @Method("GET")
  437.    * @Route("/badge")
  438.    * @Template("@user_data/badge.twig")
  439.    */
  440.   public function badge()
  441.   {
  442.     return;
  443.   }
  444.   /**
  445.    * @Method("GET")
  446.    * @Route("/trading_card")
  447.    * @Template("@user_data/trading_card.twig")
  448.    */
  449.   public function trading_card()
  450.   {
  451.     return;
  452.   }
  453.   /**
  454.    * @Method("GET")
  455.    * @Route("/sticker-mat_detail")
  456.    * @Template("@user_data/sticker-mat_detail.twig")
  457.    */
  458.   public function stickeMatDetail()
  459.   {
  460.     return;
  461.   }
  462.   /**
  463.    * @Method("GET")
  464.    * @Route("/keyholder-size_s_order")
  465.    * @Template("@user_data/keyholder-size_s_order.twig")
  466.    */
  467.   public function keyholderSizeSOrder()
  468.   {
  469.     return;
  470.   }
  471.   /**
  472.    * @Method("GET")
  473.    * @Route("/stand-size_s_order")
  474.    * @Template("@user_data/stand-size_s_order.twig")
  475.    */
  476.   public function standSizeSOrder()
  477.   {
  478.     return;
  479.   }
  480.   /**
  481.    * @Method("GET")
  482.    * @Route("/badge-acrylic_safty_order")
  483.    * @Template("@user_data/badge-acrylic_safty_order.twig")
  484.    */
  485.   public function badgeAcrylicSaftyOrder()
  486.   {
  487.     return;
  488.   }
  489.   /**
  490.    * @Method("GET")
  491.    * @Route("/sticker")
  492.    * @Template("@user_data/sticker.twig")
  493.    */
  494.   public function sticker()
  495.   {
  496.     return;
  497.   }
  498.   /**
  499.    * @Method("GET")
  500.    * @Route("/design")
  501.    * @Template("@user_data/design.twig")
  502.    */
  503.   public function design()
  504.   {
  505.     return;
  506.   }
  507. }