You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SAE_2A_FA-Reseau_ALICA/php/src/controleur/UtilisateurControleur.php

289 lines
9.2 KiB

<?php
namespace App\controleur;
use App\config\Validation;
use App\gateway\ImageManager;
use App\metier\Alumni;
use App\modele\OffreModele;
use App\modele\UtilisateurModele;
use Exception;
class UtilisateurControleur
{
public function connection()
{
global $twig;
$dVueErreur = [];
$userModel = new UtilisateurModele();
if (isset($_POST['email'], $_POST['password'])) {
$email = Validation::nettoyerString($_POST['email']);
$motDePasse = Validation::nettoyerString($_POST['password']);
$utilisateur = $userModel->connection($email, $motDePasse);
if ($utilisateur instanceof Alumni) {
$_SESSION['utilisateur'] = $utilisateur;
// echo $twig->render('accueil.html',[]);
header('Location: accueil');
return;
} else {
$dVueErreur[] = "L'adresse email ou le mot de passe est incorrect.";
}
}
echo $twig->render('connection.html', ['dVueErreur' => $dVueErreur]);
}
public function inscription()
{
global $twig;
$dVueErreur = [];
$userModel = new UtilisateurModele();
if (isset($_POST['firstname'],$_POST['name'], $_POST['email'], $_POST['password'])) {
$nom = Validation::nettoyerString($_POST['name']);
$prenom = Validation::nettoyerString($_POST['firstname']);
$email = Validation::nettoyerString($_POST['email']);
$motDePasse = Validation::nettoyerString($_POST['password']);
$hash = password_hash($motDePasse, PASSWORD_DEFAULT);
try {
// verification que l'email est valide et unique :
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$dVueErreur[] = "L'adresse email n'est pas valide ou est déjà utilisée.";
} else {
$utilisateur = $userModel->getUtilisateurByEmail($email);
if ($utilisateur instanceof Alumni) {
$dVueErreur[] = "L'adresse email est déjà utilisée.";
}
}
$nouvelUtilisateur = $userModel->inscription($prenom, $nom, $email, $hash);
if ($nouvelUtilisateur instanceof Alumni) {
echo $twig->render('inscription_success.html');
exit();
}
}
catch (Exception $e) {
$dVueErreur[] = "L'inscription a échoué, veuillez réessayer.";
}
}
echo $twig->render('inscription.html', ['dVueErreur' => $dVueErreur]);
}
protected function accueil()
{
global $twig;
// Ajout d'un var_dump pour déboguer
if (isset($_SESSION['utilisateur']) && $_SESSION['utilisateur'] instanceof Alumni) {
$userModel = new UtilisateurModele();
$evenements=$userModel->getEvenement();
//aller sur la page d'accueil avec le nom et prenom de l'utilisateur
echo $twig->render('accueil.html', ['evenements' => $evenements]);
} else {
echo $twig->render('accueil.html');
}
}
public function consulterProfilLimite()
{
//TODO
echo 'not implemented yet';
}
public function consultOffers()
{
$userMdl = new UtilisateurModele();
global $twig;
$niveauEtudes=null;
$typeContrat=null;
$exp = null;
$role = NULL;
if(isset($_SESSION['utilisateur']))
{
$role = $_SESSION['utilisateur']->getRole() ;
}
$nbOffers = 5 ;
if(isset($_GET["niveauEtudes"]) && Validation::validateTypeStudies($_GET["niveauEtudes"])) {
$niveauEtudes = $_GET["niveauEtudes"];
}
if(isset($_GET["typeContrat"]) && Validation::validateTypeContract($_GET["typeContrat"])) {
$typeContrat = $_GET["typeContrat"];
}
if(isset($_GET["experience"]) && Validation::validateExperience($_GET["experience"])) {
$exp = $_GET["experience"];
}
if ($niveauEtudes == null && $typeContrat == null && $exp == null) {
$totalOffers = $userMdl->getNbOffers();
} else {
$params = array(
'typeContrat' => $typeContrat,
'exp' => $exp,
'niveauEtudes' => $niveauEtudes,
'role' => $role
);
$offers = $userMdl->getOffersWithFilters($params);
$totalOffers = count($offers);
}
$numberPages = ceil($totalOffers / 5);
$msg = NULL;
if($numberPages == 0 ) {
$msg = 'Aucune Offre Trouvée';
}
if (isset($_GET["page"]) && intval($_GET["page"]) != null) {
$page = intval($_GET["page"]);
if ($page > $numberPages || $page < 1) {
$dVueErreur[] = "Page introuvable";
echo $twig->render("erreur.html", ['dVueErreur' => $dVueErreur ]);
return;
}
} else {
$page = 1;
}
$start = intval(($page - 1) * 5);
if ($niveauEtudes == null && $typeContrat == null && $exp == null) {
$offers = $userMdl->getOfferLimit($start, $nbOffers);
} else {
$params['start'] = $start;
$params['nbOffers'] = 5;
$offers = $userMdl->getOffersWithFilters($params);
}
/* echo "filtre :".$niveauEtudes."<br>";
echo "filtre :".$typeContrat."<br>";
echo "filtre :".$exp."<br>";*/
echo $twig->render('OffersList.html', [
'msg' => $msg,
'offres' => $offers,
'numberPages' => $numberPages,
'currentPage' => $page,
'typeContrat' => (($typeContrat != null) ? $typeContrat : ""),
'experience' => (($exp != null) ? $exp : ""),
'niveauEtudes' => (($niveauEtudes != null) ? $niveauEtudes : ""),
'valContrat' => (($typeContrat != null) ? "&typeContrat=".$typeContrat : ""),
'valExp' => (($exp != null) ? "&experience=".$exp : ""),
'valEtudes' => (($niveauEtudes != null) ? "&niveauEtudes=".$niveauEtudes : ""),
'role' => $role
]);
}
public function displayOffer(?array $params)
{
global $twig;
if (isset($params['id']) && intval($params['id']) != null)
{
$uttilsMdl = new UtilisateurModele();
$offre = $uttilsMdl->getOfferFromId(intval($params["id"]));
if($offre != NULL)
{
echo $twig->render("OffreDetailTest.html",['offre' => $offre]);
return;
}
}
$dVueErreur[] = "Erreur, Offre introuvable";
echo $twig->render("erreur.html", ['dVueErreur' => $dVueErreur]);
}
public function listerEvenement()
{
$mdl = new UtilisateurModele();
$evenements = $mdl->getEvenement();
global $twig;
echo $twig->render('evenement.html', ['evenements' => $evenements]);
}
public function avoirDetailEvenement(?array $params)
{
$mdl = new UtilisateurModele();
global $twig;
if(isset($params['id']))
{
$evenement = $mdl->getEvenementById($params['id']);
echo $twig->render('detailEvenement.html', ['evenement' => $evenement]);
}
else echo $twig->render('erreur.html', ['dVueErreur' => ['erreur id evenement']]);
}
public function rechercherEvenement()
{
$mdl = new UtilisateurModele();
$evenements = $mdl->getEvenement();
if (isset($_POST["recherche"]) and !empty($_POST["recherche"])) {
$recherche = Validation::nettoyerString($_POST["recherche"]);
$evenements = $mdl->getEvenementByTitre($recherche);
}
global $twig;
echo $twig->render('evenement.html', ['evenements' => $evenements]);
}
public function getProfilByPage(?array $params)
{
global $twig;
$dVueErreur = []; // Tableau pour stocker les erreurs, le cas échéant
$userModel = new UtilisateurModele();
$nbParPage = 10;
$nombreTotalPages = ceil(($userModel->getNbTotalPages())/$nbParPage);
if (isset($params['id'] ) && $params['id'] != null) {
$page = Validation::validerIntPossitif($params['id']);
try{
$profils = $userModel->getProfilByPage($page, $nbParPage);
if (isset($profils)) {
echo $twig->render('profil.html', [
'profils' => $profils,
'nombreTotalPages' => $nombreTotalPages,
'page' => $page]
);
}
}catch (Exception $e){
$dVueErreur[] = "Aucun profil n'a été trouvé.";
echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);
}
} else {
$dVueErreur[] = "La page n'existe pas.";
echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);
}
}
public function deconnexion()
{
session_destroy();
header('Location: accueil');
// global $twig;
// $twig->render('accueil.html',[]);
exit();
}
}