From b2783d11c1f973016e0dce4cc4e2248b48ac3cb1 Mon Sep 17 00:00:00 2001
From: FahrianAfdholi <16521492@mahasiswa.itb.ac.id>
Date: Sun, 8 Oct 2023 23:22:18 +0700
Subject: [PATCH] fixed: EditMeal.php

---
 app/views/addfact/index.php             |  64 ++++++------
 app/views/editmeal/index.php            | 133 ++++++++++++------------
 public/css/addfact.css                  |  15 +++
 server/controller/auth/cms/AddFact.php  |  51 +++++++++
 server/controller/auth/cms/EditMeal.php |  83 +++++++++++++++
 server/handler/data/File.php            |   3 +-
 server/handler/data/Ingredients.php     |  13 +++
 server/handler/data/Meal.php            |   3 +-
 8 files changed, 269 insertions(+), 96 deletions(-)
 create mode 100644 server/controller/auth/cms/AddFact.php
 create mode 100644 server/controller/auth/cms/EditMeal.php

diff --git a/app/views/addfact/index.php b/app/views/addfact/index.php
index 7c1f60e..904ab3f 100644
--- a/app/views/addfact/index.php
+++ b/app/views/addfact/index.php
@@ -9,39 +9,45 @@
     <title>Document</title>
 </head>
 <body>
-    <div class="content">
-        <div class="imagecontainer">
-            <img src="../../../assets/Nopict.png" alt="defaultProfPic" class="photoProfile">
-            <div class="editPhotoButton">
-                <label for="file" class="labelFile">Upload Photo</label>
-                <input type="file" name="file" id="file" class="file" accept="image/*,video/*">
+    <form action="../../../server/controller/auth/cms/AddFact.php" method="POST" enctype="multipart/form-data">
+        <div class="content">
+            <div class="imagecontainer">
+                <img src="../../../assets/Nopict.png" alt="defaultProfPic" class="photoProfile">
+                <div class="editPhotoButton">
+                    <label for="file" class="labelFile">Upload Photo</label>
+                    <input type="file" name="file" id="file" class="file" accept="image/*,video/*">
+                </div>
             </div>
-        </div>
-        <div class="editcontainer">
-            <div class="factinformation">
-                <h2 class="facttitle">Fact Information</h2>
-                <div class="nametype">
-                    <div class="name-container">
-                        <div class="factname">
-                            <p class="labelname">Video File</p>
-                                <label for="file" class="labelFile">Upload Video</label>
-                                <input type="file" name="videofile" id="videofile" class="videofile" accept="image/*,video/*">
+            <div class="editcontainer">
+                <div class="factinformation">
+                    <h2 class="facttitle">Fact Information</h2>
+                    <div class="nametype">
+                        <div class="name-container">
+                            <div class="factname">
+                                <p class="labelname">Video File</p>
+                                    <label for="file" class="labelFile">Upload Video</label>
+                                    <input type="file" name="videofile" id="videofile" class="videofile" accept="image/*,video/*">
+                            </div>
                         </div>
                     </div>
+                    <div class="videotitle">
+                        <p class="labeldescription">Video Title</p>
+                        <input type="text" placeholder="Title" class="inputtitle" id="edittitle" name="facttitle">
+                    </div>
+                    <div class="facthighlight">
+                        <p class="labelhighlight">Fact Highlight</p>
+                        <textarea name="facthighlight" id="facthighlight" class="inputhighlight" placeholder="Highlight"></textarea>
+                    </div>
+                    <div class="factdescription">
+                        <p class="labeldescription">Fact Description</p>
+                        <textarea name="factdescription" id="factdescription" class="inputdescription" placeholder="Description"></textarea>
+                    </div>
+
                 </div>
-                <div class="videotitle">
-                    <p class="labeldescription">Video Title</p>
-                    <input type="text" placeholder="Title" class="inputtitle" id="edittitle" name="facttitle">
-                </div>
-                <div class="factdescription">
-                    <p class="labeldescription">Fact Description</p>
-                    <textarea name="factdescription" id="factdescription"class="inputdescription" placeholder="Description"></textarea>
-                </div>
-                
-            </div>
 
