summaryrefslogtreecommitdiff
path: root/api/src/main/java/med/voll
diff options
context:
space:
mode:
authorlucashemi <lucasxberger@gmail.com>2023-02-28 17:57:23 -0300
committerlucashemi <lucasxberger@gmail.com>2023-02-28 17:57:23 -0300
commit74165bbd25981d06a16bc42a8bd39dec644275ae (patch)
tree299cf610433e6ee197a906858f42742acfd20f33 /api/src/main/java/med/voll
parentbc072aafa156b303b0ea2681cc23f449bc1734b3 (diff)
Diffstat (limited to 'api/src/main/java/med/voll')
-rw-r--r--api/src/main/java/med/voll/api/controller/DoctorController.java5
-rw-r--r--api/src/main/java/med/voll/api/controller/PatientController.java2
-rw-r--r--api/src/main/java/med/voll/api/domain/doctor/DoctorRepository.java5
-rw-r--r--api/src/main/java/med/voll/api/domain/patient/PatientRepository.java2
4 files changed, 12 insertions, 2 deletions
diff --git a/api/src/main/java/med/voll/api/controller/DoctorController.java b/api/src/main/java/med/voll/api/controller/DoctorController.java
index f87da56..f53093b 100644
--- a/api/src/main/java/med/voll/api/controller/DoctorController.java
+++ b/api/src/main/java/med/voll/api/controller/DoctorController.java
@@ -2,6 +2,7 @@ package med.voll.api.controller;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import jakarta.validation.Valid;
+import jakarta.validation.ValidationException;
import med.voll.api.domain.doctor.DoctorListingData;
import med.voll.api.domain.doctor.Doctor;
import med.voll.api.domain.doctor.DoctorRepository;
@@ -54,6 +55,10 @@ public class DoctorController {
@Transactional
public ResponseEntity delete(@PathVariable Long id) {
Doctor doctor = doctorRepository.getReferenceById(id);
+ var appointments = doctorRepository.findAnyAppointmentFromDoctor(id);
+ if (appointments != null) {
+ throw new ValidationException("Can't delete doctor with active appointments");
+ }
doctor.delete();
return ResponseEntity.noContent().build();
diff --git a/api/src/main/java/med/voll/api/controller/PatientController.java b/api/src/main/java/med/voll/api/controller/PatientController.java
index 16c0973..7b2cd51 100644
--- a/api/src/main/java/med/voll/api/controller/PatientController.java
+++ b/api/src/main/java/med/voll/api/controller/PatientController.java
@@ -54,7 +54,7 @@ public class PatientController {
@Transactional
public ResponseEntity delete(@PathVariable Long id) {
Patient patient = patientRepository.getReferenceById(id);
- var appointments = patientRepository.findAnyAppointmentFrom(id);
+ var appointments = patientRepository.findAnyAppointmentFromPatient(id);
if (appointments != null) {
throw new ValidationException("Can't delete patient with active appointments");
}
diff --git a/api/src/main/java/med/voll/api/domain/doctor/DoctorRepository.java b/api/src/main/java/med/voll/api/domain/doctor/DoctorRepository.java
index 8cd6c46..c2f1567 100644
--- a/api/src/main/java/med/voll/api/domain/doctor/DoctorRepository.java
+++ b/api/src/main/java/med/voll/api/domain/doctor/DoctorRepository.java
@@ -28,4 +28,9 @@ public interface DoctorRepository extends JpaRepository<Doctor, Long> {
where d.id = :id
""")
Boolean findActiveById(Long id);
+
+ @Query("""
+ select d.id from Doctor d join Appointment a on d.id = a.doctor.id where a.active = true and d.id = :id
+ """)
+ Long findAnyAppointmentFromDoctor(Long id);
}
diff --git a/api/src/main/java/med/voll/api/domain/patient/PatientRepository.java b/api/src/main/java/med/voll/api/domain/patient/PatientRepository.java
index c53d47a..077dfa0 100644
--- a/api/src/main/java/med/voll/api/domain/patient/PatientRepository.java
+++ b/api/src/main/java/med/voll/api/domain/patient/PatientRepository.java
@@ -19,5 +19,5 @@ public interface PatientRepository extends JpaRepository<Patient, Long> {
@Query("""
select p.id from Patient p join Appointment a on p.id = a.patient.id where a.active = true and p.id = :id
""")
- Long findAnyAppointmentFrom(Long id);
+ Long findAnyAppointmentFromPatient(Long id);
}