Ajout des classes métiers

main
machaonix 3 years ago
parent 4fed04027e
commit c9486c885c

@ -0,0 +1,33 @@
<?php
class Connection extends PDO {
private $stmt;
public function __construct(string $dsn, string $username, string $password) {
parent::__construct($dsn,$username,$password);
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
/** * @param string $query
* @param array $parameters *
* @return bool Returns `true` on success, `false` otherwise
*/
public function executeQuery(string $query, array $parameters = []) : bool{
$this->stmt = parent::prepare($query);
foreach ($parameters as $name => $value) {
$this->stmt->bindValue($name, $value[0], $value[1]);
}
return $this->stmt->execute();
}
public function getResults() : array {
return $this->stmt->fetchall();
}
}
?>

@ -0,0 +1,89 @@
<?php
require_once("metier/Compte.php");
require_once("DAL/gateways/ListeGateway.php");
class CompteGateway
{
// Attributs
private $conn;
// Constructeur
public function __construct($conn)
{
$this->conn = $conn;
}
/*
* Paramètre : comptreAInserer => Objet de type compte déstiné à être mémorisé
* Retour : True si la requette a été bien éxécuter. Sinon false
* Finalité : Enregistrer en base de données un Compte
*/
public function inserer(Compte $compteAInserer) : bool
{
$requette = "INSERT INTO _Compte(pseudonyme, dateCreation, motDePasse)
VALUSES(:pseudo, :date, :mdp)";
return $this->conn->executeQuerry($requette, [
":pseudo" => [$compteAInserer->getPseudonyme(), PDO::PARAM_STR],
":date" => ["STR_TO_DATE(".$compteAInserer->getDateCreation().")", PDO::PARAM_STR],
":mdp" => [$compteAInserer->getMotDePasse(), PDO::PARAM_STR]
]);
}
/*
* Paramètre : compteAEditer => Compte à éditer en base de données
* Retour : True si la requette a été bien éxécuter. Sinon false
* Finalité : Éditer un Compte identifié par son pseudonyme en base de données
*/
public function modifier(Compte $compteAModifier)
{
$requette = "UPDATE _Compte SET pseudonyme=:pseudo, dateCreation=:date, motDePasse=:mdp";
return $this->conn->executeQuerry($requette, [
":pseudo" => [$compteAModifier->getPseudonyme(), PDO::PARAM_STR],
":date" => ["STR_TO_DATE(".$compteAModifier->getDateCreation().")", PDO::PARAM_STR],
":mdp" => [$compteAModifier->getMotDePasse(), PDO::PARAM_STR]
]);
}
/*
* Paramètres : compteASupprimer => compte à supprimer de la base de données
* Retour : True si la requette a été bien éxécuter. Sinon false
* Finalité : Supprimer un compte de la base de données
*/
public function supprimer($compteASupprimer)
{
$requette = "DELETE FROM _Compte WHERE pseudonyme=:id";
return $this->conn->executeQuerry($requette, [
":id" => [$compteAModifier->getPseudonyme(), PDO::PARAM_INT]
]);
}
/*
* Paramètres : pseudo => Pseudonyme du compte a récupérer en base de données
* Retour : Un tableau contenant tout les compte avec le pseudonyme <pseudo> (devrais avoir une taille entre 0 et 1)
* Finalité : Récupérer un Compte <pseudo> en base de données et l'instancier.
*/
public function getCompteParPseudo(string $pseudo) : iterable
{
$gw = new ListeGateway($this->conn());
$requete = "SELECT * FROM _Compte WHERE pseudonyme=:pseudo";
if(!$this->conn->executeQuerry($requete, [":pseudo" => [$pseudo, PDO::PARAM_STR]]))
{
return array();
}
$comptesSQL = $this->conn->getResults();
$comptes = array();
$listes = array();
foreach($comptesSQL as $compte)
{
$comptes[] = new Compte(
$compte["pseudonyme"],
$compte["dateCreation"],
$gw->getListeParCreateur($compte["pseudonyme"]),
$compte["motDePasse"],
);
return $comptes;
}
}
}

@ -0,0 +1,7 @@
<?php
interface Gateway
{
public function inserer($itemAInserer);
public function modifier($itemAModifier);
public function supprimer($itemASupprimer);
}

@ -0,0 +1,182 @@
<?php
require_once("metier/Tache.php");
require_once("metier/TodoList.php");
require_once("DAL/gateways/TacheGateway.php");
class ListeGateway
{
// Attributs
private $conn;
// Constructeurs
public function __construct($conn)
{
$this->conn = $conn;
}
/*
* Paramètre : l => TodoList à inserer en base de données
* Retour : True si la requette à résussie à s'éxécuter. Sinon False
* Finalité : Inserer une TodoList en base de données
*/
public function inserer(TodoList $l) : bool
{
$requete = "INSERT INTO _TodoList(nom, dateCreation, createur)
VALUES(:nom, :date, :createur)";
return $this->conn->executeQuery($requete, [
":nom" => [$l->getNom(), PDO::PARAM_STR],
":date" => ["STR_TO_DATE(".$l->getDateCreation().")", PDO::PARAM_STR],
":createur" => [$l->getCreateur(), PDO::PARAM_STR]
]);
}
/*
* Paramètres : l => TodoList à supprimer de la base de données
* Retour : True si la requette à résussie à s'éxécuter. Sinon False
* Finalité : Supprimer une liste <l> de la base de données
*/
public function supprimer(TodoList $l) : bool
{
$requete = "DELETE FROM _TodoList WHERE listeID=:id";
return $this->conn->executeQuery($requete,[
":id"=>[$l->getID(), PDO::PARAM_INT]
]);
}
/*
* Paramètres : l => TodoList à éditer en base de données
* Retour : True si la requette à résussie à s'éxécuter. Sinon False
* Finalité : Éditer la TodoList <l> en base de données
*/
public function modifier(TodoList $l) : bool
{
$requete="UPDATE _TodoList SET
nom=:n, public=:p";
return $this->conn->executeQuery($requete, [
":n" => [$l->getNom(), PDO::PARAM_STR],
]);
}
/*
* Paramètres : page => Numéro de la page à afficher
* nbTache => Nombre de tâches à afficher par pages
* Retour : Retourne un tableau de listes de taille maximale <nbTache> ordoné par date de création
* Finalité : Récuperer les todoLists en bases de données par ordre de création et les instancier
*/
public function listeParDate(int $page, int $nbTache) : iterable
{
$gwTache = new TacheGateway($this->conn);
$lites = array();
$requete = "SELECT * FROM _TodoList ORDER BY dateCreation LIMIT :p+:n, :n";
$isOK=$this->conn->executeQuery($requete, [
":p" => [$page-1, PDO::PARAM_INT],
":n" => [$nbTache, PDO::PARAM_INT]
]);
if(!$isOK)
{
return array();
}
$res = $this->conn->getResults();
foreach($res as $liste)
{
$listes[] = new TodoList(
$liste["listeID"],
$liste["nom"],
$liste["Createur"],
$liste["dateCreation"],
$gwTache->getTachesParIDListe($liste["listeID"])
);
}
return $listes;
}
/*
* Paramètres : page => Numéro de la page à afficher
* nbTache => Nombre de tâches à afficher par pages
* Retour : Retourne un tableau de listes de taille maximale <nbTache> ordoné par nom de liste (ordre lexicographique)
* Finalité : Récuperer les todoLists en bases de données par ordre de lexicographique et les instancier
*/
public function listeParNom(int $page, int $nbListes) : iterable
{
$gwTache = new TacheGateway($this->conn);
$lites = array();
$requete = "SELECT * FROM _TodoList ORDER BY nom LIMIT :p+:n, :n";
$isOK=$this->conn->executeQuery($requete, [
":p" => [$page-1, PDO::PARAM_INT],
":n" => [$nbListes, PDO::PARAM_INT]
]);
if(!$isOK)
{
return array();
}
$res = $this->conn->getResults();
foreach($res as $liste)
{
$listes[] = new TodoList(
$liste["listeID"],
$liste["nom"],
$liste["Createur"],
$liste["dateCreation"],
$gwTache->getTachesParIDListe($liste["listeID"], 1, 10)
);
}
return $listes;
}
/*
* Paramètres : page => Numéro de la page à afficher
* nbTache => Nombre de tâches à afficher par pages
* createur => Pseudonyme du créateur des listes enregistrés en base de données
* Retour : Retourne un tableau de listes de taille maximale <nbTache> créer par <createur> de liste
* Finalité : Récuperer les todoLists en bases de données créer par créateur et les instancier
*/
public function getListeParCreateur(int $page, int $nbListes, string $createur) : iterable
{
$gwTache = new TacheGateway($this->conn);
$lites = array();
$requete = "SELECT * FROM _TodoList WHERE Createur = :c LIMIT :p+:n, :n";
$isOK=$this->conn->executeQuery($requete, [
":c" => [$createur, PDO::PARAM_STR],
":p" => [$page-1, PDO::PARAM_INT],
":n" => [$nbListes, PDO::PARAM_INT]
]);
if(!$isOK)
{
return array();
}
$res = $this->conn->getResults();
foreach($res as $liste)
{
$listes[] = new TodoList(
$liste["listeID"],
$liste["nom"],
$liste["Createur"],
$liste["dateCreation"],
$gwTache->getTachesParIDListe($liste["listeID"], 1, 10)
);
}
return $listes;
}
/*
* Paramètres : l => TodoList à acctualiser
* pages => Numéro de la page à afficher
* nbTache => Nombre de tâches à afficher par pages
* Retour : Retourne la liste <l> avec les <nbTaches> tâches de la page <page>
* Finalité : Actualiser les taches contenues dans <l> en fonction de <page> et <nbTaches>
*/
public function ActualiserListe(TodoList $l, int $page, int $nbTaches) : TodoList
{
$gwTache = new TacheGateway($this->conn);
$l->setTaches($gwTaches->getTachesParIDListe($l->getID(), $page, $nbTaches));
return $l;
}
}

@ -0,0 +1,102 @@
<?php
require_once('metier/Tache.php');
class TacheGateway
{
// Attributs
private $conn;
// constructeur
public function __construct(Connection $conn)
{
$this->conn = $conn;
}
/*
* Paramètre : tacheAInserer => Tache à enregistrer en base de données
* Retour : True si la requete c'est correctement éxécuter. Sinon false
* Finalité : Enregister en base de données une tache.
*/
public function inserer(Tache $tacheAInserer) : bool
{
$requette = "INSERT INTO _Tache(NomTache, TacheFaite, Commentaire) VALUES(
:nom, :fait, :commentaire
)";
return $this->conn->executeQuery($requette, [
':nom' => [$tacheAInserer->nom, PDO::PARAM_STR],
':fait'=> [$tacheAInserer->estFait, PDO::PARAM_BOOL],
':commentaire' => [$tacheAInserer->commentaire, PDO::PARAM_STR],
]);
}
/*
* Paramètre : tacheAModifier => Tache à éditer en base de données
* Retour : True si la requete c'est correctement éxécuter. Sinon false
* Finalité : Édite la tache <tacheAModifier> en base de données.
*/
public function modifier(Tache $tacheAModifier)
{
$requette = "UPDATE _Tache SET
NomTache = :nom,
Commentaire = :commentaire,
TacheFaite = :fait
WHERE
tacheID = :id";
return $this->conn->executeQuery($requette,[
':nom' => [$tacheAModifier->nom, PDO::PRAM_STR],
':commentaire' => [$tacheAModifier->commentaire, PDO::PARAM_STR],
':fait' => [$tacheAModifier->estFait, PDO::PARAM_BOOL]
]);
}
/*
* Paramètre : tacheASupprimer => Tache à supprimer en base de données
* Retour : True si la requete c'est correctement éxécuter. Sinon false
* Finalité : Supprime la tache <tacheASupprimer> en base de données.
*/
public function supprimer(Tache $tacheASupprimer)
{
$requette = "DELETE FROM _Tache WHERE tacheID=:id";
return $this->conn->executeQuery($requette,
[':id', [$tacheASupprimer->tacheID]]
);
}
/*
* Paramètre : l => Identifiant de la TodoList.
* page => Numéro de la page à retourner
* nbTache => Nombre de tache par page
* Retour : Retourne les taches de la liste <l> par orde de nom de tache
* Finalité : Récuperer les Taches d'une liste et les instancier
*/
public function getTachesParIDListe(int $l, int $page, int $nbTache) : iterable
{
$requete = "SELECT * FROM _Tache WHERE listID=:id ORDER BY NomTache LIMIT :p+:n, :n";
if(!$this->conn->executeQuery($requete,[
":id" => [$l->getID(), PDO::PARAM_INT],
":p" => [$page-1, PDO::PARAM_INT],
":n" => [$nbTache, PDO::PARAM_INT]
]))
{
return array();
}
$res = $this->conn->getResults();
$taches = array();
foreach($res as $tache)
{
$taches[] = new Tache(
$tache["NomTache"],
$tache["TacheFaite"],
$tache["Commentaire"],
$tache["tacheID"]
);
}
return $taches;
}
}

