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 20ea21d..b808e9f 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 @@ -48,9 +48,9 @@ public class EnqueteController { @PostMapping("/create") public ResponseEntity createEnquete(@RequestBody @Valid @Validated EnquetePayLoadWeb enquetePayLoadWeb) { try { - Enquete enquete = enqueteService.createEnquete(enquetePayLoadWeb); + enquetePayLoadWeb = enqueteService.createEnquete(enquetePayLoadWeb); return new ResponseEntity<>( - new ApiResponse<>(true, enquete, "Enquete batiment créé avec succès."), + new ApiResponse<>(true, enquetePayLoadWeb, "Enquete batiment créé avec succès."), HttpStatus.OK ); } catch (HttpClientErrorException.MethodNotAllowed e) { diff --git a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/CaracteristiqueParcelleController.java b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/CaracteristiqueParcelleController.java index 8d88a7f..573bcf6 100644 --- a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/CaracteristiqueParcelleController.java +++ b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/CaracteristiqueParcelleController.java @@ -5,6 +5,7 @@ import io.gmss.fiscad.entities.rfu.metier.CaracteristiqueParcelle; import io.gmss.fiscad.exceptions.*; import io.gmss.fiscad.interfaces.rfu.metier.CaracteristiqueParcelleService; import io.gmss.fiscad.paylaods.ApiResponse; +import io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueParcellePayloadWeb; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; @@ -35,11 +36,11 @@ public class CaracteristiqueParcelleController { } @PostMapping("/create") - public ResponseEntity createCaracteristiqueParcelle(@RequestBody @Valid @Validated CaracteristiqueParcelle caracteristiqueParcelle) { + public ResponseEntity createCaracteristiqueParcelle(@RequestBody @Valid @Validated CaracteristiqueParcellePayloadWeb caracteristiqueParcellePayloadWeb) { try { - caracteristiqueParcelle = caracteristiqueParcelleService.createCaracteristiqueParcelle(caracteristiqueParcelle); + caracteristiqueParcellePayloadWeb = caracteristiqueParcelleService.createCaracteristiqueParcelle(caracteristiqueParcellePayloadWeb); return new ResponseEntity<>( - new ApiResponse<>(true, caracteristiqueParcelle, "Caracteristique parcelle créé avec succès."), + new ApiResponse<>(true, caracteristiqueParcellePayloadWeb, "Caracteristique parcelle créé avec succès."), HttpStatus.OK ); } catch (HttpClientErrorException.MethodNotAllowed e) { @@ -59,10 +60,10 @@ public class CaracteristiqueParcelleController { } @PutMapping("/update/{id}") - public ResponseEntity updateCaracteristiqueParcelle(@PathVariable Long id, @RequestBody CaracteristiqueParcelle caracteristiqueParcelle) { + public ResponseEntity updateCaracteristiqueParcelle(@PathVariable Long id, @RequestBody CaracteristiqueParcellePayloadWeb caracteristiqueParcellePayloadWeb) { try { return new ResponseEntity<>( - new ApiResponse<>(true, caracteristiqueParcelleService.updateCaracteristiqueParcelle(id, caracteristiqueParcelle), "Caracteristique parcelle mise à jour avec succès."), + new ApiResponse<>(true, caracteristiqueParcelleService.updateCaracteristiqueParcelle(id, caracteristiqueParcellePayloadWeb), "Caracteristique parcelle mise à jour avec succès."), HttpStatus.OK ); } catch (HttpClientErrorException.MethodNotAllowed e) { @@ -174,4 +175,52 @@ public class CaracteristiqueParcelleController { return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); } } + + + @GetMapping("/by-enquete-id/{enqueteId}") + public ResponseEntity getAllCaracteristiqueParcelleList(@PathVariable Long enqueteId) { + try { + return new ResponseEntity<>( + new ApiResponse<>(true, caracteristiqueParcelleService.getCaracteristiqueParcelleByEnqueteList(enqueteId), "Liste des Caracteristiques parcelles chargé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); + } + } + + @GetMapping("/page/by-enquete-id/{enqueteId}") + public ResponseEntity getAllCaracteristiqueParcellePaged(@PathVariable Long enqueteId,@RequestParam int pageNo, @RequestParam int pageSize) { + try { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, caracteristiqueParcelleService.getCaracteristiqueParcelleByEnqueteListPageable(enqueteId,pageable), "Liste des Caracteristiques parcelles chargé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/CaracteristiqueParcelle.java b/src/main/java/io/gmss/fiscad/entities/rfu/metier/CaracteristiqueParcelle.java index ca71f52..7360319 100644 --- a/src/main/java/io/gmss/fiscad/entities/rfu/metier/CaracteristiqueParcelle.java +++ b/src/main/java/io/gmss/fiscad/entities/rfu/metier/CaracteristiqueParcelle.java @@ -37,6 +37,7 @@ public class CaracteristiqueParcelle extends BaseEntity implements Serializable @ManyToOne private Caracteristique caracteristique; private String valeur; + private String observation; @JsonIgnore @ManyToOne private Tpe terminal; 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 bdf915c..7c3b20a 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 @@ -14,6 +14,7 @@ import io.gmss.fiscad.entities.infocad.parametre.Personne; import io.gmss.fiscad.entities.rfu.parametre.Caracteristique; import io.gmss.fiscad.entities.rfu.parametre.Exercice; import io.gmss.fiscad.entities.user.User; +import io.gmss.fiscad.enums.StatutEnquete; import io.gmss.fiscad.enums.StatutEnregistrement; import jakarta.persistence.*; import lombok.AllArgsConstructor; @@ -117,7 +118,7 @@ public class EnqueteBatiment extends BaseEntity implements Serializable { @OneToMany(mappedBy = "enqueteBatiment") private List uploads; - //@Enumerated(EnumType.STRING) - //@JsonIgnore - //private StatutEnregistrement statutEnregistrement; + @Enumerated(EnumType.STRING) + @JsonIgnore + private StatutEnquete statutEnquete; } 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 ff3e27c..9b783fc 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 @@ -13,6 +13,7 @@ import io.gmss.fiscad.entities.infocad.metier.Upload; import io.gmss.fiscad.entities.infocad.parametre.Personne; import io.gmss.fiscad.entities.rfu.parametre.Exercice; import io.gmss.fiscad.entities.user.User; +import io.gmss.fiscad.enums.StatutEnquete; import io.gmss.fiscad.enums.StatutEnregistrement; import jakarta.persistence.*; import lombok.AllArgsConstructor; @@ -106,6 +107,6 @@ public class EnqueteUniteLogement extends BaseEntity implements Serializable { private List uploads; @JsonIgnore @Enumerated(EnumType.STRING) - private StatutEnregistrement statutEnregistrement; + private StatutEnquete statutEnquete; } diff --git a/src/main/java/io/gmss/fiscad/enums/StatutEnquete.java b/src/main/java/io/gmss/fiscad/enums/StatutEnquete.java index e4855c1..5aa4e79 100755 --- a/src/main/java/io/gmss/fiscad/enums/StatutEnquete.java +++ b/src/main/java/io/gmss/fiscad/enums/StatutEnquete.java @@ -5,5 +5,6 @@ public enum StatutEnquete { FINALISE, REJETE, VALIDE, - ECHEC + ECHEC, + CLOTURE } 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 618cb4f..9322e02 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 @@ -91,9 +91,7 @@ public class EnqueteServiceImpl implements EnqueteService { @Override - public Enquete createEnquete(EnquetePayLoadWeb enquetePayLoadWeb) throws BadRequestException { - Optional optionalParcelle=Optional.empty(); - Long rueId; + public EnquetePayLoadWeb createEnquete(EnquetePayLoadWeb enquetePayLoadWeb) throws BadRequestException { Optional optionalUser = userRepository.findById(enquetePayLoadWeb.getEnqueteurId()); if (!optionalUser.isPresent()) { throw new BadRequestException("Echec de l'enregistrement : Enquêteur inexistant"); @@ -110,37 +108,10 @@ public class EnqueteServiceImpl implements EnqueteService { if (enquetePayLoadWeb.getParcelleId() == null) { throw new ApplicationException("Echec de l'enregistrement : La parcelle non renseignée."); - } else { - optionalParcelle = parcelleService.getParcelleById(enquetePayLoadWeb.getParcelleId()); } - + Enquete enquete = entityFromPayLoadService.getEnqueteFromPayLoadWeb(enquetePayLoadWeb); ////enregistrement de l'enquete - Enquete enquete = new Enquete(); - enquete.setDateEnquete(LocalDate.now()); - enquete.setUser(optionalUser.get()); - enquete.setParcelle(optionalParcelle.get()); - enquete.setLitige(enquetePayLoadWeb.getLitige()); - enquete.setStatutEnquete(StatutEnquete.EN_COURS); - enquete.setObservationParticuliere(enquetePayLoadWeb.getObservation()); - enquete.setPersonne(optionalPersonne.orElse(null)); - enquete.setZoneRfu(optionalZoneRfu.orElse(null)); - enquete.setAutreAdresse(enquetePayLoadWeb.getAutreAdresse()); - enquete.setAutreNumeroTitreFoncier(enquetePayLoadWeb.getAutreNumeroTitreFoncier()); - enquete.setNumeroTitreFoncier(enquetePayLoadWeb.getNumeroTitreFoncier()); - enquete.setDateDebutExcemption(enquetePayLoadWeb.getDateDebutExemption()); - enquete.setDateFinExcemption(enquetePayLoadWeb.getDateFinExemption()); - enquete.setNbreBatiment(enquetePayLoadWeb.getNbreBatiment()); - enquete.setNbrePiscine(enquetePayLoadWeb.getNbrePiscine()); - enquete.setNbreIndivisiaire(enquetePayLoadWeb.getNbreIndivisiaire()); - enquete.setNbreCoProprietaire(enquetePayLoadWeb.getNbreCoProprietaire()); - enquete.setNumEntreeParcelle(enquetePayLoadWeb.getNumEntreeParcelle()); - enquete.setNomRue(enquetePayLoadWeb.getNomRue()); - enquete.setNumRue(enquetePayLoadWeb.getNumRue()); - enquete.setSuperficie(enquetePayLoadWeb.getSuperficie()); - enquete.setMontantMensuelleLocation(enquetePayLoadWeb.getMontantMensuelleLocation()); - enquete.setMontantAnnuelleLocation(enquetePayLoadWeb.getMontantAnnuelleLocation()); - enquete.setValeurParcelleEstime(enquetePayLoadWeb.getValeurParcelleEstime()); - enquete.setValeurParcelleReel(enquetePayLoadWeb.getValeurParcelleReel()); + enquete=enqueteRepository.save(enquete); //////Enregistrement des caractéristiques parcelle @@ -175,11 +146,11 @@ public class EnqueteServiceImpl implements EnqueteService { // }); // }); - return enquete; + return enqueteRepository.findEnqueteToDto(enquete.getId()).orElse(null); } @Override - public Enquete updateEnquete(Long id,EnquetePayLoadWeb enquetePayLoadWeb) throws NotFoundException { + public EnquetePayLoadWeb updateEnquete(Long id,EnquetePayLoadWeb enquetePayLoadWeb) throws NotFoundException { if (enquetePayLoadWeb.getId() == null) { throw new BadRequestException("Impossible de mettre à jour une enquête ayant un id null."); } @@ -206,16 +177,6 @@ public class EnqueteServiceImpl implements EnqueteService { if (!optionalZoneRfu.isPresent()) { throw new BadRequestException("Echec de l'enregistrement : zone inexistante"); } - - //Optional optionalRue = rueRepository.findById(enquetePayLoadWeb.getZoneRfuId()); - - // if (optionalRue.isPresent()) { - // rueId=optionalRue.get().getId(); - // enquetePayLoadWeb.getParcellePayLoadWeb().setRueId(rueId); - // } - - //Optional optionalEquipe = equipeRepository.findById(enquetePayLoadWeb.getEquipeId()); - ///enregistrement de la pacelle if (enquetePayLoadWeb.getParcelleId() == null) { throw new ApplicationException("Echec de l'enregistrement : La parcelle non renseignée."); @@ -223,34 +184,9 @@ public class EnqueteServiceImpl implements EnqueteService { optionalParcelle = parcelleService.getParcelleById(enquetePayLoadWeb.getParcelleId()); } - ////enregistrement de l'enquete - Enquete enquete = new Enquete(); - enquete.setDateEnquete(LocalDate.now()); - enquete.setUser(optionalUser.get()); - enquete.setParcelle(optionalParcelle.get()); - enquete.setLitige(enquetePayLoadWeb.getLitige()); - enquete.setStatutEnquete(StatutEnquete.EN_COURS); - enquete.setObservationParticuliere(enquetePayLoadWeb.getObservation()); - enquete.setPersonne(optionalProprietaire.orElse(null)); - enquete.setZoneRfu(optionalZoneRfu.orElse(null)); - enquete.setAutreAdresse(enquetePayLoadWeb.getAutreAdresse()); - enquete.setAutreNumeroTitreFoncier(enquetePayLoadWeb.getAutreNumeroTitreFoncier()); - enquete.setNumeroTitreFoncier(enquetePayLoadWeb.getNumeroTitreFoncier()); - enquete.setDateDebutExcemption(enquetePayLoadWeb.getDateDebutExemption()); - enquete.setDateFinExcemption(enquetePayLoadWeb.getDateFinExemption()); - enquete.setNbreBatiment(enquetePayLoadWeb.getNbreBatiment()); - enquete.setNbrePiscine(enquetePayLoadWeb.getNbrePiscine()); - enquete.setNbreIndivisiaire(enquetePayLoadWeb.getNbreIndivisiaire()); - enquete.setNbreCoProprietaire(enquetePayLoadWeb.getNbreCoProprietaire()); - enquete.setNumEntreeParcelle(enquetePayLoadWeb.getNumEntreeParcelle()); - enquete.setNomRue(enquetePayLoadWeb.getNomRue()); - enquete.setNumRue(enquetePayLoadWeb.getNumRue()); - enquete.setSuperficie(enquetePayLoadWeb.getSuperficie()); - enquete.setMontantMensuelleLocation(enquetePayLoadWeb.getMontantMensuelleLocation()); - enquete.setMontantAnnuelleLocation(enquetePayLoadWeb.getMontantAnnuelleLocation()); - enquete.setValeurParcelleEstime(enquetePayLoadWeb.getValeurParcelleEstime()); - enquete.setValeurParcelleReel(enquetePayLoadWeb.getValeurParcelleReel()); - return enqueteRepository.save(enquete); + Enquete enquete = entityFromPayLoadService.getEnqueteFromPayLoadWeb(enquetePayLoadWeb); + enquete=enqueteRepository.save(enquete); + return enqueteRepository.findEnqueteToDto(enquete.getId()).orElse(null); } diff --git a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/CaracteristiqueParcelleServiceImpl.java b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/CaracteristiqueParcelleServiceImpl.java index a9dfca7..3da38f0 100644 --- a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/CaracteristiqueParcelleServiceImpl.java +++ b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/CaracteristiqueParcelleServiceImpl.java @@ -4,40 +4,46 @@ import io.gmss.fiscad.entities.rfu.metier.CaracteristiqueParcelle; import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.NotFoundException; import io.gmss.fiscad.interfaces.rfu.metier.CaracteristiqueParcelleService; +import io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueParcellePayloadWeb; import io.gmss.fiscad.persistence.repositories.rfu.metier.CaracteristiqueParcelleRepository; +import io.gmss.fiscad.service.EntityFromPayLoadService; +import lombok.AllArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import java.util.List; import java.util.Optional; - +@AllArgsConstructor @Service public class CaracteristiqueParcelleServiceImpl implements CaracteristiqueParcelleService { private final CaracteristiqueParcelleRepository caracteristiqueParcelleRepository; + private final EntityFromPayLoadService entityFromPayLoadService; + - public CaracteristiqueParcelleServiceImpl(CaracteristiqueParcelleRepository caracteristiqueParcelleRepository) { - this.caracteristiqueParcelleRepository = caracteristiqueParcelleRepository; - } @Override - public CaracteristiqueParcelle createCaracteristiqueParcelle(CaracteristiqueParcelle caracteristiqueParcelle) throws BadRequestException { - if (caracteristiqueParcelle.getId() != null) { + public CaracteristiqueParcellePayloadWeb createCaracteristiqueParcelle(CaracteristiqueParcellePayloadWeb caracteristiqueParcellePayloadWeb) throws BadRequestException { + if (caracteristiqueParcellePayloadWeb.getId() != null) { throw new BadRequestException("Impossible de créer une nouvelle caracteristique de parcelle ayant un id non null."); } - return caracteristiqueParcelleRepository.save(caracteristiqueParcelle); + CaracteristiqueParcelle caracteristiqueParcelle= entityFromPayLoadService.getCaracteristiqueParcelleFromPayLoadWeb(caracteristiqueParcellePayloadWeb); + caracteristiqueParcelle =caracteristiqueParcelleRepository.save(caracteristiqueParcelle); + return caracteristiqueParcelleRepository.findCaracteristiqueParcelleToDto(caracteristiqueParcelle.getId()).orElse(null); } @Override - public CaracteristiqueParcelle updateCaracteristiqueParcelle(Long id, CaracteristiqueParcelle caracteristiqueParcelle) throws NotFoundException { - if (caracteristiqueParcelle.getId() == null) { + public CaracteristiqueParcellePayloadWeb updateCaracteristiqueParcelle(Long id, CaracteristiqueParcellePayloadWeb caracteristiqueParcellePayloadWeb) throws NotFoundException { + if (caracteristiqueParcellePayloadWeb.getId() == null) { throw new BadRequestException("Impossible de mettre à jour une nouvelle caracteristique de parcelle ayant un id null."); } - if (!caracteristiqueParcelleRepository.existsById(caracteristiqueParcelle.getId())) { + if (!caracteristiqueParcelleRepository.existsById(caracteristiqueParcellePayloadWeb.getId())) { throw new NotFoundException("Impossible de trouver la nouvelle caracteristique de parcelle spécifié dans notre base de données."); } - return caracteristiqueParcelleRepository.save(caracteristiqueParcelle); + CaracteristiqueParcelle caracteristiqueParcelle= entityFromPayLoadService.getCaracteristiqueParcelleFromPayLoadWeb(caracteristiqueParcellePayloadWeb); + caracteristiqueParcelle =caracteristiqueParcelleRepository.save(caracteristiqueParcelle); + return caracteristiqueParcelleRepository.findCaracteristiqueParcelleToDto(caracteristiqueParcelle.getId()).orElse(null); } @Override @@ -62,12 +68,22 @@ public class CaracteristiqueParcelleServiceImpl implements CaracteristiqueParcel @Override - public Optional getCaracteristiqueParcelleById(Long id) { + public Optional getCaracteristiqueParcelleById(Long id) { if (caracteristiqueParcelleRepository.existsById(id)) { - return caracteristiqueParcelleRepository.findById(id); + return caracteristiqueParcelleRepository.findCaracteristiqueParcelleToDto(id); } else { throw new NotFoundException("Impossible de trouver la caractéristique spécifiée dans la base de données."); } } + + @Override + public Page getCaracteristiqueParcelleByEnqueteListPageable(Long id,Pageable pageable) { + return caracteristiqueParcelleRepository.findAllCaracteristiqueParcelleByEnqueteToDtoPageable(id,pageable); + } + + @Override + public List getCaracteristiqueParcelleByEnqueteList(Long enqueteId) { + return caracteristiqueParcelleRepository.findAllCaracteristiqueParcelleByEnqueteToDto(enqueteId); + } } 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 4cba95d..475a8c2 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 @@ -19,9 +19,9 @@ import java.util.Optional; public interface EnqueteService { - Enquete createEnquete(EnquetePayLoadWeb enquetePayLoad) throws BadRequestException; + EnquetePayLoadWeb createEnquete(EnquetePayLoadWeb enquetePayLoad) throws BadRequestException; - Enquete updateEnquete(Long id,EnquetePayLoadWeb enquete) throws NotFoundException; + EnquetePayLoadWeb updateEnquete(Long id,EnquetePayLoadWeb enquete) throws NotFoundException; void deleteEnquete(Long id) throws NotFoundException; diff --git a/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/CaracteristiqueParcelleService.java b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/CaracteristiqueParcelleService.java index f0c2975..70100ad 100755 --- a/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/CaracteristiqueParcelleService.java +++ b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/CaracteristiqueParcelleService.java @@ -3,6 +3,7 @@ package io.gmss.fiscad.interfaces.rfu.metier; import io.gmss.fiscad.entities.rfu.metier.CaracteristiqueParcelle; import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.NotFoundException; +import io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueParcellePayloadWeb; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -11,9 +12,9 @@ import java.util.Optional; public interface CaracteristiqueParcelleService { - CaracteristiqueParcelle createCaracteristiqueParcelle(CaracteristiqueParcelle caracteristiqueParcelle) throws BadRequestException; + CaracteristiqueParcellePayloadWeb createCaracteristiqueParcelle(CaracteristiqueParcellePayloadWeb caracteristiqueParcellePayloadWeb) throws BadRequestException; - CaracteristiqueParcelle updateCaracteristiqueParcelle(Long id, CaracteristiqueParcelle caracteristiqueParcelle) throws NotFoundException; + CaracteristiqueParcellePayloadWeb updateCaracteristiqueParcelle(Long id, CaracteristiqueParcellePayloadWeb caracteristiqueParcellePayloadWeb) throws NotFoundException; void deleteCaracteristiqueParcelle(Long id) throws NotFoundException; @@ -21,5 +22,8 @@ public interface CaracteristiqueParcelleService { List getCaracteristiqueParcelleList(); - Optional getCaracteristiqueParcelleById(Long id); + Optional getCaracteristiqueParcelleById(Long id); + Page getCaracteristiqueParcelleByEnqueteListPageable(Long enqueteId, Pageable pageable); + + List getCaracteristiqueParcelleByEnqueteList(Long enqueteId); } diff --git a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/CaracteristiqueBatimentPayloadWeb.java b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/CaracteristiqueBatimentPayloadWeb.java index 61073e3..cd96f1f 100644 --- a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/CaracteristiqueBatimentPayloadWeb.java +++ b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/CaracteristiqueBatimentPayloadWeb.java @@ -2,11 +2,29 @@ package io.gmss.fiscad.paylaods.request.crudweb; import lombok.Data; +import java.time.LocalDate; + @Data public class CaracteristiqueBatimentPayloadWeb { private Long id; private Long enqueteBatimentId; + private LocalDate enqueteBatimentDateEnquete; + private Integer enqueteBatimentAnnee; private Long caracteristiqueId; + private String caracteristiqueCode; + private String caracteristiqueLibelle; private String valeur; private String observation; + + public CaracteristiqueBatimentPayloadWeb(Long id, Long enqueteBatimentId, LocalDate enqueteBatimentDateEnquete, Integer enqueteBatimentAnnee, Long caracteristiqueId, String caracteristiqueCode, String caracteristiqueLibelle, String valeur, String observation) { + this.id = id; + this.enqueteBatimentId = enqueteBatimentId; + this.enqueteBatimentDateEnquete = enqueteBatimentDateEnquete; + this.enqueteBatimentAnnee = enqueteBatimentAnnee; + this.caracteristiqueId = caracteristiqueId; + this.caracteristiqueCode = caracteristiqueCode; + this.caracteristiqueLibelle = caracteristiqueLibelle; + this.valeur = valeur; + this.observation = observation; + } } diff --git a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/CaracteristiqueParcellePayloadWeb.java b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/CaracteristiqueParcellePayloadWeb.java index e7c1dee..1df3c9f 100644 --- a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/CaracteristiqueParcellePayloadWeb.java +++ b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/CaracteristiqueParcellePayloadWeb.java @@ -2,12 +2,29 @@ package io.gmss.fiscad.paylaods.request.crudweb; import lombok.Data; +import java.time.LocalDate; + @Data public class CaracteristiqueParcellePayloadWeb { private Long id; private Long enqueteId; - private Long enqueteDate; + private LocalDate enqueteDateEnquete; + private Integer enqueteAnnee; private Long caracteristiqueId; + private String caracteristiqueCode; + private String caracteristiqueLibelle; private String valeur; private String observation; + + public CaracteristiqueParcellePayloadWeb(Long id, Long enqueteId, LocalDate enqueteDateEnquete, Integer enqueteAnnee, Long caracteristiqueId, String caracteristiqueCode, String caracteristiqueLibelle, String valeur, String observation) { + this.id = id; + this.enqueteId = enqueteId; + this.enqueteDateEnquete = enqueteDateEnquete; + this.enqueteAnnee = enqueteAnnee; + this.caracteristiqueId = caracteristiqueId; + this.caracteristiqueCode = caracteristiqueCode; + this.caracteristiqueLibelle = caracteristiqueLibelle; + this.valeur = valeur; + this.observation = observation; + } } diff --git a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/CaracteristiqueUniteLogementPayloadWeb.java b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/CaracteristiqueUniteLogementPayloadWeb.java index 842a6fd..bdef075 100644 --- a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/CaracteristiqueUniteLogementPayloadWeb.java +++ b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/CaracteristiqueUniteLogementPayloadWeb.java @@ -2,11 +2,29 @@ package io.gmss.fiscad.paylaods.request.crudweb; import lombok.Data; +import java.time.LocalDate; + @Data public class CaracteristiqueUniteLogementPayloadWeb { private Long id; private Long enqueteUniteLogementId; + private LocalDate enqueteUniteLogementDateEnquete; + private Integer enqueteUniteLogementAnnee; private Long caracteristiqueId; + private String caracteristiqueCode; + private String caracteristiqueLibelle; private String valeur; private String observation; + + public CaracteristiqueUniteLogementPayloadWeb(Long id, Long enqueteUniteLogementId, LocalDate enqueteUniteLogementDateEnquete, Integer enqueteUniteLogementAnnee, Long caracteristiqueId, String caracteristiqueCode, String caracteristiqueLibelle, String valeur, String observation) { + this.id = id; + this.enqueteUniteLogementId = enqueteUniteLogementId; + this.enqueteUniteLogementDateEnquete = enqueteUniteLogementDateEnquete; + this.enqueteUniteLogementAnnee = enqueteUniteLogementAnnee; + this.caracteristiqueId = caracteristiqueId; + this.caracteristiqueCode = caracteristiqueCode; + this.caracteristiqueLibelle = caracteristiqueLibelle; + this.valeur = valeur; + this.observation = observation; + } } diff --git a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/EnqueteBatimentPayloadWeb.java b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/EnqueteBatimentPayloadWeb.java index 37fa6a7..2878cc5 100644 --- a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/EnqueteBatimentPayloadWeb.java +++ b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/EnqueteBatimentPayloadWeb.java @@ -1,6 +1,10 @@ package io.gmss.fiscad.paylaods.request.crudweb; +import com.fasterxml.jackson.annotation.JsonIgnore; import io.gmss.fiscad.entities.rfu.metier.CaracteristiqueBatiment; +import io.gmss.fiscad.enums.StatutEnquete; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; import lombok.Data; import java.time.LocalDate; @@ -45,8 +49,12 @@ public class EnqueteBatimentPayloadWeb { private Long enqueteurId; private String enqueteurNom; private String enqueteurPrenom; + @Enumerated(EnumType.STRING) + @JsonIgnore + private StatutEnquete statutEnquete; - public EnqueteBatimentPayloadWeb(Long id, String observation, String autreMenuisierie, String autreMur, boolean sbee, String numCompteurSbee, boolean soneb, String numCompteurSoneb, int nbreLotUnite, int nbreUniteLocation, Float superficieLouee, Float superficieAuSol, LocalDate dateEnquete, int nbreMenage, int nbreHabitant, Long montantMensuelLocation, Long montantLocatifAnnuelDeclare, Long nbreEtage, Long valeurBatimentEstime, Long valeurBatimentReel, int nbreMoisLocation, String autreCaracteristiquePhysique, LocalDate dateDebutExcemption, LocalDate dateFinExcemption, Long batimentId, String batimentNub, Long personneId, String personneNom, String personnePrenom, String personneRaisonSociale, Long enqueteurId, String enqueteurNom, String enqueteurPrenom) { + public EnqueteBatimentPayloadWeb(Long id, String observation, String autreMenuisierie, String autreMur, boolean sbee, String numCompteurSbee, boolean soneb, String numCompteurSoneb, int nbreLotUnite, int nbreUniteLocation, Float superficieLouee, Float superficieAuSol, LocalDate dateEnquete, int nbreMenage, int nbreHabitant, Long montantMensuelLocation, Long montantLocatifAnnuelDeclare, Long nbreEtage, Long valeurBatimentEstime, Long valeurBatimentReel, int nbreMoisLocation, String autreCaracteristiquePhysique, LocalDate dateDebutExcemption, LocalDate dateFinExcemption, Long batimentId, String batimentNub, Long personneId, String personneNom, String personnePrenom, String personneRaisonSociale, Long enqueteurId, String enqueteurNom, String enqueteurPrenom, + StatutEnquete statutEnquete) { this.id = id; this.observation = observation; this.autreMenuisierie = autreMenuisierie; @@ -80,5 +88,6 @@ public class EnqueteBatimentPayloadWeb { this.enqueteurId = enqueteurId; this.enqueteurNom = enqueteurNom; this.enqueteurPrenom = enqueteurPrenom; + this.statutEnquete = statutEnquete; } } diff --git a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/EnqueteUniteLogementPayloadWeb.java b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/EnqueteUniteLogementPayloadWeb.java index 36d2e38..303f26e 100644 --- a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/EnqueteUniteLogementPayloadWeb.java +++ b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/EnqueteUniteLogementPayloadWeb.java @@ -1,5 +1,8 @@ package io.gmss.fiscad.paylaods.request.crudweb; +import io.gmss.fiscad.enums.StatutEnquete; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; import lombok.Data; import java.time.LocalDate; @@ -39,8 +42,11 @@ public class EnqueteUniteLogementPayloadWeb { private String enqueteurPrenom; private Long exerciceId ; private Integer exerciceAnnee; + @Enumerated(EnumType.STRING) + private StatutEnquete statutEnquete; - public EnqueteUniteLogementPayloadWeb(Long id, String observation, Integer nbrePiece, Integer nbreHabitant, Integer nbreMenage, Boolean enLocation, Integer nbreMoisLocation, Float montantMensuelLoyer, Float montantLocatifAnnuelDeclare, Long valeurUniteLogementEstime, Long valeurUniteLogementReel, Float superficieLouee, Float superficieAuSol, LocalDate dateEnquete, Boolean sbee, Boolean soneb, String numCompteurSbee, String numCompteurSoneb, LocalDate dateDebutExemption, LocalDate dateFinExemption, Long uniteLogementId, String uniteLogementNumeroEtage, String uniteLogementNul, Long personneId, String personneNom, String personnePrenom, String personneRaisonSociale, Long enqueteurId, String enqueteurNom, String enqueteurPrenom, Long exerciceId, Integer exerciceAnnee) { + public EnqueteUniteLogementPayloadWeb(Long id, String observation, Integer nbrePiece, Integer nbreHabitant, Integer nbreMenage, Boolean enLocation, Integer nbreMoisLocation, Float montantMensuelLoyer, Float montantLocatifAnnuelDeclare, Long valeurUniteLogementEstime, Long valeurUniteLogementReel, Float superficieLouee, Float superficieAuSol, LocalDate dateEnquete, Boolean sbee, Boolean soneb, String numCompteurSbee, String numCompteurSoneb, LocalDate dateDebutExemption, LocalDate dateFinExemption, Long uniteLogementId, String uniteLogementNumeroEtage, String uniteLogementNul, Long personneId, String personneNom, String personnePrenom, String personneRaisonSociale, Long enqueteurId, String enqueteurNom, String enqueteurPrenom, Long exerciceId, Integer exerciceAnnee, + StatutEnquete statutEnquete) { this.id = id; this.observation = observation; this.nbrePiece = nbrePiece; @@ -73,5 +79,6 @@ public class EnqueteUniteLogementPayloadWeb { this.enqueteurPrenom = enqueteurPrenom; this.exerciceId = exerciceId; this.exerciceAnnee = exerciceAnnee; + this.statutEnquete = statutEnquete; } } diff --git a/src/main/java/io/gmss/fiscad/persistence/repositories/infocad/metier/EnqueteRepository.java b/src/main/java/io/gmss/fiscad/persistence/repositories/infocad/metier/EnqueteRepository.java index e0c5131..ffd0630 100755 --- a/src/main/java/io/gmss/fiscad/persistence/repositories/infocad/metier/EnqueteRepository.java +++ b/src/main/java/io/gmss/fiscad/persistence/repositories/infocad/metier/EnqueteRepository.java @@ -287,6 +287,61 @@ public interface EnqueteRepository extends JpaRepository { """) List findAllEnquetesToDto(); + @Query(""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.EnquetePayLoadWeb( + e.id, + e.dateEnquete, + e.dateFinalisation, + e.litige, + e.statutEnquete, + e.descriptionMotifRejet, + e.observationParticuliere, + pa.numeroTitreFoncier, + pa.dateTitreFoncier, + e.numEntreeParcelle, + e.numRue, + e.nomRue, + e.precision, + e.nbreCoProprietaire, + e.nbreIndivisiaire, + e.autreAdresse, + e.superficie, + e.nbreBatiment, + e.nbrePiscine, + e.dateDebutExemption, + e.dateFinExemption, + pa.autreNumeroTitreFoncier, + e.montantMensuelleLocation, + e.montantAnnuelleLocation, + e.valeurParcelleEstime, + e.valeurParcelleReel, + zr.id, + zr.nom, + p.id, + p.nom, + p.prenom, + p.raisonSociale, + u.id, + u.nom, + u.prenom, + pa.id, + pa.nup, + pa.q, + pa.i, + pa.p, + ex.id, + ex.annee + ) + FROM Enquete e + LEFT JOIN e.zoneRfu zr + LEFT JOIN e.personne p + LEFT JOIN e.user u + LEFT JOIN e.parcelle pa + LEFT JOIN e.exercice ex + WHERE e.id = :enqueteId + """) + Optional findEnqueteToDto(@Param("enqueteId") Long enqueteId); + @Query( value = """ SELECT new io.gmss.fiscad.paylaods.request.crudweb.EnquetePayLoadWeb( diff --git a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueBatimentRepository.java b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueBatimentRepository.java index 7953806..5be6261 100755 --- a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueBatimentRepository.java +++ b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueBatimentRepository.java @@ -2,8 +2,12 @@ package io.gmss.fiscad.persistence.repositories.rfu.metier; import io.gmss.fiscad.entities.rfu.metier.CaracteristiqueBatiment; import io.gmss.fiscad.entities.rfu.metier.EnqueteBatiment; +import io.gmss.fiscad.paylaods.request.crudweb.BatimentPaylaodWeb; +import io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueBatimentPayloadWeb; import io.gmss.fiscad.paylaods.response.restoration.CaracateristiqueBatimentPayLoadsRestor; import jakarta.transaction.Transactional; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -40,4 +44,75 @@ public interface CaracteristiqueBatimentRepository extends JpaRepository getCaracteristiqueBatimentByTerminalId(Long terminalId); + + @Query(""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueBatimentPayloadWeb( + cb.id, + eb.id, + eb.dateEnquete, + ex.annee, + ca.id, + ca.code, + ca.libelle, + cb.valeur, + cb.observation + ) + FROM CaracteristiqueBatiment cb + JOIN cb.caracteristique ca + JOIN cb.enqueteBatiment eb + JOIN eb.exercice ex + WHERE cb.id = :caracteristiqueBatimentId + """) + Optional findCaracteristiqueBatimentToDto(@Param("caracteristiqueBatimentId") Long caracteristiqueBatimentId); + + @Query(""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueBatimentPayloadWeb( + cb.id, + eb.id, + eb.dateEnquete, + ex.annee, + ca.id, + ca.code, + ca.libelle, + cb.valeur, + cb.observation + ) + FROM CaracteristiqueBatiment cb + JOIN cb.caracteristique ca + JOIN cb.enqueteBatiment eb + JOIN eb.exercice ex + WHERE eb.id = :enqueteBatimentId + """) + List findAllCaracteristiqueBatimentByEnqueteBatimentToDto(@Param("enqueteBatimentId") Long enqueteBatimentId); + + @Query(value = """ + SELECT new io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueBatimentPayloadWeb( + cb.id, + eb.id, + eb.dateEnquete, + ex.annee, + ca.id, + ca.code, + ca.libelle, + cb.valeur, + cb.observation + ) + FROM CaracteristiqueBatiment cb + JOIN cb.caracteristique ca + JOIN cb.enqueteBatiment eb + JOIN eb.exercice ex + WHERE eb.id = :enqueteBatimentId + """, + countQuery = """ + SELECT COUNT(distinct cb) + FROM CaracteristiqueBatiment cb + JOIN cb.caracteristique ca + JOIN cb.enqueteBatiment eb + JOIN eb.exercice ex + WHERE eb.id = :enqueteBatimentId + """ + ) + Page findAllCaracteristiqueBatimentByEnqueteBatimentToDtoPageable(@Param("enqueteBatimentId") Long enqueteBatimentId, Pageable pageable); + + } diff --git a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueParcelleRepository.java b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueParcelleRepository.java index 8f0eaba..9ff1fde 100755 --- a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueParcelleRepository.java +++ b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueParcelleRepository.java @@ -2,11 +2,16 @@ package io.gmss.fiscad.persistence.repositories.rfu.metier; import io.gmss.fiscad.entities.infocad.metier.Enquete; import io.gmss.fiscad.entities.rfu.metier.CaracteristiqueParcelle; +import io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueBatimentPayloadWeb; +import io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueParcellePayloadWeb; import io.gmss.fiscad.paylaods.response.restoration.CaracateristiqueParcellePayLoadsRestor; import jakarta.transaction.Transactional; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import java.util.List; import java.util.Optional; @@ -33,4 +38,74 @@ public interface CaracteristiqueParcelleRepository extends JpaRepository getCaracteristiqueParcelleByTerminalId(Long terminalId); + + @Query(""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueParcellePayloadWeb( + cp.id, + e.id, + e.dateEnquete, + ex.annee, + ca.id, + ca.code, + ca.libelle, + cp.valeur, + cp.observation + ) + FROM CaracteristiqueParcelle cp + JOIN cp.caracteristique ca + JOIN cp.enquete e + JOIN e.exercice ex + WHERE cp.id = :caracteristiqueParcelleId + """) + Optional findCaracteristiqueParcelleToDto(@Param("caracteristiqueParcelleId") Long caracteristiqueParcelleId); + + @Query(""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueParcellePayloadWeb( + cp.id, + e.id, + e.dateEnquete, + ex.annee, + ca.id, + ca.code, + ca.libelle, + cp.valeur, + cp.observation + ) + FROM CaracteristiqueParcelle cp + JOIN cp.caracteristique ca + JOIN cp.enquete e + JOIN e.exercice ex + WHERE e.id = :enqueteId + """) + List findAllCaracteristiqueParcelleByEnqueteToDto(@Param("enqueteId") Long enqueteId); + + @Query(value = """ + SELECT new io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueParcellePayloadWeb( + cp.id, + e.id, + e.dateEnquete, + ex.annee, + ca.id, + ca.code, + ca.libelle, + cp.valeur, + cp.observation + ) + FROM CaracteristiqueParcelle cp + JOIN cp.caracteristique ca + JOIN cp.enquete e + JOIN e.exercice ex + WHERE e.id = :enqueteId + """, + countQuery = """ + SELECT COUNT(distinct cp) + FROM CaracteristiqueParcelle cp + JOIN cp.caracteristique ca + JOIN cp.enquete e + JOIN e.exercice ex + WHERE e.id = :enqueteId + """ + ) + Page findAllCaracteristiqueParcelleByEnqueteToDtoPageable(@Param("enqueteId") Long enqueteId, Pageable pageable); + } diff --git a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueUniteLogementRepository.java b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueUniteLogementRepository.java index cbb8bcc..c6f8f77 100755 --- a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueUniteLogementRepository.java +++ b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueUniteLogementRepository.java @@ -2,8 +2,12 @@ package io.gmss.fiscad.persistence.repositories.rfu.metier; import io.gmss.fiscad.entities.rfu.metier.CaracteristiqueUniteLogement; import io.gmss.fiscad.entities.rfu.metier.EnqueteUniteLogement; +import io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueBatimentPayloadWeb; +import io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueUniteLogementPayloadWeb; import io.gmss.fiscad.paylaods.response.restoration.CaracteristiqueUniteLogementPayLoadRestor; import jakarta.transaction.Transactional; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -37,4 +41,75 @@ public interface CaracteristiqueUniteLogementRepository extends JpaRepository getCaracteristiqueUniteLogementByTerminalId(Long terminalId); + + + @Query(""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueUniteLogementPayloadWeb( + cul.id, + eul.id, + eul.dateEnquete, + ex.annee, + ca.id, + ca.code, + ca.libelle, + cul.valeur, + cul.observation + ) + FROM CaracteristiqueUniteLogement cul + JOIN cul.caracteristique ca + JOIN cul.enqueteUniteLogement eul + JOIN eul.exercice ex + WHERE cul.id = :caracteristiqueUniteLogementId + """) + Optional findCaracteristiqueUniteLogementToDto(@Param("caracteristiqueBatimentId") Long caracteristiqueBatimentId); + + @Query(""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueUniteLogementPayloadWeb( + cul.id, + eul.id, + eul.dateEnquete, + ex.annee, + ca.id, + ca.code, + ca.libelle, + cul.valeur, + cul.observation + ) + FROM CaracteristiqueUniteLogement cul + JOIN cul.caracteristique ca + JOIN cul.enqueteUniteLogement eul + JOIN eul.exercice ex + WHERE cul.id = :enqueteUniteLogementId + """) + List findAllCaracteristiqueUniteLogementByEnqueteUniteLogementToDto(@Param("enqueteUniteLogementId") Long enqueteUniteLogementId); + + @Query(value = """ + SELECT new io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueUniteLogementPayloadWeb( + cul.id, + eul.id, + eul.dateEnquete, + ex.annee, + ca.id, + ca.code, + ca.libelle, + cul.valeur, + cul.observation + ) + FROM CaracteristiqueUniteLogement cul + JOIN cul.caracteristique ca + JOIN cul.enqueteUniteLogement eul + JOIN eul.exercice ex + WHERE cul.id = :enqueteUniteLogementId + """, + countQuery = """ + SELECT COUNT(distinct cul) + FROM CaracteristiqueUniteLogement cul + JOIN cul.caracteristique ca + JOIN cul.enqueteUniteLogement eul + JOIN eul.exercice ex + WHERE cul.id = :enqueteUniteLogementId + """ + ) + Page findAllCaracteristiqueUniteLogementByEnqueteBatimentToDtoPageable(@Param("enqueteUniteLogementId") Long enqueteUniteLogementId, Pageable pageable); + } diff --git a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/EnqueteBatimentRepository.java b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/EnqueteBatimentRepository.java index 89bd510..241e896 100755 --- a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/EnqueteBatimentRepository.java +++ b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/EnqueteBatimentRepository.java @@ -93,7 +93,8 @@ public interface EnqueteBatimentRepository extends JpaRepository