Action listerEvenement fonctionnelle, manque gestion d'erreur/et qlqs autres trucs surement

evenements
Clément Verdoire 1 year ago
parent f6ef3626c1
commit 2be9ba66f2

@ -4,7 +4,7 @@
/** Chargement config */ /** Chargement config */
require_once __DIR__ . '/../src/config/config.php'; require_once __DIR__ . '/../src/config/config.php';
require __DIR__ . '/../vendor/autoload.php'; require __DIR__ . '/../vendor/autoload.php';
require_once __DIR__ . '/../src/TwigExtensions.php';
/** Configuration twig */ /** Configuration twig */
$loader = new \Twig\Loader\FilesystemLoader(__DIR__ . '/../templates'); $loader = new \Twig\Loader\FilesystemLoader(__DIR__ . '/../templates');
@ -13,4 +13,5 @@ $twig = new \Twig\Environment($loader, [
'debug' => true 'debug' => true
]); ]);
$cont = new \App\controleur\FrontControleur(); $cont = new \App\controleur\FrontControleur();

@ -0,0 +1,32 @@
// change la possibilité d'entrer une ville pour l'offre
// cas où l'offre est à pourvoir en full remote
document.getElementById("fullRemote").addEventListener("change", function () {
var villeInput = document.getElementById("ville");
villeInput.disabled = this.checked;
//var ville = document.getElementById('')
});
document.addEventListener("DOMContentLoaded", function() {
const form = document.querySelector("form");
const submitButton = document.querySelector('input[type="submit"]');
// Fonction pour vérifier si tous les champs du formulaire sont remplis
function checkFormFields() {
const inputs = form.querySelectorAll('input, textarea, select');
let allFieldsFilled = true;
inputs.forEach(function(input) {
if (!input.value) {
allFieldsFilled = false;
}
});
submitButton.disabled = !allFieldsFilled;
}
// Écoute les événements de saisie dans les champs du formulaire
form.addEventListener("input", checkFormFields);
// Appelle la fonction initiale pour la première vérification
checkFormFields();
});

@ -0,0 +1,24 @@
<?php
namespace App;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
class TwigExtensions extends AbstractExtension
{
public function getFilters()
{
return [
new TwigFilter('base64', [$this, 'twig_base64_filter']),
];
}
public function twig_base64_filter($source)
{
if ($source !== null) {
return base64_encode($source);
}
return '';
}
}

