<?php
namespace App\Controller\Frontend;
use App\Entity\Contact;
use App\Form\Contact\ContactType;
use App\Form\Contact\ModifType;
use App\Repository\ComiteRepository;
use App\Repository\CongresRepository;
use App\Repository\ContactRepository;
use App\Repository\MemberComiteCategorieRepository;
use App\Repository\MemberComiteRepository;
use App\Repository\SlidesRepository;
use App\Repository\VideoRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\File\Exception\FileException;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Email;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Knp\Component\Pager\PaginatorInterface;
class ContactController extends AbstractController
{
/**
* @var ContactRepository
*/
private $repository;
public function __construct(ContactRepository $repository)
{
$this->repository = $repository;
}
/**
* @Route("/admin/tousmessages", name="app_messages")
*/
public function sss(Request $request, EntityManagerInterface $em, PaginatorInterface $paginator)
{
$contacts = $this->repository->findAll();
$contacts= $paginator->paginate($contacts, $request->query->getInt('page', 1),12 );
return $this->render('frontend/contact/messages.html.twig', array('contacts' => $contacts));
}
/**
* @Route("/admin/message/{id}", name="afficher_message")
* @param Contact $contact
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function afficherUnmessage(Contact $contact, Request $request, $id, EntityManagerInterface $em, ContactRepository $repository)
{
$contact = $repository->find($id);
return $this->render('frontend/contact/seulmessage.html.twig', array('contact' => $contact));
}
/**
* @Route("/admin/modifierContact/{id}", name="modifier_contact")
* @param Contact $contact
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function editer(Contact $contact, Request $request, $id, EntityManagerInterface $em, ContactRepository $repository)
{
$contact = $repository->find($id);
$form = $this->createForm(ModifType::class, $contact);
$form->handleRequest($request);
$contacts = $this->repository->findAllDesc();
if ($form->isSubmitted() && $form->isValid()) {
$date = new \DateTime();
$contact->setDateMessage($date);
$em->flush();
// $this->addFlash('success','user modifié avec succès!');
return $this->redirectToRoute('tous_contacts');
}
return $this->render('frontend/contact/edit.html.twig', array('form' => $form->createView(), 'contacts' => $contacts));
}
/**
* @Route("/admin/supprimerContact/{id}", name="supprimer_contact")
*/
public function supprimer($id, ContactRepository $contacts, EntityManagerInterface $em)
{
$contact = $contacts->find($id);
$em->remove($contact);
$em->flush();
return $this->redirectToRoute('app_messages');
}
/**
* @Route("/admin/supprimerMessage/{id}", name="supprimer_message")
*/
public function supprimerContact($id, ContactRepository $contacts, EntityManagerInterface $em)
{
$contact = $contacts->find($id);
$em->remove($contact);
$em->flush();
return $this->redirectToRoute('messages');
}
/**
* @Route("/contact", name="app_contact")
*/
public function ajouterContact(Request $request, EntityManagerInterface $em)
{
$contact = new Contact();
$form = $this->createForm(ContactType::class, $contact);
$form->handleRequest($request);
if ($request->isMethod('post')) {
$req = $request->request;
$recaptchaSecretKey = '6LeTWH4oAAAAAHr7YDOmyCXBwWlXhdzUM7rFnfzR'; // Remplacez par votre clé secrète reCAPTCHA v2
$recaptchaResponse = $request->request->get('g-recaptcha-response');
// Validez reCAPTCHA v2 en faisant une requête vers l'API de validation de Google
$recaptchaUrl = 'https://www.google.com/recaptcha/api/siteverify';
$recaptchaData = [
'secret' => $recaptchaSecretKey,
'response' => $recaptchaResponse,
];
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($recaptchaData),
],
];
$context = stream_context_create($options);
$result = file_get_contents($recaptchaUrl, false, $context);
$recaptchaResult = json_decode($result, true);
// var_dump(empty($contact->getNom()) || empty($contact->getEmail()) || empty($contact->getTel()) || empty($contact->getSujet()) || empty($contact->getMessage()));
// die();
if (empty($contact->getNom()) || empty($contact->getEmail()) || empty($contact->getTel()) || empty($contact->getSujet()) || empty($contact->getMessage())) {
if ($request->getLocale('fr')) {
$this->addFlash('error', 'Merci de remplir tous les champs');
} elseif ($request->getLocale('en')) {
$this->addFlash('error', 'Please fill in all the blanks');
}
return $this->redirectToRoute('app_contact');
} elseif ((!empty($contact->getNom()) || !empty($contact->getEmail()) || !empty($contact->getTel()) || !empty($contact->getSujet()) || !empty($contact->getMessage())) && $recaptchaResult['success']) {
$date = new \DateTime();
$contact->setDateMessage($date);
$em->persist($contact);
$em->flush();
if ($request->getLocale('fr')) {
$this->addFlash('Success', 'Votre message a été envoyé avec succès');
} elseif ($request->getLocale('en')) {
$this->addFlash('Success', 'Your message has been sent successfully');
}
return $this->redirectToRoute('app_contact');
} else {
$this->addFlash('error', 'Merci de cocher le recaptcha.');
return $this->redirectToRoute('app_contact');
}
}
return $this->render('frontend/contact/index.html.twig', array('form' => $form->createView()));
}
/**
* @Route("/fr/contact")
*/
public function oldLinkContact()
{
return $this->redirectToRoute('app_contact');
}
/**
* @Route("/app_contact", name="front_contactAccueil", methods={"POST"})
*/
public function ajouterContactAccueil(CongresRepository $congresRepository, Request $request, EntityManagerInterface $em, SlidesRepository $slidesrepository, VideoRepository $videoRepository, ComiteRepository $comiterepository, MemberComiteCategorieRepository $memberComiteCategorie, MemberComiteRepository $memberComiteRepository)
{
$contact = new Contact();
$videos = $videoRepository->findAll();
$touscongres = $congresRepository->findAll();
$comite = $comiterepository->findAll();
$memberComiteCategorie = $memberComiteCategorie->findAll();
$slides = $slidesrepository->findBy(['language' => $request->getLocale()]);
$memberComite = $memberComiteRepository->findAll();
// if ($request->isMethod('post')) {
// $contact->setNom($request->request->get('nom'));
// $contact->setEmail($request->request->get('email'));
// $contact->setTel($request->request->get('tel'));
// $contact->setSujet($request->request->get('sujet'));
// $contact->setMessage($request->request->get('message'));
// $date = new \DateTime();
// $contact->setDateMessage($date);
// $em->persist($contact);
// $em->flush();
// if ($request->getLocale('fr')) {
// $this->addFlash('Success', 'Votre message a été envoyé avec succès');
// } elseif ($request->getLocale('en')) {
// $this->addFlash('Success', 'Your message has been sent successfully');
// }
// return $this->redirectToRoute('app_accueil', ['_fragment' => 'contactHome']);
// // return $this->redirectToRoute(($this->generateUrl('app_accueil', array()) . '#contactHome'));
// }
if ($request->isMethod('post')) {
$req = $request->request;
$recaptchaSecretKey = '6LeTWH4oAAAAAHr7YDOmyCXBwWlXhdzUM7rFnfzR'; // Remplacez par votre clé secrète reCAPTCHA v2
$recaptchaResponse = $request->request->get('g-recaptcha-response');
// Validez reCAPTCHA v2 en faisant une requête vers l'API de validation de Google
$recaptchaUrl = 'https://www.google.com/recaptcha/api/siteverify';
$recaptchaData = [
'secret' => $recaptchaSecretKey,
'response' => $recaptchaResponse,
];
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($recaptchaData),
],
];
$context = stream_context_create($options);
$result = file_get_contents($recaptchaUrl, false, $context);
$recaptchaResult = json_decode($result, true);
// var_dump(empty($contact->getNom()) || empty($contact->getEmail()) || empty($contact->getTel()) || empty($contact->getSujet()) || empty($contact->getMessage()));
// die();
if (empty($contact->getNom()) || empty($contact->getEmail()) || empty($contact->getTel()) || empty($contact->getSujet()) || empty($contact->getMessage())) {
if ($request->getLocale('fr')) {
$this->addFlash('error', 'Merci de remplir tous les champs');
} elseif ($request->getLocale('en')) {
$this->addFlash('error', 'Please fill in all the blanks');
}
return $this->redirectToRoute('app_contact');
} elseif ((!empty($contact->getNom()) || !empty($contact->getEmail()) || !empty($contact->getTel()) || !empty($contact->getSujet()) || !empty($contact->getMessage())) && $recaptchaResult['success']) {
$date = new \DateTime();
$contact->setDateMessage($date);
$em->persist($contact);
$em->flush();
if ($request->getLocale('fr')) {
$this->addFlash('Success', 'Votre message a été envoyé avec succès');
} elseif ($request->getLocale('en')) {
$this->addFlash('Success', 'Your message has been sent successfully');
}
return $this->redirectToRoute('app_accueil', ['_fragment' => 'contactHome']);
} else {
$this->addFlash('error', 'Merci de cocher le recaptcha.');
return $this->redirectToRoute('app_accueil', ['_fragment' => 'contactHome']);
}
}
}
}