app/Customize/Controller/TopController.php line 94

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