src/Controller/Frontend/ContactController.php line 106

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Frontend;
  3. use App\Entity\Contact;
  4. use App\Form\Contact\ContactType;
  5. use App\Form\Contact\ModifType;
  6. use App\Repository\ComiteRepository;
  7. use App\Repository\CongresRepository;
  8. use App\Repository\ContactRepository;
  9. use App\Repository\MemberComiteCategorieRepository;
  10. use App\Repository\MemberComiteRepository;
  11. use App\Repository\SlidesRepository;
  12. use App\Repository\VideoRepository;
  13. use Doctrine\ORM\EntityManagerInterface;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Symfony\Component\HttpFoundation\File\Exception\FileException;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\Component\Mailer\MailerInterface;
  19. use Symfony\Component\Mime\Email;
  20. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  21. use Symfony\Component\Routing\Annotation\Route;
  22. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  23. use Knp\Component\Pager\PaginatorInterface;
  24. class ContactController extends AbstractController
  25. {
  26.     /**
  27.      * @var ContactRepository
  28.      */
  29.     private $repository;
  30.     public function __construct(ContactRepository $repository)
  31.     {
  32.         $this->repository = $repository;
  33.     }
  34.     /**
  35.      * @Route("/admin/tousmessages", name="app_messages")
  36.      */
  37.     public function sss(Request $request, EntityManagerInterface $em, PaginatorInterface $paginator)
  38.     {
  39.         $contacts = $this->repository->findAll();
  40.         $contacts= $paginator->paginate($contacts, $request->query->getInt('page', 1),12 );
  41.         return $this->render('frontend/contact/messages.html.twig', array('contacts' => $contacts));
  42.     }
  43.     /**
  44.      * @Route("/admin/message/{id}", name="afficher_message")
  45.      * @param Contact $contact
  46.      * @param Request $request
  47.      * @return \Symfony\Component\HttpFoundation\Response
  48.      */
  49.     public function afficherUnmessage(Contact $contact, Request $request, $id, EntityManagerInterface $em, ContactRepository $repository)
  50.     {
  51.         $contact = $repository->find($id);
  52.         return $this->render('frontend/contact/seulmessage.html.twig', array('contact' => $contact));
  53.     }
  54.     /**
  55.      * @Route("/admin/modifierContact/{id}", name="modifier_contact")
  56.      * @param Contact $contact
  57.      * @param Request $request
  58.      * @return \Symfony\Component\HttpFoundation\Response
  59.      */
  60.     public function editer(Contact $contact, Request $request, $id, EntityManagerInterface $em, ContactRepository $repository)
  61.     {
  62.         $contact = $repository->find($id);
  63.         $form = $this->createForm(ModifType::class, $contact);
  64.         $form->handleRequest($request);
  65.         $contacts = $this->repository->findAllDesc();
  66.         if ($form->isSubmitted() && $form->isValid()) {
  67.             $date = new \DateTime();
  68.             $contact->setDateMessage($date);
  69.             $em->flush();
  70.             //    $this->addFlash('success','user modifié avec succès!');
  71.             return $this->redirectToRoute('tous_contacts');
  72.         }
  73.         return $this->render('frontend/contact/edit.html.twig', array('form' => $form->createView(), 'contacts' => $contacts));
  74.     }
  75.     /**
  76.      * @Route("/admin/supprimerContact/{id}", name="supprimer_contact")
  77.      */
  78.     public function supprimer($id, ContactRepository $contacts, EntityManagerInterface $em)
  79.     {
  80.         $contact = $contacts->find($id);
  81.         $em->remove($contact);
  82.         $em->flush();
  83.         return $this->redirectToRoute('app_messages');
  84.     }
  85.     /**
  86.      * @Route("/admin/supprimerMessage/{id}", name="supprimer_message")
  87.      */
  88.     public function supprimerContact($id, ContactRepository $contacts, EntityManagerInterface $em)
  89.     {
  90.         $contact = $contacts->find($id);
  91.         $em->remove($contact);
  92.         $em->flush();
  93.         return $this->redirectToRoute('messages');
  94.     }
  95.     /**
  96.      * @Route("/contact", name="app_contact")
  97.      */
  98.     public function ajouterContact(Request $request, EntityManagerInterface $em)
  99.     {
  100.         $contact = new Contact();
  101.         $form = $this->createForm(ContactType::class, $contact);
  102.         $form->handleRequest($request);
  103.         if ($request->isMethod('post')) {
  104.             $req = $request->request;
  105.             $recaptchaSecretKey = '6LeTWH4oAAAAAHr7YDOmyCXBwWlXhdzUM7rFnfzR'; // Remplacez par votre clé secrète reCAPTCHA v2
  106.             $recaptchaResponse = $request->request->get('g-recaptcha-response');
  107.             // Validez reCAPTCHA v2 en faisant une requête vers l'API de validation de Google
  108.             $recaptchaUrl = 'https://www.google.com/recaptcha/api/siteverify';
  109.             $recaptchaData = [
  110.                 'secret' => $recaptchaSecretKey,
  111.                 'response' => $recaptchaResponse,
  112.             ];
  113.             $options = [
  114.                 'http' => [
  115.                     'header' => "Content-type: application/x-www-form-urlencoded\r\n",
  116.                     'method' => 'POST',
  117.                     'content' => http_build_query($recaptchaData),
  118.                 ],
  119.             ];
  120.             $context = stream_context_create($options);
  121.             $result = file_get_contents($recaptchaUrl, false, $context);
  122.             $recaptchaResult = json_decode($result, true);
  123.             // var_dump(empty($contact->getNom()) || empty($contact->getEmail()) || empty($contact->getTel()) || empty($contact->getSujet()) || empty($contact->getMessage()));
  124.             // die();
  125.             if (empty($contact->getNom()) || empty($contact->getEmail()) || empty($contact->getTel()) || empty($contact->getSujet()) || empty($contact->getMessage())) {
  126.                 if ($request->getLocale('fr')) {
  127.                     $this->addFlash('error', 'Merci de remplir tous les champs');
  128.                 } elseif ($request->getLocale('en')) {
  129.                     $this->addFlash('error', 'Please fill in all the blanks');
  130.                 }
  131.                 return $this->redirectToRoute('app_contact');
  132.             } elseif ((!empty($contact->getNom()) || !empty($contact->getEmail()) || !empty($contact->getTel()) || !empty($contact->getSujet()) || !empty($contact->getMessage())) && $recaptchaResult['success']) {
  133.                 $date = new \DateTime();
  134.                 $contact->setDateMessage($date);
  135.                 $em->persist($contact);
  136.                 $em->flush();
  137.                 if ($request->getLocale('fr')) {
  138.                     $this->addFlash('Success', 'Votre message a été envoyé avec succès');
  139.                 } elseif ($request->getLocale('en')) {
  140.                     $this->addFlash('Success', 'Your message has been sent successfully');
  141.                 }
  142.                 return $this->redirectToRoute('app_contact');
  143.             } else {
  144.                 $this->addFlash('error', 'Merci de cocher le recaptcha.');
  145.                 return $this->redirectToRoute('app_contact');
  146.             }
  147.         }
  148.         return $this->render('frontend/contact/index.html.twig', array('form' => $form->createView()));
  149.     }
  150.     /**
  151.      * @Route("/fr/contact")
  152.      */
  153.     public function oldLinkContact()
  154.     {
  155.         return $this->redirectToRoute('app_contact');
  156.     }
  157.     /**
  158.      * @Route("/app_contact", name="front_contactAccueil", methods={"POST"})
  159.      */
  160.     public function ajouterContactAccueil(CongresRepository $congresRepository,  Request $request, EntityManagerInterface $em, SlidesRepository $slidesrepository, VideoRepository $videoRepository, ComiteRepository $comiterepository, MemberComiteCategorieRepository $memberComiteCategorie, MemberComiteRepository $memberComiteRepository)
  161.     {
  162.         $contact = new Contact();
  163.         $videos = $videoRepository->findAll();
  164.         $touscongres = $congresRepository->findAll();
  165.         $comite = $comiterepository->findAll();
  166.         $memberComiteCategorie = $memberComiteCategorie->findAll();
  167.         $slides = $slidesrepository->findBy(['language' => $request->getLocale()]);
  168.         $memberComite = $memberComiteRepository->findAll();
  169.         // if ($request->isMethod('post')) {
  170.         //     $contact->setNom($request->request->get('nom'));
  171.         //     $contact->setEmail($request->request->get('email'));
  172.         //     $contact->setTel($request->request->get('tel'));
  173.         //     $contact->setSujet($request->request->get('sujet'));
  174.         //     $contact->setMessage($request->request->get('message'));
  175.         //     $date = new \DateTime();
  176.         //     $contact->setDateMessage($date);
  177.         //     $em->persist($contact);
  178.         //     $em->flush();
  179.         //     if ($request->getLocale('fr')) {
  180.         //         $this->addFlash('Success', 'Votre message a été envoyé avec succès');
  181.         //     } elseif ($request->getLocale('en')) {
  182.         //         $this->addFlash('Success', 'Your message has been sent successfully');
  183.         //     }
  184.         //     return $this->redirectToRoute('app_accueil', ['_fragment' => 'contactHome']);
  185.         //     // return $this->redirectToRoute(($this->generateUrl('app_accueil', array()) . '#contactHome'));
  186.         // }
  187.         if ($request->isMethod('post')) {
  188.             $req = $request->request;
  189.             $recaptchaSecretKey = '6LeTWH4oAAAAAHr7YDOmyCXBwWlXhdzUM7rFnfzR'; // Remplacez par votre clé secrète reCAPTCHA v2
  190.             $recaptchaResponse = $request->request->get('g-recaptcha-response');
  191.             // Validez reCAPTCHA v2 en faisant une requête vers l'API de validation de Google
  192.             $recaptchaUrl = 'https://www.google.com/recaptcha/api/siteverify';
  193.             $recaptchaData = [
  194.                 'secret' => $recaptchaSecretKey,
  195.                 'response' => $recaptchaResponse,
  196.             ];
  197.             $options = [
  198.                 'http' => [
  199.                     'header' => "Content-type: application/x-www-form-urlencoded\r\n",
  200.                     'method' => 'POST',
  201.                     'content' => http_build_query($recaptchaData),
  202.                 ],
  203.             ];
  204.             $context = stream_context_create($options);
  205.             $result = file_get_contents($recaptchaUrl, false, $context);
  206.             $recaptchaResult = json_decode($result, true);
  207.             // var_dump(empty($contact->getNom()) || empty($contact->getEmail()) || empty($contact->getTel()) || empty($contact->getSujet()) || empty($contact->getMessage()));
  208.             // die();
  209.             if (empty($contact->getNom()) || empty($contact->getEmail()) || empty($contact->getTel()) || empty($contact->getSujet()) || empty($contact->getMessage())) {
  210.                 if ($request->getLocale('fr')) {
  211.                     $this->addFlash('error', 'Merci de remplir tous les champs');
  212.                 } elseif ($request->getLocale('en')) {
  213.                     $this->addFlash('error', 'Please fill in all the blanks');
  214.                 }
  215.                 return $this->redirectToRoute('app_contact');
  216.             } elseif ((!empty($contact->getNom()) || !empty($contact->getEmail()) || !empty($contact->getTel()) || !empty($contact->getSujet()) || !empty($contact->getMessage())) && $recaptchaResult['success']) {
  217.                 $date = new \DateTime();
  218.                 $contact->setDateMessage($date);
  219.                 $em->persist($contact);
  220.                 $em->flush();
  221.                 if ($request->getLocale('fr')) {
  222.                     $this->addFlash('Success', 'Votre message a été envoyé avec succès');
  223.                 } elseif ($request->getLocale('en')) {
  224.                     $this->addFlash('Success', 'Your message has been sent successfully');
  225.                 }
  226.                 return $this->redirectToRoute('app_accueil', ['_fragment' => 'contactHome']);
  227.             } else {
  228.                 $this->addFlash('error', 'Merci de cocher le recaptcha.');
  229.                 return $this->redirectToRoute('app_accueil', ['_fragment' => 'contactHome']);
  230.             }
  231.         }
  232.     }
  233. }