-    
-            <button type="submit" class="submitButton" name="submit">Save Change</button>
-        </div>
+
+                <button type="submit" class="submitButton" name="submit">Save Change</button>
+            </div>
+    </form>
 </body>
 </html>
\ No newline at end of file
diff --git a/app/views/editmeal/index.php b/app/views/editmeal/index.php
index 1b01f73..464b2d3 100644
--- a/app/views/editmeal/index.php
+++ b/app/views/editmeal/index.php
@@ -16,80 +16,83 @@
     </script>
 </head>
 <body>
-    <div class="content">
-        <div class="imagecontainer">
-            <img src="../../../assets/Nopict.png" alt="defaultProfPic" class="photoProfile" id="image">
-            <div class="editPhotoButton">
-                <label for="file" class="labelFile">Upload Photo</label>
-                <input type="file" name="file" id="file" class="file" accept="image/*">
+    <form action="../../../server/controller/auth/cms/EditMeal.php" method="POST" enctype="multipart/form-data">
+        <input hidden="hidden" value=<?php echo $id ?>; name="test">
+        <div class="content">
+            <div class="imagecontainer">
+                <img src="../../../assets/Nopict.png" alt="defaultProfPic" class="photoProfile" id="image">
+                <div class="editPhotoButton">
+                    <label for="file" class="labelFile">Upload Photo</label>
+                    <input type="file" name="file" id="file" class="file" accept="image/*">
+                </div>
             </div>
-        </div>
-        <div class="editcontainer">
-            <div class="mealinformation">
-                <h2 class="mealtitle">Meal Information</h2>
-                <div class="nametype">
-                    <div class="name-container">
-                        <div class="mealname">
-                            <p class="labelname">Meal Name</p>
-                            <input type="text" placeholder="Meal Name" class="inputname" id="title" name="mealname">
+            <div class="editcontainer">
+                <div class="mealinformation">
+                    <h2 class="mealtitle">Meal Information</h2>
+                    <div class="nametype">
+                        <div class="name-container">
+                            <div class="mealname">
+                                <p class="labelname">Meal Name</p>
+                                <input type="text" placeholder="Meal Name" class="inputname" id="title" name="mealname">
+                            </div>
+                        </div>
+                        <div class="mealtype">
+                            <p class="labeltype">Meal Type</p>
+                            <select name="mealtype" class="inputtype">
+                                <option value="breakfast">Breakfast</option>
+                                <option value="lunch">Lunch</option>
+                                <option value="dinner">Dinner</option>
+                            </select>
                         </div>
                     </div>
-                    <div class="mealtype">
-                        <p class="labeltype">Meal Type</p>
-                        <select name="mealtype" class="inputtype">
-                            <option value="breakfast">Breakfast</option>
-                            <option value="lunch">Lunch</option>
-                            <option value="dinner">Dinner</option>
-                        </select>
+                    <div class="mealhighlight">
+                        <p class="labeldescription">Meal Highlight</p>
+                        <input name="mealdescription" id="highlight"class="inputhighlight" placeholder="Highlight"></textarea>
+                    </div>
+                    <div class="mealdescription">
+                        <p class="labeldescription">Meal Description</p>
+                        <textarea name="mealdescription" id="description"class="inputdescription" placeholder="Description"></textarea>
+                    </div>
+                    <div class="mealingredients">
+                        <p class="labelingredients">Meal Ingredients</p>
+                        <ul id="ingredientList">
+                            <!-- Existing list items go here -->
+                        </ul>
+                        <button type="button" class="addbutton" id="addIngredientBtn">Add</button>
                     </div>
                 </div>
