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.
346 lines
11 KiB
346 lines
11 KiB
<?php
|
|
|
|
namespace App\controleur;
|
|
|
|
use App\config\Validation;
|
|
use App\gateway\ImageSaver;
|
|
use App\metier\Alumni;
|
|
use App\modele\OffreModele;
|
|
use App\modele\UtilisateurModele;
|
|
|
|
class UtilisateurControleur
|
|
{
|
|
|
|
public function __construct()
|
|
{
|
|
}
|
|
|
|
public function connection()
|
|
{
|
|
global $twig;
|
|
$dVueErreur = []; // Tableau pour stocker les erreurs, le cas échéant
|
|
$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;
|
|
header('Location: accueil');
|
|
exit();
|
|
} 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 = []; // Tableau pour stocker les erreurs, le cas échéant
|
|
$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);
|
|
|
|
// 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();
|
|
} else {
|
|
$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) {
|
|
$prenom = $_SESSION['utilisateur']->getPrenom();
|
|
$nom = $_SESSION['utilisateur']->getNom();
|
|
$id = $_SESSION['utilisateur']->getId();
|
|
}
|
|
else{
|
|
$prenom = null;
|
|
$nom = null;
|
|
$id = null;
|
|
}
|
|
//aller sur la page d'accueil avec le nom et prenom de l'utilisateur
|
|
echo $twig->render('accueil.html', ['prenom' => $prenom, 'nom' => $nom, 'id' => $id]);
|
|
}
|
|
|
|
public function consulterProfilLimite()
|
|
{
|
|
//TODO
|
|
echo 'not implemented yet';
|
|
}
|
|
|
|
public function consultOffers()
|
|
{
|
|
|
|
$userMdl = new UtilisateurModele();
|
|
global $twig;
|
|
|
|
$niveauEtudes=null;
|
|
$typeContrat=null;
|
|
$exp = null;
|
|
|
|
$role = $_SESSION['utilisateur']->getRole() ?? NULL;
|
|
|
|
$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 createOfferForm()
|
|
{
|
|
global $twig;
|
|
echo $twig->render("CreerOffre.html", []);
|
|
}
|
|
|
|
public function createOffer()
|
|
{
|
|
global $twig;
|
|
$taberror = [];
|
|
|
|
$requiredFields = ['name', 'entreprise', 'description','typeContrat', 'descriptPoste', 'profilRecherche', 'choixExp', 'education', 'mail', 'num'];
|
|
|
|
$error = false;
|
|
foreach ($requiredFields as $field) {
|
|
if (empty($_POST[$field])) {
|
|
$error = true;
|
|
$taberror[] = "Le champ {$field} est requis !";
|
|
}
|
|
}
|
|
if($error)
|
|
{
|
|
echo $twig->render("CreerOffre.html", ['tabError' => $taberror ]);
|
|
return;
|
|
}
|
|
|
|
if(!Validation::verifierEmail($_POST["mail"]))
|
|
{
|
|
//echo $twig->render("CreerOffre.html", ['errMsg' => "Email non valide !" ]);
|
|
$taberror[] = "Email non valide !";
|
|
}
|
|
|
|
if(!Validation::validateNumber($_POST["num"]))
|
|
{
|
|
$taberror[] = "Numero non valide !";
|
|
//echo $twig->render("CreerOffre.html", ['errMsg' => "Numero non valide !" ]);
|
|
}
|
|
|
|
|
|
if (!Validation::validateImage("image"))
|
|
{
|
|
if(isset($_FILES['image']['name'])) {$taberror[] = "Image non valide !";}
|
|
else {$taberror[] = "Inserez une image !";}
|
|
}
|
|
if(!Validation::validateImage("logo")) {
|
|
if(isset($_FILES['logo']['name'])) {$taberror[] = "Logo non valide !";}
|
|
else {$taberror[] = "Inserez un logo !";}
|
|
return;
|
|
}
|
|
|
|
if(count($taberror) > 0)
|
|
{
|
|
echo $twig->render("CreerOffre.html", ['tabError' => $taberror ]);
|
|
|
|
}
|
|
else{
|
|
$saveImg1 = ImageSaver::SaveImage("image");
|
|
$saveImg2 = ImageSaver::SaveImage("logo");
|
|
if($saveImg1[0] && $saveImg2[0]) {
|
|
$mbrModel = new MembreModele();
|
|
|
|
|
|
$offre = $mbrModel->publishOffer($saveImg1[1], $saveImg2[1]);
|
|
|
|
echo $twig->render("OffreDetailTest.html", ['offre' => $offre]);
|
|
}
|
|
else
|
|
{
|
|
$taberror[] = "Erreur lors de l'upload des images";
|
|
echo $twig->render("CreerOffre.html", ['tabError' => $taberror ]);
|
|
}
|
|
}
|
|
}
|
|
|
|
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 creerEvenement()
|
|
{
|
|
global $twig;
|
|
|
|
if (isset($_FILES["image"])) {
|
|
$img = ImageSaver::SaveImage('image');
|
|
|
|
if (!Validation::validerEvenement($_POST["titre"], $_POST["description"], $_POST["date"], $_POST["nbPlaceMax"], $img[1])) {
|
|
$mdl = new UtilisateurModele();
|
|
$mdl->ajouterEvenement($_POST["titre"], $_POST["description"], $_POST["date"], $_POST["nbPlaceMax"], $img[1]);
|
|
|
|
$this->listerEvenement();
|
|
} else {
|
|
$dVueErreur[] ="Erreur lors de la création de l'évènement";
|
|
echo $twig->render("erreur.html",['dVueErreur' => $dVueErreur]);
|
|
}
|
|
} else {
|
|
echo $twig->render('creerEvenement.html', []);
|
|
}
|
|
}
|
|
|
|
public function supprimerEvenement(?array $params)
|
|
{
|
|
$mdl = new UtilisateurModele();
|
|
$mdl->deleteEvenement($params["id"]);
|
|
|
|
$this->listerEvenement();
|
|
}
|
|
|
|
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]);
|
|
}
|
|
} |