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 22463651b61e99d441dc2835b0fa1d5e4e2ef360..54916c3dad407d30a0621b9b6370f9710c20793b 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 37cd9fc784e2283eac0ee8a9b4c00a0c9b4ee7b0..35eb88312c4202481bd78297e1207bbc88277c71 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/auth/security/WebSecurityConfig.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java index 93d55bd239f294fed10c62804600f64499b66475..2d6fa6e46be3d9b6759b32fbf8f5eb7ba21cc631 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) 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 70c3812dda0efe40987fda9b3264856b6a884630..09b63a23e0b171b176bc3b40fe96d457b8fe0cc5 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 c2ffea659e5bd18d901212c0dd091f4af276f46d..28b59081d8776df5f85afdbe3f473deba823f31b 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 2f63a0abaabb62175396ff0e9f59d442b975aeb6..fec190e06cc16ff898fe9ab352f27dfbe26e7cbd 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 53526634be817265f1dbddacc66d7a77b6a700a6..45f1d91c9fe45dc34ea475536c36d7d4507a9530 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 4a0087274edcca312aaf8883497829544643c064..afe3e2c69d560286c765061b1d6712c71cc0a423 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">