From a5ce3fd3fa26ea8a853b3fe5146e0eb16a46ebd0 Mon Sep 17 00:00:00 2001
From: Hilmi Al Biruni <hilmi.albiruni@ui.ac.id>
Date: Thu, 29 Sep 2022 20:04:50 +0700
Subject: [PATCH] Menyelesaikan Tutorial 4

---
 README.md                                     |  6 ++++
 .../controller/CourseController.java          | 33 +++++++++++++++----
 .../resources/templates/form-add-course.html  | 27 +++++++++++----
 .../src/main/resources/templates/home.html    |  1 -
 4 files changed, 53 insertions(+), 14 deletions(-)

diff --git a/README.md b/README.md
index e584d58..f0a918b 100644
--- a/README.md
+++ b/README.md
@@ -20,8 +20,14 @@
 
 ### Bagaimana parameter/params tersebut bekerja sehingga Anda dapat menambahkan 1 baris penyelenggara pada form tambah course?
 
+#### params perlu dibuat terlebih dahulu logic-nya dalam struktur data List. params akan mendefinisikan semacam "function" agar dapat diimplementasikan di dalam <button> dalam variable "name". 
+
 ### Bagaimana parameter/params tersebut bekerja sehingga Anda dapat menghapus 1 baris penyelenggara pada form tambah course?
 
+#### params perlu dibuat terlebih dahulu logic-nya sebagai berikut:
+##### final Integer rowId = Integer.valueOf(row);
+##### course.getListPengajar().remove(rowId.intValue());
+#### Nanti params tersebut akan mendefinisikan semacam "function" agar dapat diimplementasikan di dalam <button> dalam variable "name".
 
 ## Tutorial 3
 ### Pertanyaan 1: Tolong jelaskan secara singkat apa kegunaan dari anotasi-anotasi yang ada pada model (@AllArgsConstructor, @NoArgsConstructor, @Setter, @Getter, @Entity, @Table)
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/CourseController.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/CourseController.java
index bc43b77..fbcb0da 100644
--- a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/CourseController.java
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/CourseController.java
@@ -163,25 +163,28 @@ public class CourseController {
         return "form-add-course";
     }
 
-    @PostMapping(value = "/course/add", params = {"addRowPengajar"})
-    private String addRowPengajarMultiple(
+    @PostMapping(value = "/course/add", params = { "addRowPengajar" })
+    private String addRowCoursePengajarMultiple(
             @ModelAttribute CourseModel course,
-            Model model
-    ){
+            Model model) {
+
         if (course.getListPengajar() == null || course.getListPengajar().size() == 0) {
             course.setListPengajar(new ArrayList<>());
         }
+
         course.getListPengajar().add(new PengajarModel());
         List<PengajarModel> listPengajar = pengajarService.getListPengajar();
+        List<PenyelenggaraModel> listPenyelenggara = penyelenggaraService.getListPenyelenggara();
 
+        model.addAttribute("listPenyelenggaraExisting", listPenyelenggara);
         model.addAttribute("course", course);
         model.addAttribute("listPengajarExisting", listPengajar);
 
         return "form-add-course";
     }
 
-    @PostMapping(value = "/course/add", params = {"deleteRowPengajar"})
-    private String deleteRowPengajarMultiple(
+    @PostMapping(value = "/course/add", params = { "deleteRowPengajar" })
+    private String deleteRowCoursePengajarMultiple(
             @ModelAttribute CourseModel course,
             @RequestParam("deleteRowPengajar") Integer row,
             Model model
@@ -196,4 +199,22 @@ public class CourseController {
 
         return "form-add-course";
     }
+
+    @PostMapping(value = "/course/add", params = { "save" })
+    public String addPengajarSubmitPage(@ModelAttribute CourseModel course, Model model) {
+        if (course.getListPenyelenggara() == null) {
+            course.setListPenyelenggara(new ArrayList<>());
+        }
+        List<PengajarModel> listPengajar = course.getListPengajar();
+        for (PengajarModel pengajar : listPengajar) {
+            pengajar.setCourse(course);
+        }
+
+        course.setListPengajar(listPengajar);
+        courseService.addCourse(course);
+
+        model.addAttribute("code", course.getCode());
+        return "add-course";
+    }
+
 }
\ No newline at end of file
diff --git a/belajarbelajar/src/main/resources/templates/form-add-course.html b/belajarbelajar/src/main/resources/templates/form-add-course.html
index 1053c1f..6703edb 100644
--- a/belajarbelajar/src/main/resources/templates/form-add-course.html
+++ b/belajarbelajar/src/main/resources/templates/form-add-course.html
@@ -79,24 +79,34 @@
               <button class="btn btn-primary" type="submit" name="addRowPengajar">Tambah Row</button>
             </th>
             </thead>
+
             <tbody>
-            <tr th:each="pengajar, iterationStatus : *{listPengajar}">
+            <tr th:each="pengajar, iterationStatus: *{listPengajar}"></tr>
+            <tr th:each="pengajar, iterationStatus: *{listPengajar}">
+              <td>
+                <input
+                        class="form-control"
+                        type="text"
+                        name="namaPengajar"
+                        placeholder="Nama Pengajar"
+                        th:field="*{listPengajar[__${iterationStatus.index}__].namaPengajar}"
+                />
+              </td>
               <td>
                 <select
-                        name="noPengajar"
-                        th:field="*{listPengajar[__${iterationStatus.index}__].noPengajar}"
                         class="form-control"
+                        name="isPengajarUniversitas"
+                        th:field="*{listPengajar[__${iterationStatus.index}__].isPengajarUniversitas}"
                 >
-                  <div th:each="pengajarEx, iterationStatus2 : ${listPengajarExisting}">
-                    <option th:value="${pengajarEx.noPengajar}" th:text="${pengajarEx.namaPengajar}"></option>
-                  </div>
+                  <option value="1">Pengajar Universitas</option>
+                  <option value="0">Bukan Pengajar Universitas</option>
                 </select>
               </td>
+
               <td>
                 <button
                         th:value="${iterationStatus.index}"
                         class="btn btn-danger"
-                        type="submit"
                         name="deleteRowPengajar"
                 >
                   Hapus
@@ -106,6 +116,9 @@
             </tbody>
           </table>
 
+          <br />
+          <br />
+
           <button class="btn btn-primary" type="submit" name="save">Submit</button>
           <a class="btn btn-primary" href="/">Home</a>
         </form>
diff --git a/belajarbelajar/src/main/resources/templates/home.html b/belajarbelajar/src/main/resources/templates/home.html
index 02075d5..ab6dc7a 100644
--- a/belajarbelajar/src/main/resources/templates/home.html
+++ b/belajarbelajar/src/main/resources/templates/home.html
@@ -14,7 +14,6 @@
     <h2>Selamat datang di BelajarBelajar</h2>
     <div class="d-flex justify-content-center">
       <a th:href="@{/course/viewall}" class="mx-2 btn btn-primary">Lihat semua course</a>
-      <a th:href="@{/course/view-all-sort}" class="mx-2 btn btn-primary">Lihat semua course berurut</a>
       <a th:href="@{/course/add}" class="mx-2 btn btn-outline-primary">Tambah course</a>
 
     </div>
-- 
GitLab