src\Controller\HomeController.php line 54

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\Mailer\MailerInterface;
  9. use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
  10. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  11. use App\Entity\Avis;
  12. use App\Entity\Horaire;
  13. use App\Entity\Role;
  14. use App\Form\ContactType;
  15. class HomeController extends AbstractController
  16. {
  17. #[Route('/', name: 'homepage')]
  18. public function index(EntityManagerInterface $em): Response
  19. {
  20. // On récupère tous les articles disponibles en base de données
  21. $avis = $em->getRepository(Avis::class)->findBy(['statut' => 'validé'], orderBy: ['avis_id' => 'DESC'], limit: 6);
  22. return $this->render('home/index.html.twig', [
  23. 'avis' => $avis
  24. ]);
  25. }
  26. #[Route('/homepage/conditiongeneralcgv', name: 'homepage_conditiongeneralcgv')]
  27. public function conditionGeneralcgv(): Response
  28. {
  29. // On récupère tous les articles disponibles en base de données
  30. return $this->render('home/conditiongeneralcgv.html.twig');
  31. }
  32. #[Route('/homepage/conditiongeneralcgu', name: 'homepage_conditiongeneralcgu')]
  33. public function conditionGeneralcgu(): Response
  34. {
  35. // On récupère tous les articles disponibles en base de données
  36. return $this->render('home/conditiongeneralcgu.html.twig');
  37. }
  38. #[Route('/homepage/mentionlegal', name: 'homepage_mentionlegal')]
  39. public function mentionLegal(): Response
  40. {
  41. // On récupère tous les articles disponibles en base de données
  42. return $this->render('home/mentionlegal.html.twig');
  43. }
  44. #[Route('/homepage/contact', name: 'homepage_contact')]
  45. public function contact(Request $request, MailerInterface $mailer,EntityManagerInterface $em): Response
  46. {
  47. $form = $this->createForm(ContactType::class,);
  48. $form->handleRequest($request);
  49. $role = $em->getRepository(Role::class)->findOneBy(['libelle' => 'ROLE_ADMIN']);
  50. $possedes= $role->getPossedes();
  51. if ($form->isSubmitted() && $form->isValid()) {
  52. $contactFormDate = $form->getData();
  53. $prenom = $contactFormDate->getPrenom();
  54. $nom = $contactFormDate->getNom();
  55. $getmail = $contactFormDate->getEmail();
  56. $gettitre = $contactFormDate->getTitre();
  57. $getmessage = $contactFormDate->getMessage();
  58. foreach ($possedes as $possede) {
  59. $user = $possede->getUtilisateurId();
  60. $message = (new TemplatedEmail())
  61. ->from($getmail)
  62. ->to($user->getEmail())
  63. ->subject('Demande de contact')
  64. ->htmlTemplate('emails/contact.html.twig')
  65. ->context([
  66. 'prenom' => $prenom,
  67. 'nom' => $nom,
  68. 'titre' => $gettitre,
  69. 'message' => $getmessage,
  70. 'mail' => $getmail,
  71. ]);
  72. try {
  73. $mailer->send($message);
  74. } catch (TransportExceptionInterface $e) {
  75. // some error prevented the email sending; display an
  76. // error message or try to resend the message
  77. $this->addFlash('error', 'Une erreur est survenue lors de l\'envoi de votre message. Veuillez réessayer plus tard.');
  78. return $this->redirectToRoute('homepage_contact');
  79. }
  80. }
  81. $this->addFlash('success', 'Votre message a été envoyé');
  82. return $this->redirectToRoute('homepage_contact');
  83. }
  84. return $this->render('home/contact.html.twig', [
  85. 'form' => $form->createView()
  86. ]);
  87. }
  88. #[Route('/homepage/horaire', name: 'homepage_horaire')]
  89. public function horaire(EntityManagerInterface $em): Response
  90. {
  91. // On récupère l'plat qui correspond à l'id passé dans l'url
  92. $horaires = $em->getRepository(Horaire::class)->findAll();
  93. $tableau = array_map(fn (Horaire $horaire) => $horaire->getJour().': '.$horaire->getHeureOuverture().': '.$horaire->getHeureFermeture(), $horaires);
  94. $html = implode('<br>', $tableau);
  95. return new Response($html, 200, ['Content-Type' => 'text/plain']);
  96. }
  97. }