<?php
namespace App\Controller;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
// Controller
use App\Controller\EclacController;
// Classes
use App\Entity\Parametre;
use App\Entity\Fichier;
#[Route('/')]
class PublicController extends AbstractController
{
private bool $app_public;
public function __construct(
private EntityManagerInterface $entityManager,
private RequestStack $requestStack,
private EclacController $EclacController,
private AuthenticationUtils $authenticationUtils,
private ParameterBagInterface $params,
) {
$this->app_public = $params->get('app_public');
if ($this->requestStack->getCurrentRequest() != null) {
if ($this->requestStack->getCurrentRequest()->hasSession()) {
$session = $this->requestStack->getSession();
$parametre = $this->entityManager->getRepository(Parametre::class)->findOneBy(array(
'idparametre' => 1
));
$session->set('parametre', $parametre);
$importsEnErreur = $this->entityManager->getRepository(Fichier::class)->findBy(array(
"statutimport" => 3,
));
if (!empty($importsEnErreur)) {
$session->set('importEnErreur', true);
} else {
$session->set('importEnErreur', false);
}
}
}
}
// Page index
#[Route('/', name: 'app_public_index', methods: ['GET'])]
public function index(Request $request): Response
{
if($this->app_public) {
$parametre = $this->entityManager->getRepository(Parametre::class)->findOneBy(array('idparametre' => 1));
$request->getSession()->set('parametre', $parametre);
$contents = [
'Onglet1' => [
'nom' => 'Référentiel<br>de compétences',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/referentiel-competences',
],
'Onglet2' => [
'nom' => 'Concept<br>Stratégie',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/concept-strategie',
],
'Onglet3' => [
'nom' => 'Évaluation<br>Accompagnement',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/evaluation-accompagnement',
],
'Onglet4' => [
'nom' => 'Certification<br>Individualisation',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/certification-individualisation',
],
];
return $this->render('public/index.html.twig', [
'contents' => $contents,
]);
} else {
return $this->redirectToRoute('app_public_login', [], Response::HTTP_SEE_OTHER);
}
}
// Permet de se connecter à l'application
#[Route('/form_login', name: 'app_public_login', methods: ['GET', 'POST'])]
public function login(Request $request): Response
{
if($this->EclacController->security->getUser()) {
return $this->redirectToRoute('app_eclac_choix-espace', ['switch' => 'no-switch'], Response::HTTP_SEE_OTHER);
}
$parametre = $this->entityManager->getRepository(Parametre::class)->findOneBy(array('idparametre' => 1));
$request->getSession()->set('parametre', $parametre);
$error = $this->authenticationUtils->getLastAuthenticationError();
$lastUsername = $this->authenticationUtils->getLastUsername();
$contents = [];
if($this->app_public) {
$contents = [
'Onglet1' => [
'nom' => 'Référentiel<br>de compétences',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/referentiel-competences',
],
'Onglet2' => [
'nom' => 'Concept<br>Stratégie',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/concept-strategie',
],
'Onglet3' => [
'nom' => 'Évaluation<br>Accompagnement',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/evaluation-accompagnement',
],
'Onglet4' => [
'nom' => 'Certification<br>Individualisation',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/certification-individualisation',
],
];
}
return $this->render('public/login.html.twig', [
'contents' => $contents,
'last_username' => $lastUsername,
'error' => $error,
]);
}
// Page referentiel-competences
#[Route('/referentiel-competences', name: 'app_public_referentiel-competences', methods: ['GET', 'POST'])]
public function referentielCompetences(Request $request): Response
{
if($this->app_public) {
$contents = [
'Onglet1' => [
'nom' => 'Référentiel<br>de compétences',
'class' => 'nav-link nav-link-menu btn-nav-active',
'current' => '',
'href' => '/referentiel-competences',
],
'Onglet2' => [
'nom' => 'Concept<br>Stratégie',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/concept-strategie',
],
'Onglet3' => [
'nom' => 'Évaluation<br>Accompagnement',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/evaluation-accompagnement',
],
'Onglet4' => [
'nom' => 'Certification<br>Individualisation',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/certification-individualisation',
],
];
return $this->render('public/referentiel-competences.html.twig', [
'contents' => $contents,
]);
} else {
return $this->redirectToRoute('app_public_login', [], Response::HTTP_SEE_OTHER);
}
}
// Page concept-strategie
#[Route('/concept-strategie', name: 'app_public_concept-strategie', methods: ['GET', 'POST'])]
public function conceptStrategie(Request $request): Response
{
if($this->app_public) {
$contents = [
'Onglet1' => [
'nom' => 'Référentiel<br>de compétences',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/referentiel-competences',
],
'Onglet2' => [
'nom' => 'Concept<br>Stratégie',
'class' => 'nav-link nav-link-menu btn-nav-active',
'current' => '',
'href' => '/concept-strategie',
],
'Onglet3' => [
'nom' => 'Évaluation<br>Accompagnement',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/evaluation-accompagnement',
],
'Onglet4' => [
'nom' => 'Certification<br>Individualisation',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/certification-individualisation',
],
];
return $this->render('public/concept-strategie.html.twig', [
'contents' => $contents,
]);
} else {
return $this->redirectToRoute('app_public_login', [], Response::HTTP_SEE_OTHER);
}
}
// Page evaluation-accompagnement
#[Route('/evaluation-accompagnement', name: 'app_public_evaluation-accompagnement', methods: ['GET', 'POST'])]
public function evaluationAccompagnement(Request $request): Response
{
if($this->app_public) {
$contents = [
'Onglet1' => [
'nom' => 'Référentiel<br>de compétences',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/referentiel-competences',
],
'Onglet2' => [
'nom' => 'Concept<br>Stratégie',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/concept-strategie',
],
'Onglet3' => [
'nom' => 'Évaluation<br>Accompagnement',
'class' => 'nav-link nav-link-menu btn-nav-active',
'current' => '',
'href' => '/evaluation-accompagnement',
],
'Onglet4' => [
'nom' => 'Certification<br>Individualisation',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/certification-individualisation',
],
];
return $this->render('public/evaluation-accompagnement.html.twig', [
'contents' => $contents,
]);
} else {
return $this->redirectToRoute('app_public_login', [], Response::HTTP_SEE_OTHER);
}
}
// Page certification-individualisation
#[Route('/certification-individualisation', name: 'app_public_certification-individualisation', methods: ['GET', 'POST'])]
public function certificationIndividualisation(Request $request): Response
{
if($this->app_public) {
$contents = [
'Onglet1' => [
'nom' => 'Référentiel<br>de compétences',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/referentiel-competences',
],
'Onglet2' => [
'nom' => 'Concept<br>Stratégie',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/concept-strategie',
],
'Onglet3' => [
'nom' => 'Évaluation<br>Accompagnement',
'class' => 'nav-link nav-link-menu',
'current' => '',
'href' => '/evaluation-accompagnement',
],
'Onglet4' => [
'nom' => 'Certification<br>Individualisation',
'class' => 'nav-link nav-link-menu btn-nav-active',
'current' => '',
'href' => '/certification-individualisation',
],
];
return $this->render('public/certification-individualisation.html.twig', [
'contents' => $contents,
]);
} else {
return $this->redirectToRoute('app_public_login', [], Response::HTTP_SEE_OTHER);
}
}
}