@ -0,0 +1,59 @@
<?php
class Compte
{
// Attributs
private $pseudonyme;
private $dateCreation;
private $listes;
private $motDePasse;
//Constructeur
public function __construct(string $nom, string $dateCreation=null, iterable $lists = array(), string $motDePasse)
{
$this->pseudonyme = $nom;
$this->dateCreation = $dateCreation == null ? date("j/m/Y") : $dateCreation;
$this->listes = $lists;
$this->motDePasse = $motDePasse;
}
//Accesseurs/Mutatteurs
public function getPseudonyme() : string
{
return $this->pseudonyme;
}
public function setPseudonyme(string $nouveauPseudonyme) : void
{
if(!empty($nouveauPseudonyme))
{
$this->pseudonyme = $nouveauPseudonyme;
}
}
public function getDateCreation()
{
return $this->dateCreation;
}
public function getMotDePasse()
{
return $this->motDePasse;
}
public function getListes()
{
return $this->listes;
}
public function setListes(iterable $listes)
{
$this->listes = $listes;
}
public function addListe(TodoList $l)
{
$this->listes[] = $l;
}
}

@ -0,0 +1,55 @@
<?php
class Tache
{
// Attributs
private $nom;
private $fait;
private $commentaire;
private $tacheID;
// Constructeur
public function __construct(string $nom, bool $estFait=false, string $commentaire="", int $tacheID)
{
$this->nom = $nom;
$this->fait = $estFait;
$this->commentaire = $commentaire;
$this->tacheID = $tacheID;
}
// Accesseurs / Mutatteurs
public function getNom() : string
{
return $this->nom;
}
public function setNom(string $nouveauNom)
{
$this->nom = $nouveauNom;
}
public function getCommentaire() : string
{
return $this->commentaire;
}
public function setCommentaire(string $nouveauComm)
{
$this->commentaire = $nouveauComm;
}
public function estFait() : bool
{
return $this->fait;
}
public function setFait(bool $fait)
{
$this->fait = $fait;
}
public function getID() : int
{
return $this->tacheID;
}
}

@ -0,0 +1,57 @@
<?php
class TodoList
{
// Attrubuts
private $nom;
private $createur;
private $dateCreation;
private $id;
private $taches;
// Constructeurs
public function __construct(int $id, string $nom, string $createur, string $dateCreation, iterable $taches)
{
$this->nom = $nom;
$this->createur = $createur;
$this->dateCreation = $dateCreation;
$this->id = $id;
$this->taches = $taches;
}
// Accesseurs / Mutatteurs
public function getNom() : string
{
return $this->nom;
}
public function getDateCreation() : string
{
return $this->dateCreation;
}
public function getCreateur() : string
{
return $this->createur;
}
public function getID() : int
{
return $this->id;
}
public function getTaches() : iterable
{
return $this->taches;
}
public function setTaches(array $taches)
{
$this->taches = $taches;
}
public function addTache(Tache $t)
{
$this->taches[] = $t;
}
}
Loading…
Cancel
Save