<?php
namespace App\Controller;
use App\Entity\Enquiry;
use App\Form\EnquiryType;
use App\Annotation\CmsComponent;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class EnquiryDefaultController extends AbstractController
{
/**
* @CmsComponent("Embed Enquiry Form", active=true, routeName="embed_enquiry")
*/
#[Route(path: '/cms-enquiry', name: 'embed_enquiry')]
public function embedEnquiry(Request $request, EntityManagerInterface $em, \Swift_Mailer $mailer): Response
{
$enquiry = new Enquiry();
$enquiry->setSubject('Enquiry from '.$this->getParameter('sitename'));
$form = $this->createForm(EnquiryType::class, $enquiry);
$form->handleRequest($request);
$error = false;
$success = false;
$errorMessage = '';
if ($form->isSubmitted()) {
$posted = $request->request->All();
$secretKey = $this->getParameter('recaptcha_secret');
$recaptcha = $posted['g-recaptcha-response'];
$verify = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secretKey.'&response='.$recaptcha.'&remoteip='.$_SERVER['REMOTE_ADDR']);
$verify_json = json_decode($verify, false, 512, JSON_THROW_ON_ERROR);
if ($verify_json->success) {
if ($form->isValid()) {
$em->persist($enquiry);
$em->flush();
$success = true;
// $this->addFlash('success','Success - Enquiry sent');
$message_to_client = (new \Swift_Message())
->setSubject('Enquiry Received via '.$this->getParameter('sitename').' website')
->setFrom($this->getParameter('email_norely'))
->setTo($this->getParameter('email_primary'))
->setBody(
$this->renderView('@theme/emails/enquiry-to-client.html.twig', ['enquiry' => $enquiry]),
'text/html'
)
;
$mailer->send($message_to_client);
$message_to_user = (new \Swift_Message())
->setSubject('Enquiry sent to '.$this->getParameter('sitename').' confirmed')
->setFrom($this->getParameter('email_norely'))
->setTo($enquiry->getEmail())
->setBody(
$this->renderView(
'@theme/emails/enquiry-confirmed.html.twig',
['enquiry' => $enquiry]
),
'text/html'
)
;
$mailer->send($message_to_user);
} else {
$error = true;
$errorMessage = 'Error - Check the form for errors';
// $this->addFlash('error','Error - Enquiry not sent');
}
} else {
$error = true;
$errorMessage = 'Error - Captcha Invalid';
// $this->addFlash('error','Error - Captcha Invalid');
}
}
return $this->render('@theme/enquiry/enquiry.html.twig', [
'enquiry' => $enquiry,
'error' => $error,
'success' => $success,
'errorMessage' => $errorMessage,
'form' => $form->createView(),
]);
}
#[Route(path: '/email-test', name: 'email_test')]
public function emailTest(): Response
{
return $this->render('@theme/emails/enquiry-confirmed.html.twig');
}
}