<?php
namespace App\Controller;
use App\Message\MailContactNotification;
use App\Repository\ContactMessageRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Messenger\MessageBusInterface;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\ContactMessage;
use App\Form\ContactType;
class ContactController extends AbstractController
{
private ContactMessageRepository $contactMessageRepository;
private MessageBusInterface $bus;
public function __construct(ContactMessageRepository $contactMessageRepository, MessageBusInterface $bus)
{
$this->contactMessageRepository = $contactMessageRepository;
$this->bus = $bus;
}
#[Route('/contact', name: 'contact')]
public function index(Request $request): RedirectResponse|Response
{
$contact = new ContactMessage();
$form = $this->createForm(ContactType::class, $contact);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$contact = $form->getData();
$this->contactMessageRepository->add($contact, true);
$type = "success";
$message = "Votre message a été correctement envoyé.";
$this->bus->dispatch(
new MailContactNotification(
$contact->getMail(),
$contact->getSubject(),
$contact->getMessage(),
$contact->getName(),
$contact->getFirstname()
)
);
$this->addFlash($type, $message);
return $this->redirectToRoute('contact');
}
return $this->render('clientWeb/contact.html.twig', [
'formContact' => $form->createView(),
]);
}
}