app/Customize/Controller/Reservation/ReservationController.php line 81

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.ec-cube.co.jp/
  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 Customize\Controller\Reservation;
  13. use Eccube\Controller\AbstractController;
  14. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\Routing\RouterInterface;
  18. use Customize\Entity\Reservation;
  19. use Customize\Form\Type\ReservationType;
  20. use Customize\Repository\ReservationRepository;
  21. use Eccube\Repository\CustomerRepository;
  22. use Eccube\Repository\PageRepository;
  23. use Eccube\Entity\Customer;
  24. use Customize\Service\MailService;
  25. class ReservationController extends AbstractController
  26. {
  27.     /**
  28.      * @var ReservationRepository
  29.      */
  30.     protected $reservationRepository;
  31.     /**
  32.      * @var CustomerRepository
  33.      */
  34.     protected $customerRepository;
  35.     /**
  36.      * @var PageRepository
  37.      */
  38.     protected $pageRepository;
  39.     /**
  40.      * @var MailService
  41.      */
  42.     protected $mailService;
  43.     /**
  44.      * ReservationController constructor.
  45.      *
  46.      * @param ReservationRepository $reservationRepository
  47.      */
  48.     public function __construct(
  49.         ReservationRepository $reservationRepository,
  50.         CustomerRepository $customerRepository,
  51.         PageRepository $pageRepository,
  52.         MailService $mailService
  53.     ) {
  54.         $this->reservationRepository $reservationRepository;
  55.         $this->customerRepository $customerRepository;
  56.         $this->pageRepository $pageRepository;
  57.         $this->mailService $mailService;
  58.     }
  59.     /**
  60.     * @Route("/reservation/", name="reservation", methods={"GET", "POST"})
  61.     * @Route("/reservation/", name="reservation_confirm", methods={"GET", "POST"})
  62.     * @Template("Reservation/index.twig")
  63.     */
  64.     public function index(Request $requestRouterInterface $router)
  65.     {
  66.         $Reservation = new Reservation();
  67.         $Customer $this->getUser();
  68.         if ($Customer) {
  69.             $Reservation->setShop($Customer->shop);
  70.         }
  71.         else {
  72.             // 非会員の場合、ログイン画面を表示
  73.             //  ログイン後の画面遷移先を設定
  74.             $this->setLoginTargetPath('reservation');
  75.             return $this->redirectToRoute('mypage_login');
  76.         }
  77.         $reservationDate $this->reservationRepository->getReservationDate($Reservation->getShop());
  78.         $Reservation->setReservationDate($reservationDate);
  79.         $builder $this->formFactory->createBuilder(ReservationType::class, $Reservation);
  80.         $form $builder->getForm();
  81.         $form->handleRequest($request);
  82.         if ($form->isSubmitted() && $form->isValid()) {
  83.             switch ($request->get('mode')) {
  84.                 case 'confirm':
  85.                     log_info('予約登録確認開始');
  86.                     log_info('予約登録確認完了');
  87.                     return $this->render(
  88.                         'Reservation/confirm.twig',
  89.                         [
  90.                             'form' => $form->createView(),
  91.                             'Customer' => $Customer,
  92.                             'Page' => $this->pageRepository->getPageByRoute('reservation_confirm'),
  93.                         ]
  94.                     );
  95.                 case 'complete':
  96.                     log_info('予約登録開始');
  97.                     // 予約登録
  98.                     $Reservation->setCustomer($Customer);
  99.                     $Reservation->setCountry($Customer->getCountry());
  100.                     $Reservation->setPref($Customer->getPref());
  101.                     $Reservation->setJob($Customer->getJob());
  102.                     $Reservation->setSex($Customer->getSex());
  103.                     $Reservation->setName01($Customer->getName01());
  104.                     $Reservation->setName02($Customer->getName02());
  105.                     $Reservation->setKana01($Customer->getKana01());
  106.                     $Reservation->setKana02($Customer->getKana02());
  107.                     $Reservation->setCompanyName($Customer->getCompanyName());
  108.                     $Reservation->setEmail($Customer->getEmail());
  109.                     $Reservation->setPhoneNumber($Customer->getPhoneNumber());
  110.                     $Reservation->setPostalCode($Customer->getPostalCode());
  111.                     $Reservation->setAddr01($Customer->getAddr01());
  112.                     $Reservation->setAddr02($Customer->getAddr02());
  113.                     $Reservation->setBirth($Customer->getBirth());
  114.                     $this->entityManager->persist($Reservation);
  115.                     $this->entityManager->flush();
  116.                     // 会員情報の店舗を更新
  117.                     $Customer->shop $Reservation->getShop();
  118.                     $this->entityManager->persist($Customer);
  119.                     $this->entityManager->flush();
  120.                     // メール送信
  121.                     $this->mailService->sendReservationMail($Reservation);
  122.                     log_info('予約登録完了');
  123.                     return $this->redirectToRoute('reservation_complete');
  124.             }
  125.         }
  126.         return [
  127.             'form' => $form->createView(),
  128.             'Customer' => $Customer,
  129.             // 'Reservation' => $Reservation,
  130.             // 'id' => $id,
  131.         ];
  132.     }
  133.     /**
  134.      * 予約完了画面.
  135.      *
  136.      * @Route("/reservation/complete", name="reservation_complete", methods={"GET"})
  137.      * @Template("Reservation/complete.twig")
  138.      */
  139.     public function complete()
  140.     {
  141.         return [];
  142.     }
  143. }