From 094ef04c74fe72d8db5fc4d31b1d8a45ce487f7f Mon Sep 17 00:00:00 2001
From: Hilmi Al Biruni <hilmi.albiruni@ui.ac.id>
Date: Thu, 29 Sep 2022 18:55:51 +0700
Subject: [PATCH] Menyelesaikan Nomor 1 2 4

---
 README.md                                     | 21 ++++++
 .../controller/CourseController.java          | 64 +++++++++++++----
 .../controller/PengajarController.java        |  8 ---
 .../belajarbelajar/repository/CourseDb.java   |  2 -
 .../belajarbelajar/service/CourseService.java |  3 -
 .../service/CourseServiceImpl.java            |  4 +-
 .../service/PengajarService.java              |  7 +-
 .../service/PengajarServiceImpl.java          |  7 ++
 .../resources/templates/delete-course.html    |  2 +-
 .../resources/templates/delete-no-code.html   |  2 +-
 .../resources/templates/form-add-course.html  | 33 +++++++++
 .../templates/fragments/fragment.html         | 21 +++++-
 .../src/main/resources/templates/home.html    | 33 +--------
 .../main/resources/templates/view-course.html | 72 +++++++++----------
 .../resources/templates/viewall-course.html   | 36 ++--------
 15 files changed, 179 insertions(+), 136 deletions(-)

diff --git a/README.md b/README.md
index eeb94f7..e584d58 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,27 @@
 ## Authors
 * **Hilmi Al Biruni** - *2006463843* - *APAP-B*
 
+
+## Tutorial 4
+### Jelaskan perbedaan th:include dan th:replace!
+
+#### Perbedaan dari include dan replace adalah penempatan suatu konten dari fragment
+#### Include akan memanggil isi dari fragment ke dalam th:include tersebut. Lalu, include akan memasukkan konten fragment tanpa menyisipkan tag fragment itu sendiri.
+#### Berbeda dengan include, replace menerapkan konsep parent-kid dalam pengimplementasian fragment tersebut. Replace akan memasukkan konten dari fragment dengan mengganti tag menjadi tag yang mendefinisikan fragment sehingga dapat di kustomisasi.
+
+### Jelaskan apa fungsi dari th:object! 
+
+#### th:object digunakan untuk menyederhanakan pemanggilan suatu objek di dalam HTML. th:object akan menggunakan atribut langsung dari objek tanpa harus menspesifikasikan objek yang dipanggil.
+
+### Jelaskan perbedaan dari * dan $ pada saat penggunaan th:object! Kapan harus dipakai?
+
+#### * digunakan untuk menyatakan sebuah selection dan menunjuk kepada atribut darri suatu objek. Berbeda dengan $ yang digunakan untuk menyatakan sebuah variabel/value dan menunjuk kepada atribut suatu objek.
+
+### Bagaimana parameter/params tersebut bekerja sehingga Anda dapat menambahkan 1 baris penyelenggara pada form tambah course?
+
+### Bagaimana parameter/params tersebut bekerja sehingga Anda dapat menghapus 1 baris penyelenggara pada form tambah course?
+
+
 ## Tutorial 3
 ### Pertanyaan 1: Tolong jelaskan secara singkat apa kegunaan dari anotasi-anotasi yang ada pada model (@AllArgsConstructor, @NoArgsConstructor, @Setter, @Getter, @Entity, @Table)
 #### @AllArgsConstructor digunakan untuk menghasilkan constructor pada semua field pada class dengan suatu parameter.
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 56ce236..bc43b77 100644
--- a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/CourseController.java
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/CourseController.java
@@ -5,6 +5,7 @@ import apap.tutorial.belajarbelajar.model.PengajarModel;
 import apap.tutorial.belajarbelajar.model.PenyelenggaraModel;
 import apap.tutorial.belajarbelajar.service.CourseService;
 import apap.tutorial.belajarbelajar.service.PenyelenggaraService;