-                <div class="mealhighlight">
-                    <p class="labeldescription">Meal Highlight</p>
-                    <input name="mealdescription" id="highlight"class="inputhighlight" placeholder="Highlight"></textarea>
-                </div>
-                <div class="mealdescription">
-                    <p class="labeldescription">Meal Description</p>
-                    <textarea name="mealdescription" id="description"class="inputdescription" placeholder="Description"></textarea>
-                </div>
-                <div class="mealingredients">
-                    <p class="labelingredients">Meal Ingredients</p>
-                    <ul id="ingredientList">
-                        <!-- Existing list items go here -->
-                    </ul>
-                    <button type="button" class="addbutton" id="addIngredientBtn">Add</button>
-                </div>
-            </div>
-            <div class="mealnutrition">
-                <h2 class="mealtitle">Meal Nutrition</h2>
-                <div class="nutritioncontainer">
-                    <div class="calcabs">
-                        <div class="nutrition">
-                            <p class="labelnutrition">Calories</p>
-                            <input type="text" placeholder="Calories" class="inputnutrition" id="editCalories" name="calories">
+                <div class="mealnutrition">
+                    <h2 class="mealtitle">Meal Nutrition</h2>
+                    <div class="nutritioncontainer">
+                        <div class="calcabs">
+                            <div class="nutrition">
+                                <p class="labelnutrition">Calories</p>
+                                <input type="text" placeholder="Calories" class="inputnutrition" id="editCalories" name="calories">
+                            </div>
+                            <div class="nutrition">
+                                <p class="labelnutrition">Carbohydrates</p>
+                                <input type="text" placeholder="Carbohydrates" class="inputnutrition" id="editCarbohydrates" name="carbohydrates">
+                            </div>
                         </div>
-                        <div class="nutrition">
-                            <p class="labelnutrition">Carbohydrates</p>
-                            <input type="text" placeholder="Carbohydrates" class="inputnutrition" id="editCarbohydrates" name="carbohydrates">
+                        <div class="profat">
+                            <div class="nutrition">
+                                <p class="labelnutrition">Protein</p>
+                                <input type="text" placeholder="Protein" class="inputnutrition" id="editProtein" name="protein">
+                            </div>
+                            <div class="nutrition">
+                                <p class="labelnutrition">Fat</p>
+                                <input type="text" placeholder="Fat" class="inputnutrition" id="editFat" name="fat">
+                            </div>
                         </div>
-                    </div>
-                    <div class="profat">
                         <div class="nutrition">
-                            <p class="labelnutrition">Protein</p>
-                            <input type="text" placeholder="Protein" class="inputnutrition" id="editProtein" name="protein">
-                        </div>
-                        <div class="nutrition">
-                            <p class="labelnutrition">Fat</p>
-                            <input type="text" placeholder="Fat" class="inputnutrition" id="editFat" name="fat">
-                        </div>
+                                <p class="labelnutrition">Sugar</p>
+                                <input type="text" placeholder="Sugar" class="inputnutrition" id="editsugar" name="sugar">
+                            </div>
                     </div>
-                    <div class="nutrition">
-                            <p class="labelnutrition">Sugar</p>
-                            <input type="text" placeholder="Sugar" class="inputnutrition" id="editsugar" name="sugar">
-                        </div>
-                </div>
 
-    
-            <button type="submit" class="submitButton" name="submit">Save Change</button>
-        </div>
+
+                <button type="submit" class="submitButton" name="submit">Save Change</button>
+            </div>
+    </form>
 </body>
 </html>
\ No newline at end of file
diff --git a/public/css/addfact.css b/public/css/addfact.css
index 9a3c5df..3f3d8dd 100644
--- a/public/css/addfact.css
+++ b/public/css/addfact.css
@@ -152,6 +152,21 @@
     outline: none;
 }
 
