evenements
parent
f6ef3626c1
commit
2be9ba66f2
@ -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 '';
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
@ -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,5 +1,5 @@
|
||||
<?php
|
||||
namespace App\modele;
|
||||
namespace App\metier;
|
||||
enum Role
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -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…
Reference in new issue