src/Controller/StaticHtmlController.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\CMS\ContactForm;
  4. use App\Entity\Company\Brand;
  5. use App\Entity\Mail;
  6. use App\Entity\User;
  7. use App\Form\CMS\ContactFormType;
  8. use App\Service\MailerService;
  9. use App\Service\SecurityService;
  10. use DateInterval;
  11. use DateTimeImmutable;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Symfony\Component\Form\FormError;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController as Controller;
  18. class StaticHtmlController extends Controller
  19. {
  20.     /**
  21.      * @Route("/mentions-legales", name="legal")
  22.      */
  23.     public function legal()
  24.     {
  25.         return $this->render('StaticHtml/legal.html.twig');
  26.     }
  27.     /**
  28.      * @Route("/confidentialite", name="confidentialite")
  29.      */
  30.     public function confidentialite()
  31.     {
  32.         return $this->render('StaticHtml/privacy.html.twig');
  33.     }
  34.     /**
  35.      * @Route("/mail-test", name="mail-test")
  36.      */
  37.     public function mailTest(EntityManagerInterface $em)
  38.     {
  39.         $mail $em->getRepository(Mail::class)->find(1);
  40.         return $this->render('Mail/view.html.twig', [
  41.             'mail' => $mail,
  42.             'vars' => [
  43.                 'date' => '12/08/2019',
  44.                 'main_picture' => '5d7cf74f999f2_header-1.jpg',
  45.                 'message' => 'Donec eget lectus libero. Curabitur bibendum eleifend lorem, id eleifend diam ornare egestas. Curabitur nec diam eros. Nullam eu consequat justo, quis sollicitudin lacus. Praesent tincidunt dapibus leo, sit amet ullamcorper orci. In eget dictum est. Phasellus placerat mollis diam dignissim consectetur. Donec fermentum a elit sed scelerisque.',
  46.                 'user' => [
  47.                     'username' => 'Clément',
  48.                 ],
  49.                 'cta' => [
  50.                     'url' => 'http://test.fr',
  51.                     'label' => 'Voir ma recette',
  52.                 ]
  53.             ],
  54.         ]);
  55.     }
  56.     /**
  57.      * @Route("/contact/envoye", name="contactsended")
  58.      */
  59.     public function contactSended()
  60.     {
  61.         return $this->render('StaticHtml/contact_sended.html.twig');
  62.     }
  63.     /**
  64.      * @Route("/contact/attente", name="contactwaiting")
  65.      */
  66.     public function contactWaiting()
  67.     {
  68.         return $this->render('StaticHtml/contact_waiting.html.twig');
  69.     }
  70.     public function contactSend(
  71.         Request $request,
  72.         ContactForm $contactForm,
  73.         MailerService $mailer,
  74.         string $mailTo
  75.     ) {
  76.             $mailSlug 'contactform';
  77.         $em $this->getDoctrine()->getManager();
  78.         /** @var $user User */
  79.         $user $em->getRepository(User::class)->findOneByEmail($contactForm->getContactEmail());
  80.         $userId '';
  81.         if (null !== $user) {
  82.             $userId $user->getId();
  83.         }
  84.         $contactForm->setMailTo($mailTo);
  85.         $em->persist($contactForm);
  86.         $em->flush();
  87.         $vars = [
  88.             'userId' => $userId,
  89.             'contactName' => $contactForm->getContactName(),
  90.             'contactEmail' => $contactForm->getContactEmail(),
  91.             'mailObject' => $contactForm->getMailObject(),
  92.             'messageContact' => $contactForm->getMessage(),
  93.         ];
  94.         $mail $em->getRepository(Mail::class)->getOneBySlug($mailSlug);
  95.         $mailer->sendContactMail($mail$vars$mailTo);
  96.         $request->getSession()->getFlashBag()->add('success''app.contact_form.success');
  97.         $request->getSession()->set('contact_form_send', new DateTimeImmutable());
  98.         return $this->redirectToRoute('contactsended');
  99.     }
  100.     private function generateForm(
  101.         Request $request,
  102.         MailerService $mailerService
  103.     ){
  104.         $formDate $request->getSession()->get('contact_form_send');
  105.         $deltaSend 1;
  106.         $now = new DateTimeImmutable();
  107.         if ($formDate && $now $formDate->add(new DateInterval('PT'.$deltaSend .'M'))) {
  108.             return $this->redirectToRoute('contactwaiting');
  109.         }
  110.         $contactEmail $this->getParameter('mailer.from');
  111.         $contactForm = new ContactForm();
  112.         $form $this->createForm(ContactFormType::class, $contactForm);
  113.         if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {
  114.                 if ($contactForm->getCaptcha() === $contactForm->getContactEmail()) {
  115.                     return ($this->contactSend($request$contactForm$mailerService$contactEmail));
  116.                 } else {
  117.                     $form->get('captcha')->addError(new FormError(
  118.                         'Le CAPTCHA ne correspond pas ! Merci de modifier votre réponse puis de cliquer sur "Envoyer".'
  119.                     ));
  120.                 }
  121.         }
  122.         return $this->render('StaticHtml/contact.html.twig', [
  123.             'form'    => $form->createView(),
  124.         ]);
  125.     }
  126.     /**
  127.      * @Route("/contact", name="contactform")
  128.      */
  129.     public function contactAction(Request $requestMailerService $mailerServiceSecurityService $securityService)
  130.     {
  131.         return $this->generateForm($request$mailerService$securityService);
  132.     }
  133. }