@ -2,13 +2,26 @@
namespace App\controleur; namespace App\controleur;
use App\gateway\Connection;
use App\gateway\ImageGateway;
use App\gateway\OffreGateway;
use App\metier\Image;
use App\modele\NiveauEtudes;
use App\modele\Offre;
use App\modele\OffreModele;
use App\modele\TypeContrat;
use App\modele\ImageModele;
use App\modele\UtilisateurModele;
use App\TwigExtensions;
class UtilisateurControleur class UtilisateurControleur
{ {
public function __construct() public function __construct()
{ {
global $twig; global $twig;
if (!isset($_REQUEST["action"])) { if (!isset($_REQUEST["action"])) {
$action = NULL; //$action = NULL;
$action = "listerEvenement";
} else { } else {
$action = \App\config\Validation::nettoyerString($_REQUEST["action"]); $action = \App\config\Validation::nettoyerString($_REQUEST["action"]);
} }
@ -20,12 +33,28 @@ class UtilisateurControleur
case "connection": case "connection":
$this->connection(); $this->connection();
break; break;
case "inscription": // case "inscription":
$this->inscription(); // $this->inscription();
// break;
case "consulterOffres":
$this->consulterOffres();
break; break;
case "consulterProfilLimite": case "consulterProfilLimite":
$this->consulterProfilLimite(); $this->consulterProfilLimite();
break; break;
case "creerOffre":
//echo "test";
$this->creerOffre();
break;
// case "publierOffre":
// $this->publierOffre();
// break;
case "testAction":
$this->testAction();
break;
case "listerEvenement":
$this->listerEvenement();
break;
default: default:
$dVueErreur[] ="Action inconnue ou non autorisée"; $dVueErreur[] ="Action inconnue ou non autorisée";
echo $twig->render("erreur.html",['dVueErreur' => $dVueErreur]); echo $twig->render("erreur.html",['dVueErreur' => $dVueErreur]);
@ -39,39 +68,39 @@ class UtilisateurControleur
echo $twig->render('connexion.html', []); echo $twig->render('connexion.html', []);
} }
protected function inscription() // protected 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
if (isset($_POST['email'], $_POST['username'], $_POST['password'])) { // if (isset($_POST['email'], $_POST['username'], $_POST['password'])) {
$email = \App\config\Validation::nettoyerString($_POST['email']); // $email = \App\config\Validation::nettoyerString($_POST['email']);
$motDePasse = \App\config\Validation::nettoyerString($_POST['password']); // $motDePasse = \App\config\Validation::nettoyerString($_POST['password']);
// Validez les données d'inscription, par exemple, vérifiez si l'email est unique // // Validez les données d'inscription, par exemple, vérifiez si l'email est unique
// Vous pouvez également effectuer d'autres validations nécessaires // // Vous pouvez également effectuer d'autres validations nécessaires
$userModel = new \App\modele\UtilisateurModele(); // $userModel = new \App\modele\UtilisateurModele();
$nouvelUtilisateur = $userModel->inscription($email, $motDePasse); // $nouvelUtilisateur = $userModel->inscription($email, $motDePasse);
// Si l'inscription a réussi, redirigez l'utilisateur vers une page de confirmation // // Si l'inscription a réussi, redirigez l'utilisateur vers une page de confirmation
// Vous pouvez également gérer les erreurs ici en cas d'échec de l'inscription // // Vous pouvez également gérer les erreurs ici en cas d'échec de l'inscription
if ($nouvelUtilisateur instanceof \App\modele\Alumni) { // if ($nouvelUtilisateur instanceof \App\metier\Alumni) {
// L'inscription a réussi, redirigez l'utilisateur vers une page de confirmation // // L'inscription a réussi, redirigez l'utilisateur vers une page de confirmation
// par exemple : // // par exemple :
header('Location: index.php?action=inscription_success'); // header('Location: index.php?action=inscription_success');
exit(); // exit();
} else { // } else {
// L'inscription a échoué, ajoutez un message d'erreur // // L'inscription a échoué, ajoutez un message d'erreur
$dVueErreur[] = "L'inscription a échoué, veuillez réessayer."; // $dVueErreur[] = "L'inscription a échoué, veuillez réessayer.";
} // }
} // }
// Affichez le formulaire d'inscription ou les erreurs le cas échéant // // Affichez le formulaire d'inscription ou les erreurs le cas échéant
echo $twig->render('inscription.html', ['dVueErreur' => $dVueErreur]); // echo $twig->render('inscription.html', ['dVueErreur' => $dVueErreur]);
} // }
protected function accueil() protected function accueil()
{ {
@ -84,4 +113,53 @@ class UtilisateurControleur
//TODO //TODO
} }
protected function consulterOffres()
{
global $twig;
echo $twig->render('offres.html', []);
}
protected function creerOffre()
{
global $twig;
echo $twig->render('CreerOffre.html', []);
// echo '<img src="data:image/jpg;base64,' . base64_encode($imglist[0]->getBlob() ). '" height="100" width="100" alt="mon image" title="image"/>';*/
}
// protected function publierOffre()
// {
// $imgMdl = new ImageModele;
// $offreMdl = new OffreModele();
// $img = $imgMdl->publierImage();
// $offreMdl->publierOffre($img);
// global $twig;
// echo $twig->render('Offres.html', [$offreMdl->getOffres()]);
// }
protected function testAction()
{
echo "test action ";
$con = new Connection("mysql:host=localhost;dbname=dbAlica",'test','test');
$offreGw = new OffreGateway($con);
if($offreGw->getMaxid() == NULL)
echo "max id == NULL";
else echo "max id != NULL";
}
protected function listerEvenement()
{
$mdl = new \App\modele\UtilisateurModele();
$evenements = $mdl->getEvenement();
global $twig;
$twig->addExtension(new TwigExtensions());
echo $twig->render('evenement.html', ['evenements' => $evenements]);
}
} }
?>

