<?php
namespace App\Controller\Front;
use App\Entity\Educational\Chapter;
use App\Entity\Educational\Course;
use App\Entity\Educational\Discipline;
use App\Entity\Educational\Lesson\WorkList;
use App\Entity\Educational\Lesson\WorkListNode;
use App\Entity\Educational\SubChapterDomainVideo;
use App\Entity\Users\Child;
use App\Entity\Users\Contact;
use App\Entity\Users\Parents;
use App\Form\ChildRegistrationOnlyType;
use App\Form\ContactType;
use App\Form\EssaiGratuitParentsRegistrationType;
use App\Form\ParentsRegistrationOnlyType;
use App\Form\ParentsRegistrationType;
use App\Repository\Users\UserRepository;
use App\Service\Mailer\MailerService;
use App\Service\Mailer\SubscriptionMailer;
use App\Service\JWTService;
use App\Service\StripeService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use SymfonyCasts\Bundle\VerifyEmail\Exception\VerifyEmailExceptionInterface;
use SymfonyCasts\Bundle\VerifyEmail\VerifyEmailHelperInterface;
class HomePageController extends AbstractController
{
/**
* @Route("/upload/transcript/video/html/{wn}/{mode}",name="uplaod-header-file-video")
*/
public function htmlPdf(Request $request,$wn = null,$mode = 1){
$em = $this->getDoctrine()->getManager();
$wn = $em->getRepository(WorkListNode::class)->findOneBySlug($wn);
if($mode == 1)
return $this->render('dashboard/educational/pdf/template-pdf-header-video.html.twig', [
'wn'=>$wn
]);
$all = $request->query->all();
return $this->render('dashboard/educational/pdf/template-pdf-footer-video.html.twig', [
'wn'=>$wn,
'all'=>$all
]);
}
/**
* @Route("/", name="front")
*/
public function index(ParameterBagInterface $parameterBag,Request $request): Response
{
// $videoJson = file_get_contents($parameterBag->get('kernel.project_dir').'/public/static/data/video.json');
//$kumullusVideos = json_decode($videoJson, true);
return $this->redirectToRoute('app_login');
return $this->render('front/homePage/index.html.twig', [
'kumullus_videos' => $kumullusVideos
]);
}
/**
* @Route("/nos-coursOP", name="cours-OP" , priority="1")
*/
public function cours(): Response
{
return $this->render('front/homePage/cours.html.twig', [
]);
}
/**
* @Route("/nos-profs", name="profs")
*/
public function profs(): Response
{
return $this->redirect("https://www.lesbpnsprofs.com/nos-offres");
}
/**
* @Route("/soutien-scolaire-en-ligne-old", name="offre_old")
*/
public function offreOld(): Response
{
return $this->render('front/homePage/offre.html.twig', [
]);
}
/**
* @Route("/soutien-scolaire-en-ligne", name="offre")
*/
public function offre(Request $request, SubscriptionMailer $subscriptionMailer, JWTService $jwt): Response
{
return $this->redirect("https://www.lesbonsprofs.com/nos-offres");
$parents = new Parents();
$em = $this->getDoctrine()->getManager();
$form = $this->createForm(EssaiGratuitParentsRegistrationType::class, $parents);
$form->handleRequest($request);
$isSubmit = false;
$session = $request->getSession();
if ($form->isSubmitted()) {
if ($form->isValid()) {
$session->set('customInfos', $request->request->all());
$params = $request->request->all();
$customInfos = $params['essai_gratuit_parents_registration'];
$mailParent = $customInfos["email"];
$firstName = $customInfos["firstname"];
if (array_key_exists("isNewsletter",$customInfos) && $customInfos["isNewsletter"] == true){
$isNewsletter = true;
}else{
$isNewsletter = false;
}
$registrationProfile = $customInfos["registrationProfile"];
if(!$firstName || !$mailParent || !$registrationProfile){
return $this->redirectToRoute('front');
}else{
// On génère le JWT de l'utilisateur
// On crée le Header
$header = [
'typ' => 'JWT',
'alg' => 'HS256'
];
// On crée le Payload
$payload = [
'parent_mail' => $mailParent,
'parent_name' => $firstName,
'registration_profile' => $registrationProfile,
'is_newsletter' => $isNewsletter,
];
// On génère le token
$token = $jwt->generate($header, $payload, $this->getParameter('app.jwtsecret')); // .env JWT_SECRET , services.yaml
}
if(!$token){
return $this->redirectToRoute('front');
}else{
// Replaced :
$subscriptionMailer->envoiMailEssaiGratuit($token, $mailParent, $firstName);
return $this->redirectToRoute('confirmation_essai_gratuit');
// new :
//echo "merci de visiter : </br>".$this->generateUrl('verify_user', array('token'=>$token), true); exit;
}
}
$isSubmit = true;
}
return $this->render('front/homePage/offre-essai-gratuit.html.twig', [
'form' => $form->createView(),
'isSubmit' => $isSubmit,
]);
}
/**
* @Route("/parent/stage-revisions-vacances", name="stage")
*/
public function stage(): Response
{
return $this->redirect("https://www.lesbonsprofs.com");
return $this->render('front/homePage/stage.html.twig', [
]);
}
/**
* @Route("/parents/revisions-bac-brevet", name="brevet-bac")
*/
public function brevetBac(): Response
{
return $this->render('front/homePage/brevet-bac.html.twig', [
]);
}
/**
* @Route("/faq", name="faq")
*/
public function faq(): Response
{
return $this->redirect("https://www.lesbonsprofs.com/faq");
return $this->render('front/homePage/faq.html.twig', [
]);
}
/**
* @Route("/mentions-legales", name="mentions-legales")
*/
public function mentionsLegales(): Response
{
return $this->redirect("https://www.lesbonsprofs.com/mentions-legales-cgu/");
return $this->render('front/homePage/mentions-legales.html.twig', [
]);
}
/**
* @Route("/conditions-generales-d-abonnement",name="cga")
* @Route("/conditions-generales-d-abonnement-apple",name="cga_apple")
*/
public function cga()
{
return $this->render('front/homePage/cga.html.twig');
}
/**
* @Route("/plan-du-site",name="plan-website")
*/
public function webMap(){
return $this->redirect('https://www.lesbonsprofs.com/plan-du-site');
return $this->render('front/homePage/website.html.twig',[]);
}
/**
* @return Response
* @Route("/contact", name="contact")
*/
public function renderContact(Request $request, MailerService $mailerService)
{
$contact = new Contact();
$form = $this->createForm(ContactType::class, $contact, [
'action' => $this->generateUrl('contact'),
'method' => 'POST',
]);
$form->handleRequest($request);
if ( $form->isSubmitted()) {
if($form->isValid()){
$em = $this->getDoctrine()->getManager();
$mailerService->sendEmailForContact($contact);
$em->persist($contact);
$em->flush();
$this->addFlash('notice',"Votre message a bien été envoyé. Nous allons vous répondre très rapidement.");
}else{
$this->addFlash('notice',"Une erreur est survenue lors de l\'envoie de votre message.");
}
return $this->redirectToRoute('front');
}
return $this->render("front/homePage/partial/_contact.html.twig", ['form' => $form->createView()]);
}
/**
* @Route("/vie-privee-application",name="privacylaw")
*/
public function privacylaw(){
return $this->render('front/homePage/privacy-law.html.twig',[]);
}
/**
* @return Response
* @Route("/popin")
*/
public function renderPopinTraining(Request $request)
{
$routeName = $request->get("route");
$uri = $request->get("uri");
if(preg_match("/cours*/i", $uri) || in_array($routeName,['offre','stage','front'])){
/* $now = new \DateTime();
$template = 'popin/popin-advertise-training.html.twig';
$limit = clone $now;
$limit->modify('+2 hour');
$str2 = strtotime($limit->format('Y-m-d H:i:s'));
$cookies = $request->cookies;
$response = new Response();
if ((is_null($cookieTraining = $cookies->get('front_popin')))) {
$cookie = new Cookie('front_popin', true, strtotime('now +2 hour'));
$response->headers->setCookie($cookie);
$response->sendHeaders();
return $this->render(
$template,
[]
);
}
*/
}
return new Response();
}
}