From 134b02fbc3a7f9b461321435fae07e5307886dc2 Mon Sep 17 00:00:00 2001 From: GhaitsaDina <ghaitsamaulidina@gmail.com> Date: Mon, 21 Nov 2022 10:37:04 +0700 Subject: [PATCH 01/19] chores: managing html package, change ddl-auto to 'create', --- .../src/main/resources/application.properties | 2 +- .../form-add-apoteker.html | 2 +- .../{manage => dokter}/list-dokter.html | 0 .../templates/fragments/fragment.html | 15 +++++--- .../main/resources/templates/home/home.html | 38 +++++++++++++++---- 5 files changed, 42 insertions(+), 15 deletions(-) rename SpringTkApap/src/main/resources/templates/{manage => apoteker}/form-add-apoteker.html (95%) rename SpringTkApap/src/main/resources/templates/{manage => dokter}/list-dokter.html (100%) diff --git a/SpringTkApap/src/main/resources/application.properties b/SpringTkApap/src/main/resources/application.properties index 81719e8..573f30a 100644 --- a/SpringTkApap/src/main/resources/application.properties +++ b/SpringTkApap/src/main/resources/application.properties @@ -9,7 +9,7 @@ spring.datasource.password= spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect -spring.jpa.hibernate.ddl-auto=create-drop +spring.jpa.hibernate.ddl-auto=create spring.main.allow-circular-references=true diff --git a/SpringTkApap/src/main/resources/templates/manage/form-add-apoteker.html b/SpringTkApap/src/main/resources/templates/apoteker/form-add-apoteker.html similarity index 95% rename from SpringTkApap/src/main/resources/templates/manage/form-add-apoteker.html rename to SpringTkApap/src/main/resources/templates/apoteker/form-add-apoteker.html index 84c95d2..862a8eb 100644 --- a/SpringTkApap/src/main/resources/templates/manage/form-add-apoteker.html +++ b/SpringTkApap/src/main/resources/templates/apoteker/form-add-apoteker.html @@ -30,7 +30,7 @@ </select> <br> <button type="submit" class="btn btn-primary">Submit</button> - <a class="btn btn-link" href="/">Home</a> + <a class="btn btn-link" href="/static">Home</a> </form> </div> </div> diff --git a/SpringTkApap/src/main/resources/templates/manage/list-dokter.html b/SpringTkApap/src/main/resources/templates/dokter/list-dokter.html similarity index 100% rename from SpringTkApap/src/main/resources/templates/manage/list-dokter.html rename to SpringTkApap/src/main/resources/templates/dokter/list-dokter.html diff --git a/SpringTkApap/src/main/resources/templates/fragments/fragment.html b/SpringTkApap/src/main/resources/templates/fragments/fragment.html index 5ad3f54..82de4b8 100644 --- a/SpringTkApap/src/main/resources/templates/fragments/fragment.html +++ b/SpringTkApap/src/main/resources/templates/fragments/fragment.html @@ -37,14 +37,17 @@ <li th:classappend="${page == 'Beranda'} ? active : ''" class="nav-item"> <a class="nav-link" th:href="@{/}">Beranda</a> </li> - <li th:classappend="${page == 'Course'} ? active : ''"class="nav-item"> - <a class="nav-link" th:href="@{/course/viewall/}">Resep</a> + <li th:classappend="${page == 'Dokter'} ? active : ''" class="nav-item"> + <a class="nav-link" th:href="@{/}">Dokter</a> </li> - <li th:classappend="${page == 'Penyelenggara'} ? active : ''"class="nav-item"> - <a class="nav-link" th:href="@{/penyelenggara/viewall/}">Obat</a> + <li th:classappend="${page == 'Resep'} ? active : ''"class="nav-item"> + <a class="nav-link" th:href="@{/}">Resep</a> </li> - <li sec:authorize="hasAnyAuthority('Admin')" th:classappend="${page == 'User'} ? active : ''"class="nav-item"> - <a class="nav-link" th:href="@{/user/viewall/}">Appointment</a> + <li th:classappend="${page == 'Obat'} ? active : ''"class="nav-item"> + <a class="nav-link" th:href="@{/obat/add}">Obat</a> + </li> + <li sec:authorize="hasAnyAuthority('Appointment')" th:classappend="${page == 'User'} ? active : ''"class="nav-item"> + <a class="nav-link" th:href="@{/}">Appointment</a> </li> </ul> <form class="form-inline my-2 my-lg-0" th:action="@{/course/view}" method="GET"> diff --git a/SpringTkApap/src/main/resources/templates/home/home.html b/SpringTkApap/src/main/resources/templates/home/home.html index 79c6a0e..9e1ab8a 100644 --- a/SpringTkApap/src/main/resources/templates/home/home.html +++ b/SpringTkApap/src/main/resources/templates/home/home.html @@ -1,20 +1,44 @@ <!DOCTYPE html> <html lang="en" xmlns:th="http://thymeleaf.org" xmlns:sec="http://www.w3.org/1999/xhtml"> <head> - <meta charset="UTF-8"> - <title>Beranda</title> - <object th:include="fragments/fragment :: css" th:remove="tag"></object> - <object th:include="fragments/fragment :: js" th:remove="tag"></object> + <meta charset="UTF-8"> + <title>Beranda</title> + <object th:include="fragments/fragment :: css" th:remove="tag"></object> + <object th:include="fragments/fragment :: js" th:remove="tag"></object> </head> <body> <object th:replace="fragments/fragment :: navbar('Beranda')"></object> <div class="alert" th:if="${message}"> - <div th:text="${message}" class="alert alert-success text-center" onclick="this.parentElement.style.display='none';"></div> + <div th:text="${message}" class="alert alert-success text-center" + onclick="this.parentElement.style.display='none';"></div> </div> <div class="d-flex justify-content-center"> - <h2 th:text="'Hello '+${#httpServletRequest.remoteUser}+'!'">Login as</h2> - <a class="nav-item nav-link text-text-secondary" th:href="@{/logout-sso}">Logout</a> + <div class="m-4 d-flex flex-column justify-content-center" style="gap: 12px"> + <div> + <h2 th:text="'Hello '+${#httpServletRequest.remoteUser}+'!'">Login as</h2> + </div> + <div> + <div> + <h5>Dokter Section</h5> + </div> + <a th:href="@{/}" class="mx-2 btn btn-primary">Sebuah Tombol</a> + </div> + <div> + <div> + <h5>Resep Section</h5> + </div> + <a th:href="@{/}" class="mx-2 btn btn-primary">Sebuah Tombol</a> + </div> + <div> + <div> + <h5>Obat Section</h5> + </div> + <a th:href="@{/obat/add}" class="mx-2 btn btn-primary">Add Obat</a> + <a th:href="@{/}" class="mx-2 btn btn-primary">Lihat Semua Obat</a> + </div> + <a class="my-2 mx-2 btn btn-danger pt-2" th:href="@{/logout-sso}">Logout</a> + </div> </div> </body> -- GitLab From 0399af1dc2d7baf7b44c2e84d8c51aab5c868190 Mon Sep 17 00:00:00 2001 From: GhaitsaDina <ghaitsamaulidina@gmail.com> Date: Mon, 21 Nov 2022 10:39:04 +0700 Subject: [PATCH 02/19] feat/obat: implemented add obat feature --- .../TK/SpringTkApap/jumlah/JumlahModel.java | 2 +- .../obat/controller/ObatController.java | 38 +++++++++++++++++++ .../obat/{ => model}/ObatModel.java | 8 ++-- .../SpringTkApap/obat/repository/ObatDb.java | 10 +++++ .../obat/service/ObatService.java | 7 ++++ .../obat/service/ObatServiceImpl.java | 21 ++++++++++ .../resources/templates/obat/add-obat.html | 26 +++++++++++++ .../templates/obat/form-add-obat.html | 31 +++++++++++++++ 8 files changed, 138 insertions(+), 5 deletions(-) create mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java rename SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/{ => model}/ObatModel.java (86%) create mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/repository/ObatDb.java create mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java create mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java create mode 100644 SpringTkApap/src/main/resources/templates/obat/add-obat.html create mode 100644 SpringTkApap/src/main/resources/templates/obat/form-add-obat.html diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/jumlah/JumlahModel.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/jumlah/JumlahModel.java index eeb05fb..c12bf8f 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/jumlah/JumlahModel.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/jumlah/JumlahModel.java @@ -5,7 +5,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import org.hibernate.annotations.OnDelete; import org.hibernate.annotations.OnDeleteAction; -import spring.TK.SpringTkApap.obat.ObatModel; +import spring.TK.SpringTkApap.obat.model.ObatModel; import spring.TK.SpringTkApap.resep.ResepModel; import javax.persistence.*; diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java new file mode 100644 index 0000000..5e07643 --- /dev/null +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java @@ -0,0 +1,38 @@ +package spring.TK.SpringTkApap.obat.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import spring.TK.SpringTkApap.jumlah.JumlahModel; +import spring.TK.SpringTkApap.obat.model.ObatModel; +import spring.TK.SpringTkApap.obat.service.ObatService; + +import java.util.ArrayList; +import java.util.List; + +@Controller +@RequestMapping("/obat") +public class ObatController { + + @Autowired + private ObatService obatService; + + @GetMapping("/add") + public String addObatForm(Model model){ + ObatModel obat = new ObatModel(); + model.addAttribute("obat", obat); + return "obat/form-add-obat"; + } + + @PostMapping("/add") + public String addObatSubmit(@ModelAttribute ObatModel obat, Model model){ + obatService.addObat(obat); + model.addAttribute("obat", obat); + return "obat/add-obat"; + } + +} diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/ObatModel.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatModel.java similarity index 86% rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/ObatModel.java rename to SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatModel.java index 8a315c4..e170917 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/ObatModel.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatModel.java @@ -1,9 +1,7 @@ -package spring.TK.SpringTkApap.obat; +package spring.TK.SpringTkApap.obat.model; import com.sun.istack.NotNull; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; import org.hibernate.annotations.GenericGenerator; import spring.TK.SpringTkApap.jumlah.JumlahModel; @@ -12,6 +10,8 @@ import java.io.Serializable; import java.util.List; @Data @Entity +@Setter +@Getter @Table(name = "obat") @NoArgsConstructor @AllArgsConstructor diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/repository/ObatDb.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/repository/ObatDb.java new file mode 100644 index 0000000..d8e98f4 --- /dev/null +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/repository/ObatDb.java @@ -0,0 +1,10 @@ +package spring.TK.SpringTkApap.obat.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import spring.TK.SpringTkApap.obat.model.ObatModel; + +@Repository +public interface ObatDb extends JpaRepository<ObatModel, String> { + +} diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java new file mode 100644 index 0000000..8ce968f --- /dev/null +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java @@ -0,0 +1,7 @@ +package spring.TK.SpringTkApap.obat.service; + +import spring.TK.SpringTkApap.obat.model.ObatModel; + +public interface ObatService { + void addObat(ObatModel obat); +} diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java new file mode 100644 index 0000000..1c90cf4 --- /dev/null +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java @@ -0,0 +1,21 @@ +package spring.TK.SpringTkApap.obat.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import spring.TK.SpringTkApap.obat.model.ObatModel; +import spring.TK.SpringTkApap.obat.repository.ObatDb; + +import javax.transaction.Transactional; + +@Service +@Transactional +public class ObatServiceImpl implements ObatService{ + + @Autowired + private ObatDb obatDb; + + @Override + public void addObat(ObatModel obat) { + obatDb.save(obat); + } +} diff --git a/SpringTkApap/src/main/resources/templates/obat/add-obat.html b/SpringTkApap/src/main/resources/templates/obat/add-obat.html new file mode 100644 index 0000000..7cbf49c --- /dev/null +++ b/SpringTkApap/src/main/resources/templates/obat/add-obat.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html lang="en" xmlns:th="http://thymeleaf.org"> +<head> + <meta charset="UTF-8"> + <title>RumahSehat</title> + <object th:include="fragments/fragment :: css" th:remove="tag"></object> + <object th:include="fragments/fragment :: js" th:remove="tag"></object> +</head> +<body> + +<nav th:replace="fragments/fragment :: navbar('Obat')"></nav> + +<div class="container"> + <div class="card m-4 p-4"> + <div class="card-body"> + <div class="justify-content-center"> + <h2 th:text="'Obat dengan nama ' + ${obat.namaObat} + ' 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/SpringTkApap/src/main/resources/templates/obat/form-add-obat.html b/SpringTkApap/src/main/resources/templates/obat/form-add-obat.html new file mode 100644 index 0000000..2eded3e --- /dev/null +++ b/SpringTkApap/src/main/resources/templates/obat/form-add-obat.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<html xmlns:th="http://www.thymeleaf.org"> +<head> + <title>Tambah Obat</title> + <object th:include="fragments/fragment :: css" th:remove="tag"></object> + <object th:include="fragments/fragment :: js" th:remove="tag"></object> +</head> +<body> +<object th:replace="fragments/fragment :: navbar('Obat')"></object> +<div class = "container"> + <div class="card m-4 p-4"> + <div class="card-body"> + <div class="justify-content-center"> <h2>Tambah Obat Baru</h2> + <br> + <form th:action="@{/obat/add}" th:object="${obat}" method="POST"> + <label>Harga</label> + <input th:field="*{harga}" type="number" name="harga" class="form-control"/> + <label>Nama</label> + <input th:field="*{namaObat}" type="text" name="nama" class="form-control"/> + <label>Stok</label> + <input th:field="*{stok}" type="number" name="stok" class="form-control"/> + <br/> + <button type="submit" class="btn btn-primary">Submit</button> + <a class="btn btn-link" href="/static">Home</a> + </form> + </div> + </div> + </div> +</div> +</body> +</html> \ No newline at end of file -- GitLab From 251a405f13ea67ffb55e70780740b762347793e6 Mon Sep 17 00:00:00 2001 From: GhaitsaDina <ghaitsamaulidina@gmail.com> Date: Mon, 21 Nov 2022 10:39:44 +0700 Subject: [PATCH 03/19] chores: managing html package on add dokter feature --- .../templates/{manage => dokter}/form-add-dokter.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) rename SpringTkApap/src/main/resources/templates/{manage => dokter}/form-add-dokter.html (92%) diff --git a/SpringTkApap/src/main/resources/templates/manage/form-add-dokter.html b/SpringTkApap/src/main/resources/templates/dokter/form-add-dokter.html similarity index 92% rename from SpringTkApap/src/main/resources/templates/manage/form-add-dokter.html rename to SpringTkApap/src/main/resources/templates/dokter/form-add-dokter.html index 0e312ae..3628006 100644 --- a/SpringTkApap/src/main/resources/templates/manage/form-add-dokter.html +++ b/SpringTkApap/src/main/resources/templates/dokter/form-add-dokter.html @@ -6,6 +6,7 @@ <object th:include="fragments/fragment :: js" th:remove="tag"></object> </head> <body> +<object th:replace="fragments/fragment :: navbar('Dokter')"></object> <div class = "container"> <div class="card m-4 p-4"> <div class="card-body"> @@ -33,7 +34,7 @@ <input type="text" name="tarif" class="form-control"/> <br> <button type="submit" class="btn btn-primary">Submit</button> - <a class="btn btn-link" href="/">Home</a> + <a class="btn btn-link" href="/static">Home</a> </form> </div> </div> -- GitLab From 2cd647c9de852a06c3bd349e22d2508416ed671c Mon Sep 17 00:00:00 2001 From: Muhammad Tsaqib Ibadillah Wahid <muhammad.tsaqib@ui.ac.id> Date: Mon, 21 Nov 2022 11:15:19 +0700 Subject: [PATCH 04/19] Feat/obat: finished viewall feature for model Obat. --- .../obat/controller/ObatController.java | 8 +++ .../obat/service/ObatService.java | 4 ++ .../obat/service/ObatServiceImpl.java | 6 ++ .../main/resources/templates/home/home.html | 2 +- .../templates/obat/viewall-obat.html | 57 +++++++++++++++++++ 5 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 SpringTkApap/src/main/resources/templates/obat/viewall-obat.html diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java index 5e07643..88450e4 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java @@ -35,4 +35,12 @@ public class ObatController { return "obat/add-obat"; } + @GetMapping("/viewall") + public String listObat(Model model) { + List<ObatModel> listObat = obatService.getListObat(); + + model.addAttribute("listObat", listObat); + return "obat/viewall-obat"; + } + } diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java index 8ce968f..d752f2f 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java @@ -2,6 +2,10 @@ package spring.TK.SpringTkApap.obat.service; import spring.TK.SpringTkApap.obat.model.ObatModel; +import java.util.List; + public interface ObatService { void addObat(ObatModel obat); + + List<ObatModel> getListObat(); } diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java index 1c90cf4..a632d13 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java @@ -6,6 +6,7 @@ import spring.TK.SpringTkApap.obat.model.ObatModel; import spring.TK.SpringTkApap.obat.repository.ObatDb; import javax.transaction.Transactional; +import java.util.List; @Service @Transactional @@ -18,4 +19,9 @@ public class ObatServiceImpl implements ObatService{ public void addObat(ObatModel obat) { obatDb.save(obat); } + + @Override + public List<ObatModel> getListObat() { + return obatDb.findAll(); + } } diff --git a/SpringTkApap/src/main/resources/templates/home/home.html b/SpringTkApap/src/main/resources/templates/home/home.html index 9e1ab8a..5277f90 100644 --- a/SpringTkApap/src/main/resources/templates/home/home.html +++ b/SpringTkApap/src/main/resources/templates/home/home.html @@ -35,7 +35,7 @@ <h5>Obat Section</h5> </div> <a th:href="@{/obat/add}" class="mx-2 btn btn-primary">Add Obat</a> - <a th:href="@{/}" class="mx-2 btn btn-primary">Lihat Semua Obat</a> + <a th:href="@{/obat/viewall}" class="mx-2 btn btn-primary">Lihat Semua Obat</a> </div> <a class="my-2 mx-2 btn btn-danger pt-2" th:href="@{/logout-sso}">Logout</a> </div> diff --git a/SpringTkApap/src/main/resources/templates/obat/viewall-obat.html b/SpringTkApap/src/main/resources/templates/obat/viewall-obat.html new file mode 100644 index 0000000..070c7e1 --- /dev/null +++ b/SpringTkApap/src/main/resources/templates/obat/viewall-obat.html @@ -0,0 +1,57 @@ +<!DOCTYPE html> +<html lang="en" xmlns:th="http://thymeleaf.org" xmlns:sec="http://www.w3.org/1999/xhtml"> +<head> + <meta charset="UTF-8"> + <title>RumahSehat - Daftar Obat</title> + <object th:include="fragments/fragment :: css" th:remove="tag"></object> + <object th:include="fragments/fragment :: js" th:remove="tag"></object> +</head> +<body> +<object th:replace="fragments/fragment :: navbar('Beranda')"></object> +<div class="container"> + <div class="card m-4 p-4"> + <div class="card-body"> + <div class="justify-content-center"> + <h2>Daftar Obat</h2> + <br> + <div th:if="*{listObat.size() != 0}"> + <br> + <table class="table"> + <thead> + <tr> + <th>No</th> + <th>Id</th> + <th>Nama</th> + <th>Stok</th> + <th>Harga</th> + <th>Aksi</th> + </tr> + </thead> + <tbody> + <tr th:each="obat, iterationStatus : ${listObat}" + th:style="${iterationStatus.even} ? 'font-weight:bold;'"> + <td th:text="${iterationStatus.count}"></td> + <td th:text="${obat.idObat}"></td> + <td th:text="${obat.namaObat}"></td> + <td th:text="${obat.stok}"></td> + <td th:text="${obat.harga}"></td> + <td> + <a class="btn btn-sm btn-warning" th:href="@{/obat/update/} + ${obat.idObat}">Update Stok</a> + </td> + </tr> + </tbody> + </table> + </div> + <div th:unless="*{listObat.size() != 0}"> + <br> + <h4 th:text="'Belum ada obat yang terdaftar'"></h4> + </div> + <br> + <a class="btn btn-primary" href="/">Home</a> + </div> + </div> + </div> +</div> + +</body> +</html> \ No newline at end of file -- GitLab From 2ef447cbab98a0675ce4dd110690d52de112ed42 Mon Sep 17 00:00:00 2001 From: GhaitsaDina <ghaitsamaulidina@gmail.com> Date: Mon, 21 Nov 2022 14:45:17 +0700 Subject: [PATCH 05/19] chores: update fragment, added 403 error page, and authorization for obat --- .../auth/security/WebSecurityConfig.java | 2 ++ .../obat/controller/ObatController.java | 19 +++++++++++++---- .../TK/SpringTkApap/obat/model/ObatModel.java | 2 +- .../SpringTkApap/obat/repository/ObatDb.java | 4 +++- .../obat/service/ObatService.java | 2 +- .../obat/service/ObatServiceImpl.java | 11 ++++++++++ .../main/resources/templates/error/403.html | 21 +++++++++++++++++++ .../templates/fragments/fragment.html | 2 +- .../templates/obat/viewall-obat.html | 9 ++++++-- 9 files changed, 62 insertions(+), 10 deletions(-) create mode 100644 SpringTkApap/src/main/resources/templates/error/403.html diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/WebSecurityConfig.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/WebSecurityConfig.java index 93321e7..46bfbe5 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/WebSecurityConfig.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/WebSecurityConfig.java @@ -35,6 +35,8 @@ public class WebSecurityConfig { .antMatchers("/login-sso", "/validate-ticket", "/validate-ticket/**").permitAll() .antMatchers("/home-not-access", "/logout-not-access").permitAll() .antMatchers("/logout-sso").permitAll() + .antMatchers("/obat/viewall").hasAnyAuthority("APOTEKER", "ADMIN") + .antMatchers("/obat/update/**").hasAuthority("APOTEKER") .anyRequest().authenticated() .and( ) .formLogin() diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java index 88450e4..1bfa29f 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java @@ -3,10 +3,7 @@ package spring.TK.SpringTkApap.obat.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.*; import spring.TK.SpringTkApap.jumlah.JumlahModel; import spring.TK.SpringTkApap.obat.model.ObatModel; import spring.TK.SpringTkApap.obat.service.ObatService; @@ -43,4 +40,18 @@ public class ObatController { return "obat/viewall-obat"; } + @GetMapping("/update/{idObat}") + public String updateObatForm(@PathVariable String idObat, Model model){ + ObatModel obat = obatService.getObat(idObat); + model.addAttribute("obat", obat); + return "obat/form-update-obat"; + } + + @PostMapping("/update") + public String updateObatSubmit(@ModelAttribute ObatModel obat, Model model){ + obatService.addObat(obat); + model.addAttribute("obat", obat); + return "obat/update-obat"; + } + } diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatModel.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatModel.java index e170917..325d61d 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatModel.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatModel.java @@ -24,7 +24,7 @@ public class ObatModel implements Serializable { private String namaObat; @NotNull @Column(nullable = false) - private Integer stok; + private Integer stok = 100; @NotNull @Column(nullable = false) private Integer harga; diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/repository/ObatDb.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/repository/ObatDb.java index d8e98f4..bab2d8a 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/repository/ObatDb.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/repository/ObatDb.java @@ -4,7 +4,9 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import spring.TK.SpringTkApap.obat.model.ObatModel; +import java.util.Optional; + @Repository public interface ObatDb extends JpaRepository<ObatModel, String> { - + Optional<ObatModel> findByIdObat(String idObat); } diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java index d752f2f..43e7c5d 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java @@ -6,6 +6,6 @@ import java.util.List; public interface ObatService { void addObat(ObatModel obat); - List<ObatModel> getListObat(); + ObatModel getObat(String idObat); } diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java index a632d13..192d056 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java @@ -7,6 +7,7 @@ import spring.TK.SpringTkApap.obat.repository.ObatDb; import javax.transaction.Transactional; import java.util.List; +import java.util.Optional; @Service @Transactional @@ -24,4 +25,14 @@ public class ObatServiceImpl implements ObatService{ public List<ObatModel> getListObat() { return obatDb.findAll(); } + + @Override + public ObatModel getObat(String idObat) { + Optional<ObatModel> obat = obatDb.findByIdObat(idObat); + if(obat.isPresent()){ + return obat.get(); + } else{ + return null; + } + } } diff --git a/SpringTkApap/src/main/resources/templates/error/403.html b/SpringTkApap/src/main/resources/templates/error/403.html new file mode 100644 index 0000000..c57eb5d --- /dev/null +++ b/SpringTkApap/src/main/resources/templates/error/403.html @@ -0,0 +1,21 @@ +<!DOCTYPE html> +<html lang="en" xmlns:th="http://thymeleaf.org"> +<head> + <meta charset="UTF-8"> + <title>403 NOT FOUND</title> + <object th:include="fragments/fragment :: css" th:remove="tag"></object> + <object th:include="fragments/fragment :: js" th:remove="tag"></object> +</head> +<body> +<nav th:replace="fragments/fragment :: navbar('Beranda')"></nav> + +<div class="d-flex justify-content-center"> + <div class="m-4 d-flex flex-column justify-content-center"> + <h2 class="text-center" th:text="${message}"></h2> + <h4 class="text-center"> You don't have the authority to access this page.</h4> + <a class="text-center" th:href="@{/}">Home</a> + </div> +</div> + +</body> +</html> \ No newline at end of file diff --git a/SpringTkApap/src/main/resources/templates/fragments/fragment.html b/SpringTkApap/src/main/resources/templates/fragments/fragment.html index 82de4b8..2b2e977 100644 --- a/SpringTkApap/src/main/resources/templates/fragments/fragment.html +++ b/SpringTkApap/src/main/resources/templates/fragments/fragment.html @@ -44,7 +44,7 @@ <a class="nav-link" th:href="@{/}">Resep</a> </li> <li th:classappend="${page == 'Obat'} ? active : ''"class="nav-item"> - <a class="nav-link" th:href="@{/obat/add}">Obat</a> + <a class="nav-link" th:href="@{/obat/viewall}">Obat</a> </li> <li sec:authorize="hasAnyAuthority('Appointment')" th:classappend="${page == 'User'} ? active : ''"class="nav-item"> <a class="nav-link" th:href="@{/}">Appointment</a> diff --git a/SpringTkApap/src/main/resources/templates/obat/viewall-obat.html b/SpringTkApap/src/main/resources/templates/obat/viewall-obat.html index 070c7e1..5f3cdf0 100644 --- a/SpringTkApap/src/main/resources/templates/obat/viewall-obat.html +++ b/SpringTkApap/src/main/resources/templates/obat/viewall-obat.html @@ -7,12 +7,17 @@ <object th:include="fragments/fragment :: js" th:remove="tag"></object> </head> <body> -<object th:replace="fragments/fragment :: navbar('Beranda')"></object> +<object th:replace="fragments/fragment :: navbar('Obat')"></object> <div class="container"> <div class="card m-4 p-4"> <div class="card-body"> <div class="justify-content-center"> - <h2>Daftar Obat</h2> + <div class="d-flex justify-content-between"> + <h2>Daftar Obat</h2> + <div> + <a class="btn btn-primary" th:href="@{/obat/add/}">Add Obat</a> + </div> + </div> <br> <div th:if="*{listObat.size() != 0}"> <br> -- GitLab From ef906a17d4eba11da938729eec85f80551e1d370 Mon Sep 17 00:00:00 2001 From: GhaitsaDina <ghaitsamaulidina@gmail.com> Date: Mon, 21 Nov 2022 14:46:46 +0700 Subject: [PATCH 06/19] feat/obat: implemented update obat --- .../templates/obat/form-update-obat.html | 32 +++++++++++++++++++ .../resources/templates/obat/update-obat.html | 26 +++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 SpringTkApap/src/main/resources/templates/obat/form-update-obat.html create mode 100644 SpringTkApap/src/main/resources/templates/obat/update-obat.html diff --git a/SpringTkApap/src/main/resources/templates/obat/form-update-obat.html b/SpringTkApap/src/main/resources/templates/obat/form-update-obat.html new file mode 100644 index 0000000..8bb5719 --- /dev/null +++ b/SpringTkApap/src/main/resources/templates/obat/form-update-obat.html @@ -0,0 +1,32 @@ +<!DOCTYPE html> +<html xmlns:th="http://www.thymeleaf.org"> +<head> + <title>Update Obat</title> + <object th:include="fragments/fragment :: css" th:remove="tag"></object> + <object th:include="fragments/fragment :: js" th:remove="tag"></object> +</head> +<body> +<object th:replace="fragments/fragment :: navbar('Obat')"></object> +<div class = "container"> + <div class="card m-4 p-4"> + <div class="card-body"> + <div class="justify-content-center"> <h2>Update Obat</h2> + <br> + <form th:action="@{/obat/update}" th:object="${obat}" method="POST"> + <input hidden th:field="*{idObat}" type="text" name="harga" class="form-control"/> + <label>Harga</label> + <input readonly th:field="*{harga}" type="number" name="harga" class="form-control"/> + <label>Nama</label> + <input readonly th:field="*{namaObat}" type="text" name="nama" class="form-control"/> + <label>Stok</label> + <input th:field="*{stok}" type="number" name="stok" class="form-control"/> + <br/> + <button type="submit" class="btn btn-primary">Submit</button> + <a class="btn btn-link" href="/">Home</a> + </form> + </div> + </div> + </div> +</div> +</body> +</html> \ No newline at end of file diff --git a/SpringTkApap/src/main/resources/templates/obat/update-obat.html b/SpringTkApap/src/main/resources/templates/obat/update-obat.html new file mode 100644 index 0000000..d76c288 --- /dev/null +++ b/SpringTkApap/src/main/resources/templates/obat/update-obat.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html lang="en" xmlns:th="http://thymeleaf.org"> +<head> + <meta charset="UTF-8"> + <title>RumahSehat</title> + <object th:include="fragments/fragment :: css" th:remove="tag"></object> + <object th:include="fragments/fragment :: js" th:remove="tag"></object> +</head> +<body> + +<nav th:replace="fragments/fragment :: navbar('Obat')"></nav> + +<div class="container"> + <div class="card m-4 p-4"> + <div class="card-body"> + <div class="justify-content-center"> + <h2 th:text="'Stok obat ' + ${obat.namaObat} + ' berhasil diupdate menjadi ' + ${obat.stok} + '.'"></h2> + <br> + <a class="btn btn-primary" href="/">Home</a> + </div> + </div> + </div> +</div> + +</body> +</html> \ No newline at end of file -- GitLab From d8e886bf2260c4e2deb025a0e4757df2c756e52a Mon Sep 17 00:00:00 2001 From: GhaitsaDina <ghaitsamaulidina@gmail.com> Date: Tue, 22 Nov 2022 16:31:13 +0700 Subject: [PATCH 07/19] feat/obat: implemented rest api --- .../obat/rest/ObatRestController.java | 56 +++++++++++++++++++ .../obat/rest/ObatRestService.java | 12 ++++ .../obat/rest/ObatRestServiceImpl.java | 45 +++++++++++++++ 3 files changed, 113 insertions(+) create mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestController.java create mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestService.java create mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestServiceImpl.java diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestController.java new file mode 100644 index 0000000..6988170 --- /dev/null +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestController.java @@ -0,0 +1,56 @@ +package spring.TK.SpringTkApap.obat.rest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.server.ResponseStatusException; +import spring.TK.SpringTkApap.obat.model.ObatModel; + +import java.util.List; +import java.util.NoSuchElementException; + +@RestController +@RequestMapping("/api/obat") +public class ObatRestController { + @Autowired + ObatRestService obatRestService; + + @PostMapping("/create") + private ObatModel createObat(@RequestBody ObatModel obat, BindingResult bindingResult){ + if (bindingResult.hasFieldErrors()) { + throw new ResponseStatusException( + HttpStatus.BAD_REQUEST, "Request body has invalid type or missing field." + ); + } else { + return obatRestService.createObat(obat); + } + } + + @GetMapping("/{idObat}") + private ObatModel getObat(@PathVariable(name = "idObat") String idObat){ + try { + return obatRestService.getObat(idObat); + } catch (NoSuchElementException e) { + throw new ResponseStatusException( + HttpStatus.NOT_FOUND, "Obat " + idObat + " tidak ditemukan." + ); + } + } + + @GetMapping("/all") + private List<ObatModel> getAllObat(){ + return obatRestService.retrieveObat(); + } + + @PutMapping(value = "/update-stok/{idObat}") + private ObatModel updateStokObat(@PathVariable("idObat") String idObat, @RequestBody ObatModel obat){ + try{ + return obatRestService.updateObat(idObat, obat); + } catch (NoSuchElementException e) { + throw new ResponseStatusException( + HttpStatus.NOT_FOUND, "Obat " + idObat + " not found" + ); + } + } +} diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestService.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestService.java new file mode 100644 index 0000000..48c09cd --- /dev/null +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestService.java @@ -0,0 +1,12 @@ +package spring.TK.SpringTkApap.obat.rest; + +import spring.TK.SpringTkApap.obat.model.ObatModel; + +import java.util.List; + +public interface ObatRestService { + ObatModel createObat(ObatModel obat); + List<ObatModel> retrieveObat(); + ObatModel getObat(String idObat); + ObatModel updateObat(String idObat, ObatModel obat); +} diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestServiceImpl.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestServiceImpl.java new file mode 100644 index 0000000..06a3938 --- /dev/null +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestServiceImpl.java @@ -0,0 +1,45 @@ +package spring.TK.SpringTkApap.obat.rest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import spring.TK.SpringTkApap.obat.model.ObatModel; +import spring.TK.SpringTkApap.obat.repository.ObatDb; +import javax.transaction.Transactional; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Optional; + +@Service +@Transactional +public class ObatRestServiceImpl implements ObatRestService { + + @Autowired + ObatDb obatDb; + + @Override + public ObatModel createObat(ObatModel obat) { + return obatDb.save(obat); + } + + @Override + public List<ObatModel> retrieveObat() { + return obatDb.findAll(); + } + + @Override + public ObatModel getObat(String idObat) { + Optional<ObatModel> obat = obatDb.findByIdObat(idObat); + if(obat.isPresent()){ + return obat.get(); + } + throw new NoSuchElementException(); + } + + @Override + public ObatModel updateObat(String idObat, ObatModel obatUpdate) { + ObatModel obat = getObat(idObat); + obat.setStok(obatUpdate.getStok()); + return obatDb.save(obat); + } + +} -- GitLab From 12d7443f0fd86a7a19b67d8ec383f08e3e0e0c26 Mon Sep 17 00:00:00 2001 From: GhaitsaDina <ghaitsamaulidina@gmail.com> Date: Wed, 7 Dec 2022 15:31:38 +0700 Subject: [PATCH 08/19] test --- tk_apap_flutter/pubspec.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tk_apap_flutter/pubspec.lock b/tk_apap_flutter/pubspec.lock index 082b75e..322a397 100644 --- a/tk_apap_flutter/pubspec.lock +++ b/tk_apap_flutter/pubspec.lock @@ -162,7 +162,7 @@ packages: name: material_color_utilities url: "https://pub.dartlang.org" source: hosted - version: "0.2.0" + version: "0.1.5" meta: dependency: transitive description: @@ -335,7 +335,7 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.9.1" + version: "1.9.0" stack_trace: dependency: transitive description: @@ -370,7 +370,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.13" + version: "0.4.12" typed_data: dependency: transitive description: @@ -384,7 +384,7 @@ packages: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.1.3" + version: "2.1.2" win32: dependency: transitive description: @@ -400,5 +400,5 @@ packages: source: hosted version: "0.2.0+2" sdks: - dart: ">=2.18.0-146.0.dev <3.0.0" + dart: ">=2.17.0 <3.0.0" flutter: ">=3.0.0" -- GitLab From 87a4401bb7ef44ea86ab86b5f0c6b84af274994a Mon Sep 17 00:00:00 2001 From: GhaitsaDina <ghaitsamaulidina@gmail.com> Date: Wed, 7 Dec 2022 22:25:40 +0700 Subject: [PATCH 09/19] feat/mobile: lihat profil --- tk_apap_flutter/lib/DTO/PasienDTO.dart | 9 + tk_apap_flutter/lib/main.dart | 4 +- .../lib/pages/DaftarAppointment.dart | 3 - tk_apap_flutter/lib/pages/HomeScreen.dart | 4 +- tk_apap_flutter/lib/pages/LihatProfil.dart | 139 +++++++++++++ tk_apap_flutter/lib/pages/edit_profile.dart | 194 ------------------ tk_apap_flutter/lib/pages/resep.dart | 4 +- tk_apap_flutter/lib/widgets/drawerWidget.dart | 2 +- 8 files changed, 155 insertions(+), 204 deletions(-) create mode 100644 tk_apap_flutter/lib/DTO/PasienDTO.dart create mode 100644 tk_apap_flutter/lib/pages/LihatProfil.dart delete mode 100644 tk_apap_flutter/lib/pages/edit_profile.dart diff --git a/tk_apap_flutter/lib/DTO/PasienDTO.dart b/tk_apap_flutter/lib/DTO/PasienDTO.dart new file mode 100644 index 0000000..152253d --- /dev/null +++ b/tk_apap_flutter/lib/DTO/PasienDTO.dart @@ -0,0 +1,9 @@ +class PasienDTO { + String nama = ''; + String username = ''; + String email = ''; + String saldo = ''; + PasienDTO(); + + PasienDTO.createPasien(this.nama, this.username, this.email, this.saldo); +} \ No newline at end of file diff --git a/tk_apap_flutter/lib/main.dart b/tk_apap_flutter/lib/main.dart index f94a2ef..9272697 100644 --- a/tk_apap_flutter/lib/main.dart +++ b/tk_apap_flutter/lib/main.dart @@ -2,7 +2,7 @@ import 'package:provider/provider.dart'; import 'package:tk_apap_flutter/pages/Login.dart'; import 'package:tk_apap_flutter/pages/HomeScreen.dart'; import 'package:tk_apap_flutter/pages/DaftarAppointment.dart'; -import 'package:tk_apap_flutter/pages/edit_profile.dart'; +import 'package:tk_apap_flutter/pages/LihatProfil.dart'; import 'package:tk_apap_flutter/pages/resep.dart'; import 'package:flutter/material.dart'; import 'package:tk_apap_flutter/constants/color_constants.dart'; @@ -29,7 +29,7 @@ class MyApp extends StatelessWidget { routes: { HomeScreen.routeName: (ctx) => HomeScreen(), Login.routeName: (ctx) => Login(), - EditProfile.routeName: (ctx) => EditProfile(), + LihatProfil.routeName: (ctx) => LihatProfil(), Resep.routeName: (ctx) => Resep(), CreateAppointment.routeName: (ctx) => const CreateAppointment(), DetailAppointment.routeName: (ctx) => const DetailAppointment() diff --git a/tk_apap_flutter/lib/pages/DaftarAppointment.dart b/tk_apap_flutter/lib/pages/DaftarAppointment.dart index 9e71bc1..44af54d 100644 --- a/tk_apap_flutter/lib/pages/DaftarAppointment.dart +++ b/tk_apap_flutter/lib/pages/DaftarAppointment.dart @@ -1,11 +1,8 @@ import 'dart:convert'; -import 'dart:ffi'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_session_manager/flutter_session_manager.dart'; import 'package:http/http.dart' as http; - import '../DTO/AptDTO.dart'; class DetailAppointment extends StatefulWidget { diff --git a/tk_apap_flutter/lib/pages/HomeScreen.dart b/tk_apap_flutter/lib/pages/HomeScreen.dart index 24fd641..6ed3278 100644 --- a/tk_apap_flutter/lib/pages/HomeScreen.dart +++ b/tk_apap_flutter/lib/pages/HomeScreen.dart @@ -4,7 +4,7 @@ import 'package:tk_apap_flutter/animation/FadeAnimation.dart'; import 'package:tk_apap_flutter/constants/color_constants.dart'; import 'package:tk_apap_flutter/constants/text_style_constants.dart'; import 'package:tk_apap_flutter/pages/CreateAppointment.dart'; -import 'package:tk_apap_flutter/pages/edit_profile.dart'; +import 'package:tk_apap_flutter/pages/LihatProfil.dart'; import 'package:tk_apap_flutter/widgets/drawerWidget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -313,7 +313,7 @@ class _HomeScreenState extends State<HomeScreen> { final List<Widget> _children = [ //TODO:ubah pages HomeScreen(), CreateAppointment(), - EditProfile(), + LihatProfil(), ]; Widget _bottomNavBar(){ diff --git a/tk_apap_flutter/lib/pages/LihatProfil.dart b/tk_apap_flutter/lib/pages/LihatProfil.dart new file mode 100644 index 0000000..6febbfd --- /dev/null +++ b/tk_apap_flutter/lib/pages/LihatProfil.dart @@ -0,0 +1,139 @@ +import 'dart:convert'; +import 'dart:developer'; + +import 'package:flutter_session_manager/flutter_session_manager.dart'; +import 'package:tk_apap_flutter/animation/FadeAnimation.dart'; +import 'package:tk_apap_flutter/constants/color_constants.dart'; +import 'package:tk_apap_flutter/widgets/drawerWidget.dart'; +import 'package:flutter/material.dart'; +import '../DTO/PasienDTO.dart'; +import 'package:http/http.dart' as http; + +class LihatProfil extends StatelessWidget { + static const routeName = '/edit'; + + Future<PasienDTO> getPasien() async { + var uri = Uri.parse('http://10.0.2.2:8080/api/pasien/getself'); + dynamic token = await SessionManager().get('token'); + String tknString = ('Bearer $token'); + http.Response response = await http.get(uri, headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json; charset=UTF-8', + 'Authorization': tknString + }); + if (response.statusCode == 200) { + Map jsonData = jsonDecode(response.body); + PasienDTO pasien = PasienDTO.createPasien( + jsonData['nama'] as String, + jsonData['username'] as String, + jsonData['email'] as String, + jsonData['saldo'].toString()); + log("Menembak API get profil pasien."); + return pasien; + } else { + throw response.statusCode; + } + } + + @override + Widget build(BuildContext context) { + final GlobalKey<ScaffoldState> _scaffoldKey = + new GlobalKey<ScaffoldState>(); + + return Scaffold( + backgroundColor: Colors.white, + key: _scaffoldKey, + drawer: CustomDrawer(), + appBar: AppBar( + title: Text( + 'Profil', + style: TextStyle( + fontFamily: 'Poppins', + fontWeight: FontWeight.bold, + ), + ), + backgroundColor: const Color(0xff0d47a1), + centerTitle: true, + leading: IconButton( + icon: Icon( + Icons.short_text, + size: 40, + ), + onPressed: () => _scaffoldKey.currentState.openDrawer(), + ), + ), + body: FutureBuilder<PasienDTO>( + future: getPasien(), + builder: (context, snapshot) { + if (snapshot.hasData) { + PasienDTO pasien = snapshot.data; + return SingleChildScrollView( + child: Padding( + padding: EdgeInsets.only(top: 35, left: 35, right: 35), + child: Column( + children: <Widget>[ + Container( + child: Text( + 'Nama: ${pasien.nama}', + style: TextStyle( + fontSize: 20, + ), + )), + Container( + child: Text( + 'Username: ${pasien.username}', + style: TextStyle( + fontSize: 20, + ), + )), + Container( + child: Text( + 'Email: ${pasien.email}', + style: TextStyle( + fontSize: 20, + ), + )), + Container( + child: Text( + 'Saldo: ${pasien.saldo.toString()}', + style: TextStyle( + fontSize: 20, + ), + )), + SizedBox( + height: 30, + ), + FadeAnimation( + 2, + Container( + height: 50, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + color: const Color(0xff0d47a1), + ), + child: Center( + child: Text( + "Top up saldo", + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 20, + fontFamily: 'Poppins', + ), + ), + ), + )), + SizedBox( + height: 70, + ), + ], + ), + ), + ); + } else { + return const CircularProgressIndicator(); + } + }), + ); + } +} diff --git a/tk_apap_flutter/lib/pages/edit_profile.dart b/tk_apap_flutter/lib/pages/edit_profile.dart deleted file mode 100644 index 7486499..0000000 --- a/tk_apap_flutter/lib/pages/edit_profile.dart +++ /dev/null @@ -1,194 +0,0 @@ -import 'package:tk_apap_flutter/animation/FadeAnimation.dart'; -import 'package:tk_apap_flutter/constants/color_constants.dart'; -import 'package:tk_apap_flutter/widgets/drawerWidget.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; - -class EditProfile extends StatelessWidget { - static const routeName = '/edit'; - - @override - Widget build(BuildContext context) { - final GlobalKey<ScaffoldState> _scaffoldKey = - new GlobalKey<ScaffoldState>(); - - return Scaffold( - backgroundColor: Colors.white, - key: _scaffoldKey, - drawer: CustomDrawer(), - appBar: AppBar( - title: Center( - child: Text( - 'Be a donor', - style: TextStyle( - fontFamily: 'Poppins', - fontWeight: FontWeight.bold, - ), - ), - ), - elevation: 0, - backgroundColor: kPrimaryColor, - leading: IconButton( - icon: Icon( - Icons.short_text, - size: 40, - color: kAccentColor, - ), - onPressed: () => _scaffoldKey.currentState.openDrawer(), - ), - actions: <Widget>[ - IconButton( - onPressed: () {}, - icon: Icon( - Icons.pan_tool, - size: 25, - color: Theme.of(context).accentColor, - ), - ), - ], - ), - body: SingleChildScrollView( - child: Container( - child: Column( - children: <Widget>[ - FadeAnimation( - 1.0, - Container( - height: 150.0, - child: Image.asset('assets/images/appr.png'), - ), - ), - Padding( - padding: EdgeInsets.only(top: .2, left: 35, right: 35), - child: Column( - children: <Widget>[ - FadeAnimation( - 1.8, - Container( - padding: EdgeInsets.all(5), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(10), - boxShadow: <BoxShadow>[ - BoxShadow( - offset: Offset(-4, 4), - blurRadius: 10, - color: Color(0xFFFFBF05).withOpacity(.6), - ) - ], - ), - child: Column( - children: <Widget>[ - Container( - padding: EdgeInsets.all(8.0), - decoration: BoxDecoration( - border: Border( - bottom: BorderSide( - color: Color(0xFFFFBF05).withOpacity(.10), - ), - ), - ), - child: TextField( - decoration: InputDecoration( - border: InputBorder.none, - hintText: "Name", - hintStyle: TextStyle( - color: Colors.grey[400], - fontFamily: 'Poppins', - ), - ), - ), - ), - Container( - padding: EdgeInsets.all(8.0), - decoration: BoxDecoration( - border: Border( - bottom: BorderSide( - color: Color(0xFFFFBF05).withOpacity(.10), - ), - ), - ), - child: TextField( - decoration: InputDecoration( - border: InputBorder.none, - hintText: "Blood Group", - hintStyle: TextStyle( - color: Colors.grey[400], - fontFamily: 'Poppins', - ), - ), - ), - ), - Container( - padding: EdgeInsets.all(8.0), - decoration: BoxDecoration( - border: Border( - bottom: BorderSide( - color: Color(0xFFFFBF05).withOpacity(.10), - ), - ), - ), - child: TextField( - decoration: InputDecoration( - border: InputBorder.none, - hintText: "Phone number", - hintStyle: TextStyle( - color: Colors.grey[400], - fontFamily: 'Poppins', - ), - ), - ), - ), - Container( - padding: EdgeInsets.all(8.0), - child: TextField( - decoration: InputDecoration( - border: InputBorder.none, - hintText: "Location", - hintStyle: TextStyle( - color: Colors.grey[400], - fontFamily: 'Poppins', - ), - ), - ), - ) - ], - ), - ), - ), - SizedBox( - height: 30, - ), - FadeAnimation( - 2, - Container( - height: 50, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), - color: Theme.of(context).primaryColor, - ), - child: Center( - child: Text( - "Save", - style: TextStyle( - color: Colors.white, - fontWeight: FontWeight.bold, - fontSize: 20, - fontFamily: 'Poppins', - ), - ), - ), - )), - SizedBox( - height: 70, - ), - ], - ), - ) - ], - ), - ), - ), - ); - } -} diff --git a/tk_apap_flutter/lib/pages/resep.dart b/tk_apap_flutter/lib/pages/resep.dart index 64a2a9a..fb85b26 100644 --- a/tk_apap_flutter/lib/pages/resep.dart +++ b/tk_apap_flutter/lib/pages/resep.dart @@ -1,6 +1,6 @@ import 'package:tk_apap_flutter/animation/FadeAnimation.dart'; import 'package:tk_apap_flutter/constants/color_constants.dart'; -import 'package:tk_apap_flutter/pages/edit_profile.dart'; +import 'package:tk_apap_flutter/pages/LihatProfil.dart'; import 'package:tk_apap_flutter/widgets/drawerWidget.dart'; import 'package:flutter/material.dart'; @@ -39,7 +39,7 @@ class Resep extends StatelessWidget { actions: <Widget>[ IconButton( onPressed: () { - Navigator.of(context).pushNamed(EditProfile.routeName); + Navigator.of(context).pushNamed(LihatProfil.routeName); }, icon: Icon( Icons.pan_tool, diff --git a/tk_apap_flutter/lib/widgets/drawerWidget.dart b/tk_apap_flutter/lib/widgets/drawerWidget.dart index 06e650c..d04bd97 100644 --- a/tk_apap_flutter/lib/widgets/drawerWidget.dart +++ b/tk_apap_flutter/lib/widgets/drawerWidget.dart @@ -1,6 +1,6 @@ import 'package:tk_apap_flutter/pages/HomeScreen.dart'; import 'package:tk_apap_flutter/pages/CreateAppointment.dart'; -import 'package:tk_apap_flutter/pages/edit_profile.dart'; +import 'package:tk_apap_flutter/pages/LihatProfil.dart'; import 'package:tk_apap_flutter/pages/resep.dart'; import 'package:tk_apap_flutter/pages/Login.dart'; import 'package:flutter/material.dart'; -- GitLab From 8918fde84f8106da800a8a61c905d7a519e6ca6a Mon Sep 17 00:00:00 2001 From: GhaitsaDina <ghaitsamaulidina@gmail.com> Date: Thu, 8 Dec 2022 17:20:22 +0700 Subject: [PATCH 10/19] pasien dto dan rest controllernya --- .../user/controller/PasienRestController.java | 31 +++++++++++++++++++ .../TK/SpringTkApap/user/model/PasienDTO.java | 17 ++++++++++ 2 files changed, 48 insertions(+) create mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/PasienRestController.java create mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/PasienDTO.java diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/PasienRestController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/PasienRestController.java new file mode 100644 index 0000000..23b63e3 --- /dev/null +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/PasienRestController.java @@ -0,0 +1,31 @@ +package spring.TK.SpringTkApap.user.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import spring.TK.SpringTkApap.user.model.DokterDTO; +import spring.TK.SpringTkApap.user.model.PasienDTO; +import spring.TK.SpringTkApap.user.model.PasienModel; +import spring.TK.SpringTkApap.user.service.PasienService; + +import java.security.Principal; +import java.util.List; + +@RestController +@CrossOrigin(origins = "*") +@RequestMapping("/api/pasien") +public class PasienRestController { + @Autowired + PasienService pasienService; + + @GetMapping("/getself") + public PasienDTO getPasienByUsername(Principal principal) { + PasienModel pasien = pasienService.getPasienByUsername(principal.getName()); + PasienDTO pasienDTO = new PasienDTO(); + pasienDTO.setUsername(pasien.getUsername()); + pasienDTO.setNama(pasien.getNama()); + pasienDTO.setSaldo(pasien.getSaldo()); + pasienDTO.setEmail(pasien.getEmail()); + return pasienDTO; + } + +} diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/PasienDTO.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/PasienDTO.java new file mode 100644 index 0000000..0c6a244 --- /dev/null +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/PasienDTO.java @@ -0,0 +1,17 @@ +package spring.TK.SpringTkApap.user.model; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Setter +@Getter +@NoArgsConstructor +@AllArgsConstructor +public class PasienDTO { + private String nama; + private String username; + private String email; + private Integer saldo; +} -- GitLab From 8e9a776d6404e294cd004b5865956cfe4a67e0e3 Mon Sep 17 00:00:00 2001 From: GhaitsaDina <ghaitsamaulidina@gmail.com> Date: Thu, 8 Dec 2022 20:50:44 +0700 Subject: [PATCH 11/19] feat/lihatprofil: fixing things --- .../user/controller/PasienRestController.java | 14 ++++++++++++++ .../TK/SpringTkApap/user/model/PasienDTO.java | 4 ++++ .../user/service/PasienRestService.java | 1 + .../user/service/PasienRestServiceImpl.java | 6 ++++++ tk_apap_flutter/lib/pages/LihatProfil.dart | 4 ++-- tk_apap_flutter/lib/pages/login.dart | 2 +- 6 files changed, 28 insertions(+), 3 deletions(-) diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/PasienRestController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/PasienRestController.java index b183fc4..ef8079e 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/PasienRestController.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/PasienRestController.java @@ -10,6 +10,7 @@ import spring.TK.SpringTkApap.user.model.PasienDTO; import spring.TK.SpringTkApap.user.service.PasienRestService; import spring.TK.SpringTkApap.user.model.PasienModel; +import java.security.Principal; import java.util.List; import java.util.NoSuchElementException; @@ -48,6 +49,19 @@ public class PasienRestController { } } + @GetMapping("/getself") + public PasienDTO getPasienByUsername(Principal principal) { + PasienModel pasien = pasienRestService.getPasienByUsername(principal.getName()); + PasienDTO pasienDTO = new PasienDTO(); + pasienDTO.setUsername(pasien.getUsername()); + pasienDTO.setName(pasien.getNama()); + pasienDTO.setSaldo(pasien.getSaldo().toString()); + pasienDTO.setEmail(pasien.getEmail()); + pasienDTO.setUmur(pasien.getUmur().toString()); + pasienDTO.setPassword(pasien.getPassword()); + return pasienDTO; + } + @GetMapping("/all") private List<PasienModel> getAllPasien(){ return pasienRestService.retrievePasien(); diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/PasienDTO.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/PasienDTO.java index 3a91b87..15b2dda 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/PasienDTO.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/PasienDTO.java @@ -27,4 +27,8 @@ public class PasienDTO implements Serializable { @JsonProperty("umur") private String umur; + + @JsonProperty("saldo") + private String saldo; + } diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienRestService.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienRestService.java index 17167b9..4fed5b7 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienRestService.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienRestService.java @@ -9,5 +9,6 @@ public interface PasienRestService { PasienModel createPasien(PasienDTO pasienDTO); List<PasienModel> retrievePasien(); PasienModel getPasien(String uuid); + PasienModel getPasienByUsername(String username); PasienModel topUpSaldo(String uuid, PasienModel pasienUpdate); } diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienRestServiceImpl.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienRestServiceImpl.java index d37361c..7d75236 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienRestServiceImpl.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienRestServiceImpl.java @@ -59,6 +59,12 @@ public class PasienRestServiceImpl implements PasienRestService { throw new NoSuchElementException(); } + @Override + public PasienModel getPasienByUsername(String username) { + Optional<PasienModel> pasien = pasienDb.findByUsername(username); + return pasien.orElse(null); + } + @Override public PasienModel topUpSaldo(String uuid, PasienModel pasienUpdate) { PasienModel pasien = getPasien(uuid); diff --git a/tk_apap_flutter/lib/pages/LihatProfil.dart b/tk_apap_flutter/lib/pages/LihatProfil.dart index 6febbfd..374db93 100644 --- a/tk_apap_flutter/lib/pages/LihatProfil.dart +++ b/tk_apap_flutter/lib/pages/LihatProfil.dart @@ -3,7 +3,6 @@ import 'dart:developer'; import 'package:flutter_session_manager/flutter_session_manager.dart'; import 'package:tk_apap_flutter/animation/FadeAnimation.dart'; -import 'package:tk_apap_flutter/constants/color_constants.dart'; import 'package:tk_apap_flutter/widgets/drawerWidget.dart'; import 'package:flutter/material.dart'; import '../DTO/PasienDTO.dart'; @@ -21,10 +20,11 @@ class LihatProfil extends StatelessWidget { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': tknString }); + log(response.statusCode.toString()); if (response.statusCode == 200) { Map jsonData = jsonDecode(response.body); PasienDTO pasien = PasienDTO.createPasien( - jsonData['nama'] as String, + jsonData['name'] as String, jsonData['username'] as String, jsonData['email'] as String, jsonData['saldo'].toString()); diff --git a/tk_apap_flutter/lib/pages/login.dart b/tk_apap_flutter/lib/pages/login.dart index b128f16..75e14a5 100644 --- a/tk_apap_flutter/lib/pages/login.dart +++ b/tk_apap_flutter/lib/pages/login.dart @@ -25,7 +25,7 @@ class _LoginState extends State<Login> { UserLogin user = UserLogin("", ""); bool _isHidden = true; - final url = Uri.parse('http://10.5.90.122:8080/api/authenticate'); //TODO:ubah sesuai IP Address, nanti pakai link web + final url = Uri.parse('http://10.0.2.2:8080/api/authenticate'); //TODO:ubah sesuai IP Address, nanti pakai link web final header = <String, String> { 'Content-Type': -- GitLab From 34683704bcf491aa2cbbef4bfa6fbf49093ca657 Mon Sep 17 00:00:00 2001 From: GhaitsaDina <ghaitsamaulidina@gmail.com> Date: Mon, 12 Dec 2022 10:03:52 +0700 Subject: [PATCH 12/19] feat/obat: delete rest obat and add dto to update and add --- .../obat/controller/ObatController.java | 7 ++- .../TK/SpringTkApap/obat/model/ObatDTO.java | 18 ++++++ .../TK/SpringTkApap/obat/model/ObatModel.java | 7 ++- .../obat/rest/ObatRestController.java | 56 ------------------- .../obat/rest/ObatRestService.java | 12 ---- .../obat/rest/ObatRestServiceImpl.java | 45 --------------- .../obat/service/ObatService.java | 3 +- .../obat/service/ObatServiceImpl.java | 10 +++- 8 files changed, 36 insertions(+), 122 deletions(-) create mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatDTO.java delete mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestController.java delete mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestService.java delete mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestServiceImpl.java diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java index c5b8a4f..6b66546 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java @@ -4,6 +4,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; +import spring.TK.SpringTkApap.obat.model.ObatDTO; import spring.TK.SpringTkApap.obat.model.ObatModel; import spring.TK.SpringTkApap.obat.service.ObatService; @@ -18,13 +19,13 @@ public class ObatController { @GetMapping("/add") public String addObatForm(Model model){ - ObatModel obat = new ObatModel(); + ObatDTO obat = new ObatDTO(); model.addAttribute("obat", obat); return "obat/form-add-obat"; } @PostMapping("/add") - public String addObatSubmit(@ModelAttribute ObatModel obat, Model model){ + public String addObatSubmit(@ModelAttribute ObatDTO obat, Model model){ obatService.addObat(obat); model.addAttribute("obat", obat); return "obat/add-obat"; @@ -46,7 +47,7 @@ public class ObatController { } @PostMapping("/update") - public String updateObatSubmit(@ModelAttribute ObatModel obat, Model model){ + public String updateObatSubmit(@ModelAttribute ObatDTO obat, Model model){ obatService.addObat(obat); model.addAttribute("obat", obat); return "obat/update-obat"; diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatDTO.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatDTO.java new file mode 100644 index 0000000..fdcac47 --- /dev/null +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatDTO.java @@ -0,0 +1,18 @@ +package spring.TK.SpringTkApap.obat.model; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Setter +@Getter +@NoArgsConstructor +@AllArgsConstructor +public class ObatDTO { + private String idObat; + private Integer harga; + private String namaObat; + private Integer stok = 100; +} + diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatModel.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatModel.java index 325d61d..e2c6680 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatModel.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatModel.java @@ -2,6 +2,7 @@ package spring.TK.SpringTkApap.obat.model; import com.sun.istack.NotNull; import lombok.*; +import org.hibernate.annotations.ColumnDefault; import org.hibernate.annotations.GenericGenerator; import spring.TK.SpringTkApap.jumlah.JumlahModel; @@ -23,12 +24,12 @@ public class ObatModel implements Serializable { @NotNull @Column(nullable = false) private String namaObat; - @NotNull @Column(nullable = false) - private Integer stok = 100; + @NotNull @Column(nullable = false) @ColumnDefault("100") + private Integer stok; @NotNull @Column(nullable = false) private Integer harga; @OneToMany(mappedBy = "obat", fetch = FetchType.EAGER) private List<JumlahModel> listJumlah; -} +} \ No newline at end of file diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestController.java deleted file mode 100644 index 8441189..0000000 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestController.java +++ /dev/null @@ -1,56 +0,0 @@ -package spring.TK.SpringTkApap.obat.rest; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.server.ResponseStatusException; -import spring.TK.SpringTkApap.obat.model.ObatModel; - -import java.util.List; -import java.util.NoSuchElementException; - -@RestController -@RequestMapping("/api/obat") -public class ObatRestController { - @Autowired - ObatRestService obatRestService; - - @PostMapping("/create") - public ObatModel createObat(@RequestBody ObatModel obat, BindingResult bindingResult){ - if (bindingResult.hasFieldErrors()) { - throw new ResponseStatusException( - HttpStatus.BAD_REQUEST, "Request body has invalid type or missing field." - ); - } else { - return obatRestService.createObat(obat); - } - } - - @GetMapping("/{idObat}") - public ObatModel getObat(@PathVariable(name = "idObat") String idObat){ - try { - return obatRestService.getObat(idObat); - } catch (NoSuchElementException e) { - throw new ResponseStatusException( - HttpStatus.NOT_FOUND, "Obat " + idObat + " tidak ditemukan." - ); - } - } - - @GetMapping("/all") - public List<ObatModel> getAllObat(){ - return obatRestService.retrieveObat(); - } - - @PutMapping(value = "/update-stok/{idObat}") - public ObatModel updateStokObat(@PathVariable("idObat") String idObat, @RequestBody ObatModel obat){ - try{ - return obatRestService.updateObat(idObat, obat); - } catch (NoSuchElementException e) { - throw new ResponseStatusException( - HttpStatus.NOT_FOUND, "Obat " + idObat + " not found" - ); - } - } -} diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestService.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestService.java deleted file mode 100644 index 48c09cd..0000000 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestService.java +++ /dev/null @@ -1,12 +0,0 @@ -package spring.TK.SpringTkApap.obat.rest; - -import spring.TK.SpringTkApap.obat.model.ObatModel; - -import java.util.List; - -public interface ObatRestService { - ObatModel createObat(ObatModel obat); - List<ObatModel> retrieveObat(); - ObatModel getObat(String idObat); - ObatModel updateObat(String idObat, ObatModel obat); -} diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestServiceImpl.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestServiceImpl.java deleted file mode 100644 index 06a3938..0000000 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestServiceImpl.java +++ /dev/null @@ -1,45 +0,0 @@ -package spring.TK.SpringTkApap.obat.rest; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import spring.TK.SpringTkApap.obat.model.ObatModel; -import spring.TK.SpringTkApap.obat.repository.ObatDb; -import javax.transaction.Transactional; -import java.util.List; -import java.util.NoSuchElementException; -import java.util.Optional; - -@Service -@Transactional -public class ObatRestServiceImpl implements ObatRestService { - - @Autowired - ObatDb obatDb; - - @Override - public ObatModel createObat(ObatModel obat) { - return obatDb.save(obat); - } - - @Override - public List<ObatModel> retrieveObat() { - return obatDb.findAll(); - } - - @Override - public ObatModel getObat(String idObat) { - Optional<ObatModel> obat = obatDb.findByIdObat(idObat); - if(obat.isPresent()){ - return obat.get(); - } - throw new NoSuchElementException(); - } - - @Override - public ObatModel updateObat(String idObat, ObatModel obatUpdate) { - ObatModel obat = getObat(idObat); - obat.setStok(obatUpdate.getStok()); - return obatDb.save(obat); - } - -} diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java index 43e7c5d..41c1e1f 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java @@ -1,11 +1,12 @@ package spring.TK.SpringTkApap.obat.service; +import spring.TK.SpringTkApap.obat.model.ObatDTO; import spring.TK.SpringTkApap.obat.model.ObatModel; import java.util.List; public interface ObatService { - void addObat(ObatModel obat); + void addObat(ObatDTO obat); List<ObatModel> getListObat(); ObatModel getObat(String idObat); } diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java index 192d056..488bbdb 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java @@ -2,6 +2,7 @@ package spring.TK.SpringTkApap.obat.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import spring.TK.SpringTkApap.obat.model.ObatDTO; import spring.TK.SpringTkApap.obat.model.ObatModel; import spring.TK.SpringTkApap.obat.repository.ObatDb; @@ -17,8 +18,13 @@ public class ObatServiceImpl implements ObatService{ private ObatDb obatDb; @Override - public void addObat(ObatModel obat) { - obatDb.save(obat); + public void addObat(ObatDTO obat) { + ObatModel newObat = new ObatModel(); + newObat.setIdObat(obat.getIdObat()); + newObat.setStok(obat.getStok()); + newObat.setNamaObat(obat.getNamaObat()); + newObat.setHarga(obat.getHarga()); + obatDb.save(newObat); } @Override -- GitLab From fe97ba08771266b121f720abef3f2fdba8b941af Mon Sep 17 00:00:00 2001 From: GhaitsaDina <ghaitsamaulidina@gmail.com> Date: Mon, 12 Dec 2022 10:16:00 +0700 Subject: [PATCH 13/19] feat/obat: fix --- .../obat/controller/ObatController.java | 7 +-- .../TK/SpringTkApap/obat/model/ObatDTO.java | 18 ------ .../TK/SpringTkApap/obat/model/ObatModel.java | 7 +-- .../obat/rest/ObatRestController.java | 56 +++++++++++++++++++ .../obat/rest/ObatRestService.java | 12 ++++ .../obat/rest/ObatRestServiceImpl.java | 45 +++++++++++++++ .../obat/service/ObatService.java | 3 +- .../obat/service/ObatServiceImpl.java | 10 +--- 8 files changed, 122 insertions(+), 36 deletions(-) delete mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatDTO.java create mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestController.java create mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestService.java create mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestServiceImpl.java diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java index 6b66546..c5b8a4f 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java @@ -4,7 +4,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; -import spring.TK.SpringTkApap.obat.model.ObatDTO; import spring.TK.SpringTkApap.obat.model.ObatModel; import spring.TK.SpringTkApap.obat.service.ObatService; @@ -19,13 +18,13 @@ public class ObatController { @GetMapping("/add") public String addObatForm(Model model){ - ObatDTO obat = new ObatDTO(); + ObatModel obat = new ObatModel(); model.addAttribute("obat", obat); return "obat/form-add-obat"; } @PostMapping("/add") - public String addObatSubmit(@ModelAttribute ObatDTO obat, Model model){ + public String addObatSubmit(@ModelAttribute ObatModel obat, Model model){ obatService.addObat(obat); model.addAttribute("obat", obat); return "obat/add-obat"; @@ -47,7 +46,7 @@ public class ObatController { } @PostMapping("/update") - public String updateObatSubmit(@ModelAttribute ObatDTO obat, Model model){ + public String updateObatSubmit(@ModelAttribute ObatModel obat, Model model){ obatService.addObat(obat); model.addAttribute("obat", obat); return "obat/update-obat"; diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatDTO.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatDTO.java deleted file mode 100644 index fdcac47..0000000 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatDTO.java +++ /dev/null @@ -1,18 +0,0 @@ -package spring.TK.SpringTkApap.obat.model; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -@Setter -@Getter -@NoArgsConstructor -@AllArgsConstructor -public class ObatDTO { - private String idObat; - private Integer harga; - private String namaObat; - private Integer stok = 100; -} - diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatModel.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatModel.java index e2c6680..325d61d 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatModel.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatModel.java @@ -2,7 +2,6 @@ package spring.TK.SpringTkApap.obat.model; import com.sun.istack.NotNull; import lombok.*; -import org.hibernate.annotations.ColumnDefault; import org.hibernate.annotations.GenericGenerator; import spring.TK.SpringTkApap.jumlah.JumlahModel; @@ -24,12 +23,12 @@ public class ObatModel implements Serializable { @NotNull @Column(nullable = false) private String namaObat; - @NotNull @Column(nullable = false) @ColumnDefault("100") - private Integer stok; + @NotNull @Column(nullable = false) + private Integer stok = 100; @NotNull @Column(nullable = false) private Integer harga; @OneToMany(mappedBy = "obat", fetch = FetchType.EAGER) private List<JumlahModel> listJumlah; -} \ No newline at end of file +} diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestController.java new file mode 100644 index 0000000..8441189 --- /dev/null +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestController.java @@ -0,0 +1,56 @@ +package spring.TK.SpringTkApap.obat.rest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.server.ResponseStatusException; +import spring.TK.SpringTkApap.obat.model.ObatModel; + +import java.util.List; +import java.util.NoSuchElementException; + +@RestController +@RequestMapping("/api/obat") +public class ObatRestController { + @Autowired + ObatRestService obatRestService; + + @PostMapping("/create") + public ObatModel createObat(@RequestBody ObatModel obat, BindingResult bindingResult){ + if (bindingResult.hasFieldErrors()) { + throw new ResponseStatusException( + HttpStatus.BAD_REQUEST, "Request body has invalid type or missing field." + ); + } else { + return obatRestService.createObat(obat); + } + } + + @GetMapping("/{idObat}") + public ObatModel getObat(@PathVariable(name = "idObat") String idObat){ + try { + return obatRestService.getObat(idObat); + } catch (NoSuchElementException e) { + throw new ResponseStatusException( + HttpStatus.NOT_FOUND, "Obat " + idObat + " tidak ditemukan." + ); + } + } + + @GetMapping("/all") + public List<ObatModel> getAllObat(){ + return obatRestService.retrieveObat(); + } + + @PutMapping(value = "/update-stok/{idObat}") + public ObatModel updateStokObat(@PathVariable("idObat") String idObat, @RequestBody ObatModel obat){ + try{ + return obatRestService.updateObat(idObat, obat); + } catch (NoSuchElementException e) { + throw new ResponseStatusException( + HttpStatus.NOT_FOUND, "Obat " + idObat + " not found" + ); + } + } +} diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestService.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestService.java new file mode 100644 index 0000000..48c09cd --- /dev/null +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestService.java @@ -0,0 +1,12 @@ +package spring.TK.SpringTkApap.obat.rest; + +import spring.TK.SpringTkApap.obat.model.ObatModel; + +import java.util.List; + +public interface ObatRestService { + ObatModel createObat(ObatModel obat); + List<ObatModel> retrieveObat(); + ObatModel getObat(String idObat); + ObatModel updateObat(String idObat, ObatModel obat); +} diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestServiceImpl.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestServiceImpl.java new file mode 100644 index 0000000..06a3938 --- /dev/null +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestServiceImpl.java @@ -0,0 +1,45 @@ +package spring.TK.SpringTkApap.obat.rest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import spring.TK.SpringTkApap.obat.model.ObatModel; +import spring.TK.SpringTkApap.obat.repository.ObatDb; +import javax.transaction.Transactional; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Optional; + +@Service +@Transactional +public class ObatRestServiceImpl implements ObatRestService { + + @Autowired + ObatDb obatDb; + + @Override + public ObatModel createObat(ObatModel obat) { + return obatDb.save(obat); + } + + @Override + public List<ObatModel> retrieveObat() { + return obatDb.findAll(); + } + + @Override + public ObatModel getObat(String idObat) { + Optional<ObatModel> obat = obatDb.findByIdObat(idObat); + if(obat.isPresent()){ + return obat.get(); + } + throw new NoSuchElementException(); + } + + @Override + public ObatModel updateObat(String idObat, ObatModel obatUpdate) { + ObatModel obat = getObat(idObat); + obat.setStok(obatUpdate.getStok()); + return obatDb.save(obat); + } + +} diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java index 41c1e1f..43e7c5d 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java @@ -1,12 +1,11 @@ package spring.TK.SpringTkApap.obat.service; -import spring.TK.SpringTkApap.obat.model.ObatDTO; import spring.TK.SpringTkApap.obat.model.ObatModel; import java.util.List; public interface ObatService { - void addObat(ObatDTO obat); + void addObat(ObatModel obat); List<ObatModel> getListObat(); ObatModel getObat(String idObat); } diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java index 488bbdb..192d056 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java @@ -2,7 +2,6 @@ package spring.TK.SpringTkApap.obat.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import spring.TK.SpringTkApap.obat.model.ObatDTO; import spring.TK.SpringTkApap.obat.model.ObatModel; import spring.TK.SpringTkApap.obat.repository.ObatDb; @@ -18,13 +17,8 @@ public class ObatServiceImpl implements ObatService{ private ObatDb obatDb; @Override - public void addObat(ObatDTO obat) { - ObatModel newObat = new ObatModel(); - newObat.setIdObat(obat.getIdObat()); - newObat.setStok(obat.getStok()); - newObat.setNamaObat(obat.getNamaObat()); - newObat.setHarga(obat.getHarga()); - obatDb.save(newObat); + public void addObat(ObatModel obat) { + obatDb.save(obat); } @Override -- GitLab From c276fe90ada7568fb5ef058f1e085178c5b61b40 Mon Sep 17 00:00:00 2001 From: GhaitsaDina <ghaitsamaulidina@gmail.com> Date: Mon, 12 Dec 2022 10:43:53 +0700 Subject: [PATCH 14/19] feat/obat: add obatdto and delete rest obat --- .../obat/controller/ObatController.java | 7 ++- .../tk/springtkapap/obat/model/ObatDTO.java | 17 ++++++ .../tk/springtkapap/obat/model/ObatModel.java | 3 +- .../obat/rest/ObatRestController.java | 56 ------------------- .../obat/rest/ObatRestService.java | 12 ---- .../obat/rest/ObatRestServiceImpl.java | 45 --------------- .../obat/service/ObatService.java | 3 +- .../obat/service/ObatServiceImpl.java | 10 +++- 8 files changed, 33 insertions(+), 120 deletions(-) create mode 100644 SpringTkApap/src/main/java/spring/tk/springtkapap/obat/model/ObatDTO.java delete mode 100644 SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestController.java delete mode 100644 SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestService.java delete mode 100644 SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestServiceImpl.java diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/controller/ObatController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/controller/ObatController.java index 3c6cd31..e3d0813 100644 --- a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/controller/ObatController.java +++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/controller/ObatController.java @@ -4,6 +4,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; +import spring.tk.springtkapap.obat.model.ObatDTO; import spring.tk.springtkapap.obat.model.ObatModel; import spring.tk.springtkapap.obat.service.ObatService; @@ -18,13 +19,13 @@ public class ObatController { @GetMapping("/add") public String addObatForm(Model model){ - var obat = new ObatModel(); + ObatDTO obat = new ObatDTO(); model.addAttribute("obat", obat); return "obat/form-add-obat"; } @PostMapping("/add") - public String addObatSubmit(@ModelAttribute ObatModel obat, Model model){ + public String addObatSubmit(@ModelAttribute ObatDTO obat, Model model){ obatService.addObat(obat); model.addAttribute("obat", obat); return "obat/add-obat"; @@ -46,7 +47,7 @@ public class ObatController { } @PostMapping("/update") - public String updateObatSubmit(@ModelAttribute ObatModel obat, Model model){ + public String updateObatSubmit(@ModelAttribute ObatDTO obat, Model model){ obatService.addObat(obat); model.addAttribute("obat", obat); return "obat/update-obat"; diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/model/ObatDTO.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/model/ObatDTO.java new file mode 100644 index 0000000..c7d5bf3 --- /dev/null +++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/model/ObatDTO.java @@ -0,0 +1,17 @@ +package spring.tk.springtkapap.obat.model; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Setter +@Getter +@NoArgsConstructor +@AllArgsConstructor +public class ObatDTO { + String idObat; + String namaObat; + Integer harga; + Integer stok = 100; +} diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/model/ObatModel.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/model/ObatModel.java index 1c425a0..52da544 100644 --- a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/model/ObatModel.java +++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/model/ObatModel.java @@ -1,6 +1,7 @@ package spring.tk.springtkapap.obat.model; import lombok.*; +import org.hibernate.annotations.ColumnDefault; import org.hibernate.annotations.GenericGenerator; import spring.tk.springtkapap.jumlah.JumlahModel; @@ -24,7 +25,7 @@ public class ObatModel implements Serializable { @Column(nullable = false) private String namaObat; - @NotNull @Column(nullable = false) + @NotNull @Column(nullable = false) @ColumnDefault("100") private Integer stok = 100; @NotNull @Column(nullable = false) diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestController.java deleted file mode 100644 index 175a5ad..0000000 --- a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestController.java +++ /dev/null @@ -1,56 +0,0 @@ -package spring.tk.springtkapap.obat.rest; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.server.ResponseStatusException; -import spring.tk.springtkapap.obat.model.ObatModel; - -import java.util.List; -import java.util.NoSuchElementException; - -@RestController -@RequestMapping("/api/obat") -public class ObatRestController { - @Autowired - ObatRestService obatRestService; - - @PostMapping("/create") - public ObatModel createObat(@RequestBody ObatModel obat, BindingResult bindingResult){ - if (bindingResult.hasFieldErrors()) { - throw new ResponseStatusException( - HttpStatus.BAD_REQUEST, "Request body has invalid type or missing field." - ); - } else { - return obatRestService.createObat(obat); - } - } - - @GetMapping("/{idObat}") - public ObatModel getObat(@PathVariable(name = "idObat") String idObat){ - try { - return obatRestService.getObat(idObat); - } catch (NoSuchElementException e) { - throw new ResponseStatusException( - HttpStatus.NOT_FOUND, "Obat " + idObat + " tidak ditemukan." - ); - } - } - - @GetMapping("/all") - public List<ObatModel> getAllObat(){ - return obatRestService.retrieveObat(); - } - - @PutMapping(value = "/update-stok/{idObat}") - public ObatModel updateStokObat(@PathVariable("idObat") String idObat, @RequestBody ObatModel obat){ - try{ - return obatRestService.updateObat(idObat, obat); - } catch (NoSuchElementException e) { - throw new ResponseStatusException( - HttpStatus.NOT_FOUND, "Obat " + idObat + " not found" - ); - } - } -} diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestService.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestService.java deleted file mode 100644 index 747be27..0000000 --- a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestService.java +++ /dev/null @@ -1,12 +0,0 @@ -package spring.tk.springtkapap.obat.rest; - -import spring.tk.springtkapap.obat.model.ObatModel; - -import java.util.List; - -public interface ObatRestService { - ObatModel createObat(ObatModel obat); - List<ObatModel> retrieveObat(); - ObatModel getObat(String idObat); - ObatModel updateObat(String idObat, ObatModel obat); -} diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestServiceImpl.java deleted file mode 100644 index dbc0768..0000000 --- a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestServiceImpl.java +++ /dev/null @@ -1,45 +0,0 @@ -package spring.tk.springtkapap.obat.rest; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import spring.tk.springtkapap.obat.model.ObatModel; -import spring.tk.springtkapap.obat.repository.ObatDb; -import javax.transaction.Transactional; -import java.util.List; -import java.util.NoSuchElementException; -import java.util.Optional; - -@Service -@Transactional -public class ObatRestServiceImpl implements ObatRestService { - - @Autowired - ObatDb obatDb; - - @Override - public ObatModel createObat(ObatModel obat) { - return obatDb.save(obat); - } - - @Override - public List<ObatModel> retrieveObat() { - return obatDb.findAll(); - } - - @Override - public ObatModel getObat(String idObat) { - Optional<ObatModel> obat = obatDb.findByIdObat(idObat); - if(obat.isPresent()){ - return obat.get(); - } - throw new NoSuchElementException(); - } - - @Override - public ObatModel updateObat(String idObat, ObatModel obatUpdate) { - ObatModel obat = getObat(idObat); - obat.setStok(obatUpdate.getStok()); - return obatDb.save(obat); - } - -} diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatService.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatService.java index 3edc600..70c3812 100644 --- a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatService.java +++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatService.java @@ -1,11 +1,12 @@ package spring.tk.springtkapap.obat.service; +import spring.tk.springtkapap.obat.model.ObatDTO; import spring.tk.springtkapap.obat.model.ObatModel; import java.util.List; public interface ObatService { - void addObat(ObatModel obat); + void addObat(ObatDTO obat); List<ObatModel> getListObat(); ObatModel getObat(String idObat); } diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatServiceImpl.java index 166a699..5f70b22 100644 --- a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatServiceImpl.java +++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatServiceImpl.java @@ -2,6 +2,7 @@ package spring.tk.springtkapap.obat.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import spring.tk.springtkapap.obat.model.ObatDTO; import spring.tk.springtkapap.obat.model.ObatModel; import spring.tk.springtkapap.obat.repository.ObatDb; @@ -17,8 +18,13 @@ public class ObatServiceImpl implements ObatService{ private ObatDb obatDb; @Override - public void addObat(ObatModel obat) { - obatDb.save(obat); + public void addObat(ObatDTO obat) { + ObatModel newObat = new ObatModel(); + newObat.setIdObat(obat.getIdObat()); + newObat.setNamaObat(obat.getNamaObat()); + newObat.setStok(obat.getStok()); + newObat.setHarga(obat.getStok()); + obatDb.save(newObat); } @Override -- GitLab From 9bd5db0520b8a81f77036447f0c401bb0cd366c0 Mon Sep 17 00:00:00 2001 From: GhaitsaDina <ghaitsamaulidina@gmail.com> Date: Mon, 12 Dec 2022 10:55:08 +0700 Subject: [PATCH 15/19] obat/feat: add default value 100 for obat --- .../main/java/spring/tk/springtkapap/obat/model/ObatModel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/model/ObatModel.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/model/ObatModel.java index 52da544..5198a3c 100644 --- a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/model/ObatModel.java +++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/model/ObatModel.java @@ -25,7 +25,7 @@ public class ObatModel implements Serializable { @Column(nullable = false) private String namaObat; - @NotNull @Column(nullable = false) @ColumnDefault("100") + @NotNull @Column(nullable = false, columnDefinition = "integer default 100") private Integer stok = 100; @NotNull @Column(nullable = false) -- GitLab From 296c4b295a06705abe7ab2f6af6776bface47e9a Mon Sep 17 00:00:00 2001 From: GhaitsaDina <ghaitsamaulidina@gmail.com> Date: Mon, 12 Dec 2022 19:25:23 +0700 Subject: [PATCH 16/19] fix typos --- .../SpringTkApap/user/controller/DokterRestController.java | 7 +++---- .../springtkapap/appointment/AppointmentServiceImpl.java | 2 +- .../tk/springtkapap/user/controller/DokterController.java | 1 + 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/DokterRestController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/DokterRestController.java index 3f7f265..078fd57 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/DokterRestController.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/DokterRestController.java @@ -1,4 +1,4 @@ -package spring.TK.SpringTkApap.user.controller; +package spring.tk.springtkapap.user.controller; import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; @@ -8,9 +8,8 @@ import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import spring.TK.SpringTkApap.appointment.AppointmentRestController; -import spring.TK.SpringTkApap.user.model.DokterDTO; -import spring.TK.SpringTkApap.user.service.DokterService; +import spring.tk.springtkapap.user.model.DokterDTO; +import spring.tk.springtkapap.user.service.DokterService; import java.util.List; diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentServiceImpl.java index a95004b..fe12341 100644 --- a/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentServiceImpl.java +++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentServiceImpl.java @@ -1,7 +1,7 @@ package spring.tk.springtkapap.appointment; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service;<< +import org.springframework.stereotype.Service; import spring.tk.springtkapap.appointment.model.AppointmentModel; import spring.tk.springtkapap.user.model.DokterModel; diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/DokterController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/DokterController.java index 1a26d1a..464d4e3 100644 --- a/SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/DokterController.java +++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/DokterController.java @@ -12,6 +12,7 @@ import spring.tk.springtkapap.appointment.model.AppointmentModel; import spring.tk.springtkapap.user.model.DokterModel; import spring.tk.springtkapap.user.model.DokterRevDTO; import spring.tk.springtkapap.user.service.DokterService; +import spring.tk.springtkapap.user.controller.DokterRestController; import java.time.LocalDateTime; -- GitLab From d586fbe4a402a6203976e2b1ee378336fd6854ac Mon Sep 17 00:00:00 2001 From: GhaitsaDina <ghaitsamaulidina@gmail.com> Date: Mon, 12 Dec 2022 21:08:57 +0700 Subject: [PATCH 17/19] feat/11: tambah logic n button konfirmasi resep --- .../resep/controller/ResepController.java | 31 ++++- .../resources/templates/resep/view-resep.html | 122 ++++++++++-------- 2 files changed, 100 insertions(+), 53 deletions(-) diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java index 90ab7b7..2246365 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java @@ -52,7 +52,6 @@ public class ResepController { List<ObatModel> listObat = obatService.getListObat(); List<ApotekerModel> listApoteker = apotekerService.getAll(); - // resep.setIsDone(false); resep.setAppointment(appointment); resep.setListJumlah(new ArrayList<>()); resep.getListJumlah().add(new JumlahModel()); @@ -105,6 +104,18 @@ public class ResepController { model.addAttribute("pasien", resep.getAppointment().getPasien()); model.addAttribute("apoteker", resep.getApoteker()); + Boolean stokAda = true; + for (JumlahModel obatDibutuhkan : listJumlah){ + String idObat = obatDibutuhkan.getObat().getIdObat(); + System.out.println("stok tersedia adalah " + obatService.getObat(idObat).getStok()); + System.out.println("stok diperlukan adalah " + obatDibutuhkan.getKuantitas()); + if(obatDibutuhkan.getKuantitas() > obatService.getObat(idObat).getStok()){ + stokAda = false; + } + } + + model.addAttribute("stokAda", stokAda); + return "resep/view-resep"; } @@ -162,5 +173,23 @@ public class ResepController { return "resep/form-add-resep"; } + @PostMapping("/update/{idResep}") + public String updateResep(@PathVariable Long idResep, Model model){ + ResepModel resep = resepService.getResep(idResep); + resep.setIsDone(Boolean.TRUE); + resepService.addResep(resep); + model.addAttribute("resep", resep); + + List<JumlahModel> listJumlah = resep.getListJumlah(); + model.addAttribute("listJumlah", listJumlah); + model.addAttribute("resep", resep); + model.addAttribute("dokter", resep.getAppointment().getDokter()); + model.addAttribute("pasien", resep.getAppointment().getPasien()); + model.addAttribute("apoteker", resep.getApoteker()); + model.addAttribute("stokAda", true); + return "redirect:/resep/view-detail/?id=" + idResep; + } + + } diff --git a/SpringTkApap/src/main/resources/templates/resep/view-resep.html b/SpringTkApap/src/main/resources/templates/resep/view-resep.html index 4b3b8f5..4a00872 100644 --- a/SpringTkApap/src/main/resources/templates/resep/view-resep.html +++ b/SpringTkApap/src/main/resources/templates/resep/view-resep.html @@ -1,67 +1,85 @@ <!DOCTYPE html> <html lang="en" xmlns:th="http://thymeleaf.org" xmlns:sec="http://www.w3.org/1999/xhtml"> <head> - <meta charset="UTF-8"> - <title>RumahSehat - Detail Resep</title> - <object th:include="fragments/fragment :: css" th:remove="tag"></object> - <object th:include="fragments/fragment :: js" th:remove="tag"></object> + <meta charset="UTF-8"> + <title>RumahSehat - Detail Resep</title> + <object th:include="fragments/fragment :: css" th:remove="tag"></object> + <object th:include="fragments/fragment :: js" th:remove="tag"></object> </head> <body> <object th:replace="fragments/fragment :: navbar('Resep')"></object> <div class="container"> - <div class="card m-4 p-4"> - <div class="card-body"> - <div class="justify-content-center"> - <div class="d-flex justify-content-between"> - <h2>Detail Resep</h2> - </div> - <br> + <div class="card m-4 p-4"> + <div class="card-body"> + <div class="justify-content-center"> + <div class="d-flex justify-content-between"> + <h2>Detail Resep</h2> + </div> + <br> - <p class="font-weight-bold" style="line-height: 1.5vh">ID :</p> - <p th:text="${resep.id}"></p> - <br> - <div class="row"> - <div class="col-md-7"> - <p class="font-weight-bold" style="line-height: 1.5vh">Nama Dokter :</p> - <p th:text="${dokter.nama}"></p> - </div> - <div class="col-md-5"> - <p class="font-weight-bold" style="line-height: 1.5vh">Nama Pasien :</p> - <p th:text="${pasien.nama}"></p> - </div> - </div> - <br> - <p class="font-weight-bold" style="line-height: 1.5vh">Status :</p> - <p th:text="${resep.isDone}"></p> - <br> - <p class="font-weight-bold" style="line-height: 1.5vh">Apoteker :</p> - <p th:text="${apoteker.nama}"></p> - <br> - </div> + <p class="font-weight-bold" style="line-height: 1.5vh">ID :</p> + <p th:text="${resep.id}"></p> + <br> + <div class="row"> + <div class="col-md-7"> + <p class="font-weight-bold" style="line-height: 1.5vh">Nama Dokter :</p> + <p th:text="${dokter.nama}"></p> + </div> + <div class="col-md-5"> + <p class="font-weight-bold" style="line-height: 1.5vh">Nama Pasien :</p> + <p th:text="${pasien.nama}"></p> + </div> + </div> + <br> + <p class="font-weight-bold" style="line-height: 1.5vh">Status :</p> + <p th:text="${resep.isDone}"></p> + <br> + <p class="font-weight-bold" style="line-height: 1.5vh">Apoteker :</p> + <p th:text="${apoteker.nama}"></p> + <br> + </div> - <div> - <br> - <table class="table"> - <thead> - <tr> - <th>Nama Obat</th> - <th>Jumlah</th> - </tr> - </thead> - <tbody> - <tr th:each="jumlah, iterationStatus : ${listJumlah}"> - <td th:text="${jumlah.obat.namaObat}"></td> - <td th:text="${jumlah.kuantitas}"></td> - </tr> - </tbody> - </table> + <div> + <br> + <table class="table"> + <thead> + <tr> + <th>Nama Obat</th> + <th>Jumlah</th> + </tr> + </thead> + <tbody> + <tr th:each="jumlah, iterationStatus : ${listJumlah}"> + <td th:text="${jumlah.obat.namaObat}"></td> + <td th:text="${jumlah.kuantitas}"></td> + </tr> + </tbody> + </table> + </div> + <br> + + <div> + <a class="btn btn-primary" href="/">Home</a> + </div> + <br> + <div th:if="${resep.isDone}"> + <p>Resep telah dikonfirmasi!</p> + </div> + <div th:unless="${resep.isDone}"> + <form th:action="@{/resep/update/} + ${resep.id}" th:object="${resep}" method="POST"> + <div th:if="${stokAda}"> + <button class="btn btn-success" type="submit" href="/">Konfirmasi Resep Selesai</button> + </div> + <div th:unless="${stokAda}"> + <p>Stok obat kurang! Resep tidak bisa dikonfirmasi!</p> + <button disabled class="btn btn-secondary" type="submit" href="/">Konfirmasi Resep Selesai</button> + </div> + </form> + </div> </div> - <br> - <a class="btn btn-primary" href="/">Home</a> - </div> </div> - </div> +</div> </div> </body> -- GitLab From 53881fdf8e7bc737eb39f91999f27132f1c31faa Mon Sep 17 00:00:00 2001 From: GhaitsaDina <ghaitsamaulidina@gmail.com> Date: Mon, 12 Dec 2022 21:47:56 +0700 Subject: [PATCH 18/19] feat/11: add tagihan fitur --- .../resep/controller/ResepController.java | 9 +++++++- .../appointment/AppointmentController.java | 6 ++++- .../obat/service/ObatService.java | 1 + .../obat/service/ObatServiceImpl.java | 6 +++++ .../springtkapap/tagihan/TagihanService.java | 6 +++-- .../tagihan/TagihanServiceImpl.java | 23 +++++++++++++++++-- .../resources/templates/resep/view-resep.html | 2 +- 7 files changed, 46 insertions(+), 7 deletions(-) diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java index 2246365..54916c3 100644 --- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java +++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java @@ -23,6 +23,8 @@ import spring.tk.springtkapap.obat.model.ObatModel; import spring.tk.springtkapap.obat.service.ObatService; import spring.tk.springtkapap.resep.model.ResepModel; import spring.tk.springtkapap.resep.service.ResepService; +import spring.tk.springtkapap.tagihan.TagihanModel; +import spring.tk.springtkapap.tagihan.TagihanService; import spring.tk.springtkapap.user.model.ApotekerModel; @Controller @@ -45,6 +47,9 @@ public class ResepController { @Autowired private ApotekerService apotekerService; + @Autowired + private TagihanService tagihanService; + @GetMapping("/add/{kodeAppointment}") public String addResepForm(@PathVariable("kodeAppointment") String kodeApt, Model model){ AppointmentModel appointment = appointmentService.getAppointment(kodeApt); @@ -176,11 +181,13 @@ public class ResepController { @PostMapping("/update/{idResep}") public String updateResep(@PathVariable Long idResep, Model model){ ResepModel resep = resepService.getResep(idResep); + AppointmentModel appointment = resep.getAppointment(); resep.setIsDone(Boolean.TRUE); resepService.addResep(resep); model.addAttribute("resep", resep); - List<JumlahModel> listJumlah = resep.getListJumlah(); + tagihanService.addTagihan(appointment, listJumlah); + model.addAttribute("listJumlah", listJumlah); model.addAttribute("resep", resep); model.addAttribute("dokter", resep.getAppointment().getDokter()); diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentController.java index 37cd9fc..35eb883 100644 --- a/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentController.java +++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentController.java @@ -10,6 +10,7 @@ import spring.tk.springtkapap.appointment.model.AppointmentModel; import spring.tk.springtkapap.auth.model.RolesEnum; import spring.tk.springtkapap.auth.model.UserModel; import spring.tk.springtkapap.auth.service.UserService; +import spring.tk.springtkapap.jumlah.model.JumlahModel; import spring.tk.springtkapap.resep.model.ResepModel; import spring.tk.springtkapap.tagihan.TagihanModel; import spring.tk.springtkapap.tagihan.TagihanService; @@ -20,6 +21,7 @@ import spring.tk.springtkapap.user.service.DokterService; import spring.tk.springtkapap.user.service.PasienService; import java.security.Principal; +import java.util.ArrayList; import java.util.List; @Controller @@ -95,7 +97,9 @@ public class AppointmentController { appointment.setKode(kodeApt); appointmentService.updateAppointment(appointment); var tagihan = new TagihanModel(); - tagihanService.addTagihan(tagihan, appointment); + appointment.getListResep(); + List<JumlahModel> listJumlah = new ArrayList<>(); + tagihanService.addTagihan(appointment, listJumlah); appointment.getListTagihan().add(tagihan); appointmentService.updateAppointment(appointment); model.addAttribute("resepStatus", Boolean.FALSE); diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatService.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatService.java index 70c3812..09b63a2 100644 --- a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatService.java +++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatService.java @@ -7,6 +7,7 @@ import java.util.List; public interface ObatService { void addObat(ObatDTO obat); + void updateObat(ObatModel obat); List<ObatModel> getListObat(); ObatModel getObat(String idObat); } diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatServiceImpl.java index c2ffea6..28b5908 100644 --- a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatServiceImpl.java +++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatServiceImpl.java @@ -27,6 +27,12 @@ public class ObatServiceImpl implements ObatService{ obatDb.save(newObat); } + @Override + public void updateObat(ObatModel obat) { + obatDb.save(obat); + } + + @Override public List<ObatModel> getListObat() { return obatDb.findAll(); diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanService.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanService.java index 2f63a0a..fec190e 100644 --- a/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanService.java +++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanService.java @@ -1,10 +1,12 @@ package spring.tk.springtkapap.tagihan; import spring.tk.springtkapap.appointment.model.AppointmentModel; +import spring.tk.springtkapap.jumlah.model.JumlahModel; + +import java.util.List; public interface TagihanService { - TagihanModel addTagihan(TagihanModel tagihan, AppointmentModel appointment); + TagihanModel addTagihan(AppointmentModel appointment, List<JumlahModel> listJumlah); TagihanModel findbyKode(String kode); - } diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanServiceImpl.java index 5352663..45f1d91 100644 --- a/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanServiceImpl.java +++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanServiceImpl.java @@ -4,9 +4,14 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import spring.tk.springtkapap.appointment.AppointmentDB; import spring.tk.springtkapap.appointment.model.AppointmentModel; +import spring.tk.springtkapap.jumlah.model.JumlahModel; +import spring.tk.springtkapap.obat.model.ObatModel; +import spring.tk.springtkapap.obat.service.ObatService; + import javax.transaction.Transactional; import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.List; import java.util.Optional; @Service @@ -19,10 +24,24 @@ public class TagihanServiceImpl implements TagihanService{ @Autowired AppointmentDB appointmentDB; + @Autowired + ObatService obatService; + @Override - public TagihanModel addTagihan(TagihanModel tagihan, AppointmentModel appointment) { + public TagihanModel addTagihan(AppointmentModel appointment, List<JumlahModel> listJumlah) { + Integer nominalTagihan = appointment.getDokter().getTarif(); + if(!listJumlah.isEmpty()){ + for(JumlahModel obatDibutuhkan : listJumlah){ + nominalTagihan += (obatDibutuhkan.getObat().getHarga()*obatDibutuhkan.getKuantitas()); + String idObat = obatDibutuhkan.getObat().getIdObat(); + ObatModel obatUpdate = obatService.getObat(idObat); + obatUpdate.setStok(obatUpdate.getStok()-obatDibutuhkan.getKuantitas()); + obatService.updateObat(obatUpdate); + } + } + TagihanModel tagihan = new TagihanModel(); tagihan.setAppointment(appointment); - tagihan.setJumlahTagihan(appointment.getDokter().getTarif()); + tagihan.setJumlahTagihan(nominalTagihan); tagihan.setIsPaid(Boolean.FALSE); tagihan.setTanggalBayar(null); tagihan.setTanggalTerbuat(LocalDateTime.now()); diff --git a/SpringTkApap/src/main/resources/templates/resep/view-resep.html b/SpringTkApap/src/main/resources/templates/resep/view-resep.html index 4a00872..afe3e2c 100644 --- a/SpringTkApap/src/main/resources/templates/resep/view-resep.html +++ b/SpringTkApap/src/main/resources/templates/resep/view-resep.html @@ -64,7 +64,7 @@ </div> <br> <div th:if="${resep.isDone}"> - <p>Resep telah dikonfirmasi!</p> + <p>Resep telah dikonfirmasi dan tagihan sudah keluar!</p> </div> <div th:unless="${resep.isDone}"> <form th:action="@{/resep/update/} + ${resep.id}" th:object="${resep}" method="POST"> -- GitLab From bc504e3ccb194aad2406f61efd8ffdebb0ce33f6 Mon Sep 17 00:00:00 2001 From: GhaitsaDina <ghaitsamaulidina@gmail.com> Date: Mon, 12 Dec 2022 22:07:22 +0700 Subject: [PATCH 19/19] feat/11: add hasAuthority admin for update --- .../spring/tk/springtkapap/auth/security/WebSecurityConfig.java | 1 + 1 file changed, 1 insertion(+) diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java index 93d55bd..2d6fa6e 100644 --- a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java +++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java @@ -55,6 +55,7 @@ public class WebSecurityConfig { .antMatchers("/obat/update/**").hasAuthority(APOTEKER) .antMatchers("/user/add/**").hasAuthority(ADMIN) .antMatchers("/user/delete/**").hasAuthority(ADMIN) + .antMatchers("/resep/update/**").hasAuthority(ADMIN) .antMatchers("/appointment/viewall").hasAnyAuthority(ADMIN, DOKTER, PASIEN) .antMatchers("/appointment/detail").hasAnyAuthority(ADMIN, DOKTER, PASIEN) .antMatchers("/user/viewall/**").hasAuthority(ADMIN) -- GitLab