@ -1,6 +1,8 @@
<?php <?php
namespace App\gateway; namespace App\gateway;
use PDO; use PDO;
use App\metier\Alumni;
use App\metier\Role;
class AlumniGateway class AlumniGateway
{ {
@ -59,8 +61,7 @@ class AlumniGateway
$this->con->executeQuery($query, array( $this->con->executeQuery($query, array(
':i' => array($id, PDO::PARAM_INT) ':i' => array($id, PDO::PARAM_INT)
)); ));
$res=$this->con->getResults(); return $this->con->getResults();
return new Alumni($res[0]['mail'],$res[0]['id'],$res[0]['mdp'],$res[0]['role']);
} }
public function findByEmail(string $email){ public function findByEmail(string $email){

@ -1,5 +1,7 @@
<?php <?php
namespace App\gateway; namespace App\gateway;
use App\metier\Evenement;
class EvenementGateway class EvenementGateway
{ {
private \App\gateway\Connection $con; private \App\gateway\Connection $con;
@ -15,4 +17,11 @@ class EvenementGateway
$query='INSERT INTO Evenement VALUES ()'; $query='INSERT INTO Evenement VALUES ()';
$this->con->executeQuery($query, array()); $this->con->executeQuery($query, array());
} }
public function getAllEvenement(){
$query='SELECT * FROM Evenement';
$this->con->executeQuery($query);
$res=$this->con->getResults();
return $res;
}
} }

@ -0,0 +1,84 @@
<?php
namespace App\gateway;
use App\metier\Image;
use PDO;
class ImageGateway
{
private Connection $con;
/**
* @param $con
*/
public function __construct(Connection $con)
{
$this->con = $con;
}
public function insertImage(Image $img)
{
$query = "INSERT INTO Image (`nom`, `taille`, `type`, `blob`) VALUES ( :n, :t, :ty, :b)";
$this->con->executeQuery($query, array(
':n' => array($img->getName(), PDO::PARAM_STR),
':t' => array($img->getTaille(), PDO::PARAM_STR),
':ty' => array($img->getType(), PDO::PARAM_STR),
':b' => array($img->getBlob(), PDO::PARAM_STR)
));
}
public function delete(int $id)
{
$query = 'DELETE FROM Image WHERE id=:i';
$this->con->executeQuery($query, array(
':i' => array($id, PDO::PARAM_INT)
));
}
public function obtenirParId(int $id) : array
{
$query = 'SELECT * FROM Image WHERE id=:i';
$this->con->executeQuery($query, array(
':i' => array($id, PDO::PARAM_INT)
));
return $this->con->getResults();
}
public function trouverParNom(string $nom)
{
$query = 'SELECT * FROM Image WHERE nom=:n';
$this->con->executeQuery($query, array(
':n' => array($nom, PDO::PARAM_STR)
));
return $this->con->getResults();
}
public function getNewId() : int
{
$query = 'SELECT MAX(id) FROM Image';
$this->con->executeQuery($query);
$res = $this->con->getResults();
if ($res[0]['MAX(id)'] === null) {
return 1;
}
return intval($res[0]['MAX(id)'])+1;
}
public function obtenirToutesImages()
{
$query = 'SELECT * FROM Image';
$this->con->executeQuery($query);
$res = $this->con->getResults();
$array = [];
foreach ($res as $r) {
$array[] = new Image($this->getNewId(),$r['nom'], $r['taille'], $r['type'], $r['blob']);
}
return $array;
}
}
?>

