<?php
namespace App\Controller\Front;
use App\Form\ContactUsType;
use App\Repository\FaqSubjectRepository;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Address;
use Symfony\Component\Routing\Annotation\Route;
class ContactController extends AbstractController
{
/**
* @Route("/contact", name="app_front_contact_page")
*/
public function index(Request $request, FaqSubjectRepository $faqSubjectRepository, MailerInterface $mailer): Response
{
$session = $request->getSession();
$form = $this->createForm(ContactUsType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$mail = (new TemplatedEmail())
->from(new Address($this->getParameter('cofina_sender_mail'), 'Cofina Mail Bot'))
// ->addFrom(new Address($form->get('email')->getData(), $form->get('fullname')->getData()))
->to($this->getParameter('cofina_contact_recipient_mail'))
->subject($form->get('subject')->getData())
->htmlTemplate('front/pages/contact/email.html.twig')
->context([
'fullname' => $form->get('fullname')->getData(),
'message' => $form->get('message')->getData(),
'senderEmail' => $form->get('email')->getData(),
])
;
try {
$mailer->send($mail);
$this->addFlash('message_sent', 'Votre message a bien été envoyé');
} catch (TransportExceptionInterface $e) {
$this->addFlash('message_no_sent', "Erreur survenue lors de l'envoi du message");
// dump($e->getMessage()); die;
}
return $this->redirectToRoute('app_front_contact_page');
}
$filterForm = $this->createFormBuilder();
$filterForm->add('searchWord', TextType::class, [
'label' => false,
'attr' => ['class' => 'form-control border border-start-0 opificio', 'placeholder' => 'Rechercher une question']
]);
$filterForm = $filterForm->getForm();
$filterForm->handleRequest($request);
if ($filterForm->isSubmitted() && $filterForm->isValid()) {
$searchWord = $filterForm->get('searchWord')->getData();
if ($searchWord !== null) $subjects = $faqSubjectRepository->findByLike($searchWord);
} else $subjects = $faqSubjectRepository->findAll();
$suscriberEmail = $session->get('suscriber_email');
$session->remove('suscriber_email');
return $this->render('front/pages/contact/index.html.twig', [
'form' => $form->createView(),
'subjects' => $subjects,
'suscriberEmail' => $suscriberEmail,
'filterForm' => $filterForm->createView(),
]);
}
/**
* @Route("/newsletter", name="app_front_contact_newsletter")
*/
public function newsletter(Request $request) : Response {
$form = $this->createFormBuilder()
->setAction($this->generateUrl('app_front_contact_newsletter'))
->add('email', EmailType::class, [
'attr' => [
'class' => 'border-0 bg-transparent ms-3 text-white newsletter-email',
'placeholder' => 'Ton adresse mail'
]
])->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$session = $request->getSession();
$session->set('suscriber_email', $form->get('email')->getData());
return $this->redirect($this->generateUrl('app_front_contact_page').'#contact-form');
// return $this->redirectToRoute('app_front_contact_page');
}
return $this->render('front/components/newsletter-block.html.twig', [
'form' => $form->createView()
]);
}
}