+.facthighlight {
+    font-size: 18px;
+    font-weight: 600;
+    border-bottom: 1px solid #EF4800;
+    margin-right: 25px;
+}
+
+.inputhighlight {
+    width: 575px;
+    height: 20px;
+    border: none;
+    padding-left: 10px;
+    outline: none;
+}
+
 
 .submitButton {
     background-color: #BA540B;
diff --git a/server/controller/auth/cms/AddFact.php b/server/controller/auth/cms/AddFact.php
new file mode 100644
index 0000000..30f9cbd
--- /dev/null
+++ b/server/controller/auth/cms/AddFact.php
@@ -0,0 +1,51 @@
+<?php
+
+require_once "../../../../server/handler/data/File.php";
+
+
+use data\File;
+
+
+
+if(isset($_POST['submit'])) {
+    $file = new File();
+
+    $targetDirectory = "../../../../assets/content/";
+
+    $writeDirectory = "../../../../assets/content/";
+
+    if (!empty($_FILES['file']['name'])) {
+
+        $t = $_FILES['file']['name'];
+        echo "<script>console.log('$t')</script>";
+//        $file_name = $_FILES['file']['name'];
+//        $tmp_name = $_FILES['file']['tmp_name'];
+//        $extension = pathinfo($file_name, PATHINFO_EXTENSION);
+//        $file_up_name = time() . "." . $extension;
+//        move_uploaded_file($tmp_name, $targetDirectory . $file_up_name);
+//
+//        $id_file_photo = $file->Insert($file_name,'../../assets/content/'.$file_up_name,'photo');
+    }
+
+    if (!empty($_FILES['videofile']['name'])) {
+        if (!empty($_FILES['videofile'])){
+            $t = $_FILES['videofile']['name'];
+
+            echo "<script>console.log('$t')</script>";
+        }
+
+//        $file_name = $_FILES['file']['name'];
+//        $tmp_name = $_FILES['file']['tmp_name'];
+//        $extension = pathinfo($file_name, PATHINFO_EXTENSION);
+//        $file_up_name = time() . "." . $extension;
+//        move_uploaded_file($tmp_name, $targetDirectory . $file_up_name);
+//
+//        $id_file_photo = $file->Insert($file_name,'../../assets/content/'.$file_up_name,'photo');
+    }
+
+
+
+//    echo "<script>window.location.href='/?cms'</script>";
+
+
+}
diff --git a/server/controller/auth/cms/EditMeal.php b/server/controller/auth/cms/EditMeal.php
new file mode 100644
index 0000000..a3aee38
--- /dev/null
+++ b/server/controller/auth/cms/EditMeal.php
@@ -0,0 +1,83 @@
+<?php
+
+require_once "../../../../server/handler/data/File.php";
+require_once "../../../../server/handler/data/Nutrition.php";
+require_once "../../../../server/handler/data/Meal.php";
+require_once "../../../../server/handler/data/Ingredients.php";
+
+
+use data\File;
+use data\Meal;
+use data\Nutrition;
+use data\Ingredients;
+
+if (isset($_POST['submit'])){
+    $a = explode(";",$_POST['test']);
+    $id = $a[0];
+    $meal = new Meal();
+    $file = new File();
+    $nutrition = new Nutrition();
+    $ingredients = new Ingredients();
+
+    $get_meals = $meal->FindById($id)[0];
+    $get_ingredients = $ingredients->FindByMeals($id);
+    $get_nutrition = $ingredients->FindByMeals($id);
+    $get_file = $file->FindById($get_meals['id_photo']);
+
+    if (!empty($_FILES['file']['name'])){
+        $targetDirectory = "../../../../assets/meals/";
+
+        $writeDirectory = "../../../../assets/meals/";
+        $file_name = $_FILES['file']['name'];
+        $tmp_name = $_FILES['file']['tmp_name'];
+        $extension = pathinfo($file_name, PATHINFO_EXTENSION);
+        $file_up_name = time() . "." . $extension;
+        move_uploaded_file($tmp_name, $targetDirectory . $file_up_name);
+
+        $file->Update($file->FindById($get_meals['id_photo']),$file_name,'../../assets/meals/'.$file_up_name,'photo');
+    }
+    if (isset($_POST['mealname'])){
+        $get_meals['title'] = $_POST['mealname'];
+    }
+    if (isset($_POST['mealhighlight'])){
+        $get_meals['highlight'] = $_POST['mealhighlight'];
+    }
+    if (isset($_POST['mealtype'])){
+        $get_meals['type'] = $_POST['mealtype'];
+    }
+    if (isset($_POST['calories'])){
+        $get_meals['calorie'] = $_POST['calories'];
+        $get_nutrition['calorie'] = $_POST['calories'];
+    }
+    if (isset($_POST['carbohydrates'])){
+        $get_nutrition['carbo'] = $_POST['carbohydrates'];
+    }
+    if (isset($_POST['protein'])){
+        $get_nutrition['protein'] = $_POST['protein'];
+    }
+    if (isset($_POST['sugar'])){
+        $get_nutrition['sugar'] = $_POST['sugar'];
+    }
+    if (isset($_POST['fat'])){
+        $get_nutrition['fat'] = $_POST['fat'];
+    }
+
+    if(isset($_POST['item'])) {
+        $ingredients->DeleteByIdMeals($id);
+        $items = $_POST['item'];
+        foreach ($items as $index => $itemData) {
+            $ing = $itemData['ingredients'];
+            $info = $itemData['information'];
+            $ingredients->Insert($ing,$info,$id);
+        }
+    }
+
+    $c = json_encode($get_meals);
+
+    echo "<script>console.log('$c')</script>";
+
+
+    $meal->Update($get_meals['id'],$get_meals['title'],$get_meals['highlight'],$get_meals['description'],$get_meals['type'],$get_meals['calorie'],$get_meals['id_photo']);
+
+    echo "<script>window.location.href='/?cms'</script>";
+}
diff --git a/server/handler/data/File.php b/server/handler/data/File.php
index b34b469..5013eac 100644
--- a/server/handler/data/File.php
+++ b/server/handler/data/File.php
@@ -3,8 +3,9 @@
 namespace data;
 
 use Database;
+require_once (__DIR__."/../../db/Database.php");
 
-// require_once "server/db/Database.php";
+// require_once __DIR__."../../../db/Database.php";
 
 
 class File
diff --git a/server/handler/data/Ingredients.php b/server/handler/data/Ingredients.php
index 73652be..1d8cf7e 100644
--- a/server/handler/data/Ingredients.php
+++ b/server/handler/data/Ingredients.php
@@ -61,6 +61,19 @@ class Ingredients
         $this->db->Disconnect();
     }
 
