debut altorouter

pull/42/head
Baltazouu 1 year ago
parent b7a820f49d
commit 7d5ece1532

@ -1,3 +1,11 @@
#RewriteEngine On
#
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule ^(.*)$ index.php/$1 [L]
RewriteEngine on RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L] RewriteRule . index.php [L]

@ -5,6 +5,7 @@
require_once __DIR__ . '/src/config/config.php'; require_once __DIR__ . '/src/config/config.php';
require __DIR__ . '/vendor/autoload.php'; require __DIR__ . '/vendor/autoload.php';
/** Configuration twig */ /** Configuration twig */
$loader = new \Twig\Loader\FilesystemLoader(__DIR__ . '/templates'); $loader = new \Twig\Loader\FilesystemLoader(__DIR__ . '/templates');
$twig = new \Twig\Environment($loader, [ $twig = new \Twig\Environment($loader, [

@ -49,3 +49,12 @@
.row3 img { .row3 img {
align-self: flex-start; align-self: flex-start;
} }
a{
text-decoration: none;
}
.current{
border-bottom: 1px solid black;
}

@ -144,13 +144,13 @@ class Validation
} }
public function isAdmin() public function isAdmin() : ?Alumni
{ {
if(isset($_SESSION['login']) && isset($_SESSION['role'])) if(isset($_SESSION['login']) && isset($_SESSION['role']))
{ {
$login = self::nettoyerString($_SESSION['login']); $login = self::nettoyerString($_SESSION['login']);
$role = self::nettoyerString($_SESSION['role']); $role = self::nettoyerString($_SESSION['role']);
return new Alumni() return $_SESSION["utilisateur"];
} }
return null; return null;
} }

@ -1,112 +1,103 @@
<?php <?php
namespace App\controleur;
namespace App\controleur;
use App\router\AltoRouter; use App\router\AltoRouter;
use App\metier\Alumni;
use App\controleur\UtilisateurControleur;
use App\controleur\MembreControleur;
use App\controleur\AdminControleur;
class FrontControleur class FrontControleur
{ {
public function __construct() public function __construct()
{ {
global $twig;
session_start();
$router = new AltoRouter(); $router = new AltoRouter();
$router->setBasePath('/php'); $router->setBasePath('/SAE_2A_FA-Reseau_ALICA/php');
$router->map('GET','/','UtilisateurControleur'); $router->map('GET', '/', 'UtilisateurControleur');
$router->map('GET|POST','/user/[i:id]/[a:action]?','MembreControleur'); $router->map('GET','/[a:action]?','UtilisateurControleur');
$router->map('GET|POST','/admin/[i:id]/[a:action]?','AdminControleur'); $router->map('POST','/[a:action]?','UtilisateurControleur');
$id = 0; $router->map('GET', '/[a:action]?', 'UtilisateurControleur');
$router->map('GET|POST', '/user/[i:id]/[a:action]?', 'MembreControleur');
$router->map('GET|POST', '/admin/[i:id]/[a:action]?', 'AdminControleur');
$id = 0;
$match = $router->match(); $match = $router->match();
$action = array(); $action = array();
$id=array(); $id = array();
$twig->render("accueil.html",[]);
if(!$match) if (!$match) {
{
$dVueErreur[] = "Error 404 Page not found";
global $twig; global $twig;
$dVueErreur[] = "Error 404 Page not found";
echo $twig->render("erreur.html", ['dVueErreur' => $dVueErreur]); echo $twig->render("erreur.html", ['dVueErreur' => $dVueErreur]);
} }
if($match) if ($match) {
{
$controller = $match['target'] ?? NULL; $controller = $match['target'] ?? NULL;
$action = $match['params']['actions'] ?? NULL; $action = $match['params']['action'] ?? NULL;
$id = $match['params']['id'] ?? NULL; $id = $match['params']['id'] ?? NULL;
} try {
if ($controller == "MembreControleur") {
if ($_SESSION["utilisateur"] != NULL) {
echo 'not implemented';
return;
}
}
try{ if ($controller == "AdminControleur") {
$controller = new $controller; $Alumni = $_SESSION["utilisateur"];
} if ($Alumni->getRole() != "Admin") {
catch (Error $error) $dVueErreur = ["Erreur : Vous n'avez pas les privileges pour cette action"];
{
$dVueErreur = ['Erreur : Action inconnue'];
$twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);
}
} global $twig;
echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);
return;
}
} else {
$namespace = 'App\\Controleur\\';
$controller = $namespace . $controller;
$controller = new $controller();
}
if (is_callable(array($controller, $action))) {
call_user_func(array($controller, $action), $match['params']);
} else {
$dVueErreur = ['Erreur : Action inconnue'];
echo $twig->render('accueil.html', ['dVueErreur' => $dVueErreur]);
}
} catch (Error $error) {
$dVueErreur = ['Erreur : Action inconnue'];
}
/*class FrontControleur
{
public function __construct()
{
global $twig;
session_start();
$dVueErreur = [];
$actions = array(
"Admin" => [
"supprimerCompte", "consulterSignalement","supprimerOffre"
],
"Moderateur" => [
//TODO
],
"Membre" => [
"deconnexion","proposerOffre","consulterProfil","modifierProfil","signaler",
],
"Utilisateur" => [
"connexion", "inscription", "accueil", "consulterProfilLimite", "publierOffre", "listerEvenement", "creerEvenement", "supprimerEvenement", "avoirDetailEvenement", "rechercherEvenement"
]
);
$action = \App\config\Validation::nettoyerString($_GET["action"] ?? "");
if(in_array($action,$actions['Admin'])) {
if (!isset($_SESSION["role"]) || $_SESSION["role"]!="admin") {
$dVueErreur[] = 'Veuillez vous connecter';
echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);
} else{
new AdminControleur();
}
}
else if(in_array($action,$actions['Moderateur'])) {
if (!isset($_SESSION["role"]) || ($_SESSION["role"]!="moderateur" && $_SESSION["role"]!="admin")) {
$dVueErreur[] = 'Veuillez vous connecter';
echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);
} else{
new ModerateurControleur();
}
}
else if(in_array($action,$actions['Membre'])) {
if (!isset($_SESSION["utilisateur"])) {
$dVueErreur[] = 'Veuillez vous connecter';
echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]); echo $twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);
} else{
new MembreControleur();
} }
}else{
new UtilisateurControleur();
} }
} }
}*/
}

@ -5,36 +5,12 @@ class MembreControleur extends UtilisateurControleur
{ {
public function __construct() public function __construct()
{ {
global $twig;
if (!isset($_REQUEST["action"])) {
$action = NULL;
} else {
$action = \App\config\Validation::nettoyerString($_REQUEST["action"]);
}
switch ($action) {
case "deconnexion":
$this->deconnexion();
break;
case "proposerOffre":
$this->proposerOffre();
break;
case "consulterProfil":
$this->consulterProfil();
break;
case "modifierProfil":
$this->modifierProfil();
break;
case "signaler":
$this->signaler();
break;
default:
parent::__construct();
}
} }
protected function deconnexion() protected function deconnexion()
{ {
session_destroy(); session_destroy();
echo "on est passes ici";
header('Location: index.php?action=accueil'); header('Location: index.php?action=accueil');
exit(); exit();
} }

@ -5,7 +5,7 @@ namespace App\controleur;
use App\config\Validation; use App\config\Validation;
use App\gateway\ImageSaver; use App\gateway\ImageSaver;
use App\metier\Alumni; use App\metier\Alumni;
use App\modele\OffreModele; use App\modele\MembreModele;
use App\modele\UtilisateurModele; use App\modele\UtilisateurModele;
class UtilisateurControleur class UtilisateurControleur
@ -13,63 +13,9 @@ class UtilisateurControleur
public function __construct() public function __construct()
{ {
global $twig;
if (!isset($_REQUEST["action"])) {
$action = NULL;
} else {
$action = Validation::nettoyerString($_REQUEST["action"]);
}
switch ($action) {
case NULL:
case "accueil":
$this->accueil();
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";
echo $twig->render("erreur.html", ['dVueErreur' => $dVueErreur]);
}
} }
protected function connection() public function connection()
{ {
global $twig; global $twig;
$dVueErreur = []; // Tableau pour stocker les erreurs, le cas échéant $dVueErreur = []; // Tableau pour stocker les erreurs, le cas échéant
@ -81,7 +27,7 @@ class UtilisateurControleur
$utilisateur = $userModel->connection($email, $motDePasse); $utilisateur = $userModel->connection($email, $motDePasse);
if ($utilisateur instanceof Alumni) { if ($utilisateur instanceof Alumni) {
$_SESSION['utilisateur'] = $utilisateur; $_SESSION['utilisateur'] = $utilisateur;
header('Location: index.php?action=accueil'); $this->accueil();
exit(); exit();
} else { } else {
$dVueErreur[] = "L'adresse email ou le mot de passe est incorrect."; $dVueErreur[] = "L'adresse email ou le mot de passe est incorrect.";
@ -90,7 +36,7 @@ class UtilisateurControleur
echo $twig->render('connection.html', ['dVueErreur' => $dVueErreur]); echo $twig->render('connection.html', ['dVueErreur' => $dVueErreur]);
} }
protected function inscription() public function inscription()
{ {
global $twig; global $twig;
$dVueErreur = []; // Tableau pour stocker les erreurs, le cas échéant $dVueErreur = []; // Tableau pour stocker les erreurs, le cas échéant
@ -124,13 +70,17 @@ class UtilisateurControleur
echo $twig->render('inscription.html', ['dVueErreur' => $dVueErreur]); echo $twig->render('inscription.html', ['dVueErreur' => $dVueErreur]);
} }
protected function accueil() public function accueil()
{ {
var_dump($_SESSION['utilisateur']);
global $twig; global $twig;
// Ajout d'un var_dump pour déboguer // Ajout d'un var_dump pour déboguer
if (isset($_SESSION['utilisateur']) && $_SESSION['utilisateur'] instanceof Alumni) { if (isset($_SESSION['utilisateur']) && $_SESSION['utilisateur'] instanceof Alumni) {
$prenom = $_SESSION['utilisateur']->getPrenom(); $prenom = $_SESSION['utilisateur']->getPrenom();
$nom = $_SESSION['utilisateur']->getNom(); $nom = $_SESSION['utilisateur']->getNom();
// $id = $_SESSION['utilisateur']->get
echo $twig->render('/user/accueil.html', ['prenom' => $prenom, 'nom' => $nom]);
} }
else{ else{
$prenom = null; $prenom = null;
@ -140,19 +90,14 @@ class UtilisateurControleur
echo $twig->render('accueil.html', ['prenom' => $prenom, 'nom' => $nom]); echo $twig->render('accueil.html', ['prenom' => $prenom, 'nom' => $nom]);
} }
protected function inscription_success() public function consulterProfilLimite()
{
global $twig;
echo $twig->render('inscription_success.html');
}
protected function consulterProfilLimite()
{ {
//TODO //TODO
} }
protected function consultOffers() public function consultOffers()
{ {
$offerMdl = new OffreModele(); $userMdl = new UtilisateurModele();
global $twig; global $twig;
$niveauEtudes=null; $niveauEtudes=null;
@ -174,14 +119,14 @@ class UtilisateurControleur
} }
if ($niveauEtudes == null && $typeContrat == null && $exp == null) { if ($niveauEtudes == null && $typeContrat == null && $exp == null) {
$totalOffers = $offerMdl->getNbOffers(); $totalOffers = $userMdl->getNbOffers();
} else { } else {
$params = array( $params = array(
'typeContrat' => $typeContrat, 'typeContrat' => $typeContrat,
'exp' => $exp, 'exp' => $exp,
'niveauEtudes' => $niveauEtudes, 'niveauEtudes' => $niveauEtudes,
); );
$offers = $offerMdl->getOffersWithFilters($params); $offers = $userMdl->getOffersWithFilters($params);
$totalOffers = count($offers); $totalOffers = count($offers);
} }
@ -189,8 +134,8 @@ class UtilisateurControleur
if($numberPages == 0 ) if($numberPages == 0 )
{ {
$msg = 'Aucune Offre Trouvée';
echo $twig->render("erreur.html",['dVueErreur' => ['Aucune Offre Trouvée']]); echo $twig->render("OffersList.html",['message' => $msg]);
return; return;
} }
@ -198,7 +143,7 @@ class UtilisateurControleur
$page = intval($_GET["page"]); $page = intval($_GET["page"]);
if ($page > $numberPages || $page < 1) { if ($page > $numberPages || $page < 1) {
$dVueErreur[] = "Page introuvable"; $dVueErreur[] = "Page introuvable";
echo $twig->render("erreur.html", ['dVueErreur' => $dVueErreur]); echo $twig->render("erreur.html", ['dVueErreur' => $dVueErreur ]);
return; return;
} }
} else { } else {
@ -208,11 +153,11 @@ class UtilisateurControleur
$start = intval(($page - 1) * 5); $start = intval(($page - 1) * 5);
if ($niveauEtudes == null && $typeContrat == null && $exp == null) { if ($niveauEtudes == null && $typeContrat == null && $exp == null) {
$offers = $offerMdl->getOfferLimit($start, $nbOffers); $offers = $userMdl->getOfferLimit($start, $nbOffers);
} else { } else {
$params['start'] = $start; $params['start'] = $start;
$params['nbOffers'] = 5; $params['nbOffers'] = 5;
$offers = $offerMdl->getOffersWithFilters($params); $offers = $userMdl->getOffersWithFilters($params);
} }
/* echo "filtre :".$niveauEtudes."<br>"; /* echo "filtre :".$niveauEtudes."<br>";
@ -232,13 +177,13 @@ class UtilisateurControleur
]); ]);
} }
protected function createOfferForm() public function createOfferForm()
{ {
global $twig; global $twig;
echo $twig->render("CreerOffre.html", []); echo $twig->render("CreerOffre.html", []);
} }
protected function createOffer() public function createOffer()
{ {
global $twig; global $twig;
$taberror = []; $taberror = [];
@ -291,10 +236,10 @@ class UtilisateurControleur
$saveImg1 = ImageSaver::SaveImage("image"); $saveImg1 = ImageSaver::SaveImage("image");
$saveImg2 = ImageSaver::SaveImage("logo"); $saveImg2 = ImageSaver::SaveImage("logo");
if($saveImg1[0] && $saveImg2[0]) { if($saveImg1[0] && $saveImg2[0]) {
$offreMdl = new OffreModele(); $mbrModel = new MembreModele();
$offre = $offreMdl->publishOffer($saveImg1[1], $saveImg2[1]); $offre = $mbrModel->publishOffer($saveImg1[1], $saveImg2[1]);
echo $twig->render("OffreDetailTest.html", ['offre' => $offre]); echo $twig->render("OffreDetailTest.html", ['offre' => $offre]);
} }
@ -312,8 +257,8 @@ class UtilisateurControleur
if (isset($_GET["id"]) && intval($_GET["id"]) != null) if (isset($_GET["id"]) && intval($_GET["id"]) != null)
{ {
$offreMdl = new OffreModele(); $uttilsMdl = new UtilisateurModele();
$offre = $offreMdl->getOfferFromId(intval($_GET["id"])); $offre = $uttilsMdl->getOfferFromId(intval($_GET["id"]));
if($offre != NULL) if($offre != NULL)
{ {
echo $twig->render("OffreDetailTest.html",['offre' => $offre]); echo $twig->render("OffreDetailTest.html",['offre' => $offre]);
@ -324,7 +269,7 @@ class UtilisateurControleur
echo $twig->render("erreur.html", ['dVueErreur' => $dVueErreur]); echo $twig->render("erreur.html", ['dVueErreur' => $dVueErreur]);
} }
protected function listerEvenement() public function listerEvenement()
{ {
$mdl = new UtilisateurModele(); $mdl = new UtilisateurModele();
$evenements = $mdl->getEvenement(); $evenements = $mdl->getEvenement();
@ -333,7 +278,7 @@ class UtilisateurControleur
echo $twig->render('evenement.html', ['evenements' => $evenements]); echo $twig->render('evenement.html', ['evenements' => $evenements]);
} }
protected function creerEvenement() public function creerEvenement()
{ {
global $twig; global $twig;
@ -354,7 +299,7 @@ class UtilisateurControleur
} }
} }
protected function supprimerEvenement() public function supprimerEvenement()
{ {
$mdl = new UtilisateurModele(); $mdl = new UtilisateurModele();
$mdl->deleteEvenement($_GET["id"]); $mdl->deleteEvenement($_GET["id"]);
@ -362,7 +307,7 @@ class UtilisateurControleur
$this->listerEvenement(); $this->listerEvenement();
} }
protected function avoirDetailEvenement() public function avoirDetailEvenement()
{ {
$mdl = new UtilisateurModele(); $mdl = new UtilisateurModele();
$evenement = $mdl->getEvenementById($_GET["id"]); $evenement = $mdl->getEvenementById($_GET["id"]);
@ -371,13 +316,12 @@ class UtilisateurControleur
echo $twig->render('detailEvenement.html', ['evenement' => $evenement]); echo $twig->render('detailEvenement.html', ['evenement' => $evenement]);
} }
protected function rechercherEvenement() public function rechercherEvenement()
{ {
$mdl = new UtilisateurModele(); $mdl = new UtilisateurModele();
$evenements = $mdl->getEvenement(); $evenements = $mdl->getEvenement();
if(isset($_POST["recherche"]) AND !empty($_POST["recherche"])) if (isset($_POST["recherche"]) and !empty($_POST["recherche"])) {
{
$recherche = Validation::nettoyerString($_POST["recherche"]); $recherche = Validation::nettoyerString($_POST["recherche"]);
$evenements = $mdl->getEvenementByTitre($recherche); $evenements = $mdl->getEvenementByTitre($recherche);
} }
@ -385,4 +329,8 @@ class UtilisateurControleur
global $twig; global $twig;
echo $twig->render('evenement.html', ['evenements' => $evenements]); echo $twig->render('evenement.html', ['evenements' => $evenements]);
} }
} }

@ -44,7 +44,7 @@ class AlumniGateway
} }
public function findByEmail(string $email){ public function findByEmail(string $email){
$query = 'SELECT Alumni.mail, Alumni.mdp, Alumni.role, Profil.nom, Profil.prenom $query = 'SELECT Alumni.mail, Alumni.mdp, Alumni.role, Profil.nom, Profil.prenom ,Alumni.id
FROM Alumni FROM Alumni
LEFT JOIN Profil ON Alumni.id = Profil.alumni LEFT JOIN Profil ON Alumni.id = Profil.alumni
WHERE Alumni.mail = :e'; WHERE Alumni.mail = :e';

@ -17,7 +17,7 @@ class ImageSaver
$name = substr($_FILES[$filename]["name"], 0, 45); $name = substr($_FILES[$filename]["name"], 0, 45);
$name = self::getId().$name; $name = self::getId().$name;
move_uploaded_file($_FILES[$filename]['tmp_name'], "../public/uploads/$name"); move_uploaded_file($_FILES[$filename]['tmp_name'], "public/uploads/$name");
$return[]=true; $return[]=true;
$return[]=$name; $return[]=$name;
return $return; return $return;

@ -10,21 +10,21 @@ class TypeContrat {
const Alternance = "Alternance"; const Alternance = "Alternance";
const Stage = "Stage"; const Stage = "Stage";
} }
//
enum ProfilRecherche : string //enum ProfilRecherche : string
{ //{
case Junior = "Junior"; // case Junior = "Junior";
case Senior = "Senior"; // case Senior = "Senior";
case Indifferent = "Indifferent"; // case Indifferent = "Indifferent";
} //}
//
enum NiveauEtudes: string //enum NiveauEtudes: string
{ //{
case Bac2 = "Bac+2"; // case Bac2 = "Bac+2";
case Bac3 = "Bac+3"; // case Bac3 = "Bac+3";
case Bac5 = "Bac+5"; // case Bac5 = "Bac+5";
case Indifferent = "Indifferent"; // case Indifferent = "Indifferent";
} //}
class Offre class Offre
{ {

@ -2,6 +2,9 @@
namespace App\modele; namespace App\modele;
use App\metier\Alumni;
use App\metier\Offre;
class MembreModele extends UtilisateurModele class MembreModele extends UtilisateurModele
{ {
@ -65,4 +68,53 @@ class MembreModele extends UtilisateurModele
public function publishOffer(string $img, string $logo)
{
$desc = $_POST["description"];
$descposte = $_POST["descriptPoste"];
$nom = $_POST["name"];
$ville = $_POST["ville"];
$entreprise = $_POST["entreprise"];
$profilRecherche = $_POST["profilRecherche"];
$mail = $_POST["mail"];
$num = $_POST["num"];
$site = $_POST["site"];
$exp = $_POST["choixExp"];
$typeContrat = $_POST["typeContrat"];
$niveauEtudes = $_POST["education"];
$date = new \DateTime();
if(isset($_POST["fullRemote"]))
{
$remote = true;
}
else $remote = false;
// à la place de NULL passer id utilisateur créateur offre
$offre = new Offre($this->offreGw->getNewId(),
new Alumni("test.mail@icloud.fr","password","admin","prenom","nom"),
$nom,
$desc,
$img,
$logo,
$typeContrat,
$ville,
$entreprise,
$descposte,
$profilRecherche,
$exp,
$niveauEtudes,
$mail,
$num,
$site,
$remote,
$date);
$this->offreGw->addOffers($offre);
return $offre;
}
} }

@ -3,19 +3,24 @@ namespace App\modele;
use App\gateway\Connection; use App\gateway\Connection;
use App\gateway\EvenementGateway; use App\gateway\EvenementGateway;
use App\gateway\OffreGateway;
use App\metier\Evenement; use App\metier\Evenement;
use App\metier\Alumni; use App\metier\Alumni;
use App\gateway\AlumniGateway; use App\gateway\AlumniGateway;
use App\gateway\ProfilGateway; use App\gateway\ProfilGateway;
use App\metier\Offre;
class UtilisateurModele class UtilisateurModele
{ {
private $con; private $con;
protected $offreGw;
public function __construct() public function __construct()
{ {
$this->con = new Connection(DB_HOST,DB_USER,DB_PASS); $this->con = new Connection(DB_HOST,DB_USER,DB_PASS);
$this->offreGw = new OffreGateway($this->con);
} }
/** /**
@ -35,7 +40,7 @@ class UtilisateurModele
// L'utilisateur existe, vérifiez le mot de passe // L'utilisateur existe, vérifiez le mot de passe
if (password_verify($mdp, $utilisateur->getPassword())) { if (password_verify($mdp, $utilisateur->getPassword())) {
// Le mot de passe est correct, retournez l'utilisateur // Le mot de passe est correct, retournez l'utilisateur
session_start(); //session_start();
return $utilisateur; return $utilisateur;
} else { } else {
// Le mot de passe est incorrect, renvoyez null // Le mot de passe est incorrect, renvoyez null
@ -179,4 +184,83 @@ class UtilisateurModele
return $evenement; return $evenement;
} }
public function getOfferFromId(int $id) : ?Offre
{
$res = $this->offreGw->getOfferFromId($id);
if($res != null)
return $this->CreateOffersFromGw($res)[0];
return null;
}
public function CreateOffersFromGw($res) : array
{
$alGw = new AlumniGateway(new Connection(DB_HOST,DB_USER,DB_PASS));
$offers=[];
foreach ($res as $row)
{
$resal = $alGw->ObtenirById($row['offreur']);
$profilGw = new ProfilGateway(new Connection(DB_HOST,DB_USER,DB_PASS));
$resProfl = $profilGw->getProfilById($row['offreur']);
$alumni = new Alumni($resal[0]['mail'],$resal[0]['mdp'],$resal[0]['role'],$resProfl[0]['nom'],$resProfl[0]["prenom"]);
$date = \DateTime::createFromFormat('Y-m-d', $row['date']);
$offers[]=new Offre(
$row['id'],
$alumni,
$row['titre'],
$row['description'],
$row["image"],
$row["logo"],
$row['typeContrat'],
$row['ville'],
$row["entreprise"],
$row['descriptifPoste'],
$row['profil'],
$row['experience'],
$row['niveauEtudes'],
$row['mailContact'],
$row['numero'],
$row['websiteURL'],
$row['remote'],
$date);
}
return $offers;
}
public function getOfferLimit($start, $nbOffers): array
{
$res = $this->offreGw->getOfferLimit($start, $nbOffers);
return $this->CreateOffersFromGw($res);
}
public function getNbOffers() : int
{
return $this->offreGw->getNbOffers();
}
public function getOffersWithFilters($params) : array
{
return $this->offreGw->getOffersWithFilters($params);
}
public function getOffers() : array
{
$res = $this->offreGw->getOffers();
$offers = $this->CreateOffersFromGw($res);
return $offers;
}
} }

@ -5,7 +5,7 @@
<title>Alica - Offres</title> <title>Alica - Offres</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<link rel="stylesheet" href="css/offres.css"> <link rel="stylesheet" href="public/css/offres.css">
</head> </head>
<body> <body>
<header> <header>
@ -14,13 +14,13 @@
<div class="container mt-4 d-flex align-content-center "> <div class="container mt-4 d-flex align-content-center ">
<div> <div>
<a href="index.php?action=createOfferForm" type="button" class="btn btn-outline-success mb-4">Publier une offre</a> <a href="createOfferForm" type="button" class="btn btn-outline-success mb-4">Publier une offre</a>
</div> </div>
<div class="container mt-4"> <div class="container mt-4">
<div class="d-flex flex-column align-items-center"> <div class="d-flex flex-column align-items-center">
<form action="index.php" method="get" class="form-inline flex-wrap mb-4"> <form action="consultOffers" method="get" class="form-inline flex-wrap mb-4">
<h2 class="mr-3">Filtrer les offres</h2> <h2 class="mr-3">Filtrer les offres</h2>
<div class="form-group mr-3 flex-column justify-content-left"> <div class="form-group mr-3 flex-column justify-content-left">
@ -79,7 +79,7 @@
</div> </div>
<div> <div>
<a href="index.php?action=consultOffers" class="btn btn-info">Réinitialiser les filtres</a> <a href="consultOffers" class="btn btn-info">Réinitialiser les filtres</a>
</div> </div>
</div> </div>
@ -87,13 +87,16 @@
<h1 id="titrePrincipal">Offres d'emploi</h1> <h1 id="titrePrincipal">Offres d'emploi</h1>
{% if message is defined %}
<p>{{ message }}</p>
{% endif %}
<div class="col-md-8 offset-md-2"> <div class="col-md-8 offset-md-2">
{% for offre in offres %} {% for offre in offres %}
<article class="mb-4"> <article class="mb-4">
<div class="row1"> <div class="row1">
<img src="uploads/{{offre.getLogo()}}" class="img-fluid rounded" alt="logo"> <!-- Ajoutez la classe "rounded" pour arrondir les coins --> <img src="public/uploads/{{offre.getLogo()}}" class="img-fluid rounded" alt="logo"> <!-- Ajoutez la classe "rounded" pour arrondir les coins -->
<h4>{{ offre.getNom() }}</h4> <h4>{{ offre.getNom() }}</h4>
</div> </div>
<div class="row2"> <div class="row2">
@ -102,12 +105,11 @@
</div> </div>
<div class="row3"> <div class="row3">
<img src="assets/location.png" alt="location"> <img src="public/assets/location.png" alt="location">
<p>{{offre.getVille()}}</p> <p>{{offre.getVille()}}</p>
</div> </div>
<button type="button" class="btn btn-outline-primary btn-sm mb-2 custom-button" <button type="button" class="btn btn-outline-primary btn-sm mb-2 custom-button"
onclick="window.location.href = 'index.php?action=displayOffer&id={{offre.getId()}}';">En savoir plus > onclick="window.location.href = 'displayOffer&id={{offre.getId()}}'">En savoir plus</button>
</button>
</article> </article>
{% endfor %} {% endfor %}
@ -121,9 +123,9 @@
<!-- <!--
index.php?action=consultOffers&page={{ i }}&typeContrat={{ typeContrat }}&experience={{ experience }}&niveauEtudes={{ niveauEtudes }} index.php?action=consultOffers&page={{ i }}&typeContrat={{ typeContrat }}&experience={{ experience }}&niveauEtudes={{ niveauEtudes }}
--> -->
<a href="index.php?action=consultOffers&page={{ i }}&{{valContrat}}{{valExp}}{{ValEtudes}}" class="active bg-danger">{{ i }}</a> <a href="consultOffers&page={{ i }}&{{valContrat}}{{valExp}}{{ValEtudes}}" class="current">{{ i }}</a>
{% else %} {% else %}
<a href="index.php?action=consultOffers&page={{ i }}&{{valContrat}}{{valExp}}{{ValEtudes}}">{{ i }}</a> <a href="consultOffers&page={{ i }}&{{valContrat}}{{valExp}}{{ValEtudes}}">{{ i }}</a>
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{% endif %} {% endif %}

@ -1,10 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Offre {{ offre.getNom() }}</title>
</head>
<body>
</body>
</html>

@ -17,8 +17,8 @@
<ul class="list-group"> <ul class="list-group">
<!-- Add an image related to the offer --> <!-- Add an image related to the offer -->
<li class="list-group-item"></li><img src="uploads/{{offre.getLogo()}}" alt="Logo" class="img-thumbnail" style="max-height: 50px; max-width: 50px;"</li> <li class="list-group-item"></li><img src="public/uploads/{{offre.getLogo()}}" alt="Logo" class="img-thumbnail" style="max-height: 50px; max-width: 50px;"></li>
<li class="list-group-item"><img src="uploads/{{offre.getImg()}}" alt="Offer Image" class="img-fluid"></li> <li class="list-group-item"><img src="public/uploads/{{offre.getImg()}}" alt="Offer Image" class="img-fluid"></li>
<!--<li class="list-group-item"><strong>ID:</strong> {{ offre.getId() }}</li> --> <!--<li class="list-group-item"><strong>ID:</strong> {{ offre.getId() }}</li> -->
<li class="list-group-item"><strong>Offreur:</strong> {{ offre.getOffreur().getNom() }}</li> <li class="list-group-item"><strong>Offreur:</strong> {{ offre.getOffreur().getNom() }}</li>
<li class="list-group-item"><strong>Nom de l'offre:</strong> {{ offre.getNom() }}</li> <li class="list-group-item"><strong>Nom de l'offre:</strong> {{ offre.getNom() }}</li>

@ -3,15 +3,18 @@
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" type="text/css" href="css/accueil.css"> <link rel="stylesheet" type="text/css" href="public/css/accueil.css">
<title>Alica - Accueil</title> <title>Alica - Accueil</title>
</head> </head>
<!-- balise center provisoire c'est pour mes yeux -->
<body> <body>
<header> <header>
{% include 'menu.html' %} {% include 'menu.html' %}
</header> </header>
<div style="text-align: center">
<h1>Accueil</h1> <h1>Accueil</h1>
<!-- Bienvenu suivie du mail des informations sessions de l'utilisateur --> <!-- Bienvenu suivie du mail des informations sessions de l'utilisateur -->
<p>{% if prenom and nom %} <p>{% if prenom and nom %}
@ -33,6 +36,8 @@
</div> </div>
</div> </div>
{% endif %} {% endif %}
</div>
</body> </body>
</html> </html>

@ -4,11 +4,13 @@
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Alica - Connexion</title> <title>Alica - Connexion</title>
<link rel="stylesheet" type="text/css" href="../public/css/connexion.css"> <link rel="stylesheet" type="text/css" href="public/css/connexion.css">
</head> </head>
<body> <body>
<div class="container"> <div class="container">
<form action="" method="POST"> <form action="connection" method="POST">
<h3>Connexion</h3> <h3>Connexion</h3>
<div class="CadreInput"> <div class="CadreInput">
<span>Identifiant</span> <span>Identifiant</span>
@ -37,9 +39,7 @@
</form> </form>
<div class="CadreInput"> <div class="CadreInput">
<div class="box"> <div class="box">
<form action="../index.php?action=inscription" method="POST"> <a href="inscription" class="other">S'inscrire</a>
<input type="submit" class="other" value="S'inscrire">
</form>
</div> </div>
</div> </div>
{% if dVueErreur is not empty %} {% if dVueErreur is not empty %}

@ -15,7 +15,7 @@
<main class="container mt-4"> <main class="container mt-4">
<h1>Publier Une Offre</h1> <h1>Publier Une Offre</h1>
<form style="background-color: #00DBFF" class="p-4" enctype="multipart/form-data" action="index.php?action=createOffer" method="post"> <form style="background-color: #00DBFF" class="p-4" enctype="multipart/form-data" action="createOffer" method="post">
{% if tabError is defined %} {% if tabError is defined %}
{% for error in tabError %} {% for error in tabError %}

@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" type="text/css" href="../public/css/erreur.css"> <link rel="stylesheet" type="text/css" href="public/css/erreur.css">
<title>Alica - Erreur</title> <title>Alica - Erreur</title>
</head> </head>
@ -21,7 +21,7 @@
<p>{{value}}</p> <p>{{value}}</p>
{% endfor %} {% endfor %}
{% endif %} {% endif %}
<form action="../index.php" method="POST"> <form action="accueil" method="POST">
<input type="submit" value="Retourner à l'accueil"> <input type="submit" value="Retourner à l'accueil">
</form> </form>
</body> </body>

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Liste des Événements</title> <title>Liste des Événements</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<link rel="stylesheet" href="css/evenement.css"> <link rel="stylesheet" href="public/css/evenement.css">
</head> </head>
<body> <body>

@ -4,11 +4,11 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Alica - Inscription</title> <title>Alica - Inscription</title>
<link rel="stylesheet" type="text/css" href="../public/css/inscription.css"> <link rel="stylesheet" type="text/css" href="public/css/inscription.css">
</head> </head>
<body> <body>
<div class="container"> <div class="container">
<form action="" method="POST"> <form action="inscription" method="POST">
<h3>S'inscrire</h3> <h3>S'inscrire</h3>
<div class="CadreInput"> <div class="CadreInput">
<span>Prénom :</span> <span>Prénom :</span>
@ -62,9 +62,7 @@
</form> </form>
<div class="CadreInput"> <div class="CadreInput">
<div class="box"> <div class="box">
<form action="../index.php?action=connection" method="POST"> <a href="connection" class="other">Se Connecter</a>
<input class="other" type="submit" value="Se connecter">
</form>
</div> </div>
</div> </div>
{% if dVueErreur is not empty %} {% if dVueErreur is not empty %}

@ -3,7 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Success</title> <title>Success</title>
<link rel="stylesheet" type="text/css" href="../public/css/inscription_success.css"> <link rel="stylesheet" type="text/css" href="public/css/inscription_success.css">
</head> </head>
<body> <body>
<h1>Inscription effectuée avec succès, vous pouvez désormais vous connecter</h1> <h1>Inscription effectuée avec succès, vous pouvez désormais vous connecter</h1>
@ -15,7 +15,7 @@
</div> </div>
<script> <script>
setTimeout(function () { setTimeout(function () {
window.location.href = "../index.php"; window.location.href = ".";
}, 5000); }, 5000);
</script> </script>

@ -1,13 +1,13 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr"> <html lang="fr">
<head> <head>
<link rel="stylesheet" type="text/css" href="css/menu.css"> <link rel="stylesheet" type="text/css" href="public/css/menu.css">
</head> </head>
<nav class="navbar-container"> <nav class="navbar-container">
<div class="logo-container"> <div class="logo-container">
<a href="index.php"> <a href="accueil">
<img src="assets/logo.png" alt="Logo" height="70px"> <img src="public/assets/logo.png" alt="Logo" height="70px">
</a> </a>
</div> </div>
<div class="bars"> <div class="bars">
@ -19,18 +19,18 @@
<li class="nav-link"><a href="#">A propos</a></li> <li class="nav-link"><a href="#">A propos</a></li>
<li class="nav-link"><a href="#">Evenements</a></li> <li class="nav-link"><a href="#">Evenements</a></li>
<li class="nav-link"><a href="index.php?action=consultOffers">Offres</a></li> <li class="nav-link"><a href="consultOffers">Offres</a></li>
<li class="nav-link"><a href="#">Nous contacter</a></li> <li class="nav-link"><a href="#">Nous contacter</a></li>
</ul> </ul>
<ul class="nav-items"> <ul class="nav-items">
<!-- Afficher boutons de connexion et d'inscription --> <!-- Afficher boutons de connexion et d'inscription -->
{% if nom and prenom %} {% if nom and prenom %}
<!-- Afficher bouton de déconnexion --> <!-- Afficher bouton de déconnexion -->
<a href="index.php?action=deconnexion" class="button">Déconnexion</a> <a href="deconnexion" class="button">Déconnexion</a>
{% else %} {% else %}
<div class="login-register"> <div class="login-register">
<a href="index.php?action=connection" class="button">Connexion</a> <a href="connection" class="button">Connexion</a>
<a href="index.php?action=inscription" class="button button2">Inscription</a> <a href="inscription" class="button button2">Inscription</a>
</div> </div>
{% endif %} {% endif %}

@ -1,52 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Offre Detail</title>
<link rel="stylesheet" href="css/offreDetail.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<header>
{% include "menu.html" %}
</header>
<div id="titleDiv" class="jumbotron text-center">
<img src="assets/michelin.png" alt="Logo" height="70px">
<h1>Developpeur Fullstack</h1>
<img src="assets/location.png">
<p>Paris</p>
<div id="key" class="row justify-content-center">
<div class="col-md-2">
<p>CDI</p>
</div>
<div class="col-md-3">
<p>Experience: Non spécifié</p>
</div>
<div class="col-md-3">
<p>Etudes: Bac+2</p>
</div>
</div>
</div>
<p>Offre Proposée par marvin marbout</p>
<p>Publiée le 15/17/2023</p>
<h3>Description de l'offre</h3>
<div id="description" class="container">
<p>
Accompagné(e) par nos experts au sein d'une équipe pluridisciplinaire, tu conçois et développes des solutions innovantes répondant aux besoins de nos clients.
A ce titre, tu utilises les langages, frameworks et outils actuels.
Les méthodes agiles ainsi que les pratiques DevOps, l'intégration et le déploiement continu sont ton quotidien.
Tu interviens dans un environnement technique très riche. Rejoindre CGI dans le cadre de ton stage de fin détudes,
cest intervenir sur des projets denvergure et variés en lien avec ta formation tout en bénéficiant dun accompagnement de proximité pour construire ta carrière.
Cest aussi sinvestir auprès dune entreprise responsable qui propose de nombreux avantages (prise en charge jusquà 100% des transports en commun) et partager des moments de convivialité pour ensuite nous rejoindre en CDI !
</p>
</div>
<!-- Include Bootstrap JS and jQuery -->
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.2/dist/js/bootstrap.min.js"></script>
</body>
</html>
Loading…
Cancel
Save