src\Controller\HomeController.php line 23

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