<?php
namespace App\Controller;
use App\Entity\Contact;
use App\Entity\ContactMessage;
use App\Form\ContactMessageType;
use App\Form\ContactType;
use Doctrine\ORM\EntityManagerInterface;
use Exception;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Address;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;
class WebsiteController extends AbstractController
{
#[Route('/', name: 'index')]
public function index(): RedirectResponse
{
return $this->redirectToRoute('accueil_vitrine');
}
#[Route('/accueil', name: 'accueil_vitrine')]
public function accueil(): Response
{
return $this->render('website/accueil.html.twig');
}
#[Route('/a-propos', name: 'a_propos_vitrine')]
public function propos(): Response
{
return $this->render('website/a-propos.html.twig');
}
#[Route('/devenir-coursier', name: 'devenir_coursier_vitrine')]
public function devenirCoursier(): Response
{
return $this->render('website/devenir-coursier.html.twig');
}
#[Route('/engagements', name: 'engagements_vitrine')]
public function engagements(): Response
{
return $this->render('website/engagements.html.twig');
}
#[Route('/cgu', name: 'cgu_vitrine')]
public function cgu(): Response
{
return $this->render('website/cgu.html.twig');
}
#[Route('/gestion-cookie', name: 'gestion_cookie_vitrine')]
public function gestionCookie(): Response
{
return $this->render('website/gestioncookie.html.twig');
}
#[Route('/mentions-legal', name: 'mentions_legal_vitrine')]
public function mentionsLegal(): Response
{
return $this->render('website/mentionslegal.html.twig');
}
#[Route('/politique-confidentialite', name: 'politique_confidentialite_vitrine')]
public function politiqueConfidentialite(): Response
{
return $this->render('website/politiqueconf.html.twig');
}
#[Route('/kitui', name: 'kitui')]
public function kitui(): Response
{
return $this->render('kitui.html.twig');
}
/**
* subscribe
*
* Subscribe website page
*
* @return Response
*/
#[Route('/inscription', name: 'inscription_vitrine')]
public function subscribe(): Response
{
return $this->render('website/inscription.html.twig', []);
}
/**
* contact
*
* Contact website page
* Get a name, an email and a text and send it by mail at contact@livraison.nibuco.fr
*
* @param Request $request
* @param MailerInterface $mailer
* @return Response
* @throws TransportExceptionInterface
* @throws Exception
*/
#[Route('/contact', name: 'contact_vitrine')]
public function contact(Request $request, MailerInterface $mailer): Response
{
$message = new Contact();
$form = $this->createForm(ContactType::class, $message);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$message = $form->getData();
$date = new \DateTime('now', new \DateTimeZone('Europe/Paris'));
$text = 'Le '.$date->format('dd-m-Y-H-i-s').' : '.$message->getMessage();
// Create mail
$mail = (new TemplatedEmail())
->from(new Address($message->getEmail(), $message->getFirstname().' '.$message->getLastname()))
->to(new Address('contact@livraison.nibuco.fr'))
->subject('Contact')
->text($text)
;
// Send mail
$mailer->send($mail);
$this->addFlash('success', 'Votre message a bien été envoyé');
}
return $this->render('website/contact.html.twig', [
'form' => $form->createView(),
]);
}
}