src/Controller/WebsiteController.php line 43

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Contact;
  4. use App\Entity\ContactMessage;
  5. use App\Form\ContactMessageType;
  6. use App\Form\ContactType;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Exception;
  9. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
  13. use Symfony\Component\Mailer\MailerInterface;
  14. use Symfony\Component\Mime\Address;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use Symfony\Component\HttpFoundation\RedirectResponse;
  17. use Symfony\Component\HttpFoundation\Response;
  18. class WebsiteController extends AbstractController
  19. {
  20. #[Route('/', name: 'index')]
  21. public function index(): RedirectResponse
  22. {
  23. return $this->redirectToRoute('accueil_vitrine');
  24. }
  25. #[Route('/accueil', name: 'accueil_vitrine')]
  26. public function accueil(): Response
  27. {
  28. return $this->render('website/accueil.html.twig');
  29. }
  30. #[Route('/a-propos', name: 'a_propos_vitrine')]
  31. public function propos(): Response
  32. {
  33. return $this->render('website/a-propos.html.twig');
  34. }
  35. #[Route('/devenir-coursier', name: 'devenir_coursier_vitrine')]
  36. public function devenirCoursier(): Response
  37. {
  38. return $this->render('website/devenir-coursier.html.twig');
  39. }
  40. #[Route('/engagements', name: 'engagements_vitrine')]
  41. public function engagements(): Response
  42. {
  43. return $this->render('website/engagements.html.twig');
  44. }
  45. #[Route('/cgu', name: 'cgu_vitrine')]
  46. public function cgu(): Response
  47. {
  48. return $this->render('website/cgu.html.twig');
  49. }
  50. #[Route('/gestion-cookie', name: 'gestion_cookie_vitrine')]
  51. public function gestionCookie(): Response
  52. {
  53. return $this->render('website/gestioncookie.html.twig');
  54. }
  55. #[Route('/mentions-legal', name: 'mentions_legal_vitrine')]
  56. public function mentionsLegal(): Response
  57. {
  58. return $this->render('website/mentionslegal.html.twig');
  59. }
  60. #[Route('/politique-confidentialite', name: 'politique_confidentialite_vitrine')]
  61. public function politiqueConfidentialite(): Response
  62. {
  63. return $this->render('website/politiqueconf.html.twig');
  64. }
  65. #[Route('/kitui', name: 'kitui')]
  66. public function kitui(): Response
  67. {
  68. return $this->render('kitui.html.twig');
  69. }
  70. /**
  71. * subscribe
  72. *
  73. * Subscribe website page
  74. *
  75. * @return Response
  76. */
  77. #[Route('/inscription', name: 'inscription_vitrine')]
  78. public function subscribe(): Response
  79. {
  80. return $this->render('website/inscription.html.twig', []);
  81. }
  82. /**
  83. * contact
  84. *
  85. * Contact website page
  86. * Get a name, an email and a text and send it by mail at contact@livraison.nibuco.fr
  87. *
  88. * @param Request $request
  89. * @param MailerInterface $mailer
  90. * @return Response
  91. * @throws TransportExceptionInterface
  92. * @throws Exception
  93. */
  94. #[Route('/contact', name: 'contact_vitrine')]
  95. public function contact(Request $request, MailerInterface $mailer): Response
  96. {
  97. $message = new Contact();
  98. $form = $this->createForm(ContactType::class, $message);
  99. $form->handleRequest($request);
  100. if ($form->isSubmitted() && $form->isValid()) {
  101. $message = $form->getData();
  102. $date = new \DateTime('now', new \DateTimeZone('Europe/Paris'));
  103. $text = 'Le '.$date->format('dd-m-Y-H-i-s').' : '.$message->getMessage();
  104. // Create mail
  105. $mail = (new TemplatedEmail())
  106. ->from(new Address($message->getEmail(), $message->getFirstname().' '.$message->getLastname()))
  107. ->to(new Address('contact@livraison.nibuco.fr'))
  108. ->subject('Contact')
  109. ->text($text)
  110. ;
  111. // Send mail
  112. $mailer->send($mail);
  113. $this->addFlash('success', 'Votre message a bien été envoyé');
  114. }
  115. return $this->render('website/contact.html.twig', [
  116. 'form' => $form->createView(),
  117. ]);
  118. }
  119. }