@ -1,5 +1,8 @@
<?php <?php
namespace App\gateway; namespace App\gateway;
use App\metier\Alumni;
use App\metier\Offre;
class OffreGateway class OffreGateway
{ {
private \App\gateway\Connection $con; private \App\gateway\Connection $con;
@ -15,4 +18,50 @@ class OffreGateway
$query='INSERT INTO Offre VALUES ()'; $query='INSERT INTO Offre VALUES ()';
$this->con->executeQuery($query, array()); $this->con->executeQuery($query, array());
} }
public function getMaxid() : int
{
$query = 'SELECT MAX(id) FROM Offre';
$this->con->executeQuery($query, array());
$res = $this->con->getResults();
if($res[0]['MAX(id)'] == null )
return 1;
else
return intval($res[0]['MAX(id)'])+1;
}
public function ajouterOffre(Offre $offre)
{
$query = 'INSERT INTO Offre VALUES (:i, :o, :t, :d, :img, :ty, :v, :e, :desc, :pro, :exp, :niv, :mail, :num, :web, :remote)';
$this->con->executeQuery($query, array(
':i' => array($offre->getId(), \PDO::PARAM_INT),
':o' => array($offre->getOffreurId(), \PDO::PARAM_STR),
':t' => array($offre->getNom(), \PDO::PARAM_STR),
':d' => array($offre->getDescription(), \PDO::PARAM_STR),
'img' => array($offre->getImgId(), \PDO::PARAM_INT),
':ty' => array($offre->getTypeContrat(), \PDO::PARAM_STR),
':v' => array($offre->getVille(), \PDO::PARAM_STR),
':e' => array($offre->getEntreprise(), \PDO::PARAM_STR),
':desc' => array($offre->getDescriptifPoste(), \PDO::PARAM_STR),
':pro' => array($offre->getProfil(), \PDO::PARAM_STR),
':exp' => array($offre->getExperience(), \PDO::PARAM_STR),
':niv' => array($offre->getNiveauEtudes(), \PDO::PARAM_STR),
':mail' => array($offre->getMailContact(), \PDO::PARAM_STR),
':num' => array($offre->getNumero(), \PDO::PARAM_STR),
':web' => array($offre->getSiteUrl(), \PDO::PARAM_STR),
':remote' => array($offre->isRemote(), \PDO::PARAM_BOOL)
));
}
public function obtenirOffres() : array
{
$alGw = new AlumniGateway($this->con);
$imgGw = new ImageGateway($this->con);
$query = 'SELECT * FROM Offre';
$this->con->executeQuery($query, array());
$res = $this->con->getResults();
return $res;
}
} }

