From faf2ccdb8faf52b9e3bccd86a58821321fd04880 Mon Sep 17 00:00:00 2001 From: Aurince AKAKPO Date: Thu, 19 Mar 2026 11:23:47 +0100 Subject: [PATCH] fusion maj parcelle,batiment,ulo et leur enquete --- .../infocad/metier/EnqueteController.java | 1 + .../rfu/metier/EnqueteBatimentController.java | 97 +++++++++++++++++++ .../EnqueteUniteLogementController.java | 97 +++++++++++++++++++ .../entities/rfu/metier/EnqueteBatiment.java | 8 ++ .../rfu/metier/EnqueteUniteLogement.java | 9 ++ .../infocad/metier/EnqueteServiceImpl.java | 41 +++++--- .../metier/EnqueteBatimentServiceImpl.java | 74 ++++++++++++++ .../EnqueteUniteLogementServiceImpl.java | 74 ++++++++++++++ .../infocad/metier/EnqueteService.java | 8 +- .../rfu/metier/EnqueteBatimentService.java | 9 ++ .../metier/EnqueteUniteLogementService.java | 8 ++ 11 files changed, 408 insertions(+), 18 deletions(-) diff --git a/src/main/java/io/gmss/fiscad/controllers/infocad/metier/EnqueteController.java b/src/main/java/io/gmss/fiscad/controllers/infocad/metier/EnqueteController.java index 43af77a..ec68e35 100644 --- a/src/main/java/io/gmss/fiscad/controllers/infocad/metier/EnqueteController.java +++ b/src/main/java/io/gmss/fiscad/controllers/infocad/metier/EnqueteController.java @@ -124,6 +124,7 @@ public class EnqueteController { @PutMapping("/rejet") public ResponseEntity rejeterEnquete(@RequestBody EnqueteTraitementPayLoad enqueteTraitementPayLoad) { try { + return new ResponseEntity<>( new ApiResponse<>(true, enqueteService.rejeterEnquete(enqueteTraitementPayLoad), "Rejet effectuée avec succès."), HttpStatus.OK diff --git a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/EnqueteBatimentController.java b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/EnqueteBatimentController.java index 140bbf4..cdcdfa6 100644 --- a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/EnqueteBatimentController.java +++ b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/EnqueteBatimentController.java @@ -6,6 +6,7 @@ import io.gmss.fiscad.enums.StatutEnquete; import io.gmss.fiscad.exceptions.*; import io.gmss.fiscad.interfaces.rfu.metier.EnqueteBatimentService; import io.gmss.fiscad.paylaods.ApiResponse; +import io.gmss.fiscad.paylaods.request.EnqueteTraitementPayLoad; import io.gmss.fiscad.paylaods.request.crudweb.EnqueteBatimentPayloadWeb; import io.gmss.fiscad.security.CurrentUser; import io.gmss.fiscad.security.UserPrincipal; @@ -23,6 +24,8 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.HttpClientErrorException; +import java.util.List; + @RestController @RequestMapping(value = "api/enquete-batiment", produces = MediaType.APPLICATION_JSON_VALUE) @@ -288,4 +291,98 @@ public class EnqueteBatimentController { return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); } } + + + @PutMapping("/validation") + public ResponseEntity validerEnquete(@RequestBody EnqueteTraitementPayLoad enqueteTraitementPayLoad) { + try { + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteBatimentService.validerEnquete(enqueteTraitementPayLoad), "Validation effectuée avec succès."), + HttpStatus.OK + ); + } catch (HttpClientErrorException.MethodNotAllowed e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK); + } catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException | + FileStorageException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK); + } catch (NullPointerException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK); + } catch (Exception e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); + } + } + + @PutMapping("/rejet") + public ResponseEntity rejeterEnquete(@RequestBody EnqueteTraitementPayLoad enqueteTraitementPayLoad) { + try { + + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteBatimentService.rejeterEnquete(enqueteTraitementPayLoad), "Rejet effectuée avec succès."), + HttpStatus.OK + ); + } catch (HttpClientErrorException.MethodNotAllowed e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK); + } catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException | + FileStorageException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK); + } catch (NullPointerException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK); + } catch (Exception e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); + } + } + + @PutMapping("/validation-lot") + public ResponseEntity validerEnqueteParLot(@RequestBody List enqueteTraitementPayLoads) { + try { + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteBatimentService.validerEnquete(enqueteTraitementPayLoads), "Validation effectuée avec succès."), + HttpStatus.OK + ); + } catch (HttpClientErrorException.MethodNotAllowed e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK); + } catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException | + FileStorageException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK); + } catch (NullPointerException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK); + } catch (Exception e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); + } + } + + @PutMapping("/rejet-lot") + public ResponseEntity rejeterEnqueteParLot(@RequestBody List enqueteTraitementPayLoads) { + try { + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteBatimentService.rejeterEnquete(enqueteTraitementPayLoads), "Rejet effectuée avec succès."), + HttpStatus.OK + ); + } catch (HttpClientErrorException.MethodNotAllowed e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK); + } catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException | + FileStorageException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK); + } catch (NullPointerException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK); + } catch (Exception e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); + } + } } diff --git a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/EnqueteUniteLogementController.java b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/EnqueteUniteLogementController.java index 402faca..ce05191 100644 --- a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/EnqueteUniteLogementController.java +++ b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/EnqueteUniteLogementController.java @@ -6,6 +6,7 @@ import io.gmss.fiscad.enums.StatutEnquete; import io.gmss.fiscad.exceptions.*; import io.gmss.fiscad.interfaces.rfu.metier.EnqueteUniteLogementService; import io.gmss.fiscad.paylaods.ApiResponse; +import io.gmss.fiscad.paylaods.request.EnqueteTraitementPayLoad; import io.gmss.fiscad.paylaods.request.crudweb.EnqueteUniteLogementPayloadWeb; import io.gmss.fiscad.security.CurrentUser; import io.gmss.fiscad.security.UserPrincipal; @@ -23,6 +24,8 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.HttpClientErrorException; +import java.util.List; + @RestController @RequestMapping(value = "api/enquete-unite-logement", produces = MediaType.APPLICATION_JSON_VALUE) @@ -288,4 +291,98 @@ public class EnqueteUniteLogementController { return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); } } + + + @PutMapping("/validation") + public ResponseEntity validerEnquete(@RequestBody EnqueteTraitementPayLoad enqueteTraitementPayLoad) { + try { + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteUniteLogementService.validerEnquete(enqueteTraitementPayLoad), "Validation effectuée avec succès."), + HttpStatus.OK + ); + } catch (HttpClientErrorException.MethodNotAllowed e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK); + } catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException | + FileStorageException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK); + } catch (NullPointerException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK); + } catch (Exception e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); + } + } + + @PutMapping("/rejet") + public ResponseEntity rejeterEnquete(@RequestBody EnqueteTraitementPayLoad enqueteTraitementPayLoad) { + try { + + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteUniteLogementService.rejeterEnquete(enqueteTraitementPayLoad), "Rejet effectuée avec succès."), + HttpStatus.OK + ); + } catch (HttpClientErrorException.MethodNotAllowed e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK); + } catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException | + FileStorageException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK); + } catch (NullPointerException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK); + } catch (Exception e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); + } + } + + @PutMapping("/validation-lot") + public ResponseEntity validerEnqueteParLot(@RequestBody List enqueteTraitementPayLoads) { + try { + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteUniteLogementService.validerEnquete(enqueteTraitementPayLoads), "Validation effectuée avec succès."), + HttpStatus.OK + ); + } catch (HttpClientErrorException.MethodNotAllowed e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK); + } catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException | + FileStorageException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK); + } catch (NullPointerException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK); + } catch (Exception e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); + } + } + + @PutMapping("/rejet-lot") + public ResponseEntity rejeterEnqueteParLot(@RequestBody List enqueteTraitementPayLoads) { + try { + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteUniteLogementService.rejeterEnquete(enqueteTraitementPayLoads), "Rejet effectuée avec succès."), + HttpStatus.OK + ); + } catch (HttpClientErrorException.MethodNotAllowed e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK); + } catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException | + FileStorageException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK); + } catch (NullPointerException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK); + } catch (Exception e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); + } + } } diff --git a/src/main/java/io/gmss/fiscad/entities/rfu/metier/EnqueteBatiment.java b/src/main/java/io/gmss/fiscad/entities/rfu/metier/EnqueteBatiment.java index 7d923f7..da73f85 100644 --- a/src/main/java/io/gmss/fiscad/entities/rfu/metier/EnqueteBatiment.java +++ b/src/main/java/io/gmss/fiscad/entities/rfu/metier/EnqueteBatiment.java @@ -83,6 +83,14 @@ public class EnqueteBatiment extends BaseEntity implements Serializable { @JsonDeserialize(using = LocalDateDeserializer.class) private LocalDate dateEnquete; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateValidation; + + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateRejet; + private String descriptionMotifRejet; @ManyToOne private Exercice exercice; diff --git a/src/main/java/io/gmss/fiscad/entities/rfu/metier/EnqueteUniteLogement.java b/src/main/java/io/gmss/fiscad/entities/rfu/metier/EnqueteUniteLogement.java index d7a368e..7485800 100644 --- a/src/main/java/io/gmss/fiscad/entities/rfu/metier/EnqueteUniteLogement.java +++ b/src/main/java/io/gmss/fiscad/entities/rfu/metier/EnqueteUniteLogement.java @@ -73,6 +73,15 @@ public class EnqueteUniteLogement extends BaseEntity implements Serializable { @JsonFormat(pattern = "dd-MM-yyyy") @JsonDeserialize(using = LocalDateDeserializer.class) private LocalDate dateEnquete; + + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateValidation; + + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateRejet; + private String descriptionMotifRejet; private String observation; private Long uniteLogementExternalKey; diff --git a/src/main/java/io/gmss/fiscad/implementations/infocad/metier/EnqueteServiceImpl.java b/src/main/java/io/gmss/fiscad/implementations/infocad/metier/EnqueteServiceImpl.java index 2d36f9b..427131d 100644 --- a/src/main/java/io/gmss/fiscad/implementations/infocad/metier/EnqueteServiceImpl.java +++ b/src/main/java/io/gmss/fiscad/implementations/infocad/metier/EnqueteServiceImpl.java @@ -48,6 +48,7 @@ import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; import jakarta.persistence.Query; import jakarta.transaction.Transactional; +import jakarta.ws.rs.NotAcceptableException; import lombok.RequiredArgsConstructor; import org.modelmapper.ModelMapper; import org.springframework.data.domain.Page; @@ -352,7 +353,7 @@ public class EnqueteServiceImpl implements EnqueteService { } @Override - public Enquete validerEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad) { + public EnquetePayLoadWeb validerEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad) { if (enqueteTraitementPayLoad == null) { throw new BadRequestException("Impossible de valider une enquête ayant un id null."); } @@ -360,15 +361,22 @@ public class EnqueteServiceImpl implements EnqueteService { if (!optionalEnquete.isPresent()) { throw new NotFoundException("Impossible de trouver l'enquête que vous désirez valider."); } + if(optionalEnquete.get().getStatutEnquete()==StatutEnquete.CLOTURE || + optionalEnquete.get().getStatutEnquete()==StatutEnquete.REJETE ){ + throw new NotAcceptableException("Impossible de valider : Le statut actuel "+optionalEnquete.get().getStatutEnquete()+" ne le permet pas."); + } + Enquete enquete = optionalEnquete.get(); enquete.setDateValidation(LocalDate.now()); enquete.setStatutEnquete(StatutEnquete.VALIDE); enquete.setSynchronise(true); - return enqueteRepository.save(enquete); + + enquete= enqueteRepository.save(enquete); + return enqueteRepository.findEnqueteToDto(enquete.getId()).orElse(null); } @Override - public Enquete rejeterEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad) { + public EnquetePayLoadWeb rejeterEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad) { if (enqueteTraitementPayLoad.getIdBackend() == null) { throw new BadRequestException("Impossible de rejeter une enquête ayant un id null."); } @@ -376,38 +384,43 @@ public class EnqueteServiceImpl implements EnqueteService { if (!optionalEnquete.isPresent()) { throw new NotFoundException("Impossible de trouver l'enquête que vous désirez rejeter."); } + if(optionalEnquete.get().getStatutEnquete()==StatutEnquete.CLOTURE || + optionalEnquete.get().getStatutEnquete()==StatutEnquete.VALIDE ){ + throw new NotAcceptableException("Impossible de rejeter : Le statut actuel "+optionalEnquete.get().getStatutEnquete()+" ne le permet pas."); + } Enquete enquete = optionalEnquete.get(); enquete.setDateRejet(LocalDate.now()); enquete.setDescriptionMotifRejet(enqueteTraitementPayLoad.getMotifRejet()); enquete.setStatutEnquete(StatutEnquete.REJETE); enquete.setSynchronise(false); - return enqueteRepository.save(enquete); + enquete= enqueteRepository.save(enquete); + return enqueteRepository.findEnqueteToDto(enquete.getId()).orElse(null); } @Override - public List validerEnquete(List enqueteTraitementPayLoads) { - List enquetes = new ArrayList<>(); + public List validerEnquete(List enqueteTraitementPayLoads) { + List enquetePayLoadWebs = new ArrayList<>(); try { for (EnqueteTraitementPayLoad enqueteTraitementPayLoad : enqueteTraitementPayLoads) { - enquetes.add(validerEnquete(enqueteTraitementPayLoad)); + enquetePayLoadWebs.add(validerEnquete(enqueteTraitementPayLoad)); } } catch (Exception e) { - enquetes.add(null); + enquetePayLoadWebs.add(null); } - return enquetes; + return enquetePayLoadWebs; } @Override - public List rejeterEnquete(List enqueteTraitementPayLoads) { - List enquetes = new ArrayList<>(); + public List rejeterEnquete(List enqueteTraitementPayLoads) { + List enquetePayLoadWebs = new ArrayList<>(); try { for (EnqueteTraitementPayLoad enqueteTraitementPayLoad : enqueteTraitementPayLoads) { - enquetes.add(rejeterEnquete(enqueteTraitementPayLoad)); + enquetePayLoadWebs.add(rejeterEnquete(enqueteTraitementPayLoad)); } } catch (Exception e) { - enquetes.add(null); + enquetePayLoadWebs.add(null); } - return enquetes; + return enquetePayLoadWebs; } @Override diff --git a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/EnqueteBatimentServiceImpl.java b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/EnqueteBatimentServiceImpl.java index c623110..b36d713 100644 --- a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/EnqueteBatimentServiceImpl.java +++ b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/EnqueteBatimentServiceImpl.java @@ -14,9 +14,11 @@ import io.gmss.fiscad.interfaces.decoupage.SecteurService; import io.gmss.fiscad.interfaces.rfu.metier.BatimentService; import io.gmss.fiscad.interfaces.rfu.metier.CaracteristiqueBatimentService; import io.gmss.fiscad.interfaces.rfu.metier.EnqueteBatimentService; +import io.gmss.fiscad.paylaods.request.EnqueteTraitementPayLoad; import io.gmss.fiscad.paylaods.request.crudweb.BaremRfuNonBatiPayloadWeb; import io.gmss.fiscad.paylaods.request.crudweb.BatimentPaylaodWeb; import io.gmss.fiscad.paylaods.request.crudweb.EnqueteBatimentPayloadWeb; +import io.gmss.fiscad.paylaods.request.crudweb.EnquetePayLoadWeb; import io.gmss.fiscad.persistence.repositories.infocad.metier.EnqueteRepository; import io.gmss.fiscad.persistence.repositories.infocad.metier.UploadRepository; import io.gmss.fiscad.persistence.repositories.infocad.parametre.PersonneRepository; @@ -24,12 +26,14 @@ import io.gmss.fiscad.persistence.repositories.rfu.metier.BatimentRepository; import io.gmss.fiscad.persistence.repositories.rfu.metier.EnqueteBatimentRepository; import io.gmss.fiscad.service.EntityFromPayLoadService; import jakarta.transaction.Transactional; +import jakarta.ws.rs.NotAcceptableException; import lombok.AllArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import java.time.LocalDate; +import java.util.ArrayList; import java.util.List; import java.util.Optional; @AllArgsConstructor @@ -172,4 +176,74 @@ public class EnqueteBatimentServiceImpl implements EnqueteBatimentService { return enqueteBatimentRepository.findAllEnqueteBatimentByQuartierByStatutToDtoPageable(quartierId,secteurIds,statutEnquete,pageable); } + + + @Override + public EnqueteBatimentPayloadWeb validerEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad) { + if (enqueteTraitementPayLoad == null || enqueteTraitementPayLoad.getIdBackend()==null) { + throw new BadRequestException("Impossible de valider une enquête ayant un id null."); + } + Optional optionalEnqueteBatiment = enqueteBatimentRepository.findById(enqueteTraitementPayLoad.getIdBackend()); + if (!optionalEnqueteBatiment.isPresent()) { + throw new NotFoundException("Impossible de trouver l'enquête que vous désirez valider."); + } + if(optionalEnqueteBatiment.get().getStatutEnquete()==StatutEnquete.CLOTURE || + optionalEnqueteBatiment.get().getStatutEnquete()==StatutEnquete.REJETE ){ + throw new NotAcceptableException("Impossible de valider : Le statut actuel "+optionalEnqueteBatiment.get().getStatutEnquete()+" ne le permet pas."); + } + + EnqueteBatiment enqueteBatiment = optionalEnqueteBatiment.get(); + enqueteBatiment.setDateValidation(LocalDate.now()); + enqueteBatiment.setStatutEnquete(StatutEnquete.VALIDE); + + enqueteBatiment= enqueteBatimentRepository.save(enqueteBatiment); + return enqueteBatimentRepository.findEnqueteBatimentByIdToDto(enqueteBatiment.getId()).orElse(null); + } + + @Override + public EnqueteBatimentPayloadWeb rejeterEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad) { + if (enqueteTraitementPayLoad == null || enqueteTraitementPayLoad.getIdBackend()==null) { + throw new BadRequestException("Impossible de rejeter une enquête ayant un id null."); + } + Optional optionalEnqueteBatiment = enqueteBatimentRepository.findById(enqueteTraitementPayLoad.getIdBackend()); + if (!optionalEnqueteBatiment.isPresent()) { + throw new NotFoundException("Impossible de trouver l'enquête que vous désirez rejeter."); + } + if(optionalEnqueteBatiment.get().getStatutEnquete()==StatutEnquete.CLOTURE || + optionalEnqueteBatiment.get().getStatutEnquete()==StatutEnquete.VALIDE ){ + throw new NotAcceptableException("Impossible de rejeter : Le statut actuel "+optionalEnqueteBatiment.get().getStatutEnquete()+" ne le permet pas."); + } + EnqueteBatiment enqueteBatiment = optionalEnqueteBatiment.get(); + enqueteBatiment.setDateRejet(LocalDate.now()); + enqueteBatiment.setDescriptionMotifRejet(enqueteTraitementPayLoad.getMotifRejet()); + enqueteBatiment.setStatutEnquete(StatutEnquete.REJETE); + enqueteBatiment= enqueteBatimentRepository.save(enqueteBatiment); + return enqueteBatimentRepository.findEnqueteBatimentByIdToDto(enqueteBatiment.getId()).orElse(null); + } + + @Override + public List validerEnquete(List enqueteTraitementPayLoads) { + List enqueteBatimentPayloadWebs = new ArrayList<>(); + try { + for (EnqueteTraitementPayLoad enqueteTraitementPayLoad : enqueteTraitementPayLoads) { + enqueteBatimentPayloadWebs.add(validerEnquete(enqueteTraitementPayLoad)); + } + } catch (Exception e) { + enqueteBatimentPayloadWebs.add(null); + } + return enqueteBatimentPayloadWebs; + } + + @Override + public List rejeterEnquete(List enqueteTraitementPayLoads) { + List enqueteBatimentPayloadWebs = new ArrayList<>(); + try { + for (EnqueteTraitementPayLoad enqueteTraitementPayLoad : enqueteTraitementPayLoads) { + enqueteBatimentPayloadWebs.add(rejeterEnquete(enqueteTraitementPayLoad)); + } + } catch (Exception e) { + enqueteBatimentPayloadWebs.add(null); + } + return enqueteBatimentPayloadWebs; + } } diff --git a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/EnqueteUniteLogementServiceImpl.java b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/EnqueteUniteLogementServiceImpl.java index 6b04bf2..6a6fb39 100644 --- a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/EnqueteUniteLogementServiceImpl.java +++ b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/EnqueteUniteLogementServiceImpl.java @@ -12,6 +12,8 @@ import io.gmss.fiscad.interfaces.decoupage.SecteurService; import io.gmss.fiscad.interfaces.rfu.metier.CaracteristiqueUniteLogementService; import io.gmss.fiscad.interfaces.rfu.metier.EnqueteUniteLogementService; import io.gmss.fiscad.interfaces.rfu.metier.UniteLogementService; +import io.gmss.fiscad.paylaods.request.EnqueteTraitementPayLoad; +import io.gmss.fiscad.paylaods.request.crudweb.EnqueteBatimentPayloadWeb; import io.gmss.fiscad.paylaods.request.crudweb.EnqueteUniteLogementPayloadWeb; import io.gmss.fiscad.paylaods.request.crudweb.UniteLogementPaylaodWeb; import io.gmss.fiscad.persistence.repositories.infocad.metier.EnqueteRepository; @@ -21,12 +23,14 @@ import io.gmss.fiscad.persistence.repositories.rfu.metier.EnqueteUniteLogementRe import io.gmss.fiscad.persistence.repositories.rfu.metier.UniteLogementRepository; import io.gmss.fiscad.service.EntityFromPayLoadService; import jakarta.transaction.Transactional; +import jakarta.ws.rs.NotAcceptableException; import lombok.AllArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import java.time.LocalDate; +import java.util.ArrayList; import java.util.List; import java.util.Optional; @AllArgsConstructor @@ -174,4 +178,74 @@ public class EnqueteUniteLogementServiceImpl implements EnqueteUniteLogementServ return enqueteUniteLogementRepository.findAllEnqueteUniteLogementByQuartierByStatutToDtoPageable(quartierId,secteurIds,statutEnquete,pageable); } + + + @Override + public EnqueteUniteLogementPayloadWeb validerEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad) { + if (enqueteTraitementPayLoad == null || enqueteTraitementPayLoad.getIdBackend()==null) { + throw new BadRequestException("Impossible de valider une enquête ayant un id null."); + } + Optional optionalEnqueteUniteLogement = enqueteUniteLogementRepository.findById(enqueteTraitementPayLoad.getIdBackend()); + if (!optionalEnqueteUniteLogement.isPresent()) { + throw new NotFoundException("Impossible de trouver l'enquête que vous désirez valider."); + } + if(optionalEnqueteUniteLogement.get().getStatutEnquete()==StatutEnquete.CLOTURE || + optionalEnqueteUniteLogement.get().getStatutEnquete()==StatutEnquete.REJETE ){ + throw new NotAcceptableException("Impossible de valider : Le statut actuel "+optionalEnqueteUniteLogement.get().getStatutEnquete()+" ne le permet pas."); + } + + EnqueteUniteLogement enqueteUniteLogement = optionalEnqueteUniteLogement.get(); + enqueteUniteLogement.setDateValidation(LocalDate.now()); + enqueteUniteLogement.setStatutEnquete(StatutEnquete.VALIDE); + + enqueteUniteLogement= enqueteUniteLogementRepository.save(enqueteUniteLogement); + return enqueteUniteLogementRepository.findEnqueteUniteLogementToDto(enqueteUniteLogement.getId()).orElse(null); + } + + @Override + public EnqueteUniteLogementPayloadWeb rejeterEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad) { + if (enqueteTraitementPayLoad == null || enqueteTraitementPayLoad.getIdBackend()==null) { + throw new BadRequestException("Impossible de rejeter une enquête ayant un id null."); + } + Optional optionalEnqueteUniteLogement = enqueteUniteLogementRepository.findById(enqueteTraitementPayLoad.getIdBackend()); + if (!optionalEnqueteUniteLogement.isPresent()) { + throw new NotFoundException("Impossible de trouver l'enquête que vous désirez rejeter."); + } + if(optionalEnqueteUniteLogement.get().getStatutEnquete()==StatutEnquete.CLOTURE || + optionalEnqueteUniteLogement.get().getStatutEnquete()==StatutEnquete.VALIDE ){ + throw new NotAcceptableException("Impossible de rejeter : Le statut actuel "+optionalEnqueteUniteLogement.get().getStatutEnquete()+" ne le permet pas."); + } + EnqueteUniteLogement enqueteUniteLogement = optionalEnqueteUniteLogement.get(); + enqueteUniteLogement.setDateRejet(LocalDate.now()); + enqueteUniteLogement.setDescriptionMotifRejet(enqueteTraitementPayLoad.getMotifRejet()); + enqueteUniteLogement.setStatutEnquete(StatutEnquete.REJETE); + enqueteUniteLogement= enqueteUniteLogementRepository.save(enqueteUniteLogement); + return enqueteUniteLogementRepository.findEnqueteUniteLogementToDto(enqueteUniteLogement.getId()).orElse(null); + } + + @Override + public List validerEnquete(List enqueteTraitementPayLoads) { + List enqueteUniteLogementPayloadWebs = new ArrayList<>(); + try { + for (EnqueteTraitementPayLoad enqueteTraitementPayLoad : enqueteTraitementPayLoads) { + enqueteUniteLogementPayloadWebs.add(validerEnquete(enqueteTraitementPayLoad)); + } + } catch (Exception e) { + enqueteUniteLogementPayloadWebs.add(null); + } + return enqueteUniteLogementPayloadWebs; + } + + @Override + public List rejeterEnquete(List enqueteTraitementPayLoads) { + List enqueteUniteLogementPayloadWebs = new ArrayList<>(); + try { + for (EnqueteTraitementPayLoad enqueteTraitementPayLoad : enqueteTraitementPayLoads) { + enqueteUniteLogementPayloadWebs.add(rejeterEnquete(enqueteTraitementPayLoad)); + } + } catch (Exception e) { + enqueteUniteLogementPayloadWebs.add(null); + } + return enqueteUniteLogementPayloadWebs; + } } diff --git a/src/main/java/io/gmss/fiscad/interfaces/infocad/metier/EnqueteService.java b/src/main/java/io/gmss/fiscad/interfaces/infocad/metier/EnqueteService.java index 231458a..7bec839 100755 --- a/src/main/java/io/gmss/fiscad/interfaces/infocad/metier/EnqueteService.java +++ b/src/main/java/io/gmss/fiscad/interfaces/infocad/metier/EnqueteService.java @@ -40,13 +40,13 @@ public interface EnqueteService { Optional getEnqueteById(Long id); - Enquete validerEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad); + EnquetePayLoadWeb validerEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad); - Enquete rejeterEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad); + EnquetePayLoadWeb rejeterEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad); - List validerEnquete(List enqueteTraitementPayLoads); + List validerEnquete(List enqueteTraitementPayLoads); - List rejeterEnquete(List enqueteTraitementPayLoads); + List rejeterEnquete(List enqueteTraitementPayLoads); Enquete finaliserEnquete(Long enqueteId); diff --git a/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/EnqueteBatimentService.java b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/EnqueteBatimentService.java index 33b9a46..eacef49 100755 --- a/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/EnqueteBatimentService.java +++ b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/EnqueteBatimentService.java @@ -4,6 +4,7 @@ import io.gmss.fiscad.entities.rfu.metier.EnqueteBatiment; import io.gmss.fiscad.enums.StatutEnquete; import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.NotFoundException; +import io.gmss.fiscad.paylaods.request.EnqueteTraitementPayLoad; import io.gmss.fiscad.paylaods.request.crudweb.EnqueteBatimentPayloadWeb; import io.gmss.fiscad.paylaods.request.crudweb.EnquetePayLoadWeb; import org.springframework.data.domain.Page; @@ -31,4 +32,12 @@ public interface EnqueteBatimentService { Page getEnqueteBatimentListByQuartierByStatutPageableToDto(Long userId, Long quartierId, StatutEnquete statutEnquete, Pageable pageable); + EnqueteBatimentPayloadWeb validerEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad); + + EnqueteBatimentPayloadWeb rejeterEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad); + + List validerEnquete(List enqueteTraitementPayLoads); + + List rejeterEnquete(List enqueteTraitementPayLoads); + } diff --git a/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/EnqueteUniteLogementService.java b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/EnqueteUniteLogementService.java index 0eb1c99..df42381 100755 --- a/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/EnqueteUniteLogementService.java +++ b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/EnqueteUniteLogementService.java @@ -4,6 +4,7 @@ import io.gmss.fiscad.entities.rfu.metier.EnqueteUniteLogement; import io.gmss.fiscad.enums.StatutEnquete; import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.NotFoundException; +import io.gmss.fiscad.paylaods.request.EnqueteTraitementPayLoad; import io.gmss.fiscad.paylaods.request.crudweb.EnqueteBatimentPayloadWeb; import io.gmss.fiscad.paylaods.request.crudweb.EnqueteUniteLogementPayloadWeb; import org.springframework.data.domain.Page; @@ -32,4 +33,11 @@ public interface EnqueteUniteLogementService { Page getEnqueteUniteLogementListByQuartierByStatutPageableToDto(Long userId, Long quartierId, StatutEnquete statutEnquete, Pageable pageable); + EnqueteUniteLogementPayloadWeb validerEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad); + + EnqueteUniteLogementPayloadWeb rejeterEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad); + + List validerEnquete(List enqueteTraitementPayLoads); + + List rejeterEnquete(List enqueteTraitementPayLoads); } -- 2.49.1