From c9486c885c90c0f1b9add1a4ae3587403c6f4480 Mon Sep 17 00:00:00 2001 From: machaonix Date: Mon, 29 Nov 2021 22:24:03 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20des=20classes=20m=C3=A9tiers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DAL/Connection.php | 33 ++++++ DAL/gateways/CompteGateway.php | 89 ++++++++++++++++ DAL/gateways/Gateway.php | 7 ++ DAL/gateways/ListeGateway.php | 182 +++++++++++++++++++++++++++++++++ DAL/gateways/TacheGateway.php | 102 ++++++++++++++++++ metier/Compte.php | 59 +++++++++++ metier/Tache.php | 55 ++++++++++ metier/TodoList.php | 57 +++++++++++ 8 files changed, 584 insertions(+) create mode 100644 DAL/Connection.php create mode 100644 DAL/gateways/CompteGateway.php create mode 100644 DAL/gateways/Gateway.php create mode 100644 DAL/gateways/ListeGateway.php create mode 100644 DAL/gateways/TacheGateway.php create mode 100644 metier/Compte.php create mode 100644 metier/Tache.php create mode 100644 metier/TodoList.php diff --git a/DAL/Connection.php b/DAL/Connection.php new file mode 100644 index 0000000..b4ce991 --- /dev/null +++ b/DAL/Connection.php @@ -0,0 +1,33 @@ +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(); + +} +} + +?> diff --git a/DAL/gateways/CompteGateway.php b/DAL/gateways/CompteGateway.php new file mode 100644 index 0000000..0e0fad9 --- /dev/null +++ b/DAL/gateways/CompteGateway.php @@ -0,0 +1,89 @@ +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 (devrais avoir une taille entre 0 et 1) + * Finalité : Récupérer un Compte 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; + } + } +} diff --git a/DAL/gateways/Gateway.php b/DAL/gateways/Gateway.php new file mode 100644 index 0000000..ebe6752 --- /dev/null +++ b/DAL/gateways/Gateway.php @@ -0,0 +1,7 @@ +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 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 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 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 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 créer par 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 avec les tâches de la page + * Finalité : Actualiser les taches contenues dans en fonction de et + */ + 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; + } +} diff --git a/DAL/gateways/TacheGateway.php b/DAL/gateways/TacheGateway.php new file mode 100644 index 0000000..ecfd604 --- /dev/null +++ b/DAL/gateways/TacheGateway.php @@ -0,0 +1,102 @@ +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 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 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 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; + } +} diff --git a/metier/Compte.php b/metier/Compte.php new file mode 100644 index 0000000..934c243 --- /dev/null +++ b/metier/Compte.php @@ -0,0 +1,59 @@ +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; + } +} diff --git a/metier/Tache.php b/metier/Tache.php new file mode 100644 index 0000000..872875c --- /dev/null +++ b/metier/Tache.php @@ -0,0 +1,55 @@ +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; + } +} diff --git a/metier/TodoList.php b/metier/TodoList.php new file mode 100644 index 0000000..d8a8ec7 --- /dev/null +++ b/metier/TodoList.php @@ -0,0 +1,57 @@ +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; + } +}