src/Controller/HomeController.php line 35

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Devis;
  4. use Twig\Environment;
  5. use App\Form\DevisType;
  6. use App\Repository\DevisRepository;
  7. use App\Repository\PartnerRepository;
  8. use Symfony\Component\Mailer\Mailer;
  9. use App\Repository\ActualityRepository;
  10. use Symfony\Component\Mailer\Transport;
  11. use App\Repository\CategoriesRepository;
  12. use App\Repository\PrestationRepository;
  13. use Doctrine\ORM\EntityManagerInterface;
  14. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\Mailer\MailerInterface;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\Component\Routing\Annotation\Route;
  19. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  20. class HomeController extends AbstractController
  21. {
  22.     private $twig;
  23.     public function __construct(Environment $twig)
  24.     {
  25.         $this->twig $twig;
  26.     }
  27.     #[Route('/'name'app_home')]
  28.     public function index(Request $requestMailerInterface $mailerEntityManagerInterface $entityManager,CategoriesRepository $categoriesRepository ,DevisRepository $DevisRepository,PrestationRepository $prestationRepositoryActualityRepository $actualityRepositoryPartnerRepository $partnerRepository): Response
  29.     {
  30.         $message = new Devis();
  31.         $form $this->createForm(DevisType::class, $message);
  32.         $form->handleRequest($request);
  33.         if ($form->isSubmitted() && $form->isValid()) {
  34.             $entityManager->persist($message);
  35.             $entityManager->flush();
  36.             $transport Transport::fromDsn('smtp://siteweb@guardianfrance.fr:DL3FH4M8p6u4W@smtp.ionos.fr:587?auth_mode=login');
  37.             $mailer = new Mailer($transport);
  38.             $emailData = [
  39.                 'firstname' => $message->getFirstName(),
  40.                 'name' => $message->getName(),
  41.                 'email_address' => $message->getEmail(),
  42.                 'phone' => $message->getPhone(),
  43.                 'society' => $message->getSociety(),
  44.                 'city' => $message->getCity(),
  45.                 'adresse' => $message->getAdresse(),
  46.                 'zip' => $message->getZip(),
  47.                 'services' => $message->getServices(),
  48.                 'subject' => $message->getSubject(),
  49.             ];
  50.             $email = (new TemplatedEmail())
  51.             ->from('siteweb@guardianfrance.fr')
  52.             ->to('contact@guardianfrance.fr'
  53.             ->subject('Demande de contact depuis le Guardian France.fr')
  54.             ->htmlTemplate('email/contact.html.twig')
  55.             ->context(['emailData' => $emailData]);
  56.         $htmlContent $this->twig->render('email/contact.html.twig', ['emailData' => $emailData]);
  57.         $email->html($htmlContent);
  58.      
  59.         $mailer->send($email);
  60.         // Ajouter un message flash de succès
  61.         $this->addFlash('success'' Guardian France vous répondra dans les meilleurs délais.');
  62.         
  63.         return $this->redirectToRoute('app_home');
  64.     } else {
  65.         // Ajouter un message flash d'erreur
  66.         $this->addFlash('error''Une erreur s\'est produite lors de l\'envoi du message.');
  67.     }
  68.       
  69.         return $this->render('home/index.html.twig', [
  70.             'controller_name' => 'HomeController',
  71.             'actualities' => $actualityRepository->findAll(),
  72.             'prestations' => $prestationRepository->findAll(),
  73.             'categories' => $categoriesRepository->findAll(),
  74.             
  75.             'form' => $form,
  76.             'partners' => $partnerRepository->findAll(),
  77.             
  78.         ]);
  79.     }
  80. }