src/Eccube/Controller/ContactController.php line 71

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 Eccube\Controller;
  13. use Doctrine\ORM\EntityManager;
  14. use Eccube\Entity\Customer;
  15. use Eccube\Event\EccubeEvents;
  16. use Eccube\Event\EventArgs;
  17. use Eccube\Entity\Product;
  18. use Eccube\Form\Type\Front\ContactType;
  19. use Eccube\Service\MailService;
  20. use Eccube\Repository\OrderRepository;
  21. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  22. use Symfony\Component\HttpFoundation\Request;
  23. use Symfony\Component\Routing\Annotation\Route;
  24. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  25. use Customize\Form\ProductFixContactType;
  26. class ContactController extends AbstractController
  27. {
  28.     /**
  29.      * @var MailService
  30.      */
  31.     protected $mailService;
  32.     /**
  33.      * @var EntityManager
  34.      */
  35.     protected $entityManager;
  36.     /**
  37.      * @var OrderRepository
  38.      */
  39.     protected $orderRepository;
  40.     /**
  41.      * ContactController constructor.
  42.      *
  43.      * @param MailService $mailService
  44.      * @param EntityManager $entityManager
  45.      * @param OrderRepository $orderRepository
  46.      */
  47.     public function __construct(
  48.         MailService $mailService,
  49.         EntityManager $entityManager,
  50.         OrderRepository $orderRepository
  51.     )
  52.     {
  53.         $this->mailService $mailService;
  54.         $this->entityManager $entityManager;
  55.         $this->orderRepository $orderRepository;
  56.     }
  57.     /**
  58.      * お問い合わせ画面.
  59.      *
  60.      * @Route("/contact", name="contact")
  61.      * @Template("Contact/index.twig")
  62.      */
  63.     public function index(Request $request)
  64.     {
  65.         $builder $this->formFactory->createBuilder(ContactType::class);
  66.         if ($this->isGranted('ROLE_USER')) {
  67.             /** @var Customer $user */
  68.             $user $this->getUser();
  69.             $builder->setData(
  70.                 [
  71. //                    'name01' => $user->getName01(),
  72. //                    'name02' => $user->getName02(),
  73. //                    'kana01' => $user->getKana01(),
  74. //                    'kana02' => $user->getKana02(),
  75. //                    'postal_code' => $user->getPostalCode(),
  76. //                    'pref' => $user->getPref(),
  77. //                    'addr01' => $user->getAddr01(),
  78. //                    'addr02' => $user->getAddr02(),
  79.                     'phone_number' => $user->getPhoneNumber(),
  80.                     'email' => $user->getEmail(),
  81.                 ]
  82.             );
  83.         }
  84.         // FRONT_CONTACT_INDEX_INITIALIZE
  85.         $event = new EventArgs(
  86.             [
  87.                 'builder' => $builder,
  88.             ],
  89.             $request
  90.         );
  91.         $this->eventDispatcher->dispatch(EccubeEvents::FRONT_CONTACT_INDEX_INITIALIZE$event);
  92.         $form $builder->getForm();
  93.         $form->handleRequest($request);
  94.         if ($form->isSubmitted() && $form->isValid()) {
  95.             switch ($request->get('mode')) {
  96.                 case 'confirm':
  97.                     $form $builder->getForm();
  98.                     $form->handleRequest($request);
  99.                     return $this->render('Contact/confirm.twig', [
  100.                         'form' => $form->createView(),
  101.                     ]);
  102.                 case 'complete':
  103.                     $data $form->getData();
  104.                     $event = new EventArgs(
  105.                         [
  106.                             'form' => $form,
  107.                             'data' => $data,
  108.                         ],
  109.                         $request
  110.                     );
  111.                     $this->eventDispatcher->dispatch(EccubeEvents::FRONT_CONTACT_INDEX_COMPLETE$event);
  112.                     $data $event->getArgument('data');
  113.                     // メール送信
  114.                     $this->mailService->sendContactMail($data);
  115.                     return $this->redirect($this->generateUrl('contact_complete'));
  116.             }
  117.         }
  118.         return [
  119.             'form' => $form->createView(),
  120.         ];
  121.     }
  122.     /**
  123.      * 修理用お問い合わせ画面.
  124.      *
  125.      * @Route("/contact/product_fix", name="contact_product_fix")
  126.      * @Template("Contact/product_fix.twig")
  127.      *
  128.      * @param Request $request
  129.      *
  130.      */
  131.     public function product_fix (Request $request)
  132.     {
  133.         $this->entityManager->getFilters()->enable('incomplete_order_status_hidden');
  134.         $builder $this->formFactory->createBuilder(ProductFixContactType::class);
  135.         if ($this->isGranted('ROLE_USER')) {
  136.             /** @var Customer $user */
  137.             $user $this->getUser();
  138.             $builder->setData(
  139.                 [
  140. //                    'name01' => $user->getName01(),
  141. //                    'name02' => $user->getName02(),
  142. //                    'kana01' => $user->getKana01(),
  143. //                    'kana02' => $user->getKana02(),
  144. //                    'postal_code' => $user->getPostalCode(),
  145. //                    'pref' => $user->getPref(),
  146. //                    'addr01' => $user->getAddr01(),
  147. //                    'addr02' => $user->getAddr02(),
  148.                     'phone_number' => $user->getPhoneNumber(),
  149.                     'email' => $user->getEmail(),
  150.                 ]
  151.             );
  152.         }
  153.         // FRONT_CONTACT_INDEX_INITIALIZE
  154.         $event = new EventArgs(
  155.             [
  156.                 'builder' => $builder,
  157.             ],
  158.             $request
  159.         );
  160.         $this->eventDispatcher->dispatch(EccubeEvents::FRONT_CONTACT_INDEX_INITIALIZE$event);
  161.         $form $builder->getForm();
  162.         $form->handleRequest($request);
  163.         if ($form->isSubmitted() && $form->isValid()) {
  164.             switch ($request->get('mode')) {
  165.                 case 'confirm':
  166.                     $form $builder->getForm();
  167.                     $form->handleRequest($request);
  168.                     return $this->render('Contact/product_fix_confirm.twig', [
  169.                         'form' => $form->createView(),
  170.                     ]);
  171.                 case 'complete':
  172.                     $data $form->getData();
  173.                     $event = new EventArgs(
  174.                         [
  175.                             'form' => $form,
  176.                             'data' => $data,
  177.                         ],
  178.                         $request
  179.                     );
  180.                     $this->eventDispatcher->dispatch(EccubeEvents::FRONT_CONTACT_INDEX_COMPLETE$event);
  181.                     $data $event->getArgument('data');
  182.                     dump($data);
  183.                     // メール送信
  184.                     $this->mailService->sendProductFixContactMail($data);
  185.                     return $this->redirect($this->generateUrl('contact_complete'));
  186.             }
  187.         }
  188.         return [
  189.             'form' => $form->createView(),
  190.         ];
  191.     }
  192.     /**
  193.      * お問い合わせ完了画面.
  194.      *
  195.      * @Route("/contact/complete", name="contact_complete")
  196.      * @Template("Contact/complete.twig")
  197.      */
  198.     public function complete()
  199.     {
  200.         return [];
  201.     }
  202. }