+import apap.tutorial.belajarbelajar.service.PengajarService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Controller;
@@ -23,6 +24,10 @@ public class CourseController {
     @Autowired
     private PenyelenggaraService penyelenggaraService;
 
+    @Qualifier("pengajarServiceImpl")
+    @Autowired
+    private PengajarService pengajarService;
+
     @GetMapping("/course/add")
     public String addCourseFormPage(Model model) {
         CourseModel course = new CourseModel();
@@ -70,6 +75,8 @@ public class CourseController {
         model.addAttribute("course", course);
         model.addAttribute("cekCourse", cekCourse);
         model.addAttribute("cekPengajar", cekPengajar);
+        List<PenyelenggaraModel> listPenyelenggara = course.getListPenyelenggara();
+        model.addAttribute("listPenyelenggara", listPenyelenggara);
         return "view-course";
     }
 
@@ -77,8 +84,10 @@ public class CourseController {
     public String viewDetailCoursePageQuery(@RequestParam(value = "code") String code, Model model) {
         CourseModel course = courseService.getCourseByCodeCourseQuery(code);
         List<PengajarModel> listPengajar = course.getListPengajar();
+        List<PenyelenggaraModel> listPenyelenggara = course.getListPenyelenggara();
         model.addAttribute("listPengajar", listPengajar);
         model.addAttribute("course", course);
+        model.addAttribute("listPenyelenggara", listPenyelenggara);
         return "view-course";
     }
 
@@ -94,7 +103,7 @@ public class CourseController {
     public String updateCourseSubmitPage(@ModelAttribute CourseModel course, Model model) {
         CourseModel updatedCourse = courseService.updateCourse(course);
         if (updatedCourse == null) {
-            return "error-page";
+            return "error-update";
         } else {
             model.addAttribute("code", updatedCourse.getCode());
             return "update-course";
@@ -102,10 +111,15 @@ public class CourseController {
     }
 
     @GetMapping("/course/delete/{code}")
-    public String deleteCourse(@PathVariable(value = "code") String code) {
+    public String deleteCourse(@PathVariable(value = "code") String code, Model model) {
         CourseModel course = courseService.getCourseByCodeCourse(code);
-        courseService.deleteCourse(course);
-        return "delete-course";
+        boolean courseClosed = courseService.isClosed(course.getTanggalDimulai(), course.getTanggalBerakhir());
+        if (courseClosed){
+            courseService.deleteCourse(course);
+            model.addAttribute("course", course);
+            return "delete-course";
+        }
+        else return "delete-no-code";
     }
 
     @GetMapping("/course/view-all-sort")
@@ -148,12 +162,38 @@ public class CourseController {
 
         return "form-add-course";
     }
-//    #view all ordered by name
-//    @GetMapping("/course/viewall/ordered")
-//    public String listCourseOrdered(Model model) {
-////        List<CourseModel> listCourse = courseService.getListCourse();
-//        CourseModel course = courseService.viewAllOrderedByName();
-//        model.addAttribute("course", course);
-//        return "viewall-ordered-course";
-//    }
+
+    @PostMapping(value = "/course/add", params = {"addRowPengajar"})
+    private String addRowPengajarMultiple(
+            @ModelAttribute CourseModel course,
+            Model model
+    ){
+        if (course.getListPengajar() == null || course.getListPengajar().size() == 0) {
+            course.setListPengajar(new ArrayList<>());
+        }
+        course.getListPengajar().add(new PengajarModel());
+        List<PengajarModel> listPengajar = pengajarService.getListPengajar();
+
+        model.addAttribute("course", course);
+        model.addAttribute("listPengajarExisting", listPengajar);
+
+        return "form-add-course";
+    }
+
+    @PostMapping(value = "/course/add", params = {"deleteRowPengajar"})
+    private String deleteRowPengajarMultiple(
+            @ModelAttribute CourseModel course,
+            @RequestParam("deleteRowPengajar") Integer row,
+            Model model
+    ) {
+        final Integer rowId = Integer.valueOf(row);
+        course.getListPengajar().remove(rowId.intValue());
+
+        List<PengajarModel> listPengajar = pengajarService.getListPengajar();
+
+        model.addAttribute("course", course);
+        model.addAttribute("listPengajarExisting", listPengajar);
+
+        return "form-add-course";
+    }
 }
\ No newline at end of file
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/PengajarController.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/PengajarController.java
index f14850d..0e240bc 100644
--- a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/PengajarController.java
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/PengajarController.java
@@ -51,14 +51,6 @@ public class    PengajarController {
         return "form-update-pengajar";
     }
 
-//    @GetMapping("/pengajar/delete/{noPengajar}")
-//    public String deletePengajar(@PathVariable(value = "noPengajar") String noPengajar) {
-//        PengajarModel pengajar1 = pengajarService.getPengajarByNoPengajar(Long.parseLong(noPengajar));
-//        pengajarService.deletePengajar(pengajar1);
-//        System.out.println("Delete bisa");
-//        return "viewall-course";
-//    }
-
     @PostMapping("/pengajar/delete")
     public String deletePengajarSubmit(
             @ModelAttribute CourseModel course,
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/CourseDb.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/CourseDb.java
index 6863931..ba31f89 100644
--- a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/CourseDb.java
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/CourseDb.java
@@ -17,7 +17,5 @@ public interface CourseDb extends JpaRepository<CourseModel, String>{
 
     @Query("SELECT c FROM CourseModel c WHERE c.nameCourse = :nameCourse")
     Optional<CourseModel> findNameCourseByQuery(@Param("nameCourse") String nameCourse);
-//    @Query(value = "SELECT * FROM CourseModel c ORDER BY c.nameCourse ASC", nativeQuery = true)
-//    List<CourseModel> viewAllOrderedByName();
 
 }
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseService.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseService.java
index 657d37e..6dc46f1 100644
--- a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseService.java
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseService.java
@@ -17,8 +17,5 @@ public interface CourseService {
     boolean courseClosed(CourseModel course);
     boolean isClosed(LocalDateTime tanggalDimulai, LocalDateTime tanggalBerakhir);
     void deleteCourse(CourseModel course);
-//    List<CourseModel> viewAllOrderedByName();
 
-
-//    void deleteCourse(CourseModel course);
 }
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseServiceImpl.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseServiceImpl.java
index f2a4d35..82378b2 100644
--- a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseServiceImpl.java
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseServiceImpl.java
@@ -62,9 +62,7 @@ public class CourseServiceImpl implements CourseService{
     public void deleteCourse(CourseModel course){
         courseDb.delete(course);
     }
-//    public String getName(String namaCourse) {
-//
-//    }
+
     @Override
     public boolean isClosed(LocalDateTime tanggalDimulai, LocalDateTime tanggalBerakhir) {
         LocalDateTime now = LocalDateTime.now();
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarService.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarService.java
index fb2abb3..5ee51d9 100644
--- a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarService.java
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarService.java
@@ -1,13 +1,14 @@
 package apap.tutorial.belajarbelajar.service;
 import apap.tutorial.belajarbelajar.model.CourseModel;
 import apap.tutorial.belajarbelajar.model.PengajarModel;
+import apap.tutorial.belajarbelajar.model.PenyelenggaraModel;
+
+import java.util.List;
 
 public interface PengajarService {
     void addPengajar(PengajarModel pengajar);
-
     PengajarModel getPengajarByNoPengajar(Long noPengajar);
     PengajarModel updatePengajar(PengajarModel pengajar);
     void deletePengajar(PengajarModel pengajar);
-
-
+    List<PengajarModel> getListPengajar();
 }
diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarServiceImpl.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarServiceImpl.java
index 91d8a7d..0d39c42 100644
--- a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarServiceImpl.java
+++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarServiceImpl.java
@@ -3,12 +3,14 @@ package apap.tutorial.belajarbelajar.service;
 
 import apap.tutorial.belajarbelajar.model.CourseModel;
 import apap.tutorial.belajarbelajar.model.PengajarModel;
+import apap.tutorial.belajarbelajar.model.PenyelenggaraModel;
 import apap.tutorial.belajarbelajar.repository.PengajarDb;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.transaction.Transactional;
 import java.time.LocalDateTime;
+import java.util.List;
 import java.util.Optional;
 
 @Service
@@ -39,5 +41,10 @@ public class PengajarServiceImpl implements PengajarService{
     public void deletePengajar(PengajarModel pengajar) {pengajarDb.delete(pengajar);
     }
 
+    @Override
+    public List<PengajarModel> getListPengajar() {
+        return pengajarDb.findAll();
+    }
+
 
 }
diff --git a/belajarbelajar/src/main/resources/templates/delete-course.html b/belajarbelajar/src/main/resources/templates/delete-course.html
index 526a708..550c547 100644
--- a/belajarbelajar/src/main/resources/templates/delete-course.html
+++ b/belajarbelajar/src/main/resources/templates/delete-course.html
@@ -11,6 +11,6 @@
 <h2
         th:text="'Course dengan code Course ' + ${code} + ' berhasil dihapus.'"
 ></h2>
-<a href="/course/viewAll">Kembali</a>
+<a href="/course/viewall">Kembali</a>
 </body>
 </html>
\ No newline at end of file
diff --git a/belajarbelajar/src/main/resources/templates/delete-no-code.html b/belajarbelajar/src/main/resources/templates/delete-no-code.html
index d708c3a..1918f4e 100644
--- a/belajarbelajar/src/main/resources/templates/delete-no-code.html
+++ b/belajarbelajar/src/main/resources/templates/delete-no-code.html
@@ -11,6 +11,6 @@
 <h2
         th:text="'Course code tidak diberikan, gagal melakukan penghapusan Course'"
 ></h2>
-<a href="/course/viewAll">Kembali</a>
+<a href="/course/viewall">Kembali</a>
 </body>
 </html>
\ 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 b245cf1..1053c1f 100644
--- a/belajarbelajar/src/main/resources/templates/form-add-course.html
+++ b/belajarbelajar/src/main/resources/templates/form-add-course.html
@@ -72,6 +72,39 @@
             </tr>
             </tbody>
           </table>
+          <table class="table">
+            <thead>
+            <th>Pengajar Course</th>
+            <th>
+              <button class="btn btn-primary" type="submit" name="addRowPengajar">Tambah Row</button>
+            </th>
+            </thead>
+            <tbody>
+            <tr th:each="pengajar, iterationStatus : *{listPengajar}">
+              <td>
+                <select
+                        name="noPengajar"
+                        th:field="*{listPengajar[__${iterationStatus.index}__].noPengajar}"
+                        class="form-control"
+                >
+                  <div th:each="pengajarEx, iterationStatus2 : ${listPengajarExisting}">
+                    <option th:value="${pengajarEx.noPengajar}" th:text="${pengajarEx.namaPengajar}"></option>
+                  </div>
+                </select>
+              </td>
+              <td>
+                <button
+                        th:value="${iterationStatus.index}"
+                        class="btn btn-danger"
+                        type="submit"
+                        name="deleteRowPengajar"
+                >
+                  Hapus
+                </button>
+              </td>
+            </tr>
+            </tbody>
+          </table>
 
           <button class="btn btn-primary" type="submit" name="save">Submit</button>
           <a class="btn btn-primary" href="/">Home</a>
diff --git a/belajarbelajar/src/main/resources/templates/fragments/fragment.html b/belajarbelajar/src/main/resources/templates/fragments/fragment.html
index 42bd07c..f86cac5 100644
--- a/belajarbelajar/src/main/resources/templates/fragments/fragment.html
+++ b/belajarbelajar/src/main/resources/templates/fragments/fragment.html
@@ -34,12 +34,26 @@
   >
     <span class="navbar-toggler-icon"></span>
   </button>
+
   <div class="collapse navbar-collapse">
     <ul class="navbar-nav mr-auto">
-      <a class="nav-item nav-link active text-secondary" th:href="@{/}">
-        Beranda<span class="sr-only">(current)</span>
-      </a>
+      <li th:classappend="${#httpServletRequest.getRequestURI() == '/' ? 'nav-item active':'nav-item'}">
+        <a class="nav-item nav-link text-secondary" th:href="@{/}">
+          Beranda <span class="sr-only">(current)</span>
+        </a>
+      </li>
+      <li th:classappend="${#httpServletRequest.getRequestURI().startsWith('/course/viewall') == '/' ? 'nav-item active':'nav-item'}">
+        <a class="nav-item nav-link text-secondary" th:href="@{/course/viewall}">
+          Course <span class="sr-only">(current)</span>
+        </a>
+      </li>
+      <li th:classappend="${#httpServletRequest.getRequestURI().startsWith('/penyelenggara/viewall') == '/' ? 'nav-item active':'nav-item'}">
+        <a class="nav-item nav-link text-secondary" th:href="@{/penyelenggara/viewall}">
+          Penyelenggara <span class="sr-only">(current)</span>
+        </a>
+      </li>
     </ul>
+
     <form class="form-inline my-2 my-lg-0" th:action="@{/course/view/}" method="GET">
       <input class="form-control mr-sm-2" type="search"
              name="code" placeholder="Code Course" aria-label="Search">
@@ -50,3 +64,4 @@
 </body>
 
 </html>
+
diff --git a/belajarbelajar/src/main/resources/templates/home.html b/belajarbelajar/src/main/resources/templates/home.html
index 317e820..02075d5 100644
--- a/belajarbelajar/src/main/resources/templates/home.html
+++ b/belajarbelajar/src/main/resources/templates/home.html
@@ -1,40 +1,13 @@
 <!DOCTYPE html>
 <html lang="en" xmlns:th="http://thymeleaf.org">
 <head>
-  <meta charset="UTF-8">
   <title>BelajarBelajar</title>
-  <link rel="stylesheet" th:href="@{/css/bootstrap.min.css}"/>
+  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet"
+        integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous">
   <object th:include="fragments/fragment :: css" th:remove="tag"></object>
   <object th:include="fragments/fragment :: js" th:remove="tag"></object>
-</head>
 <body>
-
-<nav th:fragment="navbar" class="navbar navbar-expand-lg navbar-light bg-light">
-  <a class="navbar-brand font-weight-bold text-primary" href="#">BelajarBelajar</a>
-  <button
-          class="navbar-toggler"
-          type="button"
-          data-toggle="collapse"
-          data-target="@navbarNavAltMarkup"
-          aria-controls="navbarNavAltMarkup"
-          aria-expanded="false"
-          aria-label="Toggle navigation"
-  >
-    <span class="navbar-toggler-icon"></span>
-  </button>
-  <div class="collapse navbar-collapse">
-    <ul class="navbar-nav mr-auto">
-      <a class="nav-item nav-link active text-secondary" th:href="@{/}">
-        Beranda<span class="sr-only">(current)</span>
-      </a>
-    </ul>
-    <form class="form-inline my-2 my-lg-0" th:action="@{/course/view}" method="GET">
-      <input class="form-control mr-sm-2" type="search"
-             name="code" placeholder="Code Course" aria-label="Search">
-      <button class="btn btn-outline-primary my-2 my-sm-0" type="submit">Search</button>
-    </form>
-  </div>
-</nav>
+<nav th:replace="fragments/fragment :: navbar"></nav>
 
 <div class="d-flex justify-content-center">
   <div class="m-4">
diff --git a/belajarbelajar/src/main/resources/templates/view-course.html b/belajarbelajar/src/main/resources/templates/view-course.html
index d8f4498..502a2f9 100644
--- a/belajarbelajar/src/main/resources/templates/view-course.html
+++ b/belajarbelajar/src/main/resources/templates/view-course.html
@@ -1,40 +1,13 @@
 <!DOCTYPE html>
 <html lang="en" xmlns:th="http://thymeleaf.org">
 <head>
-  <meta charset="UTF-8">
-  <title>Beranda</title>
-  <link rel="stylesheet" th:href="@{/css/bootstrap.min.css}"/>
+  <title>BelajarBelajar</title>
+  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet"
+        integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous">
   <object th:include="fragments/fragment :: css" th:remove="tag"></object>
   <object th:include="fragments/fragment :: js" th:remove="tag"></object>
-</head>
 <body>
-
-<nav th:fragment="navbar" class="navbar navbar-expand-lg navbar-light bg-light">
-  <a class="navbar-brand font-weight-bold text-primary" href="#">BelajarBelajar</a>
-  <button
-          class="navbar-toggler"
-          type="button"
-          data-toggle="collapse"
-          data-target="@navbarNavAltMarkup"
-          aria-controls="navbarNavAltMarkup"
-          aria-expanded="false"
-          aria-label="Toggle navigation"
-  >
-    <span class="navbar-toggler-icon"></span>
-  </button>
-  <div class="collapse navbar-collapse">
-    <ul class="navbar-nav mr-auto">
-      <a class="nav-item nav-link active text-secondary" th:href="@{/}">
-        Beranda<span class="sr-only">(current)</span>
-      </a>
-    </ul>
-    <form class="form-inline my-2 my-lg-0" th:action="@{/course/view}" method="GET">
-      <input class="form-control mr-sm-2" type="search"
-             name="code" placeholder="Code Course" aria-label="Search">
-      <button class="btn btn-outline-primary my-2 my-sm-0" type="submit">Search</button>
-    </form>
-  </div>
-</nav>
+<nav th:replace="fragments/fragment :: navbar"></nav>
 
 <div class="container">
   <div class="card m-4 p-4">
@@ -48,6 +21,7 @@
         <p th:text="'Jumlah SKS: ' + ${course.jumlahSks}"></p>
         <p th:text="'Tanggal Dimulai: ' + ${#temporals.format(course.tanggalDimulai, 'dd MMMM yyyy HH:mm')}"></p>
         <p th:text="'Tanggal Berakhir: ' + ${#temporals.format(course.tanggalBerakhir, 'dd MMMM yyyy HH:mm')}"></p>
+        <a class="btn btn-primary" th:href="@{/pengajar/add/} + ${course.code}">Tambah Pengajar</a>
 
         <div th:if="*{listPengajar.size() != 0}">
           <form th:action="@{/pengajar/delete}" th:object="${course}" method="POST">
@@ -87,22 +61,42 @@
               </tbody>
             </table>
             <input type="submit" value="Delete Pengajar yang dipilih" class="btn btn-danger">
-            <input type="submit" value="Delete yang dipilih" class="btn btn-danger">
-
           </form>
         </div>
+
         <div th:unless="*{listPengajar.size() != 0}">
           <h2 th:text="'Tidak ada Pengajar'"></h2>
         </div>
         <br>
-        <a class="btn btn-primary" href="/course/viewall">Kembali</a>
-        <a class="btn btn-primary" th:href="@{/pengajar/add/} + ${course.code}">Tambah Pengajar</a>
-        <div th:if="${cekPengajar == true }">
-          <a class="btn btn-primary" th:href="@{/course/delete/} + ${course.code}">Delete</a>
+        <div th:if = "*{listPenyelenggara.size() != 0}">
+          <table class="table">
+            <thead>
+            <tr>
+              <th>No</th>
+              <th>No Penyelenggara</th>
+              <th>Nama Penyelenggara</th>
+              <th>Jenis Lembaga</th>
+            </tr>
+            </thead>
+            <tbody>
+            <tr th:each="penyelenggara, iterationStatus : ${listPenyelenggara}"
+                th:style="${iterationStatus.even} ? 'font-weight:bold;'">
+              <td th:text="${iterationStatus.count}"></td>
+              <td th:text="${penyelenggara.noPenyelenggara}"></td>
+              <td th:text="${penyelenggara.namaPenyelenggara}"></td>
+              <td>
+                <span th:if="${penyelenggara.jenisLembaga == 0}" th:text="'Non-Pendidikan'"></span>
+                <span th:if="${penyelenggara.jenisLembaga == 1}" th:text="'Pendidikan'"></span>
+              </td>
+            </tr>
+            </tbody>
+          </table>
         </div>
-        <div th:unless="${cekPengajar == true }">
-          <a class="btn btn-primary" href="/course/error">Delete</a>
+        <div th:unless = "*{listPenyelenggara.size() != 0}">
+          <h2 th:text = "'Tidak ada Penyelenggara'"></h2>
         </div>
+        <a class="btn btn-primary" href="/course/viewall">Kembali</a>
+
       </div>
     </div>
   </div>
diff --git a/belajarbelajar/src/main/resources/templates/viewall-course.html b/belajarbelajar/src/main/resources/templates/viewall-course.html
index f10cab7..54fb6bc 100644
--- a/belajarbelajar/src/main/resources/templates/viewall-course.html
+++ b/belajarbelajar/src/main/resources/templates/viewall-course.html
@@ -1,39 +1,13 @@
 <!DOCTYPE html>
 <html lang="en" xmlns:th="http://thymeleaf.org">
 <head>
-    <meta charset="UTF-8">
-    <title>View All Course</title>
-    <link rel="stylesheet" th:href="@{/css/bootstrap.min.css}"/>
+    <title>BelajarBelajar</title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet"
+          integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous">
     <object th:include="fragments/fragment :: css" th:remove="tag"></object>
     <object th:include="fragments/fragment :: js" th:remove="tag"></object>
-</head>
 <body>
-<nav th:fragment="navbar" class="navbar navbar-expand-lg navbar-light bg-light">
-    <a class="navbar-brand font-weight-bold text-primary" href="#">BelajarBelajar</a>
-    <button
-            class="navbar-toggler"
-            type="button"
-            data-toggle="collapse"
-            data-target="@navbarNavAltMarkup"
-            aria-controls="navbarNavAltMarkup"
-            aria-expanded="false"
-            aria-label="Toggle navigation"
-    >
-        <span class="navbar-toggler-icon"></span>
-    </button>
-    <div class="collapse navbar-collapse">
-        <ul class="navbar-nav mr-auto">
-            <a class="nav-item nav-link active text-secondary" th:href="@{/}">
-                Beranda<span class="sr-only">(current)</span>
-            </a>
-        </ul>
-        <form class="form-inline my-2 my-lg-0" th:action="@{/course/view}" method="GET">
-            <input class="form-control mr-sm-2" type="search"
-                   name="code" placeholder="Code Course" aria-label="Search">
-            <button class="btn btn-outline-primary my-2 my-sm-0" type="submit">Search</button>
-        </form>
-    </div>
-</nav>
+<nav th:replace="fragments/fragment :: navbar"></nav>
 
 <div class="container">
     <div class="card m-4 p-4">
@@ -61,7 +35,7 @@
                                 <a class="btn btn-primary" th:href="@{/course/view(code=${course.code})}">Detail Course</a>
                                 <a class="btn btn-outline-primary" th:href="@{/course/view-query(code=${course.code})}">Detail Course By Query</a>
                                 <a class="btn btn-warning" th:href="@{/course/update/} + ${course.code}">Update Course</a>
-                                <a class="btn btn-danger" th:href="@{/course/deleteCourse/} + ${course.code}">Delete Course</a>
+                                <a class="btn btn-danger" th:href="@{/course/delete/} + ${course.code}">Delete Course</a>
                             </div>
 
                         </td>
-- 
GitLab