src/Controller/EnquiryDefaultController.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Enquiry;
  4. use App\Form\EnquiryType;
  5. use App\Annotation\CmsComponent;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. class EnquiryDefaultController extends AbstractController
  12. {
  13.     /**
  14.      * @CmsComponent("Embed Enquiry Form", active=true, routeName="embed_enquiry")
  15.      */
  16.     #[Route(path'/cms-enquiry'name'embed_enquiry')]
  17.     public function embedEnquiry(Request $requestEntityManagerInterface $em\Swift_Mailer $mailer): Response
  18.     {
  19.         $enquiry = new Enquiry();
  20.         $enquiry->setSubject('Enquiry from '.$this->getParameter('sitename'));
  21.         $form $this->createForm(EnquiryType::class, $enquiry);
  22.         $form->handleRequest($request);
  23.         $error false;
  24.         $success false;
  25.         $errorMessage '';
  26.         if ($form->isSubmitted()) {
  27.             $posted $request->request->All();
  28.             $secretKey $this->getParameter('recaptcha_secret');
  29.             $recaptcha $posted['g-recaptcha-response'];
  30.             $verify file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secretKey.'&response='.$recaptcha.'&remoteip='.$_SERVER['REMOTE_ADDR']);
  31.             $verify_json json_decode($verifyfalse512JSON_THROW_ON_ERROR);
  32.             if ($verify_json->success) {
  33.                 if ($form->isValid()) {
  34.                     $em->persist($enquiry);
  35.                     $em->flush();
  36.                     $success true;
  37.                     // $this->addFlash('success','Success - Enquiry sent');
  38.                     $message_to_client = (new \Swift_Message())
  39.                         ->setSubject('Enquiry Received via '.$this->getParameter('sitename').' website')
  40.                         ->setFrom($this->getParameter('email_norely'))
  41.                         ->setTo($this->getParameter('email_primary'))
  42.                         ->setBody(
  43.                             $this->renderView('@theme/emails/enquiry-to-client.html.twig', ['enquiry' => $enquiry]),
  44.                             'text/html'
  45.                         )
  46.                     ;
  47.                     $mailer->send($message_to_client);
  48.                     $message_to_user = (new \Swift_Message())
  49.                         ->setSubject('Enquiry sent to '.$this->getParameter('sitename').' confirmed')
  50.                         ->setFrom($this->getParameter('email_norely'))
  51.                         ->setTo($enquiry->getEmail())
  52.                         ->setBody(
  53.                             $this->renderView(
  54.                                 '@theme/emails/enquiry-confirmed.html.twig',
  55.                                 ['enquiry' => $enquiry]
  56.                             ),
  57.                             'text/html'
  58.                         )
  59.                     ;
  60.                     $mailer->send($message_to_user);
  61.                 } else {
  62.                     $error true;
  63.                     $errorMessage 'Error - Check the form for errors';
  64.                     // $this->addFlash('error','Error - Enquiry not sent');
  65.                 }
  66.             } else {
  67.                 $error true;
  68.                 $errorMessage 'Error - Captcha Invalid';
  69.                 // $this->addFlash('error','Error - Captcha Invalid');
  70.             }
  71.         }
  72.         return $this->render('@theme/enquiry/enquiry.html.twig', [
  73.             'enquiry' => $enquiry,
  74.             'error' => $error,
  75.             'success' => $success,
  76.             'errorMessage' => $errorMessage,
  77.             'form' => $form->createView(),
  78.         ]);
  79.     }
  80.     #[Route(path'/email-test'name'email_test')]
  81.     public function emailTest(): Response
  82.     {
  83.         return $this->render('@theme/emails/enquiry-confirmed.html.twig');
  84.     }
  85. }