Loading sql/insertions.sql +6 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,12 @@ STR_TO_DATE('2023-10-16 17:48:48', '%Y-%m-%d %H:%i:%s'), 'A' ); INSERT INTO `CUI_UTILISATEUR` (`UTIL_PSEUDO`, `UTIL_MDP`, `UTIL_EMAIL`, `UTIL_NOM`, `UTIL_PRENOM`, `UTIL_DATE_INSCRIPTION`, `UTIL_TYPE`, `UTIL_STATUT`) VALUES ('test', '$2y$10$KdMnkhAn385H2QYaQy.DvOa8zTpq0X.RigK3uLKY9k60bwHPUJhGC', 'test@test.fr', 'Test', 'Jean', '2023-11-05 12:18:13', 'E', 'A'); -- -------TAG------------- -- INSERT INTO CUI_TAG(TAG_INTITULE, TAG_DESCRIPTION) Loading src/model/ingredientManager.php +36 −4 Original line number Diff line number Diff line Loading @@ -40,6 +40,16 @@ class IngredientManager extends Manager{ return $this->ingredientFromLigne($ligne); } public function getIngredientParNom(string $nom): ?Ingredient{ $resultat = $this->projectionBdd("select ING_ID, ING_INTITULE, ING_DESCRIPTION from CUI_INGREDIENT where lower(ING_INTITULE) = '$nom'"); if(empty($resultat)){ return null; } $ligne = $resultat[0]; return $this->ingredientFromLigne($ligne); } /** * Renvoie tous les ingredients. * Loading Loading @@ -125,8 +135,19 @@ class IngredientManager extends Manager{ * @param string $idRecette l'id de la recette */ public function ajouterIngredientARecette(Ingredient $ingredient, string $idRecette){ //TODO écrire la méthode throw new Exception("not implemented yet"); $ingredientEnBase = self::getIngredientParNom($ingredient->getIntitule()); if(! $ingredientEnBase){ self::creerIngredient($ingredient); $ingredientEnBase = self::getIngredientParNom($ingredient->getIntitule()); } $requete = "INSERT INTO CUI_COMPOSITION (REC_ID, ING_ID) VALUES (?, ?)"; if(! self::requetePrepare($requete, [$idRecette, $ingredientEnBase->getId()])){ throw new Exception("échec de l'ajout d'ingrédient"); } } /** Loading @@ -146,8 +167,19 @@ class IngredientManager extends Manager{ * @param string $idRecette l'id de la recette */ public function supprimerIngredientDeRecette(Ingredient $ingredient, string $idRecette){ //TODO écrire la méthode throw new Exception("not implemented yet"); $ingredientEnBase = self::getIngredientParNom($ingredient->getIntitule()); if(! $ingredientEnBase){ self::creerIngredient($ingredient); $ingredientEnBase = self::getIngredientParNom($ingredient->getIntitule()); } $requete = "DELETE FROM CUI_COMPOSITION WHERE REC_ID = ? AND ING_ID = ?"; if(! self::requetePrepare($requete, [$idRecette, $ingredientEnBase->getId()])){ throw new Exception("échec de la suppression de l'ingrédient de la recette"); } } /** Loading src/model/recetteManager.php +67 −2 Original line number Diff line number Diff line Loading @@ -39,6 +39,26 @@ class RecetteManager extends Manager { return new Recette($titre, $contenu, $resume, $image, $statut, $idAuteur, $categorie, $id, $pseudoAuteur, $date_creation, $date_modification); } private function recetteModifieeFromLigne(array $ligne): RecetteModifiee{ $id = strval($ligne['REC_ID']); $titre = $ligne['REC_MOD_TITRE']; $resume = $ligne['REC_MOD_RESUME']; $contenu = $ligne['REC_MOD_CONTENU']; $image = $ligne['REC_MOD_IMAGE']; $date_creation = $ligne['REC_DATE_CREATION']; $statut = 'M'; $categorie = $ligne['CAT_INTITULE']; $idAuteur = strval($ligne['UTIL_ID']); $pseudoAuteur = $ligne['UTIL_PSEUDO']; $date_modification = $ligne['REC_MOD_DATE_MODIFICATION']; if(is_null($date_modification)){ $date_modification = ''; } return new RecetteModifiee($titre, $contenu, $resume, $image, $statut, $idAuteur, $categorie, $id, $pseudoAuteur, $date_creation, $date_modification); } /** * Renvoie une recette en fonction de son id. * @param string $id Loading Loading @@ -67,8 +87,23 @@ class RecetteManager extends Manager { * @return ?RecetteModifiee */ public function getRecetteModifiee(string $id) : ?RecetteModifiee{ //TODO écrire la méthode throw new Exception('not implemented yet'); $requete = "SELECT REC_ID, REC_MOD_TITRE, REC_MOD_CONTENU, REC_MOD_RESUME, REC_MOD_IMAGE, REC_MOD_DATE_MODIFICATION, CUI_RECETTE_MODIFIEE.CAT_CODE CAT_CODE, UTIL_ID FROM CUI_RECETTE_MODIFIEE JOIN CUI_RECETTE USING(REC_ID) JOIN CUI_CATEGORIE ON CUI_CATEGORIE.CAT_CODE = CUI_RECETTE_MODIFIEE.CAT_CODE JOIN CUI_UTILISATEUR USING (UTIL_ID) WHERE rec_id='1'"; $resultat = self::projectionBdd($requete); if(! isset($resultat[0])) { return null; } $ligne = $resultat[0]; return self::recetteModifieeFromLigne($ligne); } /** Loading Loading @@ -252,6 +287,36 @@ class RecetteManager extends Manager { * @param Recette $recette la recette à supprimer */ public function supprimerRecette(Recette $recette): void{ //TODO supprimer les tags et ingrédients de la recette modifiée $recetteModifiee = self::getRecetteModifiee($recette->getId()); if($recetteModifiee){ // Suppression des tags et des ingrédients foreach($recetteModifiee->getTags() as $tag){ $recetteModifiee->supprimerTag($tag); } foreach($recetteModifiee->getIngredients() as $ingredient){ $recetteModifiee->supprimerIngredient($ingredient); } // Suppression de la recette modifiée $requete = "DELETE FROM CUI_RECETTE_MODIFIEE WHERE REC_ID = ?"; if(self::requetePrepare($requete, [$recette->getId()]) != 1){ throw new Exception("Échec de la suppression de la recette."); } } // Suppression des tags et des ingrédients foreach($recette->getTags() as $tag){ $recette->supprimerTag($tag); } foreach($recette->getIngredients() as $ingredient){ $recette->supprimerIngredient($ingredient); } $requete = "DELETE FROM CUI_RECETTE WHERE REC_ID = ?"; if(self::requetePrepare($requete, [$recette->getId()]) != 1){ Loading src/model/tagManager.php +36 −4 Original line number Diff line number Diff line Loading @@ -41,6 +41,16 @@ class TagManager extends Manager{ return $this->tagFromLigne($ligne); } public function getTagParNom(string $nom): ?Tag{ $resultat = $this->projectionBdd("select TAG_ID, TAG_INTITULE, TAG_DESCRIPTION from CUI_TAG where lower(TAG_INTITULE) = '$nom'"); if(empty($resultat)){ return null; } $ligne = $resultat[0]; return $this->tagFromLigne($ligne); } /** * Renvoie tous les tags. * Loading Loading @@ -127,8 +137,19 @@ class TagManager extends Manager{ * @param string $idRecette l'id de la recette */ public function ajouterTagARecette(Tag $tag, string $idRecette){ //TODO écrire la méthode throw new Exception("not implemented yet"); $tagEnBase = self::getTagParNom($tag->getIntitule()); if(! $tagEnBase){ self::creerTag($tag); $tagEnBase = self::getTagParNom($tag->getIntitule()); } $requete = "INSERT INTO CUI_ETIQUETTAGE (REC_ID, TAG_ID) VALUES (?, ?)"; if(! self::requetePrepare($requete, [$idRecette, $tagEnBase->getId()])){ throw new Exception("échec de l'ajout de tag"); } } /** Loading @@ -149,8 +170,19 @@ class TagManager extends Manager{ * @param string $idRecette l'id de la recette */ public function supprimerTagDeRecette(Tag $tag, string $idRecette){ //TODO écrire la méthode throw new Exception("not implemented yet"); $tagEnBase = self::getTagParNom($tag->getIntitule()); if(! $tagEnBase){ self::creerTag($tag); $tagEnBase = self::getTagParNom($tag->getIntitule()); } $requete = "DELETE FROM CUI_ETIQUETTAGE WHERE REC_ID = ? AND TAG_ID = ?"; if(! self::requetePrepare($requete, [$idRecette, $tagEnBase->getId()])){ throw new Exception("échec de la suppression du tag de la recette"); } } /** Loading test/testsRecettes.php +17 −1 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ function testRecettes() { $manager = new RecetteManager(); $recettes = []; $recettes[] = new Recette('Pain au chocolat', 'lorem ipsum dolor sic amet', 'amet sic dolor ipsum lorem', '', 'A', '2', 'Goûter'); $recettes[] = new Recette('Pain au chocolat', 'lorem ipsum dolor sic amet', 'amet sic dolor ipsum lorem', '', 'V', '2', 'Goûter'); $manager->creerRecette($recettes[0]); $recetteBis = $manager->getDernieresRecettes(1)[0]; Loading @@ -18,5 +18,21 @@ function testRecettes() { assertEquals('Pain au chocolat', $recetteBis->getTitre()); assertEquals('test', $recetteBis->getAuteur()->getPseudo()); $recetteBis->ajouterIngredient(new Ingredient('chocolat')); $ingredients = $recetteBis->getIngredients(); assertEquals(1, count($ingredients)); assertEquals('chocolat', $ingredients[0]->getIntitule()); $recetteBis->ajouterTag(new Tag('viennoiserie')); $tags = $recetteBis->getTags(); assertEquals(1, count($tags)); assertEquals('viennoiserie', $tags[0]->getIntitule()); $manager->supprimerRecette($recetteBis); assertFalse($manager->getRecette($recetteBis->getId())); } No newline at end of file Loading
sql/insertions.sql +6 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,12 @@ STR_TO_DATE('2023-10-16 17:48:48', '%Y-%m-%d %H:%i:%s'), 'A' ); INSERT INTO `CUI_UTILISATEUR` (`UTIL_PSEUDO`, `UTIL_MDP`, `UTIL_EMAIL`, `UTIL_NOM`, `UTIL_PRENOM`, `UTIL_DATE_INSCRIPTION`, `UTIL_TYPE`, `UTIL_STATUT`) VALUES ('test', '$2y$10$KdMnkhAn385H2QYaQy.DvOa8zTpq0X.RigK3uLKY9k60bwHPUJhGC', 'test@test.fr', 'Test', 'Jean', '2023-11-05 12:18:13', 'E', 'A'); -- -------TAG------------- -- INSERT INTO CUI_TAG(TAG_INTITULE, TAG_DESCRIPTION) Loading
src/model/ingredientManager.php +36 −4 Original line number Diff line number Diff line Loading @@ -40,6 +40,16 @@ class IngredientManager extends Manager{ return $this->ingredientFromLigne($ligne); } public function getIngredientParNom(string $nom): ?Ingredient{ $resultat = $this->projectionBdd("select ING_ID, ING_INTITULE, ING_DESCRIPTION from CUI_INGREDIENT where lower(ING_INTITULE) = '$nom'"); if(empty($resultat)){ return null; } $ligne = $resultat[0]; return $this->ingredientFromLigne($ligne); } /** * Renvoie tous les ingredients. * Loading Loading @@ -125,8 +135,19 @@ class IngredientManager extends Manager{ * @param string $idRecette l'id de la recette */ public function ajouterIngredientARecette(Ingredient $ingredient, string $idRecette){ //TODO écrire la méthode throw new Exception("not implemented yet"); $ingredientEnBase = self::getIngredientParNom($ingredient->getIntitule()); if(! $ingredientEnBase){ self::creerIngredient($ingredient); $ingredientEnBase = self::getIngredientParNom($ingredient->getIntitule()); } $requete = "INSERT INTO CUI_COMPOSITION (REC_ID, ING_ID) VALUES (?, ?)"; if(! self::requetePrepare($requete, [$idRecette, $ingredientEnBase->getId()])){ throw new Exception("échec de l'ajout d'ingrédient"); } } /** Loading @@ -146,8 +167,19 @@ class IngredientManager extends Manager{ * @param string $idRecette l'id de la recette */ public function supprimerIngredientDeRecette(Ingredient $ingredient, string $idRecette){ //TODO écrire la méthode throw new Exception("not implemented yet"); $ingredientEnBase = self::getIngredientParNom($ingredient->getIntitule()); if(! $ingredientEnBase){ self::creerIngredient($ingredient); $ingredientEnBase = self::getIngredientParNom($ingredient->getIntitule()); } $requete = "DELETE FROM CUI_COMPOSITION WHERE REC_ID = ? AND ING_ID = ?"; if(! self::requetePrepare($requete, [$idRecette, $ingredientEnBase->getId()])){ throw new Exception("échec de la suppression de l'ingrédient de la recette"); } } /** Loading
src/model/recetteManager.php +67 −2 Original line number Diff line number Diff line Loading @@ -39,6 +39,26 @@ class RecetteManager extends Manager { return new Recette($titre, $contenu, $resume, $image, $statut, $idAuteur, $categorie, $id, $pseudoAuteur, $date_creation, $date_modification); } private function recetteModifieeFromLigne(array $ligne): RecetteModifiee{ $id = strval($ligne['REC_ID']); $titre = $ligne['REC_MOD_TITRE']; $resume = $ligne['REC_MOD_RESUME']; $contenu = $ligne['REC_MOD_CONTENU']; $image = $ligne['REC_MOD_IMAGE']; $date_creation = $ligne['REC_DATE_CREATION']; $statut = 'M'; $categorie = $ligne['CAT_INTITULE']; $idAuteur = strval($ligne['UTIL_ID']); $pseudoAuteur = $ligne['UTIL_PSEUDO']; $date_modification = $ligne['REC_MOD_DATE_MODIFICATION']; if(is_null($date_modification)){ $date_modification = ''; } return new RecetteModifiee($titre, $contenu, $resume, $image, $statut, $idAuteur, $categorie, $id, $pseudoAuteur, $date_creation, $date_modification); } /** * Renvoie une recette en fonction de son id. * @param string $id Loading Loading @@ -67,8 +87,23 @@ class RecetteManager extends Manager { * @return ?RecetteModifiee */ public function getRecetteModifiee(string $id) : ?RecetteModifiee{ //TODO écrire la méthode throw new Exception('not implemented yet'); $requete = "SELECT REC_ID, REC_MOD_TITRE, REC_MOD_CONTENU, REC_MOD_RESUME, REC_MOD_IMAGE, REC_MOD_DATE_MODIFICATION, CUI_RECETTE_MODIFIEE.CAT_CODE CAT_CODE, UTIL_ID FROM CUI_RECETTE_MODIFIEE JOIN CUI_RECETTE USING(REC_ID) JOIN CUI_CATEGORIE ON CUI_CATEGORIE.CAT_CODE = CUI_RECETTE_MODIFIEE.CAT_CODE JOIN CUI_UTILISATEUR USING (UTIL_ID) WHERE rec_id='1'"; $resultat = self::projectionBdd($requete); if(! isset($resultat[0])) { return null; } $ligne = $resultat[0]; return self::recetteModifieeFromLigne($ligne); } /** Loading Loading @@ -252,6 +287,36 @@ class RecetteManager extends Manager { * @param Recette $recette la recette à supprimer */ public function supprimerRecette(Recette $recette): void{ //TODO supprimer les tags et ingrédients de la recette modifiée $recetteModifiee = self::getRecetteModifiee($recette->getId()); if($recetteModifiee){ // Suppression des tags et des ingrédients foreach($recetteModifiee->getTags() as $tag){ $recetteModifiee->supprimerTag($tag); } foreach($recetteModifiee->getIngredients() as $ingredient){ $recetteModifiee->supprimerIngredient($ingredient); } // Suppression de la recette modifiée $requete = "DELETE FROM CUI_RECETTE_MODIFIEE WHERE REC_ID = ?"; if(self::requetePrepare($requete, [$recette->getId()]) != 1){ throw new Exception("Échec de la suppression de la recette."); } } // Suppression des tags et des ingrédients foreach($recette->getTags() as $tag){ $recette->supprimerTag($tag); } foreach($recette->getIngredients() as $ingredient){ $recette->supprimerIngredient($ingredient); } $requete = "DELETE FROM CUI_RECETTE WHERE REC_ID = ?"; if(self::requetePrepare($requete, [$recette->getId()]) != 1){ Loading
src/model/tagManager.php +36 −4 Original line number Diff line number Diff line Loading @@ -41,6 +41,16 @@ class TagManager extends Manager{ return $this->tagFromLigne($ligne); } public function getTagParNom(string $nom): ?Tag{ $resultat = $this->projectionBdd("select TAG_ID, TAG_INTITULE, TAG_DESCRIPTION from CUI_TAG where lower(TAG_INTITULE) = '$nom'"); if(empty($resultat)){ return null; } $ligne = $resultat[0]; return $this->tagFromLigne($ligne); } /** * Renvoie tous les tags. * Loading Loading @@ -127,8 +137,19 @@ class TagManager extends Manager{ * @param string $idRecette l'id de la recette */ public function ajouterTagARecette(Tag $tag, string $idRecette){ //TODO écrire la méthode throw new Exception("not implemented yet"); $tagEnBase = self::getTagParNom($tag->getIntitule()); if(! $tagEnBase){ self::creerTag($tag); $tagEnBase = self::getTagParNom($tag->getIntitule()); } $requete = "INSERT INTO CUI_ETIQUETTAGE (REC_ID, TAG_ID) VALUES (?, ?)"; if(! self::requetePrepare($requete, [$idRecette, $tagEnBase->getId()])){ throw new Exception("échec de l'ajout de tag"); } } /** Loading @@ -149,8 +170,19 @@ class TagManager extends Manager{ * @param string $idRecette l'id de la recette */ public function supprimerTagDeRecette(Tag $tag, string $idRecette){ //TODO écrire la méthode throw new Exception("not implemented yet"); $tagEnBase = self::getTagParNom($tag->getIntitule()); if(! $tagEnBase){ self::creerTag($tag); $tagEnBase = self::getTagParNom($tag->getIntitule()); } $requete = "DELETE FROM CUI_ETIQUETTAGE WHERE REC_ID = ? AND TAG_ID = ?"; if(! self::requetePrepare($requete, [$idRecette, $tagEnBase->getId()])){ throw new Exception("échec de la suppression du tag de la recette"); } } /** Loading
test/testsRecettes.php +17 −1 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ function testRecettes() { $manager = new RecetteManager(); $recettes = []; $recettes[] = new Recette('Pain au chocolat', 'lorem ipsum dolor sic amet', 'amet sic dolor ipsum lorem', '', 'A', '2', 'Goûter'); $recettes[] = new Recette('Pain au chocolat', 'lorem ipsum dolor sic amet', 'amet sic dolor ipsum lorem', '', 'V', '2', 'Goûter'); $manager->creerRecette($recettes[0]); $recetteBis = $manager->getDernieresRecettes(1)[0]; Loading @@ -18,5 +18,21 @@ function testRecettes() { assertEquals('Pain au chocolat', $recetteBis->getTitre()); assertEquals('test', $recetteBis->getAuteur()->getPseudo()); $recetteBis->ajouterIngredient(new Ingredient('chocolat')); $ingredients = $recetteBis->getIngredients(); assertEquals(1, count($ingredients)); assertEquals('chocolat', $ingredients[0]->getIntitule()); $recetteBis->ajouterTag(new Tag('viennoiserie')); $tags = $recetteBis->getTags(); assertEquals(1, count($tags)); assertEquals('viennoiserie', $tags[0]->getIntitule()); $manager->supprimerRecette($recetteBis); assertFalse($manager->getRecette($recetteBis->getId())); } No newline at end of file