@ -1,8 +1,11 @@
<?php <?php
namespace App\modele; namespace App\metier;
class Alumni{ class Alumni{
private int $id;
/** /**
* @var string Email * @var string Email
*/ */
@ -23,8 +26,9 @@ class Alumni{
* @param string $motDePasse * @param string $motDePasse
* @param String $role * @param String $role
*/ */
public function __construct(string $email, string $motDePasse, String $role) public function __construct(int $id,string $email, string $motDePasse, String $role)
{ {
$this->id = $id;
$this->email = $email; $this->email = $email;
$this->motDePasse = $motDePasse; $this->motDePasse = $motDePasse;
$this->role = $role; $this->role = $role;
@ -50,4 +54,9 @@ class Alumni{
{ {
return $this->role; return $this->role;
} }
public function getId() : int
{
return $this->id;
}
} }

@ -0,0 +1,118 @@
<?php
namespace App\metier;
use App\metier\Alumni;
class Evenement
{
/**
* @var int Identifiant
*/
private int $id;
/**
* @var Alumni Organisateur
*/
private Alumni $organisateur;
/**
* @var string Titre Evenement
*/
private string $titre;
/**
* @var string Description de l'evenement
*/
private string $description;
/**
* @var string Date de l'evenement
*/
private string $date;
/**
* @var int Nombre maximal d'inscrits
*/
private int $nbPlaceMax;
/**
* @var Image Image de l'evenement
*/
private Image $image;
/**
* @param int $id
* @param Alumni $organisateur
* @param string $titre
* @param string $description
* @param string $date
* @param int $nbPlaceMax
* @param Image $image
*/
public function __construct(int $id, Alumni $organisateur, string $titre, string $description, string $date, int $nbPlaceMax, Image $image)
{
$this->id = $id;
$this->organisateur = $organisateur;
$this->titre = $titre;
$this->description = $description;
$this->date = $date;
$this->nbPlaceMax = $nbPlaceMax;
$this->image = $image;
}
/**
* @return int
*/
public function getId(): int
{
return $this->id;
}
/**
* @return Alumni
*/
public function getOrganisateur(): Alumni
{
return $this->organisateur;
}
/**
* @return string
*/
public function getTitre(): string
{
return $this->titre;
}
/**
* @return string
*/
public function getDescription(): string
{
return $this->description;
}
/**
* @return string
*/
public function getDate(): string
{
return $this->date;
}
/**
* @return int
*/
public function getNbPlaceMax(): int
{
return $this->nbPlaceMax;
}
/**
* @return Image
*/
public function getImage(): Image
{
return $this->image;
}
}

@ -0,0 +1,63 @@
<?php
namespace App\metier;
class Image
{
private int $id;
private string $name;
private string $taille;
private string $type;
private string $blob;
/**
* @param int $id
* @param string $name
* @param string $taille
* @param string $type
* @param string $blob
*/
public function __construct(int $id, string $name, string $taille, string $type, string $blob)
{
$this->id = $id;
$this->name = $name;
$this->taille = $taille;
$this->type = $type;
$this->blob = $blob;
}
public function getName(): string
{
return $this->name;
}
public function getTaille(): string
{
return $this->taille;
}
public function getType(): string
{
return $this->type;
}
public function getBlob(): string
{
return $this->blob;
}
public function getId() : string
{
return $this->id;
}
public function toString() : string {
return "Image : " . $this->name . " " . $this->taille . " " . $this->type . " blob " . $this->blob;
}
}

@ -1,28 +1,8 @@
<?php <?php
namespace App\modele; namespace App\metier;
enum TypeContrat use App\metier\Alumni;
{ use App\metier\Profil;
case CDI;
case CDD;
case Alternance;
case Stage;
}
enum ProfilRecherche
{
case Junior;
case Senior;
case Indifferent;
}
enum NiveauEtudes: string
{
case Bac2 = "Bac+2";
case Bac3 = "Bac+3";
case Bac5 = "Bac+5";
case Indifferent = "Indifferent";
}
class Offre class Offre
{ {
@ -49,13 +29,12 @@ class Offre
/** /**
* @var string Url de l'image * @var string Url de l'image
*/ */
private string $imageUrl;
/** /**
* @var \App\metier\TypeContrat Type de contrat * @var \App\metier\TypeContrat Type de contrat
*/ */
private \App\metier\TypeContrat $typeContrat; //private \App\metier\TypeContrat $typeContrat;
private string $typeContrat;
/** /**
* @var string Ville * @var string Ville
*/ */
@ -74,8 +53,8 @@ class Offre
/** /**
* @var \App\metier\ProfilRecherche Profil recherché * @var \App\metier\ProfilRecherche Profil recherché
*/ */
private \App\metier\ProfilRecherche $profil; //private \App\metier\ProfilRecherche $profil;
private string $profil;
/** /**
* @var string Experience * @var string Experience
*/ */
@ -84,7 +63,10 @@ class Offre
/** /**
* @var \App\metier\NiveauEtudes Niveau d'études * @var \App\metier\NiveauEtudes Niveau d'études
*/ */
private \App\metier\NiveauEtudes $niveauEtudes; //private \App\metier\NiveauEtudes $niveauEtudes;
private string $niveauEtudes;
private Image $img;
/** /**
* @var string Email de contact * @var string Email de contact
@ -92,7 +74,6 @@ class Offre
private string $mailContact; private string $mailContact;
/** /**
* @var string Numero
*/ */
private string $numero; private string $numero;
@ -101,30 +82,45 @@ class Offre
*/ */
private string $siteUrl; private string $siteUrl;
private bool $remote;
/** /**
* @param int $id * @param int $id
* @param Alumni $offreur * @param Alumni $offreur
* @param string $nom * @param string $nom
* @param string $description * @param string $description
* @param string $imageUrl * @param string $imageUrl
* @param \App\metier\TypeContrat $typeContrat
* @param string $ville * @param string $ville
* @param string $entreprise * @param string $entreprise
* @param string $descriptifPoste * @param string $descriptifPoste
* @param Profil $profil * @param Profil $profil
* @param string $experience * @param string $experience
* @param \App\metier\NiveauEtudes $niveauEtudes
* @param string $mailContact * @param string $mailContact
* @param string $numero * @param string $numero
* @param string $siteUrl * @param string $siteUrl
*/ */
public function __construct(int $id, Alumni $offreur, string $nom, string $description, string $imageUrl, \App\metier\TypeContrat $typeContrat, string $ville, string $entreprise, string $descriptifPoste, Profil $profil, string $experience, \App\metier\NiveauEtudes $niveauEtudes, string $mailContact, string $numero, string $siteUrl) public function __construct(int $id,
Alumni $offreur,
string $nom,
string $description,
Image $img,
string $typeContrat,
string $ville,
string $entreprise,
string $descriptifPoste,
string $profil,
string $experience,
string $niveauEtudes,
string $mailContact,
string $numero,
string $siteUrl,
bool $remote)
{ {
$this->id = $id; $this->id = $id;
$this->offreur = $offreur; $this->offreur = $offreur;
$this->nom = $nom; $this->nom = $nom;
$this->description = $description; $this->description = $description;
$this->imageUrl = $imageUrl; $this->img = $img;
$this->typeContrat = $typeContrat; $this->typeContrat = $typeContrat;
$this->ville = $ville; $this->ville = $ville;
$this->entreprise = $entreprise; $this->entreprise = $entreprise;
@ -135,6 +131,7 @@ class Offre
$this->mailContact = $mailContact; $this->mailContact = $mailContact;
$this->numero = $numero; $this->numero = $numero;
$this->siteUrl = $siteUrl; $this->siteUrl = $siteUrl;
$this->remote = $remote;
} }
public function getId(): int public function getId(): int
@ -147,6 +144,11 @@ class Offre
return $this->offreur; return $this->offreur;
} }
public function getOffreurId() : int
{
return $this->offreur->getId();
}
public function getNom(): string public function getNom(): string
{ {
return $this->nom; return $this->nom;
@ -157,14 +159,19 @@ class Offre
return $this->description; return $this->description;
} }
public function getImageUrl(): string public function getImgId(): int
{ {
return $this->imageUrl; return $this->img->getId();
} }
public function getTypeContrat(): \App\metier\TypeContrat public function getImg() : Image
{ {
return $this->typeContrat; return $this->img;
}
public function getBlob() : string
{
return $this->img->getBlob();
} }
public function getVille(): string public function getVille(): string
@ -182,21 +189,11 @@ class Offre
return $this->descriptifPoste; return $this->descriptifPoste;
} }
public function getProfil(): Profil
{
return $this->profil;
}
public function getExperience(): string public function getExperience(): string
{ {
return $this->experience; return $this->experience;
} }
public function getNiveauEtudes(): \App\metier\NiveauEtudes
{
return $this->niveauEtudes;
}
public function getMailContact(): string public function getMailContact(): string
{ {
return $this->mailContact; return $this->mailContact;
@ -207,8 +204,18 @@ class Offre
return $this->numero; return $this->numero;
} }
public function isRemote(): bool
{
return $this->remote;
}
public function getSiteUrl(): string public function getSiteUrl(): string
{ {
return $this->siteUrl; return $this->siteUrl;
} }
public function toString() : string
{
return "Offre :,{$this->nom}, {$this->typeContrat},{$this->ville} {$this->entreprise}";
}
} }

