<?php
namespace App\Controller;
use App\Entity\Page;
use App\Entity\Items;
use App\Entity\Ville;
use App\Entity\Region;
use App\Service\Slugify;
use App\Entity\QuoiMotCle;
use App\Entity\Departement;
use App\Service\PathBuilder;
use App\Elasticsearch\Moteur;
use App\Entity\Etablissement;
use App\Entity\PageCategorie;
use App\Entity\AncienneRegion;
use App\Entity\ItemsInsertion;
use App\Elasticsearch\Parametres;
use App\Controller\AnnuaireController;
use App\Entity\SeoTexteReferencementDiplome;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Routing\Generator\UrlGenerator;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class PageController extends AbstractController
{
private const MAX = 50;
/** @var Slugify */
private $slugify;
/** @var Moteur */
private $moteur;
public function __construct(
Slugify $slugify,
Moteur $moteur,
PathBuilder $pathBuilder
) {
$this->slugify = $slugify;
$this->moteur = $moteur;
$this->pathBuilder = $pathBuilder;
}
/**
* @Route("/guide-inscription.html", name="guide-inscription")
*/
public function guideInscription()
{
$parent = $this->getDoctrine()->getRepository(PageCategorie::class)->findBy(['slug' => 'guide-inscription']);
$categories = $this->getDoctrine()->getRepository(PageCategorie::class)->findByParent($parent, ['ordre' => 'ASC', 'titre' => 'ASC']);
return $this->render('page/guide-inscription.html.twig', [
'categories' => $categories,
]);
}
/**
* @Route("/guide-inscription/{slug}", name="guide-inscription-page")
*/
public function guideInscriptionPage($slug)
{
$page = $this->getDoctrine()->getRepository(Page::class)->findOneBy(['slug' => $slug]);
return $this->render('page/index.html.twig', [
'page' => $page,
]);
}
/**
* @Route("/ecoles-colleges-lycees", name="enseignement-prive")
* @Route("/enseignement-catholique", name="enseignement-catholique")
*/
public function enseignementIndex(Request $request)
{
$currentRoute = $request->attributes->get('_route');
// 2025 - Supprimer l'annuaire catho...
if ($currentRoute == "enseignement-catholique")
return $this->redirectToRoute('enseignement-prive', [], 301);
$cathoPrive = mb_strpos($currentRoute, '-prive') > 0 ? 'prive' : 'catho';
$cathoPriveLibelle = $cathoPrive == 'prive' ? "Privé" : "Catholique";
// Liste des régions
$regions = $this->getDoctrine()->getRepository(Region::class)->findAll();
// Texte SEO
$formation = $currentRoute . "-"; // Car getTitreEtTexte supprime le dernier caractère, héritage d'un autre module
$seoTitre = $seoTexte = "";
list($seoTitre, $seoTexte) = $this->getDoctrine()->getRepository(SeoTexteReferencementDiplome::class)->getTitreEtTexte($formation);
$seoTexteMetadesc = html_entity_decode($seoTexte, ENT_QUOTES);
$seoTexteMetadesc = str_replace(array("\n", "\t", "\r"), '', $seoTexteMetadesc);
return $this->render('page/enseignement-index.html.twig', [
'regions' => $regions,
'cathoPrive' => $cathoPrive,
'cathoPriveLibelle' => $cathoPriveLibelle,
'typeOnglet' => $currentRoute,
'seoTitre' => $seoTitre,
'seoTexte' => $seoTexte,
'seoTexteMetadesc' => $seoTexteMetadesc,
'urlCanonical' => $this->generateUrl('enseignement-prive', [], UrlGenerator::ABSOLUTE_URL)
]);
}
/**
* @Route("/enseignement-prive/{regionSlug}/region/{regionId}", name="enseignement-region-prive")
* @Route("/enseignement-catholique/{regionSlug}/region/{regionId}", name="enseignement-region-catho")
*/
public function enseignementCatholiqueParRegion(Region $regionId, Request $request)
{
$currentRoute = $request->attributes->get('_route');
$cathoPrive = mb_strpos($currentRoute, '-prive') > 0 ? 'prive' : 'catho';
$cathoPriveLibelle = $cathoPrive == 'prive' ? "Privé" : "Catholique";
//$departements = $this->getDoctrine()->getRepository(Departement::class)->findByRegion($regionId);
if ($cathoPrive == "catho") {
return $this->redirectToRoute('annuaire_catho', ['lieu'=> $regionId->getSlug(), 'statut[]'=> 'catholique'], 301);
} else {
return $this->redirectToRoute('annuaire_prive', ['lieu'=> $regionId->getSlug()], 301);
}
}
/**
* @Route("/enseignement-prive/{villeSlug}/ville/{villeId}/{page}", name="enseignement-prive-par-ville-prive", requirements={"page"="\d+"})
* @Route("/enseignement-catholique/{villeSlug}/ville/{villeId}/{page}", name="enseignement-catholique-par-ville-catho", requirements={"page"="\d+"})
*/
public function enseignementCatholiqueParVille(Ville $villeId, Request $request, $page=1)
{
// Redirection vers AnnuaireController::liste()
$currentRoute = $request->attributes->get('_route');
if ($currentRoute == "enseignement-catholique-par-ville-catho") {
return $this->redirectToRoute('annuaire_catho', ['lieu'=> $villeId->getSlug(), 'statut[]'=> 'catholique'], 301);
} else {
return $this->redirectToRoute('annuaire_prive', ['lieu'=> $villeId->getSlug()], 301);
}
}
// INTERNATS
/**
* @Route("/internat-catholique/{villeNom}/ville/{villeId}/{page}", requirements={"page"="\d+"})
* @Route("/internat-catholique/{dptSlug}/departement/{page}", requirements={"page"="\d+"})
* @Route("/internat-catholique/{regionSlug}/region/{regionId}" )
*
* @Route("/internat-college-catholique/{villeNom}/ville/{villeId}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-college-catholique/{dptSlug}/departement/{truc2}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-college-catholique/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-college-catholique/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-college-catholique/{regionSlug}/region/{regionId}/{truc1}/{truc3}/{page}")
*
* @Route("/internat-colleges/{villeNom}/ville/{villeId}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-colleges/{dptSlug}/departement/{truc2}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-colleges/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-colleges/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-colleges/{regionSlug}/region/{regionId}/{truc1}/{truc3}/{page}")
*
* @Route("/internat-ecole-catholique/{villeNom}/ville/{villeId}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-ecole-catholique/{dptSlug}/departement/{truc2}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-ecole-catholique/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-ecole-catholique/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-ecole-catholique/{regionSlug}/region/{regionId}/{truc1}/{truc3}/{page}")
*
* @Route("/internat-ecoles/{villeNom}/ville/{villeId}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-ecoles/{dptSlug}/departement/{truc2}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-ecoles/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-ecoles/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-ecoles/{regionSlug}/region/{regionId}/{truc1}/{truc3}/{page}")
*
* @Route("/internat-enseignement-professionnel/{villeNom}/ville/{villeId}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-enseignement-professionnel/{dptSlug}/departement/{truc2}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-enseignement-professionnel/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-enseignement-professionnel/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-enseignement-professionnel/{regionSlug}/region/{regionId}/{truc1}/{truc3}/{page}")
*
* @Route("/internat-enseignement-professionnel-catholique/{villeNom}/ville/{villeId}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-enseignement-professionnel-catholique/{dptSlug}/departement/{truc2}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-enseignement-professionnel-catholique/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-enseignement-professionnel-catholique/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-enseignement-professionnel-catholique/{regionSlug}/region/{regionId}/{truc1}/{truc3}/{page}")
*
* @Route("/internat-enseignement-superieur/{villeNom}/ville/{villeId}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-enseignement-superieur/{dptSlug}/departement/{truc2}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-enseignement-superieur/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-enseignement-superieur/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-enseignement-superieur/{regionSlug}/region/{regionId}/{truc1}/{truc3}/{page}")
*
* @Route("/internat-enseignement-superieur-catholique/{villeNom}/ville/{villeId}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-enseignement-superieur-catholique/{dptSlug}/departement/{truc2}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-enseignement-superieur-catholique/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-enseignement-superieur-catholique/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-enseignement-superieur-catholique/{regionSlug}/region/{regionId}/{truc1}/{truc3}/{page}")
*
* @Route("/internat-lycee-catholique/{villeNom}/ville/{villeId}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-lycee-catholique/{dptSlug}/departement/{truc2}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-lycee-catholique/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-lycee-catholique/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-lycee-catholique/{regionSlug}/region/{regionId}/{truc1}/{truc3}/{page}", requirements={"page"="\d+"})
*
* @Route("/internat-lycees/{villeNom}/ville/{villeId}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-lycees/{dptSlug}/departement/{truc2}/{truc1}/{page}", requirements={"page"="\d+"})
* @Route("/internat-lycees/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-lycees/{regionSlug}/region/{regionId}/{truc1}/{page}")
* @Route("/internat-lycees/{regionSlug}/region/{regionId}/{truc1}/{truc3}/{page}", requirements={"page"="\d+"})
*/
public function internat(
$villeNom = null,
Ville $villeId = null,
$dptSlug = null,
$regionSlug = null,
$regionId = null,
$truc1 = null,
$truc2 = null,
$page=1
) {
$villeId = !is_null($villeId) ? $villeId->getSlug() : null;
if (!is_null($truc2)) {
$dptSlug .= "-" . $truc2;
}
$lieu = $villeId ?? $dptSlug ?? $regionSlug;
return $this->redirectToRoute(
'annuaire_liste_par_onglet',
['typeOnglet'=> 'internat',
'niveauOnglet'=> $lieu
],
301
);
}
//
// Par NIVEAUX
//
/**
* @Route("/{niveau}/{regionSlug}/region/{regionId}/{niveauSlug}/{page}", name="enseignement-annuaire-par-region-prive", requirements={"page"="\d+"})
* @Route("/{niveau}/{regionSlug}/region/{regionId}/{niveauSlug}/catho/{page}", name="enseignement-annuaire-par-region-catho", requirements={"page"="\d+"})
*/
public function enseignementAnnuaireParRegion(Region $regionId, Request $request, $niveau, $niveauSlug, $page=1)
{
$currentRoute = $request->attributes->get('_route');
$cathoPrive = mb_strpos($currentRoute, '-prive') > 0 ? 'prive' : 'catho';
// Parfois on ne connait pas quelle est la bonne route appelée, du coup on va controler sur $niveau, voir s'il contient 'catho'
$niveauCatho = mb_strpos($niveau, 'catho') > 0 ? true : false;
if ($cathoPrive == 'prive' && $niveauCatho) {
$cathoPrive = 'catho';
} else {
$cathoPrive = 'prive';
}
$typeOnglet = $this->niveau2typeOnglet($niveau);
if ($typeOnglet == "")
return $this->redirectToRoute('homepage', [], 301);
// Redirection vers AnnuaireController::liste()
if ($cathoPrive == "catho") {
return $this->redirectToRoute(
'annuaire_liste_par_onglet',
['typeOnglet'=> $typeOnglet,
'niveauOnglet'=> $regionId->getSlug(), 'statut[]'=> 'catholique'
],
301
);
} else {
return $this->redirectToRoute(
'annuaire_liste_par_onglet',
['typeOnglet'=> $typeOnglet,
'niveauOnglet'=> $regionId->getSlug()
],
301
);
}
}
/**
* @Route("/{niveau}/{villeSlug}/ville/{villeId}/{niveauSlug}/{page}", name="enseignement-annuaire-par-ville-prive", requirements={"page"="\d+"})
* @Route("/{niveau}/{villeSlug}/ville/{villeId}/{niveauSlug}/catho/{page}", name="enseignement-annuaire-par-ville-catho", requirements={"page"="\d+"})
*/
public function enseignementAnnuaireParVille(Ville $villeId, Request $request, $niveau, $niveauSlug, $page=1)
{
$currentRoute = $request->attributes->get('_route');
$cathoPrive = mb_strpos($currentRoute, '-prive') > 0 ? 'prive' : 'catho';
// Parfois on ne connait pas quelle est la bonne route appelée, du coup on va controler sur $niveau, voir s'il contient 'catho'
$niveauCatho = mb_strpos($niveau, 'catho') > 0 ? true : false;
if ($cathoPrive == 'prive' && $niveauCatho) {
$cathoPrive = 'catho';
} else {
$cathoPrive = 'prive';
}
// Redirection vers AnnuaireController::liste()
if ($cathoPrive == "catho") {
return $this->redirectToRoute(
'annuaire_liste_par_onglet',
['typeOnglet'=> $this->niveau2typeOnglet($niveau),
'niveauOnglet'=> $villeId->getDepartement()->getSlug(), 'statut[]'=> 'catholique'
],
301
);
} else {
return $this->redirectToRoute(
'annuaire_liste_par_onglet',
['typeOnglet'=> $this->niveau2typeOnglet($niveau),
'niveauOnglet'=> $villeId->getDepartement()->getSlug()
],
301
);
}
}
/**
* @Route("/{niveau}/{niveauSlug}/fr", name="enseignement-annuaire-niveau-prive")
* @Route("/{niveau}/{niveauSlug}/catho/fr", name="enseignement-annuaire-niveau-catho")
*/
public function enseignementAnnuaire($niveau, Request $request, Region $regionId = null, $niveauSlug = "")
{
// 2025 - Redirection vers les pages annuaire du menu principal
switch ($niveau) {
case 'ecoles':
case 'ecoles-catholiques':
return $this->redirectToRoute('annuaire_liste_par_onglet',
[
"niveauOnglet" => "tout",
"typeOnglet" => "ecole",
], 301);
case 'college':
case 'colleges':
case 'colleges-catholiques':
return $this->redirectToRoute('annuaire_liste_par_onglet',
[
"niveauOnglet" => "tout",
"typeOnglet" => "college",
], 301);
case 'lycees':
case 'lycees-catholiques':
return $this->redirectToRoute('annuaire_liste_par_onglet',
[
"niveauOnglet" => "tout",
"typeOnglet" => "lycee",
], 301);
case 'ecoles-lycees-professionnels': // Lycées professionnels
case 'ecoles-lycees-professionnels-catholiques':
return $this->redirectToRoute('annuaire_liste_par_onglet',
[
"niveauOnglet" => "tout",
"typeOnglet" => "professionnel",
], 301);
case 'ecoles-lycees-agricoles': // Lycées agricoles
case 'ecoles-lycees-agricoles-catholiques':
return $this->redirectToRoute('annuaire_liste_par_onglet',
[
"niveauOnglet" => "bac-pro",
"typeOnglet" => "professionnel",
// "filiere[0]" => "LYCPRO-BACP-AGRI" // ça fonctionne pas :(
], 301);
case 'classes-prepas':
case 'classes-prepas-catholiques':
return $this->redirectToRoute('annuaire_liste_par_onglet_sup',
[
"niveauOnglet" => "classes-preparatoires",
"sousTypeOnglet" => "niveau"
], 301);
case 'universites':
case 'universites-catholiques':
return $this->redirectToRoute('annuaire_liste_par_onglet_sup',
[
"niveauOnglet" => "tout",
"sousTypeOnglet" => null
], 301);
case 'ecoles-de-commerce':
case 'ecoles-de-commerce-catholiques':
return $this->redirectToRoute('annuaire_liste_par_onglet_sup',
[
"niveauOnglet" => "bac-4-bac-5-master",
"sousTypeOnglet" => "niveau",
// "filiere%5B0%5D" > "PBAC-BAC45-CDV"
], 301);
case 'ecoles-d-ingenieurs':
case 'ecoles-d-ingenieurs-catholiques':
return $this->redirectToRoute('annuaire_liste_par_onglet_sup',
[
"niveauOnglet" => "ecoles-d-ingenieurs",
"sousTypeOnglet" => "niveau"
], 301);
case 'ecoles-specialisees':
case 'ecoles-specialisees':
return $this->redirectToRoute('annuaire_liste_par_onglet_sup',
[
"niveauOnglet" => "tout",
"sousTypeOnglet" => null
], 301);
}
return $this->redirectToRoute('homepage', [], 301);
/*
$currentRoute = $request->attributes->get('_route');
$cathoPrive = mb_strpos($currentRoute, '-prive') > 0 ? 'prive' : 'catho';
$cathoPriveLibelle = $cathoPrive == 'prive' ? "Privé" : "Catholique";
$etablissements = [];
if ($currentRoute == 'enseignement-annuaire-niveau-prive-region' || $currentRoute == 'enseignement-annuaire-niveau-catho-region') {
$lieu = $this->slugify->revealLieu($regionId->getSlug());
$quoi = '';
$quoi = $this->slugify->revealQuoi($quoi);
$parametres = new Parametres();
if ($cathoPrive == 'catho') {
$parametres->catholique = true;
}
$parametres->setQuoiLieu($quoi, $lieu);
$parametres->pageActuele = $request->query->getInt('page', 1);
$parametres->maxParPage = self::MAX * 2;
// Filtrer les ets selon le niveau
$parametres = $this->filtrerParNiveau($parametres, $niveauSlug);
$etablissements = $this->moteur->cherche($parametres);
}
$regions = $this->getDoctrine()->getRepository(Region::class)->findAll();
$villes = $this->getDoctrine()->getRepository(Ville::class)
->findBy(
[
'libelle' => [
'AJACCIO', 'AMIENS', 'BESANCON', 'BORDEAUX', 'CAEN', 'CHALONS-EN-CHAMPAGNE', 'CLERMONT-FERRAND',
'DIJON', 'LILLE', 'LIMOGES', 'LYON', 'MARSEILLE', 'METZ', 'MONTPELLIER', 'NANTES', 'ORLEANS',
'PARIS', 'POITIERS', 'RENNES', 'ROUEN', 'STRASBOURG', 'TOULOUSE'
]
]
);
// Ajouter le "-" à la fin pour séparer entre LYC et LYCPRO
// Ainsi on aura LYC- et LYCPRO-
$secteurs = $this->getDoctrine()->getRepository(Items::class)->getFilieres($this->niveau2slug($niveau) . "-");
// Texte SEO
$formation = $niveauSlug . "-"; // Car getTitreEtTexte supprime le dernier caractère, héritage d'un autre module
$seoTitre = $seoTexte = "";
list($seoTitre, $seoTexte) = $this->getDoctrine()->getRepository(SeoTexteReferencementDiplome::class)->getTitreEtTexte($formation);
// Nbr d'étabs
// Exp : /ecoles/ECOL/fr >> impossible à calculer ici !!
$nbrEtabs = "";
$seoTexteMetadesc = html_entity_decode(str_replace('[nbr-etabs]', $nbrEtabs, $seoTexte), ENT_QUOTES);
$seoTexteMetadesc = str_replace(array("\n", "\t", "\r"), '', $seoTexteMetadesc);
return $this->render('page/enseignement-annuaire-niveau.html.twig', [
'regions' => $regions,
'region' => $regionId,
'villes' => $villes,
'niveau' => $niveau,
'niveauSlug' => $this->niveau2slug($niveau),
'secteurs' => $secteurs,
'cathoPrive' => $cathoPrive,
'cathoPriveLibelle' => $cathoPriveLibelle,
'etablissements' => $etablissements,
'typeOnglet' => $this->niveau2typeOnglet($niveau),
'seoTitre' => str_replace('[nbr-etabs]', $nbrEtabs, $seoTitre),
'seoTexte' => str_replace('[nbr-etabs]', $nbrEtabs, $seoTexte),
'seoTexteMetadesc' => $seoTexteMetadesc
]);
*/
}
// CATHO - Liste des départements
// IMPORTANT : doit être AVANT enseignementAnnuaireParDepartement()
/**
* @Route("/enseignement-prive/{departementSlug}/departement/{departementId}/{page}", name="enseignement-catholique-par-departement-prive", requirements={"page"="\d+"})
* @Route("/enseignement-catholique/{departementSlug}/departement/{departementId}/{page}", name="enseignement-catholique-par-departement-catho", requirements={"page"="\d+"})
*/
public function enseignementCatholiqueParDepartementOLD(Departement $departementId, Request $request, $page=1)
{
$currentRoute = $request->attributes->get('_route');
// Redirection vers AnnuaireController::liste()
if ($currentRoute == "enseignement-catholique-par-departement-catho") {
return $this->redirectToRoute('annuaire_catho', ['lieu'=> $departementId->getSlug(), 'statut[]'=> 'catholique'], 301);
} else {
return $this->redirectToRoute('annuaire_prive', ['lieu'=> $departementId->getSlug()], 301);
}
}
/**
* @Route("/{niveau}/{departementSlug}/departement/{departementId}/{niveauSlug}/{page}", name="enseignement-annuaire-par-departement", requirements={"page"="\d+"})
* @Route("/{niveau}/{departementSlug}/departement/{departementId}/{niveauSlug}/catho/{page}", name="enseignement-annuaire-par-departement-catho", requirements={"page"="\d+"})
*/
public function enseignementAnnuaireParDepartement(Departement $departementId, Request $request, $niveau, $niveauSlug, $page=1)
{
$currentRoute = $request->attributes->get('_route');
if ($niveau == "enseignement-catholique" || $niveau == "enseignement-prive") {
// Redirection vers AnnuaireController::liste()
if ($currentRoute == "enseignement-annuaire-par-departement-catho") {
return $this->redirectToRoute('annuaire_catho', ['lieu'=> $departementId->getSlug(), 'statut[]'=> 'catholique'], 301);
} else {
return $this->redirectToRoute('annuaire_prive', ['lieu'=> $departementId->getSlug()], 301);
}
} else {
$cathoPrive = mb_strpos($currentRoute, '-prive') > 0 ? 'prive' : 'catho';
// Parfois on ne connait pas quelle est la bonne route appelée, du coup on va controler sur $niveau, voir s'il contient 'catho'
$niveauCatho = mb_strpos($niveau, 'catho') > 0 ? true : false;
if ($cathoPrive == 'prive' && $niveauCatho) {
$cathoPrive = 'catho';
} else {
$cathoPrive = 'prive';
}
if ($currentRoute == "enseignement-annuaire-par-departement-catho" || $cathoPrive == 'catho') {
return $this->redirectToRoute(
'annuaire_liste_par_onglet',
['typeOnglet'=> $this->niveau2typeOnglet($niveau),
'niveauOnglet'=> $departementId->getSlug(), 'statut[]'=> 'catholique'
],
301
);
} else {
return $this->redirectToRoute(
'annuaire_liste_par_onglet',
['typeOnglet'=> $this->niveau2typeOnglet($niveau),
'niveauOnglet'=> $departementId->getSlug()
],
301
);
}
}
}
/*
Calcule le SLUG inséré à la fin de chaque URL en fonction du niveau
*/
private function niveau2slug($niveau)
{
$res = [
'ecole' => 'ECOL',
'ecole-catholique' => 'ECOL',
'ecoles' => 'ECOL',
'ecoles-catholiques' => 'ECOL',
'collegs' => 'COLL',
'collegs-catholiqus' => 'COLL',
'colleges' => 'COLL',
'colleges-catholiques' => 'COLL',
'lycees' => 'LYC',
'lycees-catholiques' => 'LYC',
'lycees' => 'LYC',
'lycees-catholiques' => 'LYC',
'ecoles-lycees-professionnels-catholiques' => 'LYPRO',
'ecoles-lycees-professionnels' => 'LYPRO',
'ecoles-lycees-agricoles' => 'LYAG',
'ecoles-lycees-agricoles-catholiques' => 'LYAG',
'universite' => 'UNIV',
'universite-catholique' => 'UNIV',
'universites' => 'UNIV',
'universites-catholiques' => 'UNIV',
'classes-prepas' => 'PBAC-PREPA',
'classes-prepas-catholiques' => 'PBAC-PREPA',
'ecoles-de-commerce' => 'PBAC-COM',
'ecoles-de-commerce-catholiques' => 'PBAC-COM',
'ecoles-d-ingenieurs' => 'PBAC-ING',
'ecoles-d-ingenieurs-catholiques' => 'PBAC-ING',
'ecoles-specialisees' => 'ESPE',
'ecoles-specialisees-catholiques' => 'ESPE',
];
return $res[trim($niveau)];
}
/*
Ajoute les filtres à papliquer selon le SLUG du niveau (se baser sur le SLUG est plus facile que sur le niveau)
*/
private function filtrerParNiveau(Parametres $parametres, $niveauSlug)
{
switch ($niveauSlug) {
case 'ECOL':
$parametres->types = ['02-ELEM', '03-PRIM', '01-MATER'];
break;
case 'COLL':
$parametres->types = ['04-COLL'];
break;
case 'LYC':
$parametres->types = ['05-LGEN', '06-LTECH', '07-LEGT'];
break;
case 'LYAG':
$parametres->types = ['08-LAGRI'];
break;
case 'LYPRO':
$parametres->types = ['09-LPROF', '10-LEAP'];
break;
case 'PBAC-PREPA':
// $parametres->formations = ['PBAC-PREPA-'];
$parametres->addFiltres(['SOUS_TYPE-EPRE']);
break;
case 'UNIV':
$parametres->types = ['12-SUP'];
break;
case 'PBAC-COM':
$parametres->formations = ['PBAC-BAC2-CDV', 'PBAC-BAC3-CDV', 'PBAC-BAC45-CDV', 'PBAC-FPC-DISTRI', 'PBAC-PREPA-COM'];
// $parametres->addFiltres(['SOUS_TYPE-ECOM']);
break;
case 'PBAC-ING':
$parametres->addFiltres(['SOUS_TYPE-EING']);
break;
case 'ESPE':
$parametres->types = ['16-ESPEC'];
break;
default:
// code...
break;
}
return $parametres;
}
/*
Renvoi le typeOnglet (nécessaire pour les onglets) en partant du niveau
*/
private function niveau2typeOnglet($niveau)
{
$res = [
'ecole' => 'ecole',
'ecole-catholique' => 'ecole',
'ecoles' => 'ecole',
'ecoles-catholiques' => 'ecole',
'college' => 'college',
'college-catholique' => 'college',
'colleges' => 'college',
'colleges-catholiques' => 'college',
'lycee' => 'lycee',
'lycee-catholique' => 'lycee',
'lycees' => 'lycee',
'lycees-catholiques' => 'lycee',
'ecole-lycee-professionnel-catholique' => 'professionnel',
'ecole-lycee-professionnel' => 'professionnel',
'ecoles-lycees-professionnels-catholiques' => 'professionnel',
'ecoles-lycees-professionnels' => 'professionnel',
'bac-pro-vente' => 'professionnel',
'ecole-lycees-agricole' => 'professionnel',
'ecole-lycees-agricole-catholique' => 'professionnel',
'ecoles-lycees-agricoles' => 'professionnel',
'ecoles-lycees-agricoles-catholiques' => 'professionnel',
'universite' => 'superieur',
'universite-catholique' => 'superieur',
'universites' => 'superieur',
'universites-catholiques' => 'superieur',
'classes-prepas' => 'superieur',
'classes-prepas-catholiques' => 'superieur',
'ecoles-de-commerce' => 'superieur',
'ecoles-de-commerce-catholiques' => 'superieur',
'ecoles-d-ingenieurs' => 'superieur',
'ecoles-d-ingenieurs-catholiques' => 'superieur',
'ecoles-specialisees' => 'superieur',
'ecoles-specialisees-catholiques' => 'superieur',
'internat' => 'internat'
];
return @$res[$niveau];
}
// ---- Liste des filières par niveau --------------------------
/**
* @Route("/filiere/{typeOnglet}/{niveauOnglet}", name="filieres")
*/
public function filieres($typeOnglet, $niveauOnglet, Request $request)
{
switch ($typeOnglet) {
case 'lycee':
switch ($niveauOnglet) {
case 'technologique':
return $this->redirectToRoute('annuaire_liste_par_onglet', ['niveauOnglet' => $niveauOnglet, 'typeOnglet' => $typeOnglet], 301);
default:
return $this->redirectToRoute('annuaire_liste_par_onglet', ['niveauOnglet' => 'tout', 'typeOnglet' => $typeOnglet], 301);
}
case 'professionnel':
switch ($niveauOnglet) {
case 'cap':
case 'bac-pro':
case 'formation-pro-continue':
return $this->redirectToRoute('annuaire_liste_par_onglet', ['niveauOnglet' => $niveauOnglet, 'typeOnglet' => $typeOnglet], 301);
default:
return $this->redirectToRoute('annuaire_liste_par_onglet', ['niveauOnglet' => 'tout', 'typeOnglet' => $typeOnglet], 301);
}
case 'superieur':
switch ($niveauOnglet) {
case 'bac-2-bts':
case 'classes-preparatoires':
case 'ecoles-d-ingenieurs':
case 'bac-3-licence':
case 'bac-4-bac-5-master':
case 'formation-professionnelle-continue':
return $this->redirectToRoute('annuaire_liste_par_onglet_sup', ['sousTypeOnglet' => 'niveau', 'niveauOnglet' => $niveauOnglet], 301);
default:
return $this->redirectToRoute('annuaire_liste_par_onglet_sup', ['niveauOnglet' => 'tout', 'sousTypeOnglet' => null], 301);
}
default:
return $this->redirectToRoute('homepage', [], 301);
break;
}
return $this->redirectToRoute('homepage', [], 301);
}
// ---- Liste des diplômes par filière --------------------------
/**
* @Route("/diplome/{typeOnglet}/{niveauOnglet}/{filiere}", name="diplomes")
* @Route("/diplome/{typeOnglet}/{niveauOnglet}/{filiere}/{oldAbreviation}", name="diplomes_old")
*/
public function diplomes($typeOnglet, $niveauOnglet, $filiere, $oldAbreviation = null, Request $request)
{
return $this->filieres($typeOnglet, $niveauOnglet, $request);
}
/**
* @Route("/annuaire-diplomes", name="annuaire-diplomes", methods={"GET"})
*/
public function annuaireDiplomes(): Response
{
return $this->redirectToRoute('guide-inscription-page', ['slug' => 'trouvez-le-diplome-qui-vous-convient'], 301);
}
}