From f70465a17ad38edc55ceec2b7ef57c7b81355f3e Mon Sep 17 00:00:00 2001 From: SIMAILA Djalim Date: Thu, 26 Jan 2023 15:45:13 +0100 Subject: [PATCH 1/2] refactored ingredient model --- Models/IngredientModel.php | 71 +++++++++++++++++++++++++++++++++++++- Views/user/login.php | 2 +- 2 files changed, 71 insertions(+), 2 deletions(-) diff --git a/Models/IngredientModel.php b/Models/IngredientModel.php index 4c316d8..7d1b6fc 100644 --- a/Models/IngredientModel.php +++ b/Models/IngredientModel.php @@ -2,6 +2,68 @@ final class IngredientModel { + public $I_INGREDIENT_ID; + public $I_RECIPE_ID; + public $S_NAME; + public $S_QUANTITY; + + public function __construct($I_RECIPE_ID, $S_NAME, $S_QUANTITY) + { + $this->I_RECIPE_ID = $I_RECIPE_ID; + $this->S_NAME = $S_NAME; + $this->S_QUANTITY = $S_QUANTITY; + } + + private function createFromRow($A_row, $I_id) + { + $O_ingr = new IngredientModel($A_row["RECIPE_ID"], $A_row["NAME"], $A_row["QUANTITY"]); + $O_ingr = $I_id; + return $O_ingr; + } + + public function insert(){ + $O_model = Model::get(); + $stmt = $O_model->prepare("SELECT 1 FROM INGREDIENT WHERE :name=name"); + $stmt->bindParam("name", $this->S_NAME); + $stmt->execute(); + if($stmt->rowCount() === 0){ + $stmt = $O_model->prepare("INSERT INTO INGREDIENT (NAME) VALUES(:name)"); + $stmt->bindParam("name", $this->S_NAME); + $stmt->execute(); + $this->I_INGREDIENT_ID = Model::get()->lastInsertId(); + } + $stmt = $O_model->prepare("INSERT INTO RECIPE_INGREDIENT VALUES(:recipe_id, :ingredient_id, :quantity)"); + $stmt->bindParam("recipe_id", $this->I_RECIPE_ID); + $stmt->bindParam("ingredient_id", $this->I_INGREDIENT_ID); + $stmt->bindParam("quantity", $this->S_QUANTITY); + $stmt->execute(); + } + + + public function delete(){ + $O_model = Model::get(); + $stmt = $O_model->prepare("DELETE FROM INGREDIENT WHERE ID=:id"); + $stmt->bindParam("id", $this->I_INGREDIENT_ID); + $stmt->execute(); + $stmt = $O_model->prepare("DELETE FROM RECIPE_INGREDIENT WHERE INGREDIENT_ID=:id"); + $stmt->execute(); + $stmt->bindParam("id", $this->I_INGREDIENT_ID); + $stmt->execute(); + } + public static function getByRecipeAndName($I_recipe_id, $S_name){ + $S_name = strtolower($S_name); + $O_model = Model::get(); + $stmt = $O_model->prepare("SELECT * FROM INGREDIENT + JOIN RECIPE_INGREDIENT RI on INGREDIENT.ID = RI.INGREDIENT_ID + WHERE NAME=:name"); + $stmt->bindParam("name", $S_name); + $stmt->execute(); + + $row = $stmt->fetch(); + if ($row === false) return null; + + return self::createFromRow($row, $I_recipe_id); + } public static function searchByRecipe($I_recipe_id) { @@ -14,6 +76,13 @@ final class IngredientModel $stmt->bindParam("recipe_id", $I_recipe_id); $stmt->execute(); - return $stmt->fetchAll(); + $A_users = array(); + foreach($stmt->fetchAll() as $row){ + array_push($A_users, self::createFromRow($row, $row["ID"])); + } + + return $A_users; } + + } diff --git a/Views/user/login.php b/Views/user/login.php index d83c349..89b1ba9 100644 --- a/Views/user/login.php +++ b/Views/user/login.php @@ -10,7 +10,7 @@ - + "> From 0eb560c8b8ffa3964bd6e83eaf9c23d6badb1d08 Mon Sep 17 00:00:00 2001 From: SIMAILA Djalim Date: Thu, 26 Jan 2023 15:55:34 +0100 Subject: [PATCH 2/2] fixed wrong id being passed --- Models/IngredientModel.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Models/IngredientModel.php b/Models/IngredientModel.php index 7d1b6fc..d224d7f 100644 --- a/Models/IngredientModel.php +++ b/Models/IngredientModel.php @@ -14,10 +14,10 @@ final class IngredientModel $this->S_QUANTITY = $S_QUANTITY; } - private function createFromRow($A_row, $I_id) + private static function createFromRow($A_row, $I_ingredient_id) { $O_ingr = new IngredientModel($A_row["RECIPE_ID"], $A_row["NAME"], $A_row["QUANTITY"]); - $O_ingr = $I_id; + $O_ingr->I_INGREDIENT_ID = $I_ingredient_id; return $O_ingr; } @@ -53,7 +53,7 @@ final class IngredientModel public static function getByRecipeAndName($I_recipe_id, $S_name){ $S_name = strtolower($S_name); $O_model = Model::get(); - $stmt = $O_model->prepare("SELECT * FROM INGREDIENT + $stmt = $O_model->prepare("SELECT *, INGREDIENT.ID AS INGREDIENT_ID FROM INGREDIENT JOIN RECIPE_INGREDIENT RI on INGREDIENT.ID = RI.INGREDIENT_ID WHERE NAME=:name"); $stmt->bindParam("name", $S_name); @@ -62,26 +62,26 @@ final class IngredientModel $row = $stmt->fetch(); if ($row === false) return null; - return self::createFromRow($row, $I_recipe_id); + return self::createFromRow($row, $row["INGREDIENT_ID"]); } public static function searchByRecipe($I_recipe_id) { $O_model = Model::get(); $stmt = $O_model->prepare(" - SELECT * FROM INGREDIENT + SELECT *, INGREDIENT.ID AS INGREDIENT_ID FROM INGREDIENT JOIN RECIPE_INGREDIENT ON RECIPE_INGREDIENT.INGREDIENT_ID=INGREDIENT.ID WHERE RECIPE_INGREDIENT.RECIPE_ID = :recipe_id "); $stmt->bindParam("recipe_id", $I_recipe_id); $stmt->execute(); - $A_users = array(); + $A_ingr = array(); foreach($stmt->fetchAll() as $row){ - array_push($A_users, self::createFromRow($row, $row["ID"])); + array_push($A_ingr, self::createFromRow($row, $row["INGREDIENT_ID"])); } - return $A_users; + return $A_ingr; }