@ -1,5 +1,5 @@
<?php <?php
namespace App\modele; namespace App\metier;
enum Role enum Role
{ {
case Admin; case Admin;

@ -1,95 +0,0 @@
<?php
namespace App\modele;
class Evenement
{
/**
* @var int Identifiant
*/
private int $id;
/**
* @var string Nom Evenement
*/
private string $nom;
/**
* @var string Date de l'evenement
*/
private string $date;
/**
* @var Alumni Organisateur
*/
private Alumni $organisateur;
/**
* @var array Liste des Participants
*/
private array $participants;
/**
* @var int Nombre maximal d'inscrits
*/
private int $nbInscriptionMax;
/**
* @var string Url de l'image
*/
private string $imageUrl;
/**
* @param int $id
* @param string $nom
* @param string $date
* @param Alumni $organisateur
* @param array $participants
* @param int $nbInscriptionMax
* @param string $imageUrl
*/
public function __construct(int $id, string $nom, string $date, Alumni $organisateur, array $participants, int $nbInscriptionMax, string $imageUrl)
{
$this->id = $id;
$this->nom = $nom;
$this->date = $date;
$this->organisateur = $organisateur;
$this->participants = $participants;
$this->nbInscriptionMax = $nbInscriptionMax;
$this->imageUrl = $imageUrl;
}
public function getId(): int
{
return $this->id;
}
public function getNom() : string
{
return $this->nom;
}
public function getDate() : string
{
return $this->date;
}
public function getParticipants() : array
{
return $this->participants;
}
public function getOrganisateur(): Alumni
{
return $this->organisateur;
}
public function getNbInscriptionMax(): int
{
return $this->nbInscriptionMax;
}
public function getImageUrl(): string
{
return $this->imageUrl;
}
}

@ -0,0 +1,53 @@
<?php
namespace App\modele;
use App\gateway\Connection;
use App\metier\Image;
use App\gateway\ImageGateway;
class ImageModele
{
private ImageGateway $gw;
public function __construct()
{
$this->gw = new ImageGateway(new Connection("mysql:host=localhost;dbname=dbAlica","test","test"));
}
public function publierImage() : Image
{
$img = new Image($this->gw->getNewId(),
$_FILES["image"]["name"],
$_FILES["image"]["size"],
$_FILES["image"]["type"],
file_get_contents($_FILES["image"]["tmp_name"]));
$this->gw->insertImage($img);
return $img;
}
public function insertImage(Image $img)
{
$this->gw->insertImage($img);
}
public function obtenirParId(int $id)
{
$this->gw->obtenirParId($id);
$res = $this->gw->obtenirToutesImages();
return new Image($this->gw->getNewId(),$res[0]['nom'], $res[0]['taille'], $res[0]['type'], $res[0]['blob']);
}
public function obtenirToutesImages() : array
{
$this->gw->obtenirToutesImages();
$res = $this->gw->obtenirToutesImages();
foreach ($res as $r) {
$array[] = new Image($this->gw->getNewId(),$r['nom'], $r['taille'], $r['type'], $r['blob']);
}
return $array;
}
}

@ -0,0 +1,119 @@
<?php
namespace App\modele;
use App\gateway\AlumniGateway;
use App\gateway\Connection;
use App\gateway\ImageGateway;
use App\gateway\OffreGateway;
use App\metier\Alumni;
use App\metier\Offre;
use App\metier\Image;
class OffreModele
{
private OffreGateway $offreGw;
public function __construct()
{
$this->offreGw = new OffreGateway(new Connection("mysql:host=localhost;dbname=dbAlica", "test", "test"));
}
public function publierOffre(Image $img)
{
$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"];
/* $typeContrat = match ($_POST["typeContrat"]) {
"Stage" => TypeContrat::Stage,
"CDI" => TypeContrat::CDI,
"CDD" => TypeContrat::CDD,
"Alternance" => TypeContrat::Alternance,
default => TypeContrat::CDD,
};*/
$niveauEtudes = $_POST["education"];
/* $niveauEtudes = match ($_POST["education"]) {
"Bac+2" => NiveauEtudes::Bac2,
"Bac+3" => NiveauEtudes::Bac3,
"Bac+5" => NiveauEtudes::Bac5,
default => NiveauEtudes::Indifferent,
};*/
if(isset($_POST["fullRemote"]))
{
$remote = true;
}
else {
$remote = false;
}
// à la place de NULL passer id utilisateur créateur offre
$offre = new Offre($this->offreGw->getMaxid(),
new Alumni(12,"test.mail@icloud.fr","password","admin"),
$nom,
$desc,
$img,
$typeContrat,
$ville,
$entreprise,
$descposte,
$profilRecherche,
$exp,
$niveauEtudes,
$mail,
$num,
$site,
$remote);
$this->offreGw->ajouterOffre($offre);
}
public function obtenirOffres() : array
{
$alGw = new AlumniGateway(new Connection("mysql:host=localhost;dbname=dbAlica", "test", "test"));
$imgGw = new ImageGateway(new Connection("mysql:host=localhost;dbname=dbAlica", "test", "test"));
$res = $this->offreGw->obtenirOffres();
$offres=[];
foreach ($res as $row)
{
$res = $imgGw->obtenirParId($row['image']);
$img = new Image(intval($res[0]["id"]),$res[0]['nom'], $res[0]['taille'], $res[0]['type'], $res[0]['blob']);
$resal = $alGw->findById($row['offreur']);
$alumni = new Alumni($resal[0]['id'],$resal[0]['mail'],$resal[0]['mdp'],$resal[0]['role']);
$offres[]= new Offre($row['id'],
$alumni,
$row['titre'],
$row['description'],
$img,
$row['typeContrat'],
$row['ville'],
$row["entreprise"],
$row['descriptifPoste'],
$row['profil'],
$row['experience'],
$row['niveauEtudes'],
$row['mailContact'],
$row['numero'],
$row['websiteURL'],
$row['remote']);
}
return $offres;
}
}

@ -1,6 +1,11 @@
<?php <?php
namespace App\modele; namespace App\modele;
use App\metier\Alumni;
use App\metier\Evenement;
use App\metier\Image;
class UtilisateurModele class UtilisateurModele
{ {
/** /**
* @description Charger le flux d'activiter * @description Charger le flux d'activiter
@ -16,13 +21,13 @@ class UtilisateurModele
* @description se connecter * @description se connecter
* @param string email * @param string email
* @param string hash * @param string hash
* @return \App\modele\Alumni * @return \App\metier\Alumni
*/ */
public function Login(string $email,string $hash) : \App\modele\Alumni // public function Login(string $email,string $hash) : \App\metier\Alumni
{ // {
// TO DO // // TO DO
return new \App\modele\Alumni(null,null,null); // return new \App\metier\Alumni(null,null,null);
} // }
/** /**
* @description s'inscrire * @description s'inscrire
@ -31,23 +36,73 @@ class UtilisateurModele
* @param string $pseudo * @param string $pseudo
* @return \Alumni chargé * @return \Alumni chargé
*/ */
public function inscription(string $email, string $hashpassword): \App\modele\Alumni // public function inscription(string $email, string $hashpassword): \App\metier\Alumni
// {
// $dsn = "mysql:host=localhost;dbname=dbAlica";
// $username = "test";
// $password = "test";
// $role = "Utilisateur";
// $con = new \App\gateway\Connection($dsn, $username, $password);
// $gate = new \App\gateway\AlumniGateway($con);
// // Insérez le nouvel utilisateur dans la base de données en utilisant AlumniGateway
// if ($gate->insert($email, $hashpassword, $role)) {
// // L'insertion a réussi, retournez le nouvel utilisateur
// $nouvelUtilisateur = new \App\metier\Alumni($email, $hashpassword, $role);
// return $nouvelUtilisateur;
// } else {
// // L'insertion a échoué, renvoyez un utilisateur vide pour indiquer l'échec
// return new \App\metier\Alumni(null, null, null);
// }
// }
/**
* @Lister les evenements
* @return array evenements
*/
public function getEvenement() : array
{ {
$dsn = "mysql:host=localhost;dbname=dbAlica"; $dsn = "mysql:host=localhost;dbname=dbAlica";
$username = "Dev"; $login = "test";
$password = "Dev"; $mdp = "test";
$role = "Utilisateur"; $con = new \App\gateway\Connection($dsn, $login, $mdp);
$con = new \App\gateway\Connection($dsn, $username, $password); $gate = new \App\gateway\EvenementGateway($con);
$gate = new \App\gateway\AlumniGateway($con); $data = $gate->getAllEvenement();
// Insérez le nouvel utilisateur dans la base de données en utilisant AlumniGateway
if ($gate->insert($email, $hashpassword, $role)) { $gateAlumni = new \App\gateway\AlumniGateway($con);
// L'insertion a réussi, retournez le nouvel utilisateur $dataAlumni = $gateAlumni->findById($data[0]['organisateur']);
$nouvelUtilisateur = new \App\modele\Alumni($email, $hashpassword, $role);
return $nouvelUtilisateur; $gateImage = new \App\gateway\ImageGateway($con);
} else { $image = $gateImage->obtenirParId($data[0]['image']);
// L'insertion a échoué, renvoyez un utilisateur vide pour indiquer l'échec
return new \App\modele\Alumni(null, null, null); $organisateur = new \App\metier\Alumni(
$dataAlumni[0]['id'],
$dataAlumni[0]['mail'],
$dataAlumni[0]['mdp'],
$dataAlumni[0]['role']
);
$img = new \App\metier\Image(
$image[0]['id'],
$image[0]['nom'],
$image[0]['taille'],
$image[0]['type'],
$image[0]['blob']
);
foreach($data as $row)
{
$evenement[] = new \App\metier\Evenement(
$row['id'],
$organisateur,
$row['titre'],
$row['description'],
$row['date'],
$row['nbPlaceMax'],
$img
);
} }
return $evenement;
} }
} }

@ -0,0 +1,21 @@
<!DOCTYPE html>
<html>
<head>
<title>Liste des Événements</title>
</head>
<body>
<h1>Liste des Événements</h1>
<ul>
{% for evenement in evenements %}
<li>
<h2>{{ evenement.titre }}</h2>
<p><strong>Organisateur:</strong> {{ evenement.organisateur.nom }}</p>
<p><strong>Date:</strong> {{ evenement.date }}</p>
<p><strong>Description:</strong> {{ evenement.description }}</p>
<img src="data:image/png;base64,{{ evenement.getImage().getBlob() | base64 }}" width="250px">
<p><strong>Places disponibles:</strong> {{ evenement.nbPlaceMax }}</p>
</li>
{% endfor %}
</ul>
</body>
</html>
Loading…
Cancel
Save