src/Controller/AccueilController.php line 740

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Algolia\SearchBundle\IndexManagerInterface;
  4. use App\Entity\Contenu;
  5. use AlgoliaSearch\AlgoliaException;
  6. use App\Entity\Contribution;
  7. use App\Entity\MatierePedagoOpt;
  8. use App\Entity\Onglet;
  9. use App\Entity\User;
  10. use App\Repository\OngletRepository;
  11. use App\Service\ActualiteService;
  12. use App\Service\AlgoliaService;
  13. use App\Service\ContenuService;
  14. use App\Service\ContributionService;
  15. use App\Service\EtablissementService;
  16. use App\Service\FileUploader;
  17. use App\Service\ForumService;
  18. use App\Service\MailService;
  19. use App\Service\MessageService;
  20. use App\Service\NewsletterService;
  21. use App\Service\OngletService;
  22. use App\Service\TopicService;
  23. use App\Service\TutelleService;
  24. use App\Service\UserService;
  25. use App\Service\UtilService;
  26. use Doctrine\ORM\EntityManagerInterface;
  27. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  28. use Symfony\Component\HttpFoundation\JsonResponse;
  29. use Symfony\Component\HttpFoundation\Request;
  30. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  31. use Symfony\Component\Security\Core\Exception\AccessDeniedException;
  32. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  33. use Symfony\Component\Routing\Annotation\Route;
  34. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  35. use Zend\Code\Scanner\Util;
  36. class AccueilController extends AbstractController
  37. {
  38.     /**
  39.    * @Route("/", name="accueil")
  40.    */
  41.   public function index(OngletService $ongletService,
  42.                         ContributionService $contributionService,
  43.                         UserService $userService,
  44.                         ActualiteService $actualiteService,
  45.                         ContenuService $contenuService){
  46.       $contributions $contributionService->getRepository()->findBy(['status' => 'Accepté'], ['creation_date' => 'desc'], 4);
  47.       $premierContributeur $userService->getRepository()->findPremierContributeur();
  48.       $meilleurLecteur $userService->getRepository()->findMeilleurLecteur();
  49.       $meilleurCommentateur $userService->getRepository()->findMeilleurCommentateur();
  50.       $user $this->getUser();
  51.       $actualites $actualiteService->getAutresActualites($user null true);
  52.       $dossier $actualiteService->getDossierDuMois();
  53.       $evenements $actualiteService->getEvenementsEncart();
  54.       $sliders $contenuService->getSliders('accueil');
  55.     if ($this->isGranted('ROLE_USER')) {
  56.       return $this->render('accueil/private.html.twig', [
  57.         'onglets' => $ongletService->getOnglets(),
  58.         'contributions' => $contributions,
  59.         'premierContributeur' => $premierContributeur,
  60.         'meilleurLecteur' => $meilleurLecteur,
  61.         'meilleurCommentateur' => $meilleurCommentateur,
  62.         'actualites' => $actualites,
  63.         'dossier' => $dossier,
  64.         'evenements' => $evenements,
  65.         'sliders' => $sliders,
  66.       ]);
  67.     }
  68.     else {
  69.       return $this->render('accueil/public.html.twig', [
  70.         'onglets' => $ongletService->getOnglets(),
  71.         'actualites' => $actualites,
  72.         'dossier' => $dossier,
  73.         'about_us_page' => $this->getDoctrine()->getRepository(Contenu::class)->find(1),
  74.           'sliders' => $sliders,
  75.       ]);
  76.     }
  77. }
  78.     /**
  79.      * @Route("/ajax/jaime", name="jaime")
  80.      */
  81.     public function jaime(Request $requestMessageService $messageService) {
  82.         if (!$this->isGranted('ROLE_USER')) return new JsonResponse([]);
  83.         $user $this->getUser();
  84.         if (!$user) return new JsonResponse([]);
  85.         $res = [];
  86.         $methode strtolower($request->getMethod());
  87.         if ($methode === 'post') {
  88.             $donnees $request->request->all();
  89.             $messageId $donnees['idMessage'] ?? 0;
  90.             $retour $messageService->jaime($messageId$user);
  91.             if (\is_string($retour)) $res['error'] = $retour;
  92.             else {
  93.                 $res['likes'] = $retour->getLikes();
  94.                 $res['jaime'] = \in_array($user->getId(), $res['likes']);
  95.             }
  96.         }
  97.         return new JsonResponse($res);
  98.     }
  99.     /**
  100.      * @Route("/ajax/japplique", name="japplique")
  101.      */
  102.     public function japplique(Request $requestMessageService $messageService) {
  103.         if (!$this->isGranted('ROLE_USER')) return new JsonResponse([]);
  104.         $user $this->getUser();
  105.         if (!$user) return new JsonResponse([]);
  106.         $res = [];
  107.         $methode strtolower($request->getMethod());
  108.         if ($methode === 'post') {
  109.             $donnees $request->request->all();
  110.             $messageId $donnees['idMessage'] ?? 0;
  111.             $retour $messageService->japplique($messageId$user);
  112.             if (\is_string($retour)) $res['error'] = $retour;
  113.             else {
  114.                 $res['applys'] = $retour->getApplys();
  115.                 $res['japplique'] = \in_array($user->getId(), $res['applys']);
  116.             }
  117.         }
  118.         return new JsonResponse($res);
  119.     }
  120.     /**
  121.      * @Route("/ajax/signaler", name="signaler")
  122.      */
  123.     public function signaler(Request $requestMessageService $messageService) {
  124.         if (!$this->isGranted('ROLE_USER')) return new JsonResponse([]);
  125.         $user $this->getUser();
  126.         if (!$user) return new JsonResponse([]);
  127.         $res = [];
  128.         $methode strtolower($request->getMethod());
  129.         if ($methode === 'post') {
  130.             $donnees $request->request->all();
  131.             $messageId $donnees['idMessage'] ?? 0;
  132.             $retour $messageService->signaler($messageId$user);
  133.             if (\is_string($retour)) $res['error'] = $retour;
  134.             else {
  135.                 $res['reports'] = $retour->getReports();
  136.                 $res['signaler'] = \in_array($user->getId(), $res['reports']);
  137.             }
  138.         }
  139.         return new JsonResponse($res);
  140.     }
  141.     /**
  142.      * @Route("/ajax/favoriser", name="favoriser")
  143.      */
  144.     public function favoris(Request $requestContributionService $contributionService) {
  145.         if (!$this->isGranted('ROLE_USER')) return new JsonResponse([]);
  146.         $user $this->getUser();
  147.         if (!$user) return new JsonResponse([]);
  148.         $res = [];
  149.         $methode strtolower($request->getMethod());
  150.         if ($methode === 'post') {
  151.             $donnees $request->request->all();
  152.             $id $donnees['id'] ?? 0;
  153.             $retour $contributionService->favoriser($id$user);
  154.             if (\is_string($retour)) $res['error'] = $retour;
  155.             else {
  156.                 $res['favoris'] = $retour->getFavoris();
  157.                 $res['favorise'] = \in_array($id$res['favoris']);
  158.             }
  159.         }
  160.         return new JsonResponse($res);
  161.     }
  162.     /**
  163.      * @Route("/inscription", name="inscription")
  164.      */
  165.     public function inscription(Request $requestMailService $mailServiceUserService $userServiceOngletService $ongletServiceTutelleService $tutelleServiceEtablissementService $etablissementServiceNewsletterService $newsletterService) {
  166.         $optRepository $this->getDoctrine()->getRepository(MatierePedagoOpt::class);
  167.         $matiereOpts $optRepository->findBy(['category' => 'matiere']);
  168.         $pedagogieOpts $optRepository->findBy(['category' => 'pedagogie']);
  169.         $methode strtolower($request->getMethod());
  170.         $erreurs = [];
  171.         $donnees = [];
  172.         $tutelles =  $tutelleService->getNames();
  173.         $etablissements =  $etablissementService->getNames();
  174.         $etablissementsListe =  $etablissementService->getRepository()->findAll();
  175.         if ($methode === 'post') {
  176.             $donnees $request->request->all();
  177.             $user $userService->getRepository()->findBy(['email' => trim($donnees['f_email'] ?? '')]);
  178.             if ($user) {
  179.                 $erreurs['f_email'] = 'Un utilisateur existe déjà pour cette adresse mail.';
  180.             }
  181.             // Si on vient de la page login
  182.             if (isset($donnees['login'])) {
  183.                 return $this->render('accueil/inscription.html.twig', [
  184.                     'onglets' => $ongletService->getOnglets(),
  185.                     'erreurs' => $erreurs,
  186.                     'donnees' => $donnees,
  187.                     'tutelles' => $tutelles,
  188.                     'etablissements' => $etablissements,
  189.                     'etablissementsListe' => $etablissementsListe,
  190.                     'matiereOpts' => $matiereOpts,
  191.                     'pedagogieOpts' => $pedagogieOpts,
  192.                 ]);
  193.             }
  194.             $erreurs $userService->valideUser($donnees);
  195.             // Inscription
  196.             $res null;
  197.             if (empty($erreurs)) {
  198.                 $etablissement $etablissementService->getRepository()->find($donnees['f_etablissement']);
  199.                 $tutelle $tutelleService->getRepository()->find($donnees['f_tutelle']);
  200.                 $res $userService->save([
  201.                     'email' => $donnees['f_email'],
  202.                     'roles' => $donnees['roles'],
  203.                     'password' => $donnees['f_pass'],
  204.                     'prenom' => $donnees['f_fname'],
  205.                     'nom' => $donnees['f_name'],
  206.                     'activite' => $donnees['f_activite'],
  207.                     'centreInteret' => $donnees['f_centre'],
  208.                     'disciplines' => $donnees['f_discipline'] ?? null,
  209.                     'niveau' => $donnees['f_niveau'] ?? null,
  210.                     'avatar' => '',
  211.                     'status' => 'enattente',
  212.                     'phoneNumber' => null,
  213.                     'etablissement' => $etablissement,
  214.                     'tutelle' => $tutelle,
  215.                 ], true);
  216.                 if (\is_string($res)) {
  217.                     $erreurs['f_global'] = $res;
  218.                 }
  219.                 else {
  220.                     if (!empty($donnees['f_newsletter'])) $newsletterService->inscrire($donnees['f_email'], $donnees['f_fname'], $donnees['f_name']);
  221.                 }
  222.             }
  223.             if (empty($erreurs)) {
  224.                 $urlAccepter $this->generateUrl('admin_utilisateur_gestion', ['gestion' => 'accepter''id' => $res->getId()], UrlGeneratorInterface::ABSOLUTE_URL);
  225.                 $urlRefuser $this->generateUrl('admin_utilisateur_gestion', ['gestion' => 'refuser''id' => $res->getId()], UrlGeneratorInterface::ABSOLUTE_URL);
  226.                 $mailService->mailAdmin('Nouvel utilisateur inscrit',
  227.                     'mail/nouvelle_inscription.html.twig',
  228.                     [
  229.                         'user' => $res,
  230.                         'urlAccepter' => $urlAccepter,
  231.                         'urlRefuser' => $urlRefuser,
  232.                         'matiereOpts' => $matiereOpts,
  233.                         'pedagogieOpts' => $pedagogieOpts,
  234.                     ],
  235.                     true
  236.                 );
  237.                 return $this->redirectToRoute('inscrit');
  238.             }
  239.         }
  240.         return $this->render('accueil/inscription.html.twig', [
  241.             'onglets' => $ongletService->getOnglets(),
  242.             'erreurs' => $erreurs,
  243.             'donnees' => $donnees,
  244.             'tutelles' => $tutelles,
  245.             'etablissements' => $etablissements,
  246.             'etablissementsListe' => $etablissementsListe,
  247.             'matiereOpts' => $matiereOpts,
  248.             'pedagogieOpts' => $pedagogieOpts,
  249.         ]);
  250.     }
  251.     /**
  252.      * @Route("/inscrit", name="inscrit")
  253.      */
  254.     public function inscrit(OngletService $ongletService) {
  255.         return $this->render('accueil/inscrit.html.twig', [
  256.             'onglets' => $ongletService->getOnglets(),
  257.         ]);
  258.     }
  259.     /**
  260.      * @Route("/nouveau_mdp", name="nouveau_mdp")
  261.      */
  262.     public function nouveau_mdp(OngletService $ongletService) {
  263.         return $this->render('accueil/nouveau_mdp.html.twig', [
  264.             'onglets' => $ongletService->getOnglets(),
  265.         ]);
  266.     }
  267.     /**
  268.      * @Route("/ajax/popup-pass", name="popup_pass")
  269.      */
  270.     public function popup_pass() {
  271.         return $this->render('popup/popup-pass.html.twig', [
  272.         ]);
  273.     }
  274.     /**
  275.      * @Route("/ajax/popup-supprimer", name="popup_supprimer")
  276.      */
  277.     public function popup_supprimer() {
  278.         return $this->render('popup/popup-supprimer.html.twig', [
  279.         ]);
  280.     }
  281.     /**
  282.      * @Route("/ajax/popup-supprimer-confirmer", name="popup_supprimer_confirmer")
  283.      */
  284.     public function popup_supprimer_confirmer() {
  285.         return $this->render('popup/popup-supprimer-confirmer.html.twig', [
  286.         ]);
  287.     }
  288.     /**
  289.      * @Route("/reinit_mdp/{token}", name="reinit_mdp")
  290.      */
  291.     public function reinit_mdp(Request $request$tokenOngletService $ongletServiceUserService $userService) {
  292.         $user $userService->getRepository()->findOneBy(['token' => $token]);
  293.         if (!$user) throw new NotFoundHttpException('Token invalide.');
  294.         $methode strtolower($request->getMethod());
  295.         $erreurs = [];
  296.         $donnees = [];
  297.         if ($methode === 'post') {
  298.             $donnees $request->request->all();
  299.             $f_pass_err UtilService::validerMDP($donnees['f_pass'] ?? '');
  300.             if ($f_pass_err !== true$erreurs['f_pass'] = $f_pass_err;
  301.             $f_pass_err UtilService::validerMDP($donnees['f_pass1'] ?? '');
  302.             if ($f_pass_err !== true$erreurs['f_pass'] = $f_pass_err;
  303.             if (empty($erreurs)) {
  304.                 if ($donnees['f_pass'] !== $donnees['f_pass1']) {
  305.                     $erreurs['f_pass'] = 'Les mots de passe entrés ne sont pas identiques.';
  306.                 }
  307.             }
  308.             if (empty($erreurs)) {
  309.                 $res $userService->save([
  310.                     'id' => $user->getId(),
  311.                     'password' => $donnees['f_pass'],
  312.                 ]);
  313.                 if (\is_string($res)) {
  314.                     $erreurs['f_global'] = $res;
  315.                 }
  316.                 else {
  317.                     return $this->redirectToRoute('nouveau_mdp');
  318.                 }
  319.             }
  320.         }
  321.         return $this->render('accueil/reinit_mdp.html.twig', [
  322.             'onglets' => $ongletService->getOnglets(),
  323.             'erreurs' => $erreurs,
  324.             'donnees' => $donnees,
  325.         ]);
  326.     }
  327.     /**
  328.      * @Route("/ajax/mdpoublie", name="mdpoublie")
  329.      */
  330.     public function mdpoublie(Request $requestUserService $userServiceMailService $mailService) {
  331.         $methode strtolower($request->getMethod());
  332.         if ($methode === 'post') {
  333.             $donnees $request->request->all();
  334.             $email trim($donnees['f_mail-pass'] ?? '');
  335.             if (!$email || !filter_var($emailFILTER_VALIDATE_EMAIL)) {
  336.                 return new JsonResponse([
  337.                     'erreur' => 'Email invalide.'
  338.                 ]);
  339.             }
  340.             $user $userService->findOneByInscrit(['email' => $email]);
  341.             if (!$user) {
  342.                 return new JsonResponse([
  343.                     'erreur' => 'Le compte est introuvable ou désactivé.'
  344.                 ]);
  345.             }
  346.             $token UtilService::token();
  347.             $user->setToken($token);
  348.             $userService->update($user);
  349.             $url $this->generateUrl('reinit_mdp', ['token' => $token], UrlGeneratorInterface::ABSOLUTE_URL);
  350.             $mailService->mail(
  351.                 $user->getEmail(),
  352.                 'Réinitialisation de mot de passe',
  353.                 'mail/reinit_mdp.html.twig',
  354.                 [
  355.                     'user' => $user,
  356.                     'url' => $url,
  357.                 ],
  358.                 true
  359.             );
  360.             return new JsonResponse([
  361.                 'succes' => 'Un email vous a été envoyé.'
  362.             ]);
  363.         }
  364.         return new JsonResponse([
  365.             'erreur' => 'Email invalide.'
  366.         ]);
  367.     }
  368.     /**
  369.      * @Route("/ajax/demande-suppression", name="demande_suppression")
  370.      */
  371.     public function demande_suppression(Request $requestUserService $userService) {
  372.         $user $this->getUser();
  373.         if (!$user) return new JsonResponse(['erreur' => 'Utilisateur invalide.']);
  374.         $methode strtolower($request->getMethod());
  375.         if ($methode === 'post') {
  376.             $userService->save([
  377.                 'id' => $user->getId(),
  378.                 'status' => 'inscrit_demande_supprimer'
  379.             ]);
  380.             return new JsonResponse([
  381.                 'succes' => true
  382.             ]);
  383.         }
  384.         return new JsonResponse([
  385.             'erreur' => 'Méthode invalide.'
  386.         ]);
  387.     }
  388.     /**
  389.      * @Route("/moncompte", name="moncompte")
  390.      */
  391.     public function moncompte(Request $request,
  392.                               OngletService $ongletService,
  393.                               TutelleService $tutelleService,
  394.                               EtablissementService $etablissementService,
  395.                               UserService $userService,
  396.                               FileUploader $fileUploader,
  397.                               TopicService $topicService,
  398.                               ForumService $forumService
  399.     ) {
  400.         $optRepository $this->getDoctrine()->getRepository(MatierePedagoOpt::class);
  401.         $matiereOpts $optRepository->findBy(['category' => 'matiere']);
  402.         $pedagogieOpts $optRepository->findBy(['category' => 'pedagogie']);
  403.         $user $this->getUser();
  404.         if (!$user) throw new AccessDeniedException();
  405.         $tutelles =  $tutelleService->getNames();
  406.         $etablissements =  $etablissementService->getNames();
  407.         $etablissementsListe =  $etablissementService->getRepository()->findAll();
  408.         $erreurs = [];
  409.         $succes '';
  410.         $methode strtolower($request->getMethod());
  411.         if ($methode === 'post') {
  412.             $donnees $request->request->all();
  413.             $files $request->files->all();
  414.             $fileInfo null;
  415.             $donnees['roles'] = $user->getRoles();
  416.             if (!empty($donnees['f_avatar_preset'])) {
  417.                 $donnees['f_avatar'] = $donnees['f_avatar_preset'];
  418.                 $files['f_avatar'] = null;
  419.             }
  420.             if (!empty($files['f_avatar'])) {
  421.                 $erreur $fileUploader->validateFile($files['f_avatar'] ?? null'avatar');
  422.                 if ($erreur$erreurs['f_avatar'] = $erreur;
  423.             }
  424.             if (empty($erreurs) && !empty($files['f_avatar'])) {
  425.                 $uid uniqid();
  426.                 $fileInfo $fileUploader->uploadFile($files['f_avatar'], $uid'avatar');
  427.                 if ($fileInfo !== null && !$fileInfo['error']) {
  428.                     $fileInfo 'avatar/' $uid '/' $fileInfo['fileName'];
  429.                     $donnees['f_avatar'] = $fileInfo;
  430.                 }
  431.                 else {
  432.                     $erreurs['f_message'] = $fileInfo['error'];
  433.                 }
  434.             }
  435.             if (empty($erreurs)) $erreurs $userService->valideUser($donnees, ['f_pass''f_conditions']);
  436.             if (empty($erreurs)) {
  437. //                $etablissement = $etablissementService->getRepository()->find($donnees['f_etablissement']);
  438. //                $tutelle = $tutelleService->getRepository()->find($donnees['f_tutelle']);
  439.                 $save = [
  440.                     'id' => $user->getId(),
  441.                     'avatar' => $donnees['f_avatar'] ?? '',
  442.                     'email' => $donnees['f_email'],
  443.                     'roles' => $donnees['roles'],
  444.                     'password' => $donnees['f_pass'],
  445.                     'prenom' => $donnees['f_fname'],
  446.                     'nom' => $donnees['f_name'],
  447. //                    'activite' => $donnees['f_activite'],
  448.                     'centreInteret' => $donnees['f_centre'],
  449.                     'disciplines' => $donnees['f_discipline'] ?? null,
  450.                     'niveau' => $donnees['f_niveau'] ?? null,
  451. //                    'etablissement' => $etablissement,
  452. //                    'tutelle' => $tutelle,
  453.                 ];
  454.                 if (empty($donnees['f_pass'])) unset($save['password']);
  455.                 if (empty($files['f_avatar']) && empty($donnees['f_avatar_preset'])) unset($save['avatar']);
  456.                 $res $userService->save($save);
  457.                 if (\is_string($res)) {
  458.                     $erreurs['f_global'] = $res;
  459.                 } else {
  460.                     $user $res;
  461.                     $succes 'Votre compte a bien été modifié.';
  462.                 }
  463.             }
  464.         }
  465.         return $this->render('accueil/moncompte.html.twig', [
  466.             'onglets' => $ongletService->getOnglets(),
  467.             'user' => $user,
  468.             'tutelles' => $tutelles,
  469.             'etablissements' => $etablissements,
  470.             'etablissementsListe' => $etablissementsListe,
  471.             'erreurs' => $erreurs,
  472.             'succes' => $succes,
  473.             'matiereOpts' => $matiereOpts,
  474.             'pedagogieOpts' => $pedagogieOpts,
  475.         ]);
  476.     }
  477.     /**
  478.      * @Route("/mescontributions", name="mescontributions")
  479.      */
  480.     public function mescontributions(Request $request,
  481.                               OngletService $ongletService,
  482.                               UserService $userService,
  483.                               ContributionService $contributionService
  484.     ) {
  485.         $user $this->getUser();
  486.         if (!$user) throw new AccessDeniedException();
  487.         $contributions $contributionService->getRepository()->findBy(['user' => $user], ['creation_date' => 'desc']);
  488.         return $this->render('accueil/mescontributions.html.twig', [
  489.             'onglets' => $ongletService->getOnglets(),
  490.             'contributions' => $contributions,
  491.             'user' => $user,
  492.         ]);
  493.     }
  494.     /**
  495.      * @Route("/mesfavoris", name="mesfavoris")
  496.      */
  497.     public function mesfavoris(Request $request,
  498.                               OngletService $ongletService,
  499.                               UserService $userService,
  500.                               ContributionService $contributionService
  501.     ) {
  502.         $user $this->getUser();
  503.         if (!$user) throw new AccessDeniedException();
  504.         $contributions $contributionService->getContributionsInStatusInIds(['Accepté'], $user->getFavoris() ?? []);
  505.         return $this->render('accueil/mesfavoris.html.twig', [
  506.             'onglets' => $ongletService->getOnglets(),
  507.             'contributions' => $contributions,
  508.             'user' => $user,
  509.         ]);
  510.     }
  511.     /**
  512.      * @Route("/ajax/inscrire_newsletter", name="inscrire_newsletter")
  513.      */
  514.     public function inscrire_newsletter(Request $requestNewsletterService $newsletterServiceUserService $userService) {
  515.         $methode strtolower($request->getMethod());
  516.         if ($methode === 'post') {
  517.             $email $request->request->get('email') ?? null;
  518.             if (!$email) return new JsonResponse([
  519.                 'erreur' => 'Email vide.'
  520.             ]);
  521.             if (!filter_var($emailFILTER_VALIDATE_EMAIL))return new JsonResponse([
  522.                 'erreur' => 'Email invalide.'
  523.             ]);
  524.             $user $userService->findOneByInscrit(['email' => $email]);
  525.             $res $newsletterService->inscrire($email$user $user->getPrenom() : ''$user $user->getNom() : '');
  526.             if ($res) return new JsonResponse([
  527.                 'erreur' => $res
  528.             ]);
  529.             return new JsonResponse([
  530.                 'succes' => true
  531.             ]);
  532.         }
  533.         return new JsonResponse([
  534.             'erreur' => 'Méthode invalide.'
  535.         ]);
  536.     }
  537.     /**
  538.      * @Route("/cgu", name="cgu")
  539.      */
  540.     public function cgu(OngletService $ongletService) {
  541.         return $this->render('accueil/cgu.html.twig', [
  542.             'onglets' => $ongletService->getOnglets(),
  543.         ]);
  544.     }
  545.     /**
  546.      * @Route("/mentionslegales", name="mentionslegales")
  547.      */
  548.     public function mentionslegales(OngletService $ongletService) {
  549.         return $this->render('accueil/mentionslegales.html.twig', [
  550.             'onglets' => $ongletService->getOnglets(),
  551.         ]);
  552.     }
  553.     /**
  554.      * @Route("/charte", name="charte")
  555.      */
  556.     public function charte(OngletService $ongletService) {
  557.         return $this->redirectToRoute('cgu');
  558.         return $this->render('accueil/charte.html.twig', [
  559.             'onglets' => $ongletService->getOnglets(),
  560.         ]);
  561.     }
  562.     /**
  563.      * @Route("/ajax/chercher", name="chercher")
  564.      */
  565.     public function chercher(Request $requestAlgoliaService $algoliaService) {
  566.         $methode strtolower($request->getMethod());
  567.         if ($methode === 'post') {
  568.             $valeur $request->request->get('valeur') ?? null;
  569.             $res $algoliaService->algoliaChercher($valeur);
  570.             return new JsonResponse([
  571.                 'resultat' => $res['resultat'],
  572.                 'temps' => $res['temps'],
  573.                 'succes' => true,
  574.             ]);
  575.         }
  576.         return new JsonResponse([
  577.             'erreur' => 'Méthode invalide.'
  578.         ]);
  579.     }
  580.     /**
  581.      * @Route("/recherche/{valeur}/{page}", name="recherche",
  582.      *   defaults={"valeur"="", "page"=""})
  583.      */
  584.     public function recherche($valeur$pageRequest $requestAlgoliaService $algoliaServiceOngletService $ongletService) {
  585.         $methode strtolower($request->getMethod());
  586.         if ($methode === 'post') {
  587.             $valeur $request->request->get('valeur') ?? null;
  588.             return $this->redirectToRoute('recherche', ['valeur' => $valeur'page' => '']);
  589.         }
  590.         $resultat = ['nbHits' => 0'nbPages' => 0'page' => 1];
  591.         $page = (int)$page;
  592.         if ($page <= 0$page 1;
  593.         if ($valeur) {
  594.             try {
  595.                 $res $algoliaService->algoliaChercher($valeur$page40);
  596.                 $resultat $res['resultat'];
  597.             } catch (AlgoliaException $e) {
  598.                 dump($e);
  599.             }
  600.         }
  601.         return $this->render('accueil/recherche.html.twig', [
  602.             'onglets' => $ongletService->getOnglets(),
  603.             'resultat' => $resultat,
  604.             'valeur' => $valeur
  605.         ]);
  606.     }
  607.     /**
  608.      * @Route("/desinscrire_newsletter/{email}", name="desinscrire_newsletter")
  609.      */
  610.     public function desinscrire_newsletter($emailRequest $requestOngletService $ongletServiceNewsletterService $newsletterService)
  611.     {
  612.         if (!$email)
  613.             return new JsonResponse(['erreur' => 'Email vide.']);
  614.         $res $newsletterService->deinscrire($email);
  615.         return $this->render('accueil/desinscription.html.twig', [
  616.             'onglets' => $ongletService->getOnglets(),
  617.             'succes' => !\is_string($res),
  618.             'erreur' => $res,
  619.             'email' => $email,
  620.         ]);
  621.     }
  622. }