src/Controller/LandingController.php line 55

  1. <?php
  2. namespace App\Controller;
  3. use App\Controller\Traits\HreflangsControllerTrait;
  4. use App\Controller\Traits\MetatagsControllerTrait;
  5. use App\Controller\Traits\StaticPageHelperTrait;
  6. use App\Controller\Traits\ValidateCatpchaControllerTrait;
  7. use App\Entity\Magazine;
  8. use App\Entity\Newsletter;
  9. use App\Entity\Recipe;
  10. use App\Entity\StaticPage;
  11. use App\Form\CustomerServiceType;
  12. use App\Repository\MagazineRepository;
  13. use App\Repository\RecipeRepository;
  14. use App\Service\EmailService;
  15. use Doctrine\ORM\EntityManagerInterface;
  16. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  17. use Symfony\Component\HttpFoundation\JsonResponse;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use Symfony\Component\Routing\Annotation\Route;
  20. use Symfony\Contracts\Translation\TranslatorInterface;
  21. class LandingController extends AbstractController
  22. {
  23.     use MetatagsControllerTraitHreflangsControllerTraitStaticPageHelperTrait;
  24.     private $em;
  25.     private $transalor;
  26.     public function __construct(EntityManagerInterface $emTranslatorInterface $translator){
  27.         $this->em $em;
  28.         $this->transalor $translator;
  29.     }
  30.     #[Route(['/landing/mini-cake',
  31. //            'en' => '/en',
  32. //            'es' => '/es',
  33.             ], name'landing_mini_cake')]
  34.     public function landingMiniCake(Request $requestEntityManagerInterface $em)
  35.     {
  36.         list ($metatags$hreflangs) = $this->getStaticPageMetatagsAndHreflangs($request$em$this->getParameter('locales'));
  37.         return $this->render('landing/miniCake.html.twig', [
  38.             'metatags' => $metatags,
  39.             'hreflangs' => $hreflangs
  40.         ]);
  41.     }
  42.     use ValidateCatpchaControllerTrait;
  43.     #[Route(['/verdeamore/contact',
  44. //            'en' => '/en',
  45. //            'es' => '/es',
  46.     ], name'verdeamore_contact'methods: ["POST"])]
  47.     public function landingVerdeAmore(Request $requestEntityManagerInterface $emEmailService $emailService)
  48.     {
  49.         list ($metatags$hreflangs) = $this->getStaticPageMetatagsAndHreflangs($request$em$this->getParameter('locales'));
  50.         $form $this->createForm(CustomerServiceType::class);
  51.         if($request->isMethod('POST')){
  52.             $form->handleRequest($request);
  53.             /** VALIDATING CAPTCHA */
  54.             $validCaptcha false;
  55.             if ($recaptcha $request->get('input')['recaptcha']) {
  56.                 if (
  57.                     $this->validateCaptcha(
  58.                         $recaptcha,
  59.                         $this->getParameter('app_recaptcha_secret_v3')
  60.                     )
  61.                 ) {
  62.                     $validCaptcha true;
  63.                 }
  64.             }
  65.             if ($form->isSubmitted() && $form->isValid() && $validCaptcha) {
  66.                 $data $form->getData();
  67.                 $email $data['email'];
  68.                 $name $data['name'];
  69.                 $surname $data['surname'];
  70.                 $phone $data['phone'];
  71.                 $reason $data['reason'];
  72.                 $agreeType 0;
  73.                 // if($data['data'] && $data['data2']){
  74.                 //     $agreeType = 3;
  75.                 // } elseif($data['data'] && !$data['data2']){
  76.                 //     $agreeType = 1;
  77.                 // } elseif(!$data['data'] && $data['data2']){
  78.                 //     $agreeType = 2;
  79.                 // } else {
  80.                 //     $agreeType = 0;
  81.                 // }
  82.                 if($data['data'])
  83.                     $agreeType 1;
  84.                 if($agreeType){
  85.                     $newsletter = new Newsletter;
  86.                     $newsletter->setEmail($email);
  87.                     $newsletter->setName($name);
  88.                     $newsletter->setSurname($surname);
  89.                     $newsletter->setPhone($phone);
  90.                     $newsletter->setAgree($agreeType);
  91.                     $em->persist($newsletter);
  92.                     $em->flush();
  93.                 }
  94.                 $emailService->sendContactEmail($data$request->getLocale());
  95.                 return new JsonResponse('success'200);
  96.             }
  97.             if ($form->isSubmitted() && $form->getErrors() && $validCaptcha) {
  98.                 $errors = [];
  99.                 foreach ($form->getErrors(true) as $e) {
  100.                     // dd($e->getOrigin()->getName());
  101.                     $errors[$e->getOrigin()->getName()] = $e->getMessage();
  102.                 }
  103.                 return new JsonResponse([
  104.                     'errors' => $errors,
  105.                 ], 406);
  106.             }
  107.             if(!$validCaptcha){
  108.                 return new JsonResponse('captcha not valid'403);
  109.             }
  110.         }
  111.         return $this->render('landing/verdeAmore.html.twig', [
  112.             'metatags' => $metatags,
  113.             'hreflangs' => $hreflangs,
  114.             'form' => $form->createView()
  115.         ]);
  116.     }
  117. }