diff --git a/README.md b/README.md index db5d0854234e1c1cf6a3f050525110a9fc72f4c7..8a7587435ab9b135e3859e3d317f7a99d9cd2aae 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,22 @@ # Tutorial APAP --- +## Tutorial 3 +### Pertanyaan 1 +anotasi yang disebutkan merupakan implementasi dari projek lombok(plugin) untuk membantu menulis kode +@AllArgsConstructor untuk membuat konstruktor dengan argumen, sedangkan @NoArgsConstructor kebalikannya, yaitu tanpa argumen. +@setter dan @getter untuk membuat method set dan get secara otomatis +@entity menyatakan class ini akan dimap ke database +@table memberikan nama table pada database +### Pertanyaan 2 +perbedaannya, apabila menggunakan @QUERY itu menggunakan query ke database dahulu. +### Pertanyaan 3 +@jointable berguna menggabungkan dua tabel menjadi satu dengan FK di dua tabel tsb. @joincolumn menggabungkan suatu kolom dari suatu tabel ke tabel lain sehingga tabel tsb ada relasi dengan tabel yang dijoinkolomkan +### Pertanyaan 4 +pada @joincolumn, name mengacu pada nama kolom di tabel pengajar, referencedcolumnname sebagai acuan kolom di tabel lain. nullable berguna menyatakan apakah boleh kolom tersebut null atau tidak. sama dengan @notnull +### Pertanyaan 5 +fetchtype.lazy = pemanggilan data bersifat sesuai permintaan. +fetchtype.eager = sebaliknya dari lazy. data dipanggil langsung tanpa ada permintaan. +CascadeType.ALL = set operasi cascadable untuk entitas yang saling berhubungan dimana set operasi ini akan perform beberapa operasi seperti PERSIST, MERGE, REMOVE, DETACH, REFRESH untuk entitas parent. ## Tutorial 2 ### Pertanyaan 1 Jawab: Error resolving template [add-course], template might not exist or might not be accessible by any of the configured Template Resolvers diff --git a/belajarbelajar/build.gradle b/belajarbelajar/build.gradle index 605ad9476d5415141ec1ff36e8a1ec93788f240e..ae74c874310b82917b2cfe6f630e9c43ec2534a5 100644 --- a/belajarbelajar/build.gradle +++ b/belajarbelajar/build.gradle @@ -17,6 +17,11 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' developmentOnly 'org.springframework.boot:spring-boot-devtools' testImplementation 'org.springframework.boot:spring-boot-starter-test' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'mysql:mysql-connector-java:5.1.6' + compileOnly("org.projectlombok:lombok:1.18.24") + annotationProcessor('org.projectlombok:lombok:1.18.24') + implementation 'org.springframework.boot:spring-boot-starter-validation:2.7.3' } tasks.named('test') { diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/BaseController.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/BaseController.java new file mode 100644 index 0000000000000000000000000000000000000000..196b9678193c2d7f343a9f9266cf8e50e1f6c909 --- /dev/null +++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/BaseController.java @@ -0,0 +1,12 @@ +package apap.tutorial.belajarbelajar.controller; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller +public class BaseController { + @GetMapping("/") + private String Home(){ + return "home"; + } +} 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 f4e2b529affe33dee11e6dc0de8bba455b2a7c39..8eac90fed269fd5329e7053035a265a4bc326339 100644 --- a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/CourseController.java +++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/CourseController.java @@ -1,50 +1,38 @@ package apap.tutorial.belajarbelajar.controller; +import apap.tutorial.belajarbelajar.model.PengajarModel; +import apap.tutorial.belajarbelajar.repository.CourseDb; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; import apap.tutorial.belajarbelajar.model.CourseModel; import apap.tutorial.belajarbelajar.service.CourseService; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Controller public class CourseController { + @Qualifier("courseServiceImpl") @Autowired private CourseService courseService; - //routing URL - @RequestMapping("course/add") - public String addCourse( - @RequestParam(value = "code", required = true) String code, - @RequestParam(value = "nameCourse", required = true) String nameCourse, - @RequestParam(value = "description", required = true) String description, - @RequestParam(value = "jumlahSks", required = true) String jumlahSks, - Model model) { - List<CourseModel> listCourse = courseService.getListCourse(); - for(CourseModel course_ntr : listCourse){ - if (course_ntr.getCode().equals(code)){ - model.addAttribute("errormsg","kode course sama"); - return "error"; - } - } - //membuat objek courseModel - CourseModel course = new CourseModel(code,nameCourse, description, Integer.parseInt(jumlahSks)); - //memanggil service addcourse - courseService.addCourse(course); - //add variabel code course ke 'code' untuk dirender di thymeleaf - model.addAttribute("code",code); - //add variabel name course ke 'nameCourse' untuk dirender di thymeleaf - model.addAttribute("nameCourse",nameCourse); - - return "add-course"; + + @RequestMapping("/course/add") + public String addCourseFormPage(Model model) { + model.addAttribute("course",new CourseModel()); + return "form-add-course"; + } + @PostMapping("/course/add") + public String addCourseSubmitPage(@ModelAttribute CourseModel course, Model model) { + courseService.addCourse(course); + model.addAttribute("code",course.getCode()); + return "add-course"; } - @RequestMapping("course/viewAll") + @RequestMapping("/course/viewall") public String listCourse(Model model){ //mendapatkan semua course List<CourseModel> listCourse = courseService.getListCourse(); @@ -54,96 +42,76 @@ public class CourseController { } - @RequestMapping("course/view") - public String detailCourse(@RequestParam(value = "code") String code, Model model){ + @RequestMapping("/course/view") + public String viewDetailCoursePage(@RequestParam(value = "code") String code, Model model){ //mendapatkan course sesuai code CourseModel course = courseService.getCourseByCodeCourse(code); - + List<PengajarModel> listPengajar = course.getListPengajar(); + model.addAttribute("listPengajar",listPengajar); //add variabel semua course model ke "listCourse" untuk dirender ke thymeleaf model.addAttribute("course",course); return "view-course"; } - @GetMapping(value = "course/view/code-course/{code}") - public String detailCoursePath(@PathVariable String code, Model model){ - + @GetMapping("/course/view-query") + public String viewDetailCoursePageQuery(@RequestParam(value = "code") String code, Model model){ + CourseModel course =courseService.getCourseByCodeCourse(code); + List<PengajarModel> listPengajar = course.getListPengajar(); + model.addAttribute("listPengajar",listPengajar); + model.addAttribute("course",course); + return "view-course"; + } + @GetMapping( "/course/update/{code}") + public String updateCourseFormPage(@PathVariable String code, Model model){ CourseModel course = courseService.getCourseByCodeCourse(code); - if (course == null) { - model.addAttribute("errormsg","course tidak ada"); - return "error"; - - } else { - model.addAttribute("course",course); - return "view-course"; - } - - - - + model.addAttribute("course", course); + return "form-update-course"; } - @GetMapping(value = "course/update/code-course/{code}/jumlah-sks/{jumlah}") - public String updateCoursePath(@PathVariable String code,@PathVariable String jumlah, Model model){ - - - CourseModel course = courseService.getCourseByCodeCourse(code); - if (course==null){ - model.addAttribute("errormsg","course tidak ada"); - return "error"; - } else{ - course.setJumlahSks(Integer.parseInt(jumlah)); - model.addAttribute("course",course); - return "update-course"; - } - + @PostMapping("/course/update") + public String updateCourseSubmitPage(@ModelAttribute CourseModel course, Model model){ + CourseModel updatedCourse = courseService.updateCourse(course); + model.addAttribute("code", updatedCourse.getCode()); + return "update-course"; } - @GetMapping(value = "course/delete/code-course/{code}") - public String deleteCourse(@PathVariable String code, Model model){ + @RequestMapping("/course/viewAllSort") + public String listCourseSort(Model model){ + //mendapatkan semua course + List<CourseModel> listCourse = courseService.getListSortName(); + //add variabel semua course model ke "listCourse" untuk dirender ke thymeleaf + model.addAttribute("listCourse",listCourse); + return "viewall-course"; + } + @GetMapping("/course/delete/{code}") + public String deleteCourse(@PathVariable String code, Model model){ +// PengajarModel pengajar = pengajarService.getPengajarById(noPengajar); CourseModel course = courseService.getCourseByCodeCourse(code); - List<CourseModel> listCourse = courseService.getListCourse(); - if (course==null){ - model.addAttribute("errormsg","course tidak ada"); + LocalDateTime today = LocalDateTime.now(); + LocalDateTime berak = course.getTanggalBerakhir(); + if (today.isAfter(berak)){ + if (course.getListPengajar().isEmpty()){ + courseService.deleteCourse(course); + model.addAttribute(code); + return "delete-course"; + } else { + model.addAttribute("errormsg","ada pengajar di dalam course"); + return "error"; + } + } + else{ + model.addAttribute("errormsg","course belum tutup"); return "error"; - } else{ - model.addAttribute("code",code); - listCourse.remove(course); - return "delete-course"; } - } - - @GetMapping(value = "course/delete/code-course/sks/{sks}") - public String deleteCourseSks(@PathVariable String sks, Model model){ - - List<CourseModel> listCourse = courseService.getListCourse(); - ArrayList<CourseModel> cars = new ArrayList<CourseModel>(); - for(CourseModel course_ntr : listCourse){ - if (course_ntr.getJumlahSks()==Integer.parseInt(sks)){ - cars.add(course_ntr); -// model.addAttribute("errormsg","kode course sama"); + } - } - } -// List<CourseModel> listCourse = courseService.getListCourse(); - if (cars.isEmpty()){ - model.addAttribute("errormsg","course tidak ada"); - return "error"; - } else { - //add variabel semua course model ke "listCourse" untuk dirender ke thymeleaf - model.addAttribute("listCourse",listCourse); - for (CourseModel course_ntr : cars){ - listCourse.remove(course_ntr); - } - return "delete-course-sks"; - } - } diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/PengajarController.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/PengajarController.java new file mode 100644 index 0000000000000000000000000000000000000000..83791db28e4b0e98cb1fa00133564d06323c329e --- /dev/null +++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/controller/PengajarController.java @@ -0,0 +1,99 @@ +package apap.tutorial.belajarbelajar.controller; +import apap.tutorial.belajarbelajar.model.PengajarModel; +import apap.tutorial.belajarbelajar.repository.CourseDb; +import apap.tutorial.belajarbelajar.repository.PengajarDb; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; + +import apap.tutorial.belajarbelajar.model.CourseModel; +import apap.tutorial.belajarbelajar.service.CourseService; +import apap.tutorial.belajarbelajar.service.PengajarService; + +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.ArrayList; +import java.util.List; + +@Controller +public class PengajarController { + @Qualifier("pengajarServiceImpl") + @Autowired + private PengajarService pengajarService; + + @Qualifier("courseServiceImpl") + @Autowired + private CourseService courseService; + + @GetMapping("/pengajar/add/{code}") + public String addPengajarFormPage(@PathVariable String code, Model model){ + PengajarModel pengajar = new PengajarModel(); + CourseModel course = courseService.getCourseByCodeCourse(code); + pengajar.setCourse(course); + model.addAttribute("pengajar",pengajar); + return "form-add-pengajar"; + } + @PostMapping("/pengajar/add") + public String addPengajarSubmitPage(@ModelAttribute PengajarModel pengajar, Model model){ + pengajarService.addPengajar(pengajar); + model.addAttribute("noPengajar",pengajar.getNoPengajar()); + return "add-pengajar"; + } + + @GetMapping( "/pengajar/update/{noPengajar}") + public String updatePengajarFormPage(@PathVariable Long noPengajar, Model model){ +// Long no = Long.parseLong(noPengajar); + PengajarModel pengajar = pengajarService.getPengajarById(noPengajar); + if (pengajar == null){ + model.addAttribute("errormsg", "pengajar tidak ada"); + return "error"; + } +// model.addAttribute("pengajar", pengajar); + model.addAttribute("pengajar", pengajar); + model.addAttribute("noPengajar", noPengajar); + model.addAttribute("course", pengajar.getCourse()); + return "form-update-pengajar"; + } + + @PostMapping("/pengajar/update/") + public String updatePengajarSubmitPage(@ModelAttribute PengajarModel pengajar, Model model){ +// PengajarModel pengajarModel = pengajarService.updatePengajar(pengajar); + + LocalDateTime today = LocalDateTime.now(); + CourseModel course= pengajar.getCourse(); + System.out.println(course); + LocalDateTime berak = course.getTanggalBerakhir(); +// System.out.println(berak); + if (today.isAfter(berak)){ + pengajarService.updatePengajar(pengajar); + model.addAttribute("namaPengajar", pengajar.getNamaPengajar()); + model.addAttribute("code", course.getCode()); + return "update-pengajar"; + } else{ + model.addAttribute("errormsg","course belum tutup"); + return "error"; + } + } + @GetMapping("/pengajar/delete/{noPengajar}") + public String deletePengajar(@PathVariable Long noPengajar, Model model){ + PengajarModel pengajar = pengajarService.getPengajarById(noPengajar); + CourseModel course = pengajar.getCourse(); + LocalDateTime today = LocalDateTime.now(); + LocalDateTime berak = course.getTanggalBerakhir(); + if (today.isAfter(berak)){ + pengajarService.deletePengajar(pengajar); + model.addAttribute("noPengajar", pengajar.getNoPengajar()); + model.addAttribute("tanggalBerakhir", course.getTanggalBerakhir()); + model.addAttribute("code", course.getCode()); + return "delete-pengajar"; + } + else{ + model.addAttribute("errormsg","course belum tutup"); + return "error"; + } + + + } +} diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/CourseModel.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/CourseModel.java index 1dfe3fa7469e7a140561ce4099d0859fedc54a2a..e96e1300e4deba5b0e82ab0c4dcc4f33e2316530 100644 --- a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/CourseModel.java +++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/CourseModel.java @@ -1,47 +1,57 @@ package apap.tutorial.belajarbelajar.model; - +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.io.Serializable; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.List; + +@AllArgsConstructor + +@NoArgsConstructor +@Setter +@Getter +@Entity +@Table(name = "course") public class CourseModel { + @Id + @Size(max = 30) private String code; + @NotNull + @Size(max = 30) + @Column(name = "name_course",nullable = false) private String nameCourse; + @NotNull + @Size(max = 200) + @Column(name = "description",nullable = false) private String description; + @NotNull + @Column(name = "jumlah_sks",nullable = false) private int jumlahSks; - public CourseModel(String code, String nameCourse, String description, int jumlahSks) { - this.code = code; - this.nameCourse = nameCourse; - this.description = description; - this.jumlahSks = jumlahSks; - } - - public String getCode() { - return code; - } - - public void setCode(String code) { - this.code = code; - } - - public String getNameCourse() { - return nameCourse; - } + @NotNull + @Column(nullable = false) + @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm") + private LocalDateTime tanggalDimulai; - public void setNameCourse(String nameCourse) { - this.nameCourse = nameCourse; - } + @NotNull + @Column(nullable = false) + @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm") + private LocalDateTime tanggalBerakhir; - public String getDescription() { - return description; - } + @OneToMany(mappedBy = "course",fetch = FetchType.LAZY,cascade = CascadeType.ALL) + private List<PengajarModel> listPengajar; - public void setDescription(String description) { - this.description = description; - } + @ManyToMany + @JoinTable(name = "penyelenggara_course", joinColumns = @JoinColumn(name = "code"), inverseJoinColumns = @JoinColumn(name = "no_penyelenggara")) + List<PenyelenggaraModel> listPenyelenggara; - public int getJumlahSks() { - return jumlahSks; - } - public void setJumlahSks(int jumlahSks) { - this.jumlahSks = jumlahSks; - } } diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/PengajarModel.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/PengajarModel.java new file mode 100644 index 0000000000000000000000000000000000000000..920c65127ab74ccc0b5df6835ae30d001bb343b4 --- /dev/null +++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/PengajarModel.java @@ -0,0 +1,44 @@ +package apap.tutorial.belajarbelajar.model; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.springframework.format.annotation.DateTimeFormat; +import org.hibernate.annotations.OnDelete; +import org.hibernate.annotations.OnDeleteAction; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.io.Serializable; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.List; +@AllArgsConstructor +@NoArgsConstructor +@Setter +@Getter +@Entity +@Table(name = "pengajar") +public class PengajarModel implements Serializable{ + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long noPengajar; + + @NotNull + @Size(max = 30) + @Column(name = "nama_pengajar",nullable = false) + private String namaPengajar; + + @NotNull + @Column(name = "is_pengajar_universitas",nullable = false) + private Boolean isPengajarUniversitas; + @ManyToOne(fetch = FetchType.EAGER, optional = false) + @JoinColumn(name = "code",referencedColumnName = "code",nullable = false) + @OnDelete(action = OnDeleteAction.CASCADE) + private CourseModel course; + + + + +} diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/PenyelenggaraModel.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/PenyelenggaraModel.java new file mode 100644 index 0000000000000000000000000000000000000000..4705681a7d5e99cb4b6e0ff03f8b26b0d81d525d --- /dev/null +++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/model/PenyelenggaraModel.java @@ -0,0 +1,40 @@ +package apap.tutorial.belajarbelajar.model; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.springframework.format.annotation.DateTimeFormat; +import org.hibernate.annotations.OnDelete; +import org.hibernate.annotations.OnDeleteAction; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.io.Serializable; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.List; +@AllArgsConstructor +@NoArgsConstructor +@Setter +@Getter +@Entity +@Table(name = "penyelenggara") +public class PenyelenggaraModel implements Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long noPenyelenggara; + + @NotNull + @Size(max = 30) + @Column(name = "nama_penyelenggara",nullable = false) + private String namaPenyelenggara; + + @NotNull + @Column(name = "jenis_lembaga",nullable = false) + private Integer jenisLembaga; + + @ManyToMany(mappedBy = "listPenyelenggara") + List<CourseModel> listCourse; + +} diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/CourseDb.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/CourseDb.java new file mode 100644 index 0000000000000000000000000000000000000000..e80eb2cd16d2212a3f97e6463ff731aa8dac2d15 --- /dev/null +++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/CourseDb.java @@ -0,0 +1,23 @@ +package apap.tutorial.belajarbelajar.repository; +import apap.tutorial.belajarbelajar.model.CourseModel; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; + +@Repository +public interface CourseDb extends JpaRepository<CourseModel, String> { + //JPA + Optional<CourseModel> findByCode(String code); + + @Query("SELECT c FROM CourseModel c WHERE c.code = :code") + Optional<CourseModel> findByCodeUsingQuery(@Param("code") String code); + + List<CourseModel> findAllByOrderByNameCourse(); + + + +} diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/PengajarDb.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/PengajarDb.java new file mode 100644 index 0000000000000000000000000000000000000000..99eaf338fc2ae1daebec97f5eb5f6de813f4c041 --- /dev/null +++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/PengajarDb.java @@ -0,0 +1,13 @@ +package apap.tutorial.belajarbelajar.repository; + +import apap.tutorial.belajarbelajar.model.PengajarModel; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface PengajarDb extends JpaRepository<PengajarModel, Long>{ + + Optional<PengajarModel> findByNoPengajar(Long noPengajar); +} diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/PenyelenggaraDb.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/PenyelenggaraDb.java new file mode 100644 index 0000000000000000000000000000000000000000..d94a0ed04434f9437ea7f28289c9f8e39f7d5170 --- /dev/null +++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/repository/PenyelenggaraDb.java @@ -0,0 +1,9 @@ +package apap.tutorial.belajarbelajar.repository; +import apap.tutorial.belajarbelajar.model.PengajarModel; +import apap.tutorial.belajarbelajar.model.PenyelenggaraModel; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +@Repository +public interface PenyelenggaraDb extends JpaRepository<PenyelenggaraModel, Long>{ + +} 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 9fb6349dbdd9d002b7ff21994efe216b268e2db0..2965f5c8dd1bb2d73a8e38c85954962e6670cec1 100644 --- a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseService.java +++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseService.java @@ -1,5 +1,7 @@ package apap.tutorial.belajarbelajar.service; import apap.tutorial.belajarbelajar.model.CourseModel; +import apap.tutorial.belajarbelajar.model.PengajarModel; + import java.util.List; public interface CourseService { @@ -9,6 +11,12 @@ public interface CourseService { List<CourseModel> getListCourse(); //mendapatkan data course berdasarkan code course CourseModel getCourseByCodeCourse(String code); + CourseModel getCourseByCodeCourseQuery(String code); + CourseModel updateCourse(CourseModel course); + List<CourseModel> getListSortName(); + + 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 8080b25b0ce9cd0d2f1bb0a884e5e42c17fd9fed..b4a23ae6669c07f4aa40c9ca2d42bdd0a1a0c2c7 100644 --- a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseServiceImpl.java +++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/CourseServiceImpl.java @@ -1,39 +1,58 @@ package apap.tutorial.belajarbelajar.service; + +import apap.tutorial.belajarbelajar.repository.CourseDb; import java.util.ArrayList; import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import apap.tutorial.belajarbelajar.model.CourseModel; +import javax.transaction.Transactional; + @Service +@Transactional public class CourseServiceImpl implements CourseService{ - private List<CourseModel> listCourse; - - public CourseServiceImpl(){ - listCourse = new ArrayList<>(); - } - + @Autowired + CourseDb courseDb; @Override public void addCourse(CourseModel course) { - listCourse.add(course); - + courseDb.save(course); } - @Override public List<CourseModel> getListCourse() { - return listCourse; - } + return courseDb.findAll(); + } @Override public CourseModel getCourseByCodeCourse(String code) { - for(CourseModel course : listCourse){ - if (course.getCode().equals(code)){ - return course; - } - } - return null; - } - + Optional<CourseModel> course = courseDb.findByCode(code); + if (course.isPresent()){ + return course.get(); + } else return null; + } + @Override + public CourseModel getCourseByCodeCourseQuery(String code) { + Optional<CourseModel> course = courseDb.findByCodeUsingQuery(code); + if (course.isPresent()){ + return course.get(); + } else return null; + } + @Override + public CourseModel updateCourse(CourseModel course) { + courseDb.save(course); + return course; + } + @Override + public List<CourseModel> getListSortName() { + return courseDb.findAllByOrderByNameCourse(); + } + @Override + public void deleteCourse(CourseModel course) { + courseDb.delete(course); + } } diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarService.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarService.java new file mode 100644 index 0000000000000000000000000000000000000000..898af630014b59eb515da3b7620b2500382424c3 --- /dev/null +++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarService.java @@ -0,0 +1,11 @@ +package apap.tutorial.belajarbelajar.service; +import apap.tutorial.belajarbelajar.model.CourseModel; +import apap.tutorial.belajarbelajar.model.PengajarModel; +import java.util.List; + +public interface PengajarService { + void addPengajar(PengajarModel pengajar); + void updatePengajar(PengajarModel pengajar); + PengajarModel getPengajarById(Long noPengajar); + void deletePengajar(PengajarModel pengajar); +} diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarServiceImpl.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..0b669272826c954bee009a5fd6bdf226c209adf8 --- /dev/null +++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PengajarServiceImpl.java @@ -0,0 +1,41 @@ +package apap.tutorial.belajarbelajar.service; +import apap.tutorial.belajarbelajar.model.CourseModel; +import apap.tutorial.belajarbelajar.repository.PengajarDb; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import apap.tutorial.belajarbelajar.model.PengajarModel; + +import javax.transaction.Transactional; +@Service +@Transactional +public class PengajarServiceImpl implements PengajarService{ + @Autowired + PengajarDb pengajarDb; + + @Override + public void addPengajar(PengajarModel pengajar) { + pengajarDb.save(pengajar); + } + + @Override + public void updatePengajar(PengajarModel pengajar) { + pengajarDb.save(pengajar); + } + + @Override + public PengajarModel getPengajarById(Long noPengajar) { + Optional<PengajarModel> pengajar = pengajarDb.findByNoPengajar(noPengajar); + if (pengajar.isPresent()){ + return pengajar.get(); + } else return null; + } + + @Override + public void deletePengajar(PengajarModel pengajar) { + pengajarDb.delete(pengajar); + } +} diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PenyelenggaraService.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PenyelenggaraService.java new file mode 100644 index 0000000000000000000000000000000000000000..df1d86659f090b77305a6a2d3cbfffde0ab8cbcd --- /dev/null +++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PenyelenggaraService.java @@ -0,0 +1,8 @@ +package apap.tutorial.belajarbelajar.service; + +import apap.tutorial.belajarbelajar.model.PenyelenggaraModel; +import java.util.List; + +public interface PenyelenggaraService { + void addPenyelenggara(PenyelenggaraModel penyelenggara); +} diff --git a/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PenyelenggaraServiceImpl.java b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PenyelenggaraServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..2e24d03fe6fb6e942c8fee5c309092f1c579d0e1 --- /dev/null +++ b/belajarbelajar/src/main/java/apap/tutorial/belajarbelajar/service/PenyelenggaraServiceImpl.java @@ -0,0 +1,25 @@ +package apap.tutorial.belajarbelajar.service; +import apap.tutorial.belajarbelajar.model.PengajarModel; +import apap.tutorial.belajarbelajar.model.PenyelenggaraModel; +import apap.tutorial.belajarbelajar.repository.CourseDb; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import apap.tutorial.belajarbelajar.repository.PenyelenggaraDb; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import apap.tutorial.belajarbelajar.model.CourseModel; + +import javax.transaction.Transactional; +@Service +@Transactional +public class PenyelenggaraServiceImpl implements PenyelenggaraService { + @Autowired + PenyelenggaraDb penyelenggaraDb; + + @Override + public void addPenyelenggara(PenyelenggaraModel penyelenggara) { + penyelenggaraDb.save(penyelenggara); + } +} diff --git a/belajarbelajar/src/main/resources/application.properties b/belajarbelajar/src/main/resources/application.properties index 8b137891791fe96927ad78e64b0aad7bded08bdc..9be6051e081b0d6bde7187c1cb54fe1470398e90 100644 --- a/belajarbelajar/src/main/resources/application.properties +++ b/belajarbelajar/src/main/resources/application.properties @@ -1 +1,16 @@ +#konfigurasi untuk koneksi MySQL +spring.sql.init.platform=mysql +spring.datasource.driver-class-name=com.mysql.jdbc.Driver +#sesuaikan NAMA_DATABASE dengan nama database anda +spring.datasource.url=jdbc:mysql://localhost:3306/belajarbelajar?useSSL=false&serverTimezone=Asia/Jakarta + +#sesuaikan dengan NAMA dan PASSWORD mysql anda +spring.datasource.username=root +spring.datasource.password= + +#optimize query untuk db MySQL +spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect + +#pembuatan database (create || create drop || validate || update) +spring.jpa.hibernate.ddl-auto=update diff --git a/belajarbelajar/src/main/resources/templates/add-course.html b/belajarbelajar/src/main/resources/templates/add-course.html index 3de1254ad975faefd7d634f508b94fb586988133..a890d8030feb145e4b71ce226c926a73ac56e2e7 100644 --- a/belajarbelajar/src/main/resources/templates/add-course.html +++ b/belajarbelajar/src/main/resources/templates/add-course.html @@ -1,13 +1,20 @@ <!DOCTYPE html> <html lang="en" xmlns:th="http://thymeleaf.org"> <head> - <meta charset="UTF-8"/> - <meta http-equiv="X-UA-Compatible" content="IE=edge"/> - <meta name="viewport" content="width=device-width, initial-scale=1.0"/> - <title>Add Course</title> -</head> + <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"></head> <body> - <h2 th:text="'Course dengan code '+${code}+' berhasil ditambahkan'"> </h2> - <a href="/course/viewAll">Kembali</a> +<div class="container"> + <div class="card m-4 p-4"> + <div class="card-body"> + <div class="justify-content-center"> + <h2 th:text="'Course dengan code ' + ${code} + ' berhasil ditambahkan.'"></h2> + <br> + <a class="btn btn-primary" href="/">Home</a> + </div> + </div> + </div> +</div> + </body> </html> \ No newline at end of file diff --git a/belajarbelajar/src/main/resources/templates/add-pengajar.html b/belajarbelajar/src/main/resources/templates/add-pengajar.html new file mode 100644 index 0000000000000000000000000000000000000000..ffc7fa102833f71c1dac9a270548109c7574055d --- /dev/null +++ b/belajarbelajar/src/main/resources/templates/add-pengajar.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html lang="en" xmlns:th="http://thymeleaf.org"> +<head> + <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"></head> +<body> +<div class="container"> + <div class="card m-4 p-4"> + <div class="card-body"> + <div class="justify-content-center"> + <h2 th:text="'Pengajar dengan no pengajar ' + ${noPengajar} + ' berhasil ditambahkan.'"></h2> + <br> + <a class="btn btn-primary" href="/">Home</a> + </div> + </div> + </div> +</div> + +</body> +</html> \ No newline at end of file diff --git a/belajarbelajar/src/main/resources/templates/delete-course.html b/belajarbelajar/src/main/resources/templates/delete-course.html index 0826c0c03f657cb9d5bad20c75908c5ebb312bd4..27858a4b449904196a74d7e30b863abc23b2b304 100644 --- a/belajarbelajar/src/main/resources/templates/delete-course.html +++ b/belajarbelajar/src/main/resources/templates/delete-course.html @@ -1,13 +1,14 @@ <!DOCTYPE html> <html lang="en" xmlns:th="http://thymeleaf.org"> + <head> - <meta charset="UTF-8"/> - <meta http-equiv="X-UA-Compatible" content="IE=edge"/> - <meta name="viewport" content="width=device-width, initial-scale=1.0"/> - <title>Delete Course</title> + <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"> </head> + <body> -<h2 th:text="'Course dengan code '+${code}+' berhasil dihapus'"> </h2> -<a href="/course/viewAll">Kembali</a> +<h2 th:text="'Course dengan kode ' + ${code} + ' berhasil dihapus' "></h2> +<a class="btn btn-primary" href="/">Home</a> </body> + </html> \ No newline at end of file diff --git a/belajarbelajar/src/main/resources/templates/delete-pengajar.html b/belajarbelajar/src/main/resources/templates/delete-pengajar.html new file mode 100644 index 0000000000000000000000000000000000000000..b7d2ca0094628c561e1939090617e9a15f9df8e6 --- /dev/null +++ b/belajarbelajar/src/main/resources/templates/delete-pengajar.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<html lang="en" xmlns:th="http://thymeleaf.org"> + +<head> + <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"> +</head> + +<body> +<h2 th:text="'Pengajar dengan nomor pengajar ' + ${noPengajar} + ' berhasil dihapus' "></h2> +<a class="btn btn-primary" href="/">Home</a> +</body> + +</html> \ No newline at end of file diff --git a/belajarbelajar/src/main/resources/templates/error.html b/belajarbelajar/src/main/resources/templates/error.html index 99592c7e36251a500c951873ddf8a159dffb07d5..18c5e4642335b2d1bf0c7f5ef88e458581ff06a6 100644 --- a/belajarbelajar/src/main/resources/templates/error.html +++ b/belajarbelajar/src/main/resources/templates/error.html @@ -1,13 +1,11 @@ <!DOCTYPE html> <html lang="en" xmlns:th="http://thymeleaf.org"> <head> - <meta charset="UTF-8"/> - <meta http-equiv="X-UA-Compatible" content="IE=edge"/> - <meta name="viewport" content="width=device-width, initial-scale=1.0"/> - <title>Error</title> -</head> + <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"></head> <body> <h2 th:text="'Error: '+${errormsg}"> </h2> -<a href="/course/viewAll">Kembali</a> +<a class="btn btn-primary" href="/">Home</a> +<a class="btn btn-primary" 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 new file mode 100644 index 0000000000000000000000000000000000000000..3c0cebf0798a3679fb161c6213696c1c59ab3d17 --- /dev/null +++ b/belajarbelajar/src/main/resources/templates/form-add-course.html @@ -0,0 +1,47 @@ +<!DOCTYPE html> +<html lang="en" xmlns:th="http://thymeleaf.org"> +<head> + <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"></head> +<body> +<div class="container"> + <div class="card m-4 p-4"> + <div class="card-body"> + <div class="justify-content-center"> + <h2>Tambah Course</h2> + <br> + <form th:action="@{/course/add}" th:object="${course}" method="POST"> + Code Course: <br> + <input class="form-control" type="text" name="code"/> + <br><br> + + Nama Course: <br> + <input class="form-control" type="text" name="nameCourse"/> + <br><br> + + Description: <br> + <input class="form-control" type="text" name="description"/> + <br><br> + + Jumlah SKS: <br> + <input required class="form-control" type="number" name="jumlahSks" /> + <br><br> + + Tanggal Dibuka: <br> + <input required class="form-control" type="datetime-local" name="tanggalDimulai" /> + <br><br> + + Tanggal Ditutup: <br> + <input required class="form-control" type="datetime-local" name="tanggalBerakhir" /> + <br><br> + + <button class="btn btn-primary" type="submit">Submit</button> + <a class="btn btn-primary" href="/">Home</a> + </form> + </div> + </div> + </div> +</div> + +</body> +</html> \ No newline at end of file diff --git a/belajarbelajar/src/main/resources/templates/form-add-pengajar.html b/belajarbelajar/src/main/resources/templates/form-add-pengajar.html new file mode 100644 index 0000000000000000000000000000000000000000..e873e2734388688d336fcae550e2ab1fd06131b8 --- /dev/null +++ b/belajarbelajar/src/main/resources/templates/form-add-pengajar.html @@ -0,0 +1,36 @@ +<!DOCTYPE html> +<html lang="en" xmlns:th="http://thymeleaf.org"> +<head> + <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"></head> +<body> +<div class="container"> + <div class="card m-4 p-4"> + <div class="card-body"> + <div class="justify-content-center"> + <h2>Tambah Pengajar</h2> + <br> + <form th:action="@{/pengajar/add}" th:object="${pengajar}" method="POST"> + <input type="hidden" th:field="*{course}" /> + + Nama Pengajar : <br> + <input class="form-control" type="text" name="namaPengajar"/> + <br> + + Tipe Pengajar : <br> + <select name="isPengajarUniversitas"> + <option value="0">Bukan Pengajar Universitas</option> + <option value="1">Pengajar Universitas</option> + </select> + <br><br> + + <button class="btn btn-primary" type="submit">Submit</button> + <a class="btn btn-primary" href="/">Home</a> + </form> + </div> + </div> + </div> +</div> + +</body> +</html> \ No newline at end of file diff --git a/belajarbelajar/src/main/resources/templates/form-update-course.html b/belajarbelajar/src/main/resources/templates/form-update-course.html new file mode 100644 index 0000000000000000000000000000000000000000..d30486045232251478c8613be1d1ef7c8d7b8caa --- /dev/null +++ b/belajarbelajar/src/main/resources/templates/form-update-course.html @@ -0,0 +1,49 @@ +<!DOCTYPE html> +<html lang="en" xmlns:th="http://thymeleaf.org"> +<head> + <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"></head> +<body> +<div class="container"> + <div class="card m-4 p-4"> + <div class="card-body"> + <div class="justify-content-center"> + <h2>Update Course</h2> + <br> + <form th:action="@{/course/update}" th:object="${course}" method="POST"> + + <input type="hidden" th:field="*{code}" /> + + + Nama Course: <br> + <input class="form-control" type="text" name="nameCourse" th:value="*{nameCourse}"/> + <br><br> + + Description: <br> + <input class="form-control" type="text" name="description" th:value="*{description}"/> + <br><br> + + Jumlah SKS: <br> + <input required class="form-control" type="number" name="jumlahSks" th:value="*{jumlahSks}" /> + <br><br> + + Tanggal Dibuka: <br> + <input required class="form-control" type="datetime-local" name="tanggalDimulai" th:value="*{tanggalDimulai}"/> + <br><br> + + Tanggal Ditutup: <br> + <input required class="form-control" type="datetime-local" name="tanggalBerakhir" th:value="*{tanggalBerakhir}"/> + <br><br> + + + + <button class="btn btn-primary" type="submit">Submit</button> + <a class="btn btn-primary" href="/course/viewall">Kembali</a> + </form> + </div> + </div> + </div> +</div> + +</body> +</html> \ No newline at end of file diff --git a/belajarbelajar/src/main/resources/templates/form-update-pengajar.html b/belajarbelajar/src/main/resources/templates/form-update-pengajar.html new file mode 100644 index 0000000000000000000000000000000000000000..b3575e7982de85f708ae35691ab5f4a49ed40524 --- /dev/null +++ b/belajarbelajar/src/main/resources/templates/form-update-pengajar.html @@ -0,0 +1,41 @@ +<!DOCTYPE html> +<html lang="en" xmlns:th="http://thymeleaf.org"> +<head> + <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"></head> +<body> +<div class="container"> + <div class="card m-4 p-4"> + <div class="card-body"> + <div class="justify-content-center"> + <h2>Update Pengajar</h2> + <br> + <form th:action="@{/pengajar/update/}" th:object="${pengajar}" method="POST"> + <input type="hidden" th:field="*{course}" /> + <input type="hidden" th:field="*{noPengajar}" /> + + Nama Course: <br> + <input class="form-control" type="text" name="namaPengajar" th:value="*{namaPengajar}"/> + <br><br> + + Tipe Pengajar : <br> + <select name="isPengajarUniversitas"> + <option value="0">Bukan Pengajar Universitas</option> + <option value="1">Pengajar Universitas</option> + </select> + <br><br> + + + + + + <button class="btn btn-primary" type="submit">Submit</button> + <a class="btn btn-primary" href="/course/viewall">Kembali</a> + </form> + </div> + </div> + </div> +</div> + +</body> +</html> \ No newline at end of file diff --git a/belajarbelajar/src/main/resources/templates/home.html b/belajarbelajar/src/main/resources/templates/home.html new file mode 100644 index 0000000000000000000000000000000000000000..bfc22ecbf7ef0593d33d94fe85b21a0c4de5ae5c --- /dev/null +++ b/belajarbelajar/src/main/resources/templates/home.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html lang="en" xmlns:th="http://thymeleaf.org"> +<head> + <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"></head> +<body> +<div class="container"> + <div class="card m-4 p-4"> + <div class="card-body"> + <div class="justify-content-center"> + <h2>Welcome to BelajarBelajar!</h2> + <br> + <a class="btn btn-primary" href="/course/add">Tambah Course</a> + <a class="btn btn-primary" href="/course/viewall">Lihat Semua Course</a> + <a class="btn btn-primary" href="/course/viewAllSort">Lihat Semua Course Sorted</a> + </div> + </div> + </div> +</div> + +</body> +</html> \ No newline at end of file diff --git a/belajarbelajar/src/main/resources/templates/update-course.html b/belajarbelajar/src/main/resources/templates/update-course.html index a7dc0d26a3bbdc5a79a40f34acac6f831f82a8c7..4fb70f5c7e46df92f1b42bb869d9758bc1b4d6b9 100644 --- a/belajarbelajar/src/main/resources/templates/update-course.html +++ b/belajarbelajar/src/main/resources/templates/update-course.html @@ -1,18 +1,20 @@ <!DOCTYPE html> <html lang="en" xmlns:th="http://thymeleaf.org"> <head> - <meta charset="UTF-8"/> - <meta http-equiv="X-UA-Compatible" content="IE=edge"/> - <meta name="viewport" content="width=device-width, initial-scale=1.0"/> - <title>View Course</title> -</head> + <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"></head> <body> -<h2 >Update Course </h2> -<h2 th:text="'Course dengan code '+${course.code}+' berhasil diubah sks-nya menjadi '+${course.jumlahSks}+' sks'"> </h2> -<h3 th:text="'Code course: '+ ${course.code}"></h3> -<h3 th:text="'Nama course: '+ ${course.nameCourse}"></h3> -<h3 th:text="'Deskripsi course: '+ ${course.description}"></h3> -<h3 th:text="'jumlah sks course: '+ ${course.jumlahSks}"></h3> -<a href="/course/viewAll">Kembali</a> +<div class="container"> + <div class="card m-4 p-4"> + <div class="card-body"> + <div class="justify-content-center"> + <h2 th:text="'Course dengan code ' + ${code} + ' berhasil diupdate.'"></h2> + <br> + <a class="btn btn-primary" href="/">Home</a> + </div> + </div> + </div> +</div> + </body> </html> \ No newline at end of file diff --git a/belajarbelajar/src/main/resources/templates/update-pengajar.html b/belajarbelajar/src/main/resources/templates/update-pengajar.html new file mode 100644 index 0000000000000000000000000000000000000000..5b13df95ef02de440173ef4721150f971dab2b69 --- /dev/null +++ b/belajarbelajar/src/main/resources/templates/update-pengajar.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html lang="en" xmlns:th="http://thymeleaf.org"> +<head> + <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"></head> +<body> +<div class="container"> + <div class="card m-4 p-4"> + <div class="card-body"> + <div class="justify-content-center"> + <h2 th:text="'Pengajar bernama '+ ${namaPengajar} +' di Course dengan code ' + ${code} + ' berhasil diupdate.'"></h2> + <br> + <a class="btn btn-primary" href="/">Home</a> + </div> + </div> + </div> +</div> + +</body> +</html> \ No newline at end of file diff --git a/belajarbelajar/src/main/resources/templates/view-course.html b/belajarbelajar/src/main/resources/templates/view-course.html index f76c2307f46babe2750a043cd4f21d4b0553aff5..784708c5c37e3d216b4b503c12098c6e21429bcf 100644 --- a/belajarbelajar/src/main/resources/templates/view-course.html +++ b/belajarbelajar/src/main/resources/templates/view-course.html @@ -1,17 +1,43 @@ <!DOCTYPE html> <html lang="en" xmlns:th="http://thymeleaf.org"> <head> - <meta charset="UTF-8"/> - <meta http-equiv="X-UA-Compatible" content="IE=edge"/> - <meta name="viewport" content="width=device-width, initial-scale=1.0"/> - <title>View Course</title> -</head> + <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"></head> <body> - <h2 >Informasi Course </h2> - <h3 th:text="'Code course: '+ ${course.code}"></h3> - <h3 th:text="'Nama course: '+ ${course.nameCourse}"></h3> - <h3 th:text="'Deskripsi course: '+ ${course.description}"></h3> - <h3 th:text="'jumlah sks course: '+ ${course.jumlahSks}"></h3> - <a href="/course/viewAll">Kembali</a> +<div class="container"> + <div class="card m-4 p-4"> + <div class="card-body"> + <div class="justify-content-center"> + <h2>Detail Course</h2> + <br> + <p th:text="'Code Course: ' + ${course.code}"></p> + <p th:text="'Nama Course: ' + ${course.nameCourse}"></p> + <p th:text="'Description: ' + ${course.description}"></p> + <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-danger" th:href="@{/course/delete/} + ${course.code}">Delete Course</a> + + <div class="col"> + <br> + <h4>Pengajar </h4> + <hr> + <div th:each="pengajar : ${listPengajar}"> + <p th:text="'Nama: ' + ${pengajar.namaPengajar}"></p> + <p th:if="${pengajar.isPengajarUniversitas == false}">Pekerjaan: Non-Dosen Universitas</p> + <p th:if="${pengajar.isPengajarUniversitas == true}">Pekerjaan: Dosen Universitas</p> + <a class="btn btn-success" th:href="@{/pengajar/update/} + ${pengajar.noPengajar}">Update Pengajar</a> + <a class="btn btn-danger" th:href="@{/pengajar/delete/} + ${pengajar.noPengajar}">Delete Pengajar</a> + <hr> + </div> + </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> + </div> + </div> +</div> + </body> </html> \ No newline at end of file diff --git a/belajarbelajar/src/main/resources/templates/viewall-course.html b/belajarbelajar/src/main/resources/templates/viewall-course.html index 2a9a0e33a009567ad5033634c42f7d4743049691..62ae9d9ddb304cede6a73d5c3accf815a068901e 100644 --- a/belajarbelajar/src/main/resources/templates/viewall-course.html +++ b/belajarbelajar/src/main/resources/templates/viewall-course.html @@ -1,20 +1,37 @@ <!DOCTYPE html> <html lang="en" xmlns:th="http://thymeleaf.org"> <head> - <meta charset="UTF-8"/> - <meta http-equiv="X-UA-Compatible" content="IE=edge"/> - <meta name="viewport" content="width=device-width, initial-scale=1.0"/> - <title>View All Course</title> -</head> + <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"></head> <body> -<h2 >Daftar Seluruh Course </h2> -<div th:each="course: ${listCourse}"> - <h3 th:text="'Code course: '+ ${course.code}"></h3> - <h3 th:text="'Nama course: '+ ${course.nameCourse}"></h3> - <h3 th:text="'Deskripsi course: '+ ${course.description}"></h3> - <h3 th:text="'jumlah sks course: '+ ${course.jumlahSks}"></h3> +<div class="container"> + <div class="card m-4 p-4"> + <div class="card-body"> + <div class="justify-content-center"> + <h2>List Course</h2> + <br> + <div th:each="course : ${listCourse}"> + <p th:text="'Code Course: ' + ${course.code}"></p> + <p th:text="'Nama Course: ' + ${course.nameCourse}"></p> + <p th:text="'Description: ' + ${course.description}"></p> + <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> + <div class="col"> + <a class="btn btn-primary" th:href="@{/course/view(code=${course.code})}">Detail + Course</a> + <a class="btn btn-primary" th:href="@{/course/view-query(code=${course.code})}">Detail + Course By Query</a> + <a class="btn btn-primary" th:href="@{/course/update/} + ${course.code}">Update Course</a> + </div> + <hr> + </div> + <br> + <a class="btn btn-primary" href="/">Home</a> + </div> + </div> + </div> </div> -<a href="/course/viewAll">Kembali</a> </body> </html> \ No newline at end of file