Ajout bootstrap + corrections propreté du code

evenements
Clément Verdoire 1 year ago
parent ec76db2afc
commit a2a4f2006e

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 KiB

@ -76,4 +76,19 @@ class Validation
} }
return false; return false;
} }
public static function validerEvenement(string $titre, string $description, string $date, int $nbPlaceMax, string $img) : bool
{
if(!empty($titre) && !empty($description) && !empty($date) && !empty($nbPlaceMax) && !empty($img))
{
if(self::validerIntPossitif($nbPlaceMax))
{
if(self::validateImage($img))
{
return true;
}
}
}
return false;
}
} }

@ -1,20 +1,13 @@
<?php <?php
namespace App\controleur; namespace App\controleur;
use App\config\Validation; use App\config\Validation;
use App\gateway\Connection; use App\gateway\Connection;
use App\gateway\ImageGateway;
use App\gateway\ImageSaver; use App\gateway\ImageSaver;
use App\gateway\OffreGateway; use App\gateway\OffreGateway;
use App\metier\Image;
use App\modele\NiveauEtudes;
use App\modele\Offre;
use App\modele\OffreModele; use App\modele\OffreModele;
use App\modele\TypeContrat;
use App\modele\ImageModele; use App\modele\ImageModele;
use App\modele\UtilisateurModele; use App\modele\UtilisateurModele;
use App\TwigExtensions;
class UtilisateurControleur class UtilisateurControleur
{ {
@ -25,7 +18,7 @@ class UtilisateurControleur
//$action = NULL; //$action = NULL;
$action = "listerEvenement"; $action = "listerEvenement";
} else { } else {
$action = \App\config\Validation::nettoyerString($_REQUEST["action"]); $action = Validation::nettoyerString($_REQUEST["action"]);
} }
switch ($action) { switch ($action) {
case NULL: case NULL:
@ -35,9 +28,6 @@ class UtilisateurControleur
case "connection": case "connection":
$this->connection(); $this->connection();
break; break;
// case "inscription":
// $this->inscription();
// break;
case "consulterOffres": case "consulterOffres":
$this->consulterOffres(); $this->consulterOffres();
break; break;
@ -45,12 +35,8 @@ class UtilisateurControleur
$this->consulterProfilLimite(); $this->consulterProfilLimite();
break; break;
case "creerOffre": case "creerOffre":
//echo "test";
$this->creerOffre(); $this->creerOffre();
break; break;
// case "publierOffre":
// $this->publierOffre();
// break;
case "testAction": case "testAction":
$this->testAction(); $this->testAction();
break; break;
@ -82,40 +68,6 @@ class UtilisateurControleur
echo $twig->render('connexion.html', []); echo $twig->render('connexion.html', []);
} }
// protected function inscription()
// {
// global $twig;
// $dVueErreur = []; // Tableau pour stocker les erreurs, le cas échéant
// if (isset($_POST['email'], $_POST['username'], $_POST['password'])) {
// $email = \App\config\Validation::nettoyerString($_POST['email']);
// $motDePasse = \App\config\Validation::nettoyerString($_POST['password']);
// // Validez les données d'inscription, par exemple, vérifiez si l'email est unique
// // Vous pouvez également effectuer d'autres validations nécessaires
// $userModel = new \App\modele\UtilisateurModele();
// $nouvelUtilisateur = $userModel->inscription($email, $motDePasse);
// // 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
// if ($nouvelUtilisateur instanceof \App\metier\Alumni) {
// // L'inscription a réussi, redirigez l'utilisateur vers une page de confirmation
// // par exemple :
// header('Location: index.php?action=inscription_success');
// exit();
// } else {
// // L'inscription a échoué, ajoutez un message d'erreur
// $dVueErreur[] = "L'inscription a échoué, veuillez réessayer.";
// }
// }
// // Affichez le formulaire d'inscription ou les erreurs le cas échéant
// echo $twig->render('inscription.html', ['dVueErreur' => $dVueErreur]);
// }
protected function accueil() protected function accueil()
{ {
global $twig; global $twig;
@ -167,7 +119,7 @@ class UtilisateurControleur
protected function listerEvenement() protected function listerEvenement()
{ {
$mdl = new \App\modele\UtilisateurModele(); $mdl = new UtilisateurModele();
$evenements = $mdl->getEvenement(); $evenements = $mdl->getEvenement();
global $twig; global $twig;
@ -176,41 +128,37 @@ class UtilisateurControleur
protected function creerEvenement() protected function creerEvenement()
{ {
if(isset($_FILES["image"])) global $twig;
{
//$imgMdl = new ImageModele;
//$img = $imgMdl->publierImage();
if (isset($_FILES["image"])) {
$img = ImageSaver::SaveImage('image'); $img = ImageSaver::SaveImage('image');
$mdl = new \App\modele\UtilisateurModele(); if (!Validation::validerEvenement($_POST["titre"], $_POST["description"], $_POST["date"], $_POST["nbPlaceMax"], $img[1])) {
$mdl = new UtilisateurModele();
$mdl->ajouterEvenement($_POST["titre"], $_POST["description"], $_POST["date"], $_POST["nbPlaceMax"], $img[1]);
$mdl->ajouterEvenement($img[1]); $this->listerEvenement();
} else {
global $twig; $dVueErreur[] ="Erreur lors de la création de l'évènement";
$evenements = $mdl->getEvenement(); echo $twig->render("erreur.html",['dVueErreur' => $dVueErreur]);
echo $twig->render('evenement.html', ['evenements' => $evenements]); }
} } else {
else
{
global $twig;
echo $twig->render('creerEvenement.html', []); echo $twig->render('creerEvenement.html', []);
} }
} }
protected function supprimerEvenement() protected function supprimerEvenement()
{ {
$mdl = new \App\modele\UtilisateurModele(); $mdl = new UtilisateurModele();
$mdl->deleteEvenement($_GET["id"]); $mdl->deleteEvenement($_GET["id"]);
global $twig; $this->listerEvenement();
$evenements = $mdl->getEvenement();
echo $twig->render('evenement.html', ['evenements' => $evenements]);
} }
protected function avoirDetailEvenement() protected function avoirDetailEvenement()
{ {
$mdl = new \App\modele\UtilisateurModele(); $mdl = new UtilisateurModele();
$evenement = $mdl->getEvenementById($_GET["id"]); $evenement = $mdl->getEvenementById($_GET["id"]);
global $twig; global $twig;
@ -219,17 +167,16 @@ class UtilisateurControleur
protected function rechercherEvenement() protected function rechercherEvenement()
{ {
$mdl = new \App\modele\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 = \App\config\Validation::nettoyerString($_POST["recherche"]); $recherche = Validation::nettoyerString($_POST["recherche"]);
$evenements = $mdl->getEvenementByTitre($recherche); $evenements = $mdl->getEvenementByTitre($recherche);
} }
global $twig; global $twig;
echo $twig->render('evenement.html', ['evenements' => $evenements]); echo $twig->render('evenement.html', ['evenements' => $evenements]);
} }
} }

@ -40,9 +40,9 @@ class EvenementGateway
public function getAllEvenement() public function getAllEvenement()
{ {
$query='SELECT * FROM Evenement'; $query = 'SELECT * FROM Evenement ORDER BY id DESC';
$this->con->executeQuery($query); $this->con->executeQuery($query);
$res=$this->con->getResults(); $res = $this->con->getResults();
return $res; return $res;
} }

@ -1,69 +1,24 @@
<?php <?php
namespace App\modele; namespace App\modele;
use App\metier\Alumni;
use App\gateway\Connection;
use App\gateway\EvenementGateway;
use App\metier\Evenement; use App\metier\Evenement;
use App\metier\Image;
use App\config;
class UtilisateurModele class UtilisateurModele
{ {
/** private $con;
* @description Charger le flux d'activiter
* @return array flux public function __construct()
*/
public function LoadFeed() : array
{ {
// TO DO global $dsn, $username, $password;
return []; $this->con = new Connection($dsn, $username, $password);
} }
/**
* @description se connecter
* @param string email
* @param string hash
* @return \App\metier\Alumni
*/
// public function Login(string $email,string $hash) : \App\metier\Alumni
// {
// // TO DO
// return new \App\metier\Alumni(null,null,null);
// }
/**
* @description s'inscrire
* @param string email
* @param string hash
* @param string $pseudo
* @return \Alumni chargé
*/
// 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);
// }
// }
public function getEvenement() : array public function getEvenement() : array
{ {
global $dsn, $username, $password; $gate = new EvenementGateway($this->con);
$con = new \App\gateway\Connection($dsn, $username, $password);
$gate = new \App\gateway\EvenementGateway($con);
$gateImage = new \App\gateway\ImageGateway($con);
$data = $gate->getAllEvenement(); $data = $gate->getAllEvenement();
@ -71,8 +26,7 @@ class UtilisateurModele
foreach($data as $row) foreach($data as $row)
{ {
$evenement[] = new Evenement(
$evenement[] = new \App\metier\Evenement(
$row['id'], $row['id'],
$row['organisateur'], $row['organisateur'],
$row['titre'], $row['titre'],
@ -85,17 +39,9 @@ class UtilisateurModele
return $evenement; return $evenement;
} }
public function ajouterEvenement(string $img) public function ajouterEvenement(string $titre, string $description, string $date, int $nbPlaceMax, string $img)
{ {
global $dsn, $username, $password; $gate = new EvenementGateway($this->con);
$con = new \App\gateway\Connection($dsn, $username, $password);
$gate = new \App\gateway\EvenementGateway($con);
$titre = $_POST["titre"];
$description = $_POST["description"];
$date = $_POST["date"];
$nbPlaceMax = $_POST["nbPlaceMax"];
$evenement = new Evenement( $evenement = new Evenement(
$gate->getNewId(), $gate->getNewId(),
@ -112,25 +58,17 @@ class UtilisateurModele
public function deleteEvenement(int $id) public function deleteEvenement(int $id)
{ {
global $dsn, $username, $password; $gate = new EvenementGateway($this->con);
$con = new \App\gateway\Connection($dsn, $username, $password);
$gate = new \App\gateway\EvenementGateway($con);
$gate->deleteEvenement($id); $gate->deleteEvenement($id);
} }
public function getEvenementById(int $id) : Evenement public function getEvenementById(int $id) : Evenement
{ {
global $dsn, $username, $password; $gate = new EvenementGateway($this->con);
$con = new \App\gateway\Connection($dsn, $username, $password);
$gate = new \App\gateway\EvenementGateway($con);
$data = $gate->findById($id); $data = $gate->findById($id);
$evenement = new Evenement(
$evenement = new \App\metier\Evenement(
$data[0]['id'], $data[0]['id'],
$data[0]['organisateur'], $data[0]['organisateur'],
$data[0]['titre'], $data[0]['titre'],
@ -145,11 +83,7 @@ class UtilisateurModele
public function getEvenementByTitre(string $titre) : array public function getEvenementByTitre(string $titre) : array
{ {
global $dsn, $username, $password; $gate = new EvenementGateway($this->con);
$con = new \App\gateway\Connection($dsn, $username, $password);
$gate = new \App\gateway\EvenementGateway($con);
//$gateImage = new \App\gateway\ImageGateway($con);
$data = $gate->findByTitle($titre); $data = $gate->findByTitle($titre);
@ -157,9 +91,7 @@ class UtilisateurModele
foreach($data as $row) foreach($data as $row)
{ {
//$imgRaw = $gateImage->obtenirParId($row['image']); $evenement[] = new Evenement(
$evenement[] = new \App\metier\Evenement(
$row['id'], $row['id'],
$row['organisateur'], $row['organisateur'],
$row['titre'], $row['titre'],
@ -169,6 +101,7 @@ class UtilisateurModele
$row['image'] $row['image']
); );
} }
return $evenement; return $evenement;
} }
} }

@ -1,29 +1,49 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Créer un Événement</title> <title>Créer un Événement</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head> </head>
<body> <body>
<h1>Créer un Événement</h1> <div class="container mt-5">
<form action="index.php?action=creerEvenement" method="post" enctype="multipart/form-data"> <h1 class="text-center">Créer un Événement</h1>
<form action="index.php?action=creerEvenement" method="post" enctype="multipart/form-data">
<label for="titre">Titre de l'Événement :</label>
<input type="text" id="titre" name="titre" required><br><br> <div class="form-group">
<label for="titre">Titre de l'Événement :</label>
<label for="description">Description de l'Événement :</label> <input type="text" class="form-control" id="titre" name="titre" required>
<textarea id="description" name="description" rows="4" required></textarea><br><br> </div>
<label for="date">Date de l'Événement :</label> <div class="form-group">
<input type="date" id="date" name="date" required><br><br> <label for="description">Description de l'Événement :</label>
<textarea class="form-control" id="description" name="description" rows="4" required></textarea>
<label for="nbPlaceMax">Nombre maximal d'inscrits :</label> </div>
<input type="number" id="nbPlaceMax" name="nbPlaceMax" required><br><br>
<div class="form-group">
<input type="file" name="image" id="image" required> <label for="date">Date de l'Événement :</label>
<input type="date" class="form-control" id="date" name="date" required>
<br> </div>
<input type="submit" value="Créer l'Événement">
</form> <div class="form-group">
<label for="nbPlaceMax">Nombre maximal d'inscrits :</label>
<input type="number" class="form-control" id="nbPlaceMax" name="nbPlaceMax" required>
</div>
<div class="form-group">
<label for="image">Image de l'Événement :</label>
<input type="file" class="form-control-file" name="image" id="image" required>
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" value="Créer l'Événement">
</div>
</form>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.3/dist/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body> </body>
</html> </html>

@ -31,16 +31,18 @@
<li class="list-group-item"> <li class="list-group-item">
<div class="infos"> <div class="infos">
<h2>{{ evenement.titre }}</h2> <h2>{{ evenement.titre }}</h2>
<p><strong>Organisateur:</strong> {{ evenement.organisateurId}}</p> <p><strong>Organisateur:</strong> {{ evenement.getNomOrganisateur() }}</p>
<p><strong>Date:</strong> {{ evenement.date }}</p> <p><strong>Date:</strong> {{ evenement.date }}</p>
<p><strong>Description:</strong> {{ evenement.description }}</p> <p><strong>Description:</strong> {{ evenement.description }}</p>
<img src="uploads/{{evenement.getImage()}}" width="250px" class="img-fluid"> <img src="uploads/{{ evenement.getImage() }}" width="250px" class="img-fluid" alt="{{ evenement.titre }}">
<p><strong>Places disponibles:</strong> {{ evenement.nbPlaceMax }}</p> <p><strong>Places disponibles:</strong> {{ evenement.nbPlaceMax }}</p>
<a href="../public/index.php?action=avoirDetailEvenement&id={{ evenement.id }}" class="btn btn-primary">Détails</a> <a href="../public/index.php?action=avoirDetailEvenement&id={{ evenement.id }}" class="btn btn-primary">Détails</a>
</div> </div>
<a href="../public/index.php?action=supprimerEvenement&id={{ evenement.id }}" id="deleteButton"> <form action="../public/index.php?action=supprimerEvenement&id={{ evenement.id }}" method="post">
<img src="assets/close.png" alt="Supprimer" width="20px"> <button type="submit" class="btn btn-primary" id="deleteButton">
</a> <img src="assets/close.png" alt="Supprimer" width="20px">
</button>
</form>
</li> </li>
{% endfor %} {% endfor %}
{% else %} {% else %}

Loading…
Cancel
Save