<?php
namespace App\Controller;
use App\Service\Mailjet;
use App\Form\ContactType;
use App\Entity\ContactForm;
use App\Service\StaticData;
use App\Service\CheckRecaptcha;
use App\Repository\PageHeaderRepository;
use Doctrine\ORM\EntityManagerInterface;
use App\Repository\ContactAreaRepository;
use DateTime;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class ContactController extends AbstractController
{
public function __construct(EntityManagerInterface $manager, StaticData $statics)
{
$this->manager = $manager;
$this->statics = $statics->getStaticData();
}
/**
* @Route("/{_locale}/contact", name="contact_index")
*/
public function index(CheckRecaptcha $recaptcha, Request $request, PageHeaderRepository $pageRepo, ContactAreaRepository $areaRepo): Response
{
$page = $pageRepo->findOneBy(['page' => 'contact']);
$area = $areaRepo->findOneBy([]);
# Formulaire de contact
$contactEntity = new ContactForm();
$contactForm = $this->createForm(ContactType::class, $contactEntity);
$contactForm->handleRequest($request);
if ($contactForm->isSubmitted() && $contactForm->isValid()) {
define('SITE_KEY', '6LecwkQsAAAAAJ2fiCGD_CZeXV-v5UlIpBG57OmE');
define('SECRETE_KEY', '6LecwkQsAAAAAEPV_YSvd_jWoaaKZG4ja_l4PS6c');
if ($recaptcha->check($_POST['contact-recaptcha_response'], SECRETE_KEY)) {
$data = $contactForm->getData();
$statics = $this->statics['data'];
# Envoi d'email MailJet
# client
$mailjet = new Mailjet();
$mail_content = $this->renderView('components/mail/_contact_recap.html.twig', compact('data', 'statics'));
$mailjet->send("caurettemarc@gmail.com", "Colombine", $data->getEmail(), $data->getFirstName() . " " . $data->getLastName(), 'Colombine | Accusé de réception', $mail_content, 7650701);
# Proprio
$mailjet = new Mailjet();
$mail_content = $this->renderView('components/mail/_contact.html.twig', compact('data', 'statics'));
$mailjet->send("caurettemarc@gmail.com", $data->getFirstName() . " " . $data->getLastName(), "maximeavril.dev@gmail.com", $data->getFirstName() . " " . $data->getLastName(), 'Colombine | Contact', $mail_content, 7650701);
$contactEntity->setCreatedAt(new DateTime());
$this->manager->persist($contactEntity);
$this->manager->flush();
return $this->json(true);
} else {
return $this->json(false);
}
}
return $this->render('contact/index.html.twig', [
'statics' => $this->statics['data'],
'page' => $page,
'area' => $area,
'contactForm' => $contactForm->createView()
]);
}
}