src/Controller/PagesController.php line 45
<?php
namespace App\Controller;
use Twig\Environment;
use App\Entity\Candidature;
use App\Form\CandidatureType;
use Symfony\Component\Mailer\Mailer;
use App\Repository\ActualityRepository;
use Symfony\Component\Mailer\Transport;
use App\Repository\CategoriesRepository;
use App\Repository\PartnerRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class PagesController extends AbstractController
{
#[Route('/actualités', name: 'app_actu')]
public function index(ActualityRepository $actualityRepository, CategoriesRepository $categoriesRepository, Request $request): Response
{
$selectedCategoryId = $request->query->get('category');
$actualities = $selectedCategoryId ?
$actualityRepository->findBy(['categories' => $selectedCategoryId]) : // Récupérer les actualités par catégorie si une catégorie est sélectionnée
$actualityRepository->findAll(); // Sinon, récupérer toutes les actualités
return $this->render('actualités/index.html.twig', [
'controller_name' => 'PagesController',
'actualities' => $actualities,
'categories' => $categoriesRepository->findAll(),
]);
}
#[Route('/formation', name: 'app_formation')]
public function page(): Response
{
return $this->render('formation/index.html.twig', [
'controller_name' => 'PagesController',
]);
}
private $twig;
public function __construct(Environment $twig)
{
$this->twig = $twig;
}
#[Route('/actualites/{id}', name: 'app_article')]
public function showArticle($id, ActualityRepository $actualityRepository): Response
{
$actuality = $actualityRepository->find($id);
return $this->render('actualités/article.html.twig', [
'actuality' => $actuality,
'actualities' => $actualityRepository->findAll(),
'actuality' => $actuality,
]);
}
#[Route('/offres', name: 'app_offres')]
public function offres(Request $request, MailerInterface $mailer, EntityManagerInterface $entityManager,): Response
{
$message = new Candidature();
$form = $this->createForm(CandidatureType::class, $message);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager->persist($message);
$entityManager->flush();
$transport = Transport::fromDsn('smtp://siteweb@guardianfrance.fr:DL3FH4M8p6u4W@smtp.ionos.fr:587?auth_mode=login');
$mailer = new Mailer($transport);
$emailData = [
'firstname' => $message->getFirstName(),
'name' => $message->getName(),
'email_address' => $message->getEmail(),
'phone' => $message->getPhone(),
'adress' => $message->getAdress(),
'city' => $message->getCity(),
'cedex' => $message->getCedex(),
'text' => $message->getText(),
'pdfFile' => $message->getpdfFile(),
];
$email = (new TemplatedEmail())
->from('siteweb@guardianfrance.fr')
->to('dorianclerbout@gmail.com')
->subject('Candidature Spontanée depuis le site Guardian')
->htmlTemplate('email/candidature.html.twig')
->context(['emailData' => $emailData]);
$htmlContent = $this->twig->render('email/candidature.html.twig', ['emailData' => $emailData]);
$email->html($htmlContent);
$mailer->send($email);
// Ajouter un message flash de succès
$this->addFlash('success', ' Guardian France vous répondra dans les meilleurs délais.');
return $this->redirectToRoute('app_offres');
} else {
// Ajouter un message flash d'erreur
$this->addFlash('error', 'Une erreur s\'est produite lors de l\'envoi du message.');
}
// ...
return $this->render('pages/offres/index.html.twig', [
'controller_name' => 'PagesController',
'form' => $form->createView()
]);
}
#[Route('/a-propos', name: 'app_about')]
public function about(PartnerRepository $partnerRepository): Response
{
return $this->render('pages/about/index.html.twig', [
'controller_name' => 'PagesController',
'partners' => $partnerRepository->findAll(),
]);
}
#[Route('/mentions-légales', name: 'app_mentions')]
public function mentions(): Response
{
return $this->render('pages/mentions/index.html.twig', [
'controller_name' => 'PagesController',
]);
}
#[Route('/cgu', name: 'app_cgu')]
public function cgu(): Response
{
return $this->render('pages/cgu/index.html.twig', [
'controller_name' => 'PagesController',
]);
}
#[Route('/cgv', name: 'app_cgv')]
public function cgv(): Response
{
return $this->render('pages/cgv/index.html.twig', [
'controller_name' => 'PagesController',
]);
}
#[Route('/politique-de-confidentialité', name: 'app_confidentialité')]
public function politique(): Response
{
return $this->render('pages/confidentialité/index.html.twig', [
'controller_name' => 'PagesController',
]);
}
}