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
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]

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

@ -49,3 +49,12 @@
.row3 img {
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']))
{
$login = self::nettoyerString($_SESSION['login']);
$role = self::nettoyerString($_SESSION['role']);
return new Alumni()
return $_SESSION["utilisateur"];
}
return null;
}

@ -1,112 +1,103 @@
<?php
namespace App\controleur;
namespace App\controleur;
use App\router\AltoRouter;
use App\metier\Alumni;
use App\controleur\UtilisateurControleur;
use App\controleur\MembreControleur;
use App\controleur\AdminControleur;
class FrontControleur
{
public function __construct()
{
global $twig;
session_start();
$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();
$action = array();
$id=array();
$id = array();
$twig->render("accueil.html",[]);
if(!$match)
{
if (!$match) {
$dVueErreur[] = "Error 404 Page not found";
global $twig;
$dVueErreur[] = "Error 404 Page not found";
echo $twig->render("erreur.html", ['dVueErreur' => $dVueErreur]);
}
if($match)
{
if ($match) {
$controller = $match['target'] ?? NULL;
$action = $match['params']['actions'] ?? NULL;
$action = $match['params']['action'] ?? NULL;
$id = $match['params']['id'] ?? NULL;
}
try {
if ($controller == "MembreControleur") {
if ($_SESSION["utilisateur"] != NULL) {
echo 'not implemented';
return;
}
}
try{
$controller = new $controller;
}
catch (Error $error)
{
$dVueErreur = ['Erreur : Action inconnue'];
$twig->render('erreur.html', ['dVueErreur' => $dVueErreur]);
}
if ($controller == "AdminControleur") {
$Alumni = $_SESSION["utilisateur"];
if ($Alumni->getRole() != "Admin") {
$dVueErreur = ["Erreur : Vous n'avez pas les privileges pour cette action"];
}
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]);
} else{
new MembreControleur();
}
}else{
new UtilisateurControleur();
}
}
}*/
}

@ -5,36 +5,12 @@ class MembreControleur extends UtilisateurControleur
{
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()
{
session_destroy();
echo "on est passes ici";
header('Location: index.php?action=accueil');
exit();
}

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

@ -44,7 +44,7 @@ class AlumniGateway
}
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
LEFT JOIN Profil ON Alumni.id = Profil.alumni
WHERE Alumni.mail = :e';

@ -17,7 +17,7 @@ class ImageSaver
$name = substr($_FILES[$filename]["name"], 0, 45);
$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[]=$name;
return $return;

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

@ -2,6 +2,9 @@
namespace App\modele;
use App\metier\Alumni;
use App\metier\Offre;
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\EvenementGateway;
use App\gateway\OffreGateway;
use App\metier\Evenement;
use App\metier\Alumni;
use App\gateway\AlumniGateway;
use App\gateway\ProfilGateway;
use App\metier\Offre;
class UtilisateurModele
{
private $con;
protected $offreGw;
public function __construct()
{
$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
if (password_verify($mdp, $utilisateur->getPassword())) {
// Le mot de passe est correct, retournez l'utilisateur
session_start();
//session_start();
return $utilisateur;
} else {
// Le mot de passe est incorrect, renvoyez null
@ -179,4 +184,83 @@ class UtilisateurModele
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>
<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 rel="stylesheet" href="css/offres.css">
<link rel="stylesheet" href="public/css/offres.css">
</head>
<body>
<header>
@ -14,13 +14,13 @@
<div class="container mt-4 d-flex align-content-center ">
<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 class="container mt-4">
<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>
<div class="form-group mr-3 flex-column justify-content-left">
@ -79,7 +79,7 @@
</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>
@ -87,13 +87,16 @@
<h1 id="titrePrincipal">Offres d'emploi</h1>
{% if message is defined %}
<p>{{ message }}</p>
{% endif %}
<div class="col-md-8 offset-md-2">
{% for offre in offres %}
<article class="mb-4">
<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>
</div>
<div class="row2">
@ -102,12 +105,11 @@
</div>
<div class="row3">
<img src="assets/location.png" alt="location">
<img src="public/assets/location.png" alt="location">
<p>{{offre.getVille()}}</p>
</div>
<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 >
</button>
onclick="window.location.href = 'displayOffer&id={{offre.getId()}}'">En savoir plus</button>
</article>
{% endfor %}
@ -121,9 +123,9 @@
<!--
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 %}
<a href="index.php?action=consultOffers&page={{ i }}&{{valContrat}}{{valExp}}{{ValEtudes}}">{{ i }}</a>
<a href="consultOffers&page={{ i }}&{{valContrat}}{{valExp}}{{ValEtudes}}">{{ i }}</a>
{% endif %}
{% endfor %}
{% 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">
<!-- 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"><img src="uploads/{{offre.getImg()}}" alt="Offer Image" class="img-fluid"></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="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>Offreur:</strong> {{ offre.getOffreur().getNom() }}</li>
<li class="list-group-item"><strong>Nom de l'offre:</strong> {{ offre.getNom() }}</li>

@ -3,15 +3,18 @@
<head>
<meta charset="UTF-8" />
<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>
</head>
<!-- balise center provisoire c'est pour mes yeux -->
<body>
<header>
{% include 'menu.html' %}
</header>
<div style="text-align: center">
<h1>Accueil</h1>
<!-- Bienvenu suivie du mail des informations sessions de l'utilisateur -->
<p>{% if prenom and nom %}
@ -33,6 +36,8 @@
</div>
</div>
{% endif %}
</div>
</body>
</html>

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

@ -15,7 +15,7 @@
<main class="container mt-4">
<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 %}
{% for error in tabError %}

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<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>
</head>
@ -21,7 +21,7 @@
<p>{{value}}</p>
{% endfor %}
{% endif %}
<form action="../index.php" method="POST">
<form action="accueil" method="POST">
<input type="submit" value="Retourner à l'accueil">
</form>
</body>

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<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="css/evenement.css">
<link rel="stylesheet" href="public/css/evenement.css">
</head>
<body>

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

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<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>
<body>
<h1>Inscription effectuée avec succès, vous pouvez désormais vous connecter</h1>
@ -15,7 +15,7 @@
</div>
<script>
setTimeout(function () {
window.location.href = "../index.php";
window.location.href = ".";
}, 5000);
</script>

@ -1,13 +1,13 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<link rel="stylesheet" type="text/css" href="css/menu.css">
<link rel="stylesheet" type="text/css" href="public/css/menu.css">
</head>
<nav class="navbar-container">
<div class="logo-container">
<a href="index.php">
<img src="assets/logo.png" alt="Logo" height="70px">
<a href="accueil">
<img src="public/assets/logo.png" alt="Logo" height="70px">
</a>
</div>
<div class="bars">
@ -19,18 +19,18 @@
<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="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>
</ul>
<ul class="nav-items">
<!-- Afficher boutons de connexion et d'inscription -->
{% if nom and prenom %}
<!-- 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 %}
<div class="login-register">
<a href="index.php?action=connection" class="button">Connexion</a>
<a href="index.php?action=inscription" class="button button2">Inscription</a>
<a href="connection" class="button">Connexion</a>
<a href="inscription" class="button button2">Inscription</a>
</div>
{% 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