accueil();
break;
case "profil":
$this->profil();
break;
case "getProfilByPage":
$this->getProfilByPage();
break;
case "inscription_success":
$this->inscription_success();
break;
case "connection":
$this->connection();
break;
case "inscription":
$this->inscription();
break;
case "consultOffers":
$this->consultOffers();
break;
case "consulterProfilLimite":
$this->consulterProfilLimite();
break;
case "createOffer":
$this->createOffer();
break;
case "createOfferForm":
$this->createOfferForm();
break;
case "displayOffer":
$this->displayOffer();
break;
case "listerEvenement":
$this->listerEvenement();
break;
case "creerEvenement":
$this->creerEvenement();
break;
case "supprimerEvenement":
$this->supprimerEvenement();
break;
case "avoirDetailEvenement":
$this->avoirDetailEvenement();
break;
case "rechercherEvenement":
$this->rechercherEvenement();
break;
default:
$dVueErreur[] = "Action inconnue ou non autorisée" . $action;
echo $twig->render("erreur.html", ['dVueErreur' => $dVueErreur]);
}
}
protected 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: index.php?action=accueil');
exit();
} else {
$dVueErreur[] = "L'adresse email ou le mot de passe est incorrect.";
}
}
echo $twig->render('connection.html', ['dVueErreur' => $dVueErreur]);
}
protected 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.";
}
}
try {
$nouvelUtilisateur = $userModel->inscription($prenom,$nom,$email, $hash);
if ($nouvelUtilisateur instanceof Alumni) {
header('Location: index.php?action=inscription_success');
exit();
} else {
$dVueErreur[] = "L'inscription a échoué, veuillez réessayer.";
}
} catch (\Exception $e) {
$dVueErreur[] = "L'inscription a échoué, veuillez réessayer.";
$twig->render('inscription.html', ['dVueErreur' => $dVueErreur]);
}
}
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]);
}
protected function inscription_success()
{
global $twig;
echo $twig->render('inscription_success.html');
}
protected function consulterProfilLimite()
{
//TODO
}
protected function consultOffers()
{
$offerMdl = new OffreModele();
global $twig;
$niveauEtudes=null;
$typeContrat=null;
$exp = 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 = $offerMdl->getNbOffers();
} else {
$params = array(
'typeContrat' => $typeContrat,
'exp' => $exp,
'niveauEtudes' => $niveauEtudes,
);
$offers = $offerMdl->getOffersWithFilters($params);
$totalOffers = count($offers);
}
$numberPages = ceil($totalOffers / 5);
if($numberPages == 0 )
{
echo $twig->render("erreur.html",['dVueErreur' => ['Aucune Offre Trouvée']]);
return;
}
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 = $offerMdl->getOfferLimit($start, $nbOffers);
} else {
$params['start'] = $start;
$params['nbOffers'] = 5;
$offers = $offerMdl->getOffersWithFilters($params);
}
/* echo "filtre :".$niveauEtudes."
";
echo "filtre :".$typeContrat."
";
echo "filtre :".$exp."
";*/
echo $twig->render('OffersList.html', [
'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 : ""))
]);
}
protected function createOfferForm()
{
global $twig;
echo $twig->render("CreerOffre.html", []);
}
protected 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]) {
$offreMdl = new OffreModele();
$offre = $offreMdl->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()
{
global $twig;
if (isset($_GET["id"]) && intval($_GET["id"]) != null)
{
$offreMdl = new OffreModele();
$offre = $offreMdl->getOfferFromId(intval($_GET["id"]));
if($offre != NULL)
{
echo $twig->render("OffreDetailTest.html",['offre' => $offre]);
return;
}
}
$dVueErreur[] = "Erreur, Offre introuvable";
echo $twig->render("erreur.html", ['dVueErreur' => $dVueErreur]);
}
protected function listerEvenement()
{
$mdl = new UtilisateurModele();
$evenements = $mdl->getEvenement();
global $twig;
echo $twig->render('evenement.html', ['evenements' => $evenements]);
}
protected 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', []);
}
}
protected function supprimerEvenement()
{
$mdl = new UtilisateurModele();
$mdl->deleteEvenement($_GET["id"]);
$this->listerEvenement();
}
protected function avoirDetailEvenement()
{
$mdl = new UtilisateurModele();
$evenement = $mdl->getEvenementById($_GET["id"]);
global $twig;
echo $twig->render('detailEvenement.html', ['evenement' => $evenement]);
}
protected 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]);
}
private function getProfilByPage()
{
global $twig;
$dVueErreur = []; // Tableau pour stocker les erreurs, le cas échéant
$userModel = new UtilisateurModele();
if (isset($_GET['page'])) {
$page = Validation::nettoyerString($_GET['page']);
$utilisateurs = $userModel->getUtilisateurByPage($page);
if ($utilisateurs[0] != null) {
echo $twig->render('profil.html', [
'utilisateurs' => $utilisateurs,
'page' => $page]
);
} else {
$dVueErreur[] = "L'utilisateur n'existe pas.";
echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);
}
} else {
$dVueErreur[] = "L'utilisateur n'existe pas.";
echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);
}
}
}