<?php
namespace App\Controller;
use App\Entity\Newsletter;
use Symfony\Component\Mime\Address;
use App\Repository\NewsletterRepository;
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\RedirectResponse;
use Symfony\Contracts\Translation\TranslatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
#[Route('/', name: 'home_')]
class HomeController extends AbstractController
{
#[Route('/', name: 'index')]
public function index(): Response
{
return $this->render('home/index.html.twig', [
'controller_name' => 'HomeController',
]);
}
/**
* Envoi email newsletter
*
* @param Request $request
* @param EntityManagerInterface $entityManager
* @param MailerInterface $mailer
* @param NewsletterRepository $newsletterRepository
* @param TranslatorInterface $translator
* @return RedirectResponse
*/
#[Route('/send-email', name: 'send_email', methods: ['POST'])]
public function sendEmail(Request $request, EntityManagerInterface $entityManager, MailerInterface $mailer, NewsletterRepository $newsletterRepository, TranslatorInterface $translator): RedirectResponse
{
$user = $request->request->get('email');
$newsletter_exist = $newsletterRepository->findOneBy(['email' => $user]);
$newsletter = $newsletter_exist ? $newsletter_exist : new Newsletter();
$newsletter->setEmail($user);
$newsletter->setIsSubscribe(true);
$entityManager->persist($newsletter);
$entityManager->flush();
$email = (new TemplatedEmail())
->from($user)
->to(new Address('contact@fleet-car.io', 'fleet_car_services'))
->subject('News letter')
->htmlTemplate('home/newsletter.html.twig')
->context([
'user_email' => $newsletter->getEmail(),
]);
$mailer->send($email);
$flashMessage = $translator->trans('app.flash.message.email.send');
$this->container->get('request_stack')->getSession()->getFlashBag()->set('success', $flashMessage);
return $this->redirectToRoute('home_index');
}
}