From 6a2098f563dfc5cc1bcd9dfb5225c79ec31f5494 Mon Sep 17 00:00:00 2001 From: draganaF Date: Tue, 15 Jun 2021 23:01:22 +0200 Subject: [PATCH] Ispravka konkurentnog pristupa za studenta 4 --- .../repository/PharmacyAdminRepositoryDB.java | 8 ++- .../service/PharmacyAdminServiceImpl.java | 2 +- .../service/PharmacyServiceImpl.java | 63 ++++++++++++++----- src/main/resources/data-postgres.sql | 1 - .../src/components/PharmacyRegistration.vue | 4 +- 5 files changed, 58 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/mrsisa/mrsisaprojekat/repository/PharmacyAdminRepositoryDB.java b/src/main/java/com/mrsisa/mrsisaprojekat/repository/PharmacyAdminRepositoryDB.java index c29b531..40a5c05 100644 --- a/src/main/java/com/mrsisa/mrsisaprojekat/repository/PharmacyAdminRepositoryDB.java +++ b/src/main/java/com/mrsisa/mrsisaprojekat/repository/PharmacyAdminRepositoryDB.java @@ -18,11 +18,15 @@ public interface PharmacyAdminRepositoryDB extends JpaRepository getAllWithAddress(); - @Lock(LockModeType.PESSIMISTIC_READ) + @Query("select a from AdminPharmacy a join fetch a.roles where a.email=?1 and a.deleted = false") - @QueryHints({@QueryHint(name = "javax.persistence.lock.timeout", value ="0")}) AdminPharmacy getOneLogin(String id); + @Lock(LockModeType.PESSIMISTIC_READ) + @Query("select a from AdminPharmacy a where a.email=?1 and a.deleted = false") + @QueryHints({@QueryHint(name = "javax.persistence.lock.timeout", value ="0")}) + AdminPharmacy getOneForConcurrent(String id); + @Query("select a from AdminPharmacy a join fetch a.address join fetch a.pharmacy where a.email=?1 and a.deleted = false") AdminPharmacy getOnePharmacyAdmin(String id); diff --git a/src/main/java/com/mrsisa/mrsisaprojekat/service/PharmacyAdminServiceImpl.java b/src/main/java/com/mrsisa/mrsisaprojekat/service/PharmacyAdminServiceImpl.java index 0631009..2fa247a 100644 --- a/src/main/java/com/mrsisa/mrsisaprojekat/service/PharmacyAdminServiceImpl.java +++ b/src/main/java/com/mrsisa/mrsisaprojekat/service/PharmacyAdminServiceImpl.java @@ -102,7 +102,7 @@ public List getAllUnemployedAdmins() { @Override @Transactional public AdminPharmacy updatePharmacy(AdminPharmacyDTO adminDTO) { - AdminPharmacy admin = adminRepository.getOneLogin(adminDTO.getEmail()); + AdminPharmacy admin = adminRepository.getOneForConcurrent(adminDTO.getEmail()); if(admin == null) { return null; diff --git a/src/main/java/com/mrsisa/mrsisaprojekat/service/PharmacyServiceImpl.java b/src/main/java/com/mrsisa/mrsisaprojekat/service/PharmacyServiceImpl.java index a091db2..0601bd7 100644 --- a/src/main/java/com/mrsisa/mrsisaprojekat/service/PharmacyServiceImpl.java +++ b/src/main/java/com/mrsisa/mrsisaprojekat/service/PharmacyServiceImpl.java @@ -223,25 +223,60 @@ public Set findAllWithAdmin() { @Override public void deletePharmacy(Long id) throws Exception { - Pharmacy pharmacy = this.findOneWithAppointments(id); - pharmacy.setDeleted(true); - pharmacyRepository.save(pharmacy); - Collection medicaments = this.getAllMedicaments(pharmacy.getId()); - for(MedicamentItem mi : medicaments) { - medicamentService.deleteMedicament(mi); + Pharmacy pharmacy = null; + boolean err = false; + try{ + pharmacy = this.findOneWithAppointments(id); + + }catch(NullPointerException e) { + err = true; + } - - Collection appointments = pharmacy.getAppointments(); - for(Appointment a : appointments) { - appointmentService.delete(a); + if(pharmacy == null) { + pharmacy = this.findOne(id); + + pharmacy.setDeleted(true); + pharmacyRepository.save(pharmacy); + return; } + pharmacy.setDeleted(true); - Set admins = pharmacyAdminService.getAllAdminsInPharmacy(pharmacy.getId()); - for(AdminPharmacy ap : admins) { - ap.setPharmacy(null); - pharmacyAdminService.update(ap); + try { + Collection medicaments = this.getAllMedicaments(pharmacy.getId()); + if(medicaments != null) { + for(MedicamentItem mi : medicaments) { + medicamentService.deleteMedicament(mi); + } + } + } + catch(Exception e) { + } + try { + Collection appointments = pharmacy.getAppointments(); + if(appointments != null) { + for(Appointment a : appointments) { + appointmentService.delete(a); + } + } + } + catch(Exception e) { + + } + try { + Set admins = pharmacyAdminService.getAllAdminsInPharmacy(pharmacy.getId()); + if(admins != null) { + for(AdminPharmacy ap : admins) { + ap.setPharmacy(null); + pharmacyAdminService.update(ap); + } + } + } + catch(Exception e) { + + } + pharmacyRepository.save(pharmacy); } diff --git a/src/main/resources/data-postgres.sql b/src/main/resources/data-postgres.sql index 68294be..83be1a4 100644 --- a/src/main/resources/data-postgres.sql +++ b/src/main/resources/data-postgres.sql @@ -397,7 +397,6 @@ insert into medicament_ratings (medicament_id, ratings_id) values (2, 5) insert into medicament_ratings (medicament_id, ratings_id) values (3, 6) insert into medicament_ratings (medicament_id, ratings_id) values (4, 7) insert into medicament_ratings (medicament_id, ratings_id) values (4, 8) -insert into medicament_ratings (medicament_id, ratings_id) values (1, 15) insert into employee_ratings (employee_email, ratings_id ) values ('janatot@gmail.com', 9) diff --git a/src/main/ui/vue/src/components/PharmacyRegistration.vue b/src/main/ui/vue/src/components/PharmacyRegistration.vue index a87663c..a5b8c5b 100644 --- a/src/main/ui/vue/src/components/PharmacyRegistration.vue +++ b/src/main/ui/vue/src/components/PharmacyRegistration.vue @@ -104,8 +104,8 @@ export default { } var locationFound = await this.guessCoordinatesFromLocation(); - - if(errorFound==false && locationFound==true){ + console.log(locationFound); + if(errorFound==false){ this.axios .post(`/api/pharmacy`, { name: this.name,