+    public function DeleteByIdMeals($id){
+        $this->db->Connect();
+        $conn = $this->db->getDb();
+
+        $delete_data =  pg_query_params($conn, "DELETE FROM ingredients WHERE id_meals = $1", array($id));
+
+        if (!$delete_data) die("failed to delete values: ".pg_last_error());
+
+        echo "<script>console.log('successfully delete ingredients')</script>";
+
+        $this->db->Disconnect();
+    }
+
     public function FindAll(){
         $this->db->Connect();
         $conn = $this->db->getDb();
diff --git a/server/handler/data/Meal.php b/server/handler/data/Meal.php
index 0746f66..0a460cb 100644
--- a/server/handler/data/Meal.php
+++ b/server/handler/data/Meal.php
@@ -242,7 +242,7 @@ class Meal
         $conn = $this->db->getDb();
 
         $exec = pg_query_params($conn, "SELECT m.id id, m.title title, m.highlight highlight, m.description description, m.type type, m.calorie calorie,
-                                            (SELECT path FROM file f WHERE f.id = m.id_file) as path_photo,
+                                            (SELECT path FROM file f WHERE f.id = m.id_file) as path_photo, m.id_file as id_photo,
                                             m.created_at created_at, m.updated_at updated_at
                                             FROM meals m WHERE m.id = $1 ORDER BY m.updated_at", array($id));
 
@@ -257,6 +257,7 @@ class Meal
                 'type' => $row['type'],
                 'calorie' => $row['calorie'],
                 'path_photo'=>$row['path_photo'],
+                'id_photo'=>$row['id_photo'],
                 'created_at' => $row['created_at'],
                 'updated_at' => $row['updated_at']
             );
-- 
GitLab