src/Controller/PagesController.php line 26

  1. <?php
  2. namespace App\Controller;
  3. use Twig\Environment;
  4. use App\Entity\Candidature;
  5. use App\Form\CandidatureType;
  6. use Symfony\Component\Mailer\Mailer;
  7. use App\Repository\ActualityRepository;
  8. use Symfony\Component\Mailer\Transport;
  9. use App\Repository\CategoriesRepository;
  10. use App\Repository\PartnerRepository;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\Mailer\MailerInterface;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  18. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  19. class PagesController extends AbstractController
  20. {
  21.     #[Route('/actualités'name'app_actu')]
  22.     public function index(ActualityRepository $actualityRepositoryCategoriesRepository $categoriesRepositoryRequest $request): Response
  23.     {
  24.         $selectedCategoryId $request->query->get('category');
  25.         
  26.         $actualities $selectedCategoryId ?
  27.             $actualityRepository->findBy(['categories' => $selectedCategoryId]) : // Récupérer les actualités par catégorie si une catégorie est sélectionnée
  28.             $actualityRepository->findAll(); // Sinon, récupérer toutes les actualités
  29.         
  30.         
  31.         return $this->render('actualités/index.html.twig', [
  32.             'controller_name' => 'PagesController',
  33.             'actualities' => $actualities,
  34.             'categories' => $categoriesRepository->findAll(),
  35.            
  36.         ]);
  37.     }
  38.     
  39.     #[Route('/formation'name'app_formation')]
  40.     public function page(): Response
  41.     {
  42.         return $this->render('formation/index.html.twig', [
  43.             'controller_name' => 'PagesController',
  44.         ]);
  45.     }
  46.     
  47.     private $twig
  48.  
  49.     public function __construct(Environment $twig)
  50.     {
  51.         $this->twig $twig;
  52.     }
  53.     #[Route('/actualites/{id}'name'app_article')]
  54.     public function showArticle($idActualityRepository $actualityRepository): Response
  55.     {
  56.         $actuality $actualityRepository->find($id);
  57.         return $this->render('actualités/article.html.twig', [
  58.             'actuality' => $actuality,
  59.             'actualities' => $actualityRepository->findAll(),
  60.             'actuality' => $actuality,
  61.     ]);
  62. }
  63.     
  64.     #[Route('/offres'name'app_offres')]
  65.     public function offres(Request $requestMailerInterface $mailerEntityManagerInterface $entityManager,): Response
  66.     {
  67.         $message = new Candidature();
  68.         $form $this->createForm(CandidatureType::class, $message);
  69.         $form->handleRequest($request);
  70.         if ($form->isSubmitted() && $form->isValid()) {
  71.             $entityManager->persist($message);
  72.             $entityManager->flush();
  73.             $transport Transport::fromDsn('smtp://siteweb@guardianfrance.fr:DL3FH4M8p6u4W@smtp.ionos.fr:587?auth_mode=login');
  74.             $mailer = new Mailer($transport);
  75.             $emailData = [
  76.                 'firstname' => $message->getFirstName(),
  77.                 'name' => $message->getName(),
  78.                 'email_address' => $message->getEmail(),
  79.                 'phone' => $message->getPhone(),
  80.                 'adress' => $message->getAdress(),
  81.                 'city' => $message->getCity(),
  82.                 'cedex' => $message->getCedex(),
  83.                 'text' => $message->getText(),
  84.                 'pdfFile' => $message->getpdfFile(),
  85.                 
  86.             ];
  87.             $email = (new TemplatedEmail())
  88.             ->from('siteweb@guardianfrance.fr')
  89.             ->to('dorianclerbout@gmail.com')
  90.             ->subject('Candidature Spontanée depuis le site Guardian')
  91.             ->htmlTemplate('email/candidature.html.twig')
  92.             ->context(['emailData' => $emailData]);
  93.         $htmlContent $this->twig->render('email/candidature.html.twig', ['emailData' => $emailData]);
  94.         $email->html($htmlContent);
  95.         $mailer->send($email);
  96.         // Ajouter un message flash de succès
  97.         $this->addFlash('success'' Guardian France vous répondra dans les meilleurs délais.');
  98.         
  99.         return $this->redirectToRoute('app_offres');
  100.     } else {
  101.         // Ajouter un message flash d'erreur
  102.         $this->addFlash('error''Une erreur s\'est produite lors de l\'envoi du message.');
  103.     }
  104.     // ...
  105.     return $this->render('pages/offres/index.html.twig', [
  106.         'controller_name' => 'PagesController',
  107.         'form' => $form->createView()
  108.     ]);
  109.     }
  110.     #[Route('/a-propos'name'app_about')]
  111.     public function about(PartnerRepository $partnerRepository): Response
  112.     {
  113.         return $this->render('pages/about/index.html.twig', [
  114.             'controller_name' => 'PagesController',
  115.             'partners' => $partnerRepository->findAll(),
  116.         ]);
  117.     }
  118.     #[Route('/mentions-légales'name'app_mentions')]
  119.     public function mentions(): Response
  120.     {
  121.         return $this->render('pages/mentions/index.html.twig', [
  122.             'controller_name' => 'PagesController',
  123.         ]);
  124.     }
  125.     #[Route('/cgu'name'app_cgu')]
  126.     public function cgu(): Response
  127.     {
  128.         return $this->render('pages/cgu/index.html.twig', [
  129.             'controller_name' => 'PagesController',
  130.         ]);
  131.     }
  132.     #[Route('/cgv'name'app_cgv')]
  133.     public function cgv(): Response
  134.     {
  135.         return $this->render('pages/cgv/index.html.twig', [
  136.             'controller_name' => 'PagesController',
  137.         ]);
  138.     }
  139.     #[Route('/politique-de-confidentialité'name'app_confidentialité')]
  140.     public function politique(): Response
  141.     {
  142.         return $this->render('pages/confidentialité/index.html.twig', [
  143.             'controller_name' => 'PagesController',
  144.         ]);
  145.     }
  146. }