src/Controller/HomeController.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Newsletter;
  4. use Symfony\Component\Mime\Address;
  5. use App\Repository\NewsletterRepository;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\Mailer\MailerInterface;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Symfony\Component\HttpFoundation\RedirectResponse;
  13. use Symfony\Contracts\Translation\TranslatorInterface;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. #[Route('/'name'home_')]
  16. class HomeController extends AbstractController
  17. {
  18.     #[Route('/'name'index')]
  19.     public function index(): Response
  20.     {
  21.         return $this->render('home/index.html.twig', [
  22.             'controller_name' => 'HomeController',
  23.         ]);
  24.     }
  25.     /**
  26.      * Envoi email newsletter
  27.      *
  28.      * @param Request $request
  29.      * @param EntityManagerInterface $entityManager
  30.      * @param MailerInterface $mailer
  31.      * @param NewsletterRepository $newsletterRepository
  32.      * @param TranslatorInterface $translator
  33.      * @return RedirectResponse
  34.      */
  35.     #[Route('/send-email'name'send_email'methods: ['POST'])]
  36.     public function sendEmail(Request $requestEntityManagerInterface $entityManagerMailerInterface $mailerNewsletterRepository $newsletterRepositoryTranslatorInterface $translator): RedirectResponse
  37.     {
  38.         $user             $request->request->get('email');
  39.         $newsletter_exist $newsletterRepository->findOneBy(['email' => $user]);
  40.         $newsletter       $newsletter_exist $newsletter_exist : new Newsletter();
  41.         $newsletter->setEmail($user);
  42.         $newsletter->setIsSubscribe(true);
  43.         $entityManager->persist($newsletter);
  44.         $entityManager->flush();
  45.         $email = (new TemplatedEmail())
  46.                     ->from($user)
  47.                     ->to(new Address('contact@fleet-car.io''fleet_car_services'))
  48.                     ->subject('News letter')
  49.                     ->htmlTemplate('home/newsletter.html.twig')
  50.                     ->context([
  51.                         'user_email' => $newsletter->getEmail(),
  52.                     ]);
  53.         $mailer->send($email);
  54.         $flashMessage $translator->trans('app.flash.message.email.send');
  55.         $this->container->get('request_stack')->getSession()->getFlashBag()->set('success'$flashMessage);
  56.         return $this->redirectToRoute('home_index');
  57.     }
  58. }