diff --git a/src/main/java/io/gmss/infocad/controllers/rfu/metier/CaracteristiqueBatimentController.java b/src/main/java/io/gmss/infocad/controllers/rfu/metier/CaracteristiqueBatimentController.java index 0152a93..d69cb93 100644 --- a/src/main/java/io/gmss/infocad/controllers/rfu/metier/CaracteristiqueBatimentController.java +++ b/src/main/java/io/gmss/infocad/controllers/rfu/metier/CaracteristiqueBatimentController.java @@ -2,8 +2,6 @@ package io.gmss.infocad.controllers.rfu.metier; import io.gmss.infocad.entities.rfu.metier.CaracteristiqueBatiment; -import io.gmss.infocad.entities.rfu.metier.CaracteristiqueBatiment; -import io.gmss.infocad.interfaces.rfu.metier.CaracteristiqueBatimentService; import io.gmss.infocad.interfaces.rfu.metier.CaracteristiqueBatimentService; import io.gmss.infocad.paylaods.ApiResponse; import org.springframework.data.domain.PageRequest; diff --git a/src/main/java/io/gmss/infocad/controllers/rfu/metier/EnqueteBatimentController.java b/src/main/java/io/gmss/infocad/controllers/rfu/metier/EnqueteBatimentController.java index 040c72c..a79fa8d 100644 --- a/src/main/java/io/gmss/infocad/controllers/rfu/metier/EnqueteBatimentController.java +++ b/src/main/java/io/gmss/infocad/controllers/rfu/metier/EnqueteBatimentController.java @@ -3,7 +3,6 @@ package io.gmss.infocad.controllers.rfu.metier; import io.gmss.infocad.entities.rfu.metier.EnqueteBatiment; import io.gmss.infocad.interfaces.rfu.metier.EnqueteBatimentService; -import io.gmss.infocad.interfaces.rfu.metier.EnqueteBatimentService; import io.gmss.infocad.paylaods.ApiResponse; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/io/gmss/infocad/controllers/synchronisation/SynchronisationController.java b/src/main/java/io/gmss/infocad/controllers/synchronisation/SynchronisationController.java index 0960c6e..1f3a722 100644 --- a/src/main/java/io/gmss/infocad/controllers/synchronisation/SynchronisationController.java +++ b/src/main/java/io/gmss/infocad/controllers/synchronisation/SynchronisationController.java @@ -120,13 +120,74 @@ public class SynchronisationController { } @PostMapping(path = "/synchronise/enquete/confirme-from-mobile") - public ResponseEntity syncAllEnqueteData(@RequestBody List idEnquetes) { + public ResponseEntity syncAllEnqueteData(@RequestBody List batimentPaylaods) { return new ResponseEntity<>( - new ApiResponse<>(true, synchronisationService.syncEnqueteFromMobile(idEnquetes), "Synchronisation confirmée avec succès."), + new ApiResponse<>(true, synchronisationService.syncBatiment(batimentPaylaods), "Synchronisation confirmée avec succès."), HttpStatus.OK ); } + /** + * Liste des API pour la synchronisation des données liées à FISCAD + * Fait le mercredi 15 janvier 2025 à 09h21 + * MERCI DE NE PAS TOUCHER A CE BLOC DE CODE + */ + + @PostMapping(path = "/batiment") + public ResponseEntity syncBatiment(@RequestBody List batimentPaylaods) { + return new ResponseEntity<>( + new ApiResponse<>(true, synchronisationService.syncBatiment(batimentPaylaods), "Liste des batiments synchronisées avec succès."), + HttpStatus.OK + ); + } + + @PostMapping(path = "/unite-logement") + public ResponseEntity syncUniteLogement(@RequestBody List uniteLogementPaylaods) { + return new ResponseEntity<>( + new ApiResponse<>(true, synchronisationService.syncUniteLogement(uniteLogementPaylaods), "Liste des unités de logement synchronisées avec succès."), + HttpStatus.OK + ); + } + + @PostMapping(path = "/caracteristique-batiment") + public ResponseEntity syncCaracteristiqueBatiment(@RequestBody List caracteristiqueBatimentPaylods) { + return new ResponseEntity<>( + new ApiResponse<>(true, synchronisationService.syncCaracteristiqueBatiment(caracteristiqueBatimentPaylods), "Liste des caractéristiques des bâtiments synchronisée avec succès."), + HttpStatus.OK + ); + } + + @PostMapping(path = "/caracteristique-enquete") + public ResponseEntity syncCaracteristiqueParcelle(@RequestBody List caracteristiqueParcellePaylods) { + return new ResponseEntity<>( + new ApiResponse<>(true, synchronisationService.syncCaracteristiqueParcelle(caracteristiqueParcellePaylods), "Liste des caractéristiques des parcelles synchronisée avec succès."), + HttpStatus.OK + ); + } + + @PostMapping(path = "/caracteristique-unite-logement") + public ResponseEntity syncCaracteristiqueUniteLogement(@RequestBody List caracteristiqueUniteLogementPaylods) { + return new ResponseEntity<>( + new ApiResponse<>(true, synchronisationService.syncCaracteristiqueUniteLogement(caracteristiqueUniteLogementPaylods), "Liste des caractéristiques des unités de logement synchronisée avec succès."), + HttpStatus.OK + ); + } + + @PostMapping("/enquete-batiment") + public ResponseEntity syncEnqueteBatiment(@RequestBody List enqueteBatimentPayloads) { + return new ResponseEntity<>( + new ApiResponse<>(true, synchronisationService.syncEnqueteBatiment(enqueteBatimentPayloads), "Liste des enquêtes des batiments synchronisée avec succès."), + HttpStatus.OK + ); + } + + @PostMapping("/enquete-unite-logement") + public ResponseEntity syncEnqueteUniteLogement(@RequestBody List enqueteUniteLogementPayloads) { + return new ResponseEntity<>( + new ApiResponse<>(true, synchronisationService.syncEnqueteUniteLogement(enqueteUniteLogementPayloads), "Liste des enquêtes des unités de logement synchronisée avec succès."), + HttpStatus.OK + ); + } } diff --git a/src/main/java/io/gmss/infocad/entities/infocad/metier/Enquete.java b/src/main/java/io/gmss/infocad/entities/infocad/metier/Enquete.java index 7a7fb8f..ecbdbdb 100644 --- a/src/main/java/io/gmss/infocad/entities/infocad/metier/Enquete.java +++ b/src/main/java/io/gmss/infocad/entities/infocad/metier/Enquete.java @@ -12,6 +12,7 @@ import io.gmss.infocad.entities.rfu.metier.EnqueteBatiment; import io.gmss.infocad.entities.rfu.metier.EnqueteUniteLogement; import io.gmss.infocad.entities.user.User; import io.gmss.infocad.enums.StatusEnquete; +import io.gmss.infocad.enums.StatutEnregistrement; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -145,6 +146,9 @@ public class Enquete extends BaseEntity implements Serializable { @JsonIgnore @OneToMany(mappedBy = "enquete") private List caracteristiqueParcelles; + @Enumerated(EnumType.STRING) + @JsonIgnore + private StatutEnregistrement statutEnregistrement; public Long getTerminalId(){ @@ -189,7 +193,7 @@ public class Enquete extends BaseEntity implements Serializable { } public String getArrondissement(){ - if(this.bloc!=null){ + if(this.bloc!=null) { Arrondissement arrondissement= this.bloc.getArrondissement(); if(arrondissement!=null){ return arrondissement.getNom(); diff --git a/src/main/java/io/gmss/infocad/entities/infocad/metier/Upload.java b/src/main/java/io/gmss/infocad/entities/infocad/metier/Upload.java index 2686582..2bf1aec 100644 --- a/src/main/java/io/gmss/infocad/entities/infocad/metier/Upload.java +++ b/src/main/java/io/gmss/infocad/entities/infocad/metier/Upload.java @@ -2,8 +2,8 @@ package io.gmss.infocad.entities.infocad.metier; import com.fasterxml.jackson.annotation.JsonIgnore; import io.gmss.infocad.entities.BaseEntity; -import io.gmss.infocad.entities.rfu.metier.Batiment; -import io.gmss.infocad.entities.rfu.metier.UniteLogement; +import io.gmss.infocad.entities.rfu.metier.EnqueteBatiment; +import io.gmss.infocad.entities.rfu.metier.EnqueteUniteLogement; import lombok.Getter; import lombok.Setter; import org.springframework.web.servlet.support.ServletUriComponentsBuilder; @@ -47,9 +47,9 @@ public class Upload extends BaseEntity implements Serializable { private Long blocId; @ManyToOne - private Batiment batiment; + private EnqueteBatiment enqueteBatiment; @ManyToOne - private UniteLogement uniteLogement; + private EnqueteUniteLogement enqueteUniteLogement; public Upload() { } diff --git a/src/main/java/io/gmss/infocad/entities/rfu/metier/Batiment.java b/src/main/java/io/gmss/infocad/entities/rfu/metier/Batiment.java index 0a353fd..0de087d 100644 --- a/src/main/java/io/gmss/infocad/entities/rfu/metier/Batiment.java +++ b/src/main/java/io/gmss/infocad/entities/rfu/metier/Batiment.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.gmss.infocad.deserializer.LocalDateDeserializer; import io.gmss.infocad.entities.BaseEntity; import io.gmss.infocad.entities.infocad.metier.Parcelle; -import io.gmss.infocad.entities.infocad.metier.Upload; +import io.gmss.infocad.entities.infocad.metier.Tpe; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -43,7 +43,8 @@ public class Batiment extends BaseEntity implements Serializable { @JsonIgnore @OneToMany(mappedBy = "batiment") private List uniteLogements; + @JsonIgnore - @OneToMany(mappedBy = "batiment") - private List uploads; + @ManyToOne + private Tpe terminal; } diff --git a/src/main/java/io/gmss/infocad/entities/rfu/metier/CaracteristiqueBatiment.java b/src/main/java/io/gmss/infocad/entities/rfu/metier/CaracteristiqueBatiment.java index e152eb8..4395705 100644 --- a/src/main/java/io/gmss/infocad/entities/rfu/metier/CaracteristiqueBatiment.java +++ b/src/main/java/io/gmss/infocad/entities/rfu/metier/CaracteristiqueBatiment.java @@ -1,6 +1,8 @@ package io.gmss.infocad.entities.rfu.metier; +import com.fasterxml.jackson.annotation.JsonIgnore; import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.infocad.metier.Tpe; import io.gmss.infocad.entities.rfu.parametre.Caracteristique; import lombok.AllArgsConstructor; import lombok.Data; @@ -32,5 +34,8 @@ public class CaracteristiqueBatiment extends BaseEntity implements Serializable @ManyToOne private Caracteristique caracteristique; private String valeur; + @JsonIgnore + @ManyToOne + private Tpe terminal; } diff --git a/src/main/java/io/gmss/infocad/entities/rfu/metier/CaracteristiqueParcelle.java b/src/main/java/io/gmss/infocad/entities/rfu/metier/CaracteristiqueParcelle.java index 53561ac..8f75f69 100644 --- a/src/main/java/io/gmss/infocad/entities/rfu/metier/CaracteristiqueParcelle.java +++ b/src/main/java/io/gmss/infocad/entities/rfu/metier/CaracteristiqueParcelle.java @@ -1,7 +1,9 @@ package io.gmss.infocad.entities.rfu.metier; +import com.fasterxml.jackson.annotation.JsonIgnore; import io.gmss.infocad.entities.BaseEntity; import io.gmss.infocad.entities.infocad.metier.Enquete; +import io.gmss.infocad.entities.infocad.metier.Tpe; import io.gmss.infocad.entities.rfu.parametre.Caracteristique; import lombok.AllArgsConstructor; import lombok.Data; @@ -33,5 +35,8 @@ public class CaracteristiqueParcelle extends BaseEntity implements Serializable @ManyToOne private Caracteristique caracteristique; private String valeur; + @JsonIgnore + @ManyToOne + private Tpe terminal; } diff --git a/src/main/java/io/gmss/infocad/entities/rfu/metier/CaracteristiqueUniteLogement.java b/src/main/java/io/gmss/infocad/entities/rfu/metier/CaracteristiqueUniteLogement.java index 4a6861d..6f41bf4 100644 --- a/src/main/java/io/gmss/infocad/entities/rfu/metier/CaracteristiqueUniteLogement.java +++ b/src/main/java/io/gmss/infocad/entities/rfu/metier/CaracteristiqueUniteLogement.java @@ -1,6 +1,8 @@ package io.gmss.infocad.entities.rfu.metier; +import com.fasterxml.jackson.annotation.JsonIgnore; import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.infocad.metier.Tpe; import io.gmss.infocad.entities.rfu.parametre.Caracteristique; import lombok.AllArgsConstructor; import lombok.Data; @@ -32,5 +34,8 @@ public class CaracteristiqueUniteLogement extends BaseEntity implements Serializ @ManyToOne private Caracteristique caracteristique; private String valeur; + @JsonIgnore + @ManyToOne + private Tpe terminal; } diff --git a/src/main/java/io/gmss/infocad/entities/rfu/metier/EnqueteBatiment.java b/src/main/java/io/gmss/infocad/entities/rfu/metier/EnqueteBatiment.java index 19879e8..5b08f8e 100644 --- a/src/main/java/io/gmss/infocad/entities/rfu/metier/EnqueteBatiment.java +++ b/src/main/java/io/gmss/infocad/entities/rfu/metier/EnqueteBatiment.java @@ -6,7 +6,12 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.gmss.infocad.deserializer.LocalDateDeserializer; import io.gmss.infocad.entities.BaseEntity; import io.gmss.infocad.entities.infocad.metier.Enquete; +import io.gmss.infocad.entities.infocad.metier.Tpe; +import io.gmss.infocad.entities.infocad.metier.Upload; import io.gmss.infocad.entities.infocad.parametre.Personne; +import io.gmss.infocad.entities.user.User; +import io.gmss.infocad.enums.StatusEnquete; +import io.gmss.infocad.enums.StatutEnregistrement; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -64,4 +69,18 @@ public class EnqueteBatiment extends BaseEntity implements Serializable { @JsonIgnore @OneToMany(mappedBy = "enqueteBatiment") List caracteristiqueBatiments; + @JsonIgnore + @ManyToOne + private Tpe terminal; + @JsonIgnore + @ManyToOne + private User user; + @Enumerated(EnumType.STRING) + private StatusEnquete statusEnquete; + @JsonIgnore + @OneToMany(mappedBy = "enqueteBatiment") + private List uploads; + @Enumerated(EnumType.STRING) + @JsonIgnore + private StatutEnregistrement statutEnregistrement; } diff --git a/src/main/java/io/gmss/infocad/entities/rfu/metier/EnqueteUniteLogement.java b/src/main/java/io/gmss/infocad/entities/rfu/metier/EnqueteUniteLogement.java index aa4f23f..c005d6a 100644 --- a/src/main/java/io/gmss/infocad/entities/rfu/metier/EnqueteUniteLogement.java +++ b/src/main/java/io/gmss/infocad/entities/rfu/metier/EnqueteUniteLogement.java @@ -6,7 +6,12 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.gmss.infocad.deserializer.LocalDateDeserializer; import io.gmss.infocad.entities.BaseEntity; import io.gmss.infocad.entities.infocad.metier.Enquete; +import io.gmss.infocad.entities.infocad.metier.Tpe; +import io.gmss.infocad.entities.infocad.metier.Upload; import io.gmss.infocad.entities.infocad.parametre.Personne; +import io.gmss.infocad.entities.user.User; +import io.gmss.infocad.enums.StatusEnquete; +import io.gmss.infocad.enums.StatutEnregistrement; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -63,4 +68,18 @@ public class EnqueteUniteLogement extends BaseEntity implements Serializable { @JsonIgnore @OneToMany(mappedBy = "enqueteUniteLogement") private List caracteristiqueUniteLogements; + @JsonIgnore + @ManyToOne + private Tpe terminal; + @JsonIgnore + @ManyToOne + private User user; + @JsonIgnore + @OneToMany(mappedBy = "enqueteUniteLogement") + private List uploads; + @JsonIgnore + @Enumerated(EnumType.STRING) + private StatutEnregistrement statutEnregistrement; + @Enumerated(EnumType.STRING) + private StatusEnquete statusEnquete; } diff --git a/src/main/java/io/gmss/infocad/entities/rfu/metier/UniteLogement.java b/src/main/java/io/gmss/infocad/entities/rfu/metier/UniteLogement.java index acb018e..c4a3bd8 100644 --- a/src/main/java/io/gmss/infocad/entities/rfu/metier/UniteLogement.java +++ b/src/main/java/io/gmss/infocad/entities/rfu/metier/UniteLogement.java @@ -2,7 +2,7 @@ package io.gmss.infocad.entities.rfu.metier; import com.fasterxml.jackson.annotation.JsonIgnore; import io.gmss.infocad.entities.BaseEntity; -import io.gmss.infocad.entities.infocad.metier.Upload; +import io.gmss.infocad.entities.infocad.metier.Tpe; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -32,8 +32,8 @@ public class UniteLogement extends BaseEntity implements Serializable { private List enqueteUniteLogements; @ManyToOne private Batiment batiment; - @JsonIgnore - @OneToMany(mappedBy = "uniteLogement") - private List uploads; private Long idDerniereEnquete; + @JsonIgnore + @ManyToOne + private Tpe terminal; } diff --git a/src/main/java/io/gmss/infocad/entities/rfu/parametre/Caracteristique.java b/src/main/java/io/gmss/infocad/entities/rfu/parametre/Caracteristique.java index a9f575b..f8b7ea2 100644 --- a/src/main/java/io/gmss/infocad/entities/rfu/parametre/Caracteristique.java +++ b/src/main/java/io/gmss/infocad/entities/rfu/parametre/Caracteristique.java @@ -2,6 +2,7 @@ package io.gmss.infocad.entities.rfu.parametre; import com.fasterxml.jackson.annotation.JsonIgnore; import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.infocad.metier.Tpe; import io.gmss.infocad.entities.rfu.metier.CaracteristiqueBatiment; import io.gmss.infocad.entities.rfu.metier.CaracteristiqueUniteLogement; import io.gmss.infocad.enums.TypeImmeuble; @@ -38,6 +39,9 @@ public class Caracteristique extends BaseEntity implements Serializable { @JsonIgnore @OneToMany(mappedBy = "caracteristique") private List caracteristiqueUniteLogements; + @JsonIgnore + @ManyToOne + private Tpe terminal; } diff --git a/src/main/java/io/gmss/infocad/enums/StatutEnregistrement.java b/src/main/java/io/gmss/infocad/enums/StatutEnregistrement.java new file mode 100644 index 0000000..0d4715a --- /dev/null +++ b/src/main/java/io/gmss/infocad/enums/StatutEnregistrement.java @@ -0,0 +1,6 @@ +package io.gmss.infocad.enums; + +public enum StatutEnregistrement { + NOUVELLE_INSERTION, + MISE_A_JOUR +} diff --git a/src/main/java/io/gmss/infocad/implementations/rfu/metier/CaracteristiqueParcelleServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/rfu/metier/CaracteristiqueParcelleServiceImpl.java index 23b383e..f75c37d 100644 --- a/src/main/java/io/gmss/infocad/implementations/rfu/metier/CaracteristiqueParcelleServiceImpl.java +++ b/src/main/java/io/gmss/infocad/implementations/rfu/metier/CaracteristiqueParcelleServiceImpl.java @@ -4,7 +4,6 @@ import io.gmss.infocad.entities.rfu.metier.CaracteristiqueParcelle; import io.gmss.infocad.exceptions.BadRequestException; import io.gmss.infocad.exceptions.NotFoundException; import io.gmss.infocad.interfaces.rfu.metier.CaracteristiqueParcelleService; -import io.gmss.infocad.interfaces.rfu.metier.CaracteristiqueParcelleService; import io.gmss.infocad.repositories.rfu.metier.CaracteristiqueParcelleRepository; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/io/gmss/infocad/implementations/rfu/metier/CaracteristiqueUniteLogementServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/rfu/metier/CaracteristiqueUniteLogementServiceImpl.java index f8bb308..c208cb9 100644 --- a/src/main/java/io/gmss/infocad/implementations/rfu/metier/CaracteristiqueUniteLogementServiceImpl.java +++ b/src/main/java/io/gmss/infocad/implementations/rfu/metier/CaracteristiqueUniteLogementServiceImpl.java @@ -4,7 +4,6 @@ import io.gmss.infocad.entities.rfu.metier.CaracteristiqueUniteLogement; import io.gmss.infocad.exceptions.BadRequestException; import io.gmss.infocad.exceptions.NotFoundException; import io.gmss.infocad.interfaces.rfu.metier.CaracteristiqueUniteLogementService; -import io.gmss.infocad.interfaces.rfu.metier.CaracteristiqueUniteLogementService; import io.gmss.infocad.repositories.rfu.metier.CaracteristiqueUniteLogementRepository; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/io/gmss/infocad/implementations/rfu/metier/EnqueteBatimentServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/rfu/metier/EnqueteBatimentServiceImpl.java index a10c208..5b6fd58 100644 --- a/src/main/java/io/gmss/infocad/implementations/rfu/metier/EnqueteBatimentServiceImpl.java +++ b/src/main/java/io/gmss/infocad/implementations/rfu/metier/EnqueteBatimentServiceImpl.java @@ -3,9 +3,7 @@ package io.gmss.infocad.implementations.rfu.metier; import io.gmss.infocad.entities.rfu.metier.EnqueteBatiment; import io.gmss.infocad.exceptions.BadRequestException; import io.gmss.infocad.exceptions.NotFoundException; -import io.gmss.infocad.interfaces.rfu.metier.BatimentService; import io.gmss.infocad.interfaces.rfu.metier.EnqueteBatimentService; -import io.gmss.infocad.repositories.rfu.metier.BatimentRepository; import io.gmss.infocad.repositories.rfu.metier.EnqueteBatimentRepository; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/io/gmss/infocad/implementations/rfu/metier/UniteLogementServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/rfu/metier/UniteLogementServiceImpl.java index eb5f765..f3876ac 100644 --- a/src/main/java/io/gmss/infocad/implementations/rfu/metier/UniteLogementServiceImpl.java +++ b/src/main/java/io/gmss/infocad/implementations/rfu/metier/UniteLogementServiceImpl.java @@ -1,12 +1,9 @@ package io.gmss.infocad.implementations.rfu.metier; -import io.gmss.infocad.entities.rfu.metier.EnqueteUniteLogement; import io.gmss.infocad.entities.rfu.metier.UniteLogement; import io.gmss.infocad.exceptions.BadRequestException; import io.gmss.infocad.exceptions.NotFoundException; -import io.gmss.infocad.interfaces.rfu.metier.EnqueteUniteLogementService; import io.gmss.infocad.interfaces.rfu.metier.UniteLogementService; -import io.gmss.infocad.repositories.rfu.metier.EnqueteUniteLogementRepository; import io.gmss.infocad.repositories.rfu.metier.UniteLogementRepository; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/io/gmss/infocad/implementations/synchronisation/SynchronisationServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/synchronisation/SynchronisationServiceImpl.java index e5f3d20..c145b0a 100644 --- a/src/main/java/io/gmss/infocad/implementations/synchronisation/SynchronisationServiceImpl.java +++ b/src/main/java/io/gmss/infocad/implementations/synchronisation/SynchronisationServiceImpl.java @@ -5,11 +5,13 @@ import io.gmss.infocad.entities.decoupage.Nationalite; import io.gmss.infocad.entities.decoupage.Quartier; import io.gmss.infocad.entities.infocad.metier.*; import io.gmss.infocad.entities.infocad.parametre.*; +import io.gmss.infocad.entities.rfu.metier.*; import io.gmss.infocad.entities.rfu.parametre.Caracteristique; import io.gmss.infocad.entities.rfu.parametre.TypeCaracteristique; import io.gmss.infocad.entities.user.User; import io.gmss.infocad.enums.Categorie; import io.gmss.infocad.enums.StatusEnquete; +import io.gmss.infocad.enums.StatutEnregistrement; import io.gmss.infocad.interfaces.synchronisation.SynchronisationService; import io.gmss.infocad.interfaces.user.UserService; import io.gmss.infocad.paylaods.request.*; @@ -17,6 +19,7 @@ import io.gmss.infocad.paylaods.response.*; import io.gmss.infocad.repositories.decoupage.*; import io.gmss.infocad.repositories.infocad.metier.*; import io.gmss.infocad.repositories.infocad.parametre.*; +import io.gmss.infocad.repositories.rfu.metier.*; import io.gmss.infocad.repositories.rfu.parametre.CaracteristiqueRepository; import io.gmss.infocad.repositories.rfu.parametre.TypeCaracteristiqueRepository; import io.gmss.infocad.repositories.user.UserRepository; @@ -64,11 +67,20 @@ public class SynchronisationServiceImpl implements SynchronisationService { private final UploadRepository uploadRepository; private final FileStorageService fileStorageService; private final TpeRepository tpeRepository; + private final BatimentRepository batimentRepository; + private final UniteLogementRepository uniteLogementRepository; private final CaracteristiqueRepository caracteristiqueRepository; private final TypeCaracteristiqueRepository typeCaracteristiqueRepository; - public SynchronisationServiceImpl(UserService userService, DepartementRepository departementRepository, CommuneRepository communeRepository, ArrondissementRepository arrondissementRepository, QuartierRepository quartierRepository, BlocRepository blocRepository, ModeAcquisitionRepository modeAcquisitionRepository, NationaliteRepository nationaliteRepository, NatureDomaineRepository natureDomaineRepository, PositionRepresentationRepository positionRepresentationRepository, ProfessionRepository professionRepository, SituationMatrimonialeRepository situationMatrimonialeRepository, SourceDroitRepository sourceDroitRepository, StructureRepository structureRepository, TypeContestationRepository typeContestationRepository, TypeDomaineRepository typeDomaineRepository, TypePersonneRepository typePersonneRepository, TypePieceRepository typePieceRepository, TypeRepresentationRepository typeRepresentationRepository, MembreGroupeRepository membreGroupeRepository, PersonneRepository personneRepository, EnqueteRepository enqueteRepository, ParcelleRepository parcelleRepository, UserRepository userRepository, SituationGeographiqueRepository situationGeographiqueRepository, PieceRepository pieceRepository, ActeurConcerneRepository acteurConcerneRepository, UploadRepository uploadRepository, FileStorageService fileStorageService, TpeRepository tpeRepository, CaracteristiqueRepository caracteristiqueRepository, TypeCaracteristiqueRepository typeCaracteristiqueRepository) { + private final EnqueteBatimentRepository enqueteBatimentRepository; + private final EnqueteUniteLogementRepository enqueteUniteLogementRepository; + + private final CaracteristiqueBatimentRepository caracteristiqueBatimentRepository; + private final CaracteristiqueParcelleRepository caracteristiqueParcelleRepository; + private final CaracteristiqueUniteLogementRepository caracteristiqueUniteLogementRepository; + + public SynchronisationServiceImpl(UserService userService, DepartementRepository departementRepository, CommuneRepository communeRepository, ArrondissementRepository arrondissementRepository, QuartierRepository quartierRepository, BlocRepository blocRepository, ModeAcquisitionRepository modeAcquisitionRepository, NationaliteRepository nationaliteRepository, NatureDomaineRepository natureDomaineRepository, PositionRepresentationRepository positionRepresentationRepository, ProfessionRepository professionRepository, SituationMatrimonialeRepository situationMatrimonialeRepository, SourceDroitRepository sourceDroitRepository, StructureRepository structureRepository, TypeContestationRepository typeContestationRepository, TypeDomaineRepository typeDomaineRepository, TypePersonneRepository typePersonneRepository, TypePieceRepository typePieceRepository, TypeRepresentationRepository typeRepresentationRepository, MembreGroupeRepository membreGroupeRepository, PersonneRepository personneRepository, EnqueteRepository enqueteRepository, ParcelleRepository parcelleRepository, UserRepository userRepository, SituationGeographiqueRepository situationGeographiqueRepository, PieceRepository pieceRepository, ActeurConcerneRepository acteurConcerneRepository, UploadRepository uploadRepository, FileStorageService fileStorageService, TpeRepository tpeRepository, BatimentRepository batimentRepository, UniteLogementRepository uniteLogementRepository, CaracteristiqueRepository caracteristiqueRepository, TypeCaracteristiqueRepository typeCaracteristiqueRepository, EnqueteBatimentRepository enqueteBatimentRepository, EnqueteUniteLogementRepository enqueteUniteLogementRepository, CaracteristiqueBatimentRepository caracteristiqueBatimentRepository, CaracteristiqueParcelleRepository caracteristiqueParcelleRepository, CaracteristiqueUniteLogementRepository caracteristiqueUniteLogementRepository) { this.userService = userService; this.departementRepository = departementRepository; this.communeRepository = communeRepository; @@ -99,8 +111,15 @@ public class SynchronisationServiceImpl implements SynchronisationService { this.uploadRepository = uploadRepository; this.fileStorageService = fileStorageService; this.tpeRepository = tpeRepository; + this.batimentRepository = batimentRepository; + this.uniteLogementRepository = uniteLogementRepository; this.caracteristiqueRepository = caracteristiqueRepository; this.typeCaracteristiqueRepository = typeCaracteristiqueRepository; + this.enqueteBatimentRepository = enqueteBatimentRepository; + this.enqueteUniteLogementRepository = enqueteUniteLogementRepository; + this.caracteristiqueBatimentRepository = caracteristiqueBatimentRepository; + this.caracteristiqueParcelleRepository = caracteristiqueParcelleRepository; + this.caracteristiqueUniteLogementRepository = caracteristiqueUniteLogementRepository; } @@ -270,6 +289,7 @@ public class SynchronisationServiceImpl implements SynchronisationService { return syncResponses; } + private void deleteFromPersonne(Long idBackend) { uploadRepository.deleteUploadByPiece_Personne_Id(idBackend); uploadRepository.deleteUploadByMembreGroupe_PersonneRepresantee_Id(idBackend); @@ -506,7 +526,7 @@ public class SynchronisationServiceImpl implements SynchronisationService { syncResponses.add(syncResponse); return; } else { - Optional optionalParcelle = parcelleRepository.findFirstByExternalKeyAndTerminal_Id(enquetePayLoad.getParcelleId(),enquetePayLoad.getTerminalId()); + Optional optionalParcelle = parcelleRepository.findFirstByExternalKeyAndTerminal_Id(enquetePayLoad.getParcelleId(), enquetePayLoad.getTerminalId()); if (optionalParcelle.isEmpty()) { SyncResponse syncResponse = new SyncResponse(enquetePayLoad.getIdBackend(), enquetePayLoad.getExternalKey(), false, "La parcelle précisée n'existe pas"); @@ -536,15 +556,25 @@ public class SynchronisationServiceImpl implements SynchronisationService { enquetePayLoad.setObservation("La clé interne est non valide : Enregistrement inexistant "); enquetePayLoad.setSynchronise(false); } else { - System.out.println("\"Ok il est venu ici\" = " + "Ok il est venu ici"); - deleteFromEnquete(enquetePayLoad.getIdBackend() ); + //récupération de l'enquete en base de donnéees enquete = optionalEnquete.get(); - enquete = getEnqueteFromEnquetePayLoad(enquete, enquetePayLoad); - enquete = enqueteRepository.save(enquete); - enquetePayLoad.setIdBackend(enquete.getId()); + //verification du statut de l'enquete (Si le status est en_cours ou rejet alors mise à jour) + if(enquete.getStatusEnquete().equals(StatusEnquete.EN_COURS) || enquete.getStatusEnquete().equals(StatusEnquete.REJETE)){ + // suppression des pièces, uploads et acteurs concernés + deleteFromEnquete(enquetePayLoad.getIdBackend()); + enquete = getEnqueteFromEnquetePayLoad(enquete, enquetePayLoad); + enquete.setStatutEnregistrement(StatutEnregistrement.MISE_A_JOUR); + enquete = enqueteRepository.save(enquete); + enquetePayLoad.setIdBackend(enquete.getId()); + }else{ + enquetePayLoad.setObservation("Le statut de cette enquête est déjà VALIDE. Une mise à jour sur cette enquête n'est donc plus possible."); + } } } else { + // TODO: 19/01/2025 Est-il nécessaire des rechercher les lignes de la table enquete ayant meme [externalKey, terminalId, parcelleId] ? + // TODO: 19/01/2025 Si oui, que faire ? enquete = getEnqueteFromEnquetePayLoad(enquete, enquetePayLoad); + enquete.setStatutEnregistrement(StatutEnregistrement.NOUVELLE_INSERTION); enquete = enqueteRepository.save(enquete); enquetePayLoad.setIdBackend(enquete.getId()); } @@ -620,9 +650,177 @@ public class SynchronisationServiceImpl implements SynchronisationService { enquete.setNomProprietaireParcelle(enquetePayLoad.getNomProprietaireParcelle()); enquete.setCodeEquipe(enquetePayLoad.getCodeEquipe()); enquete.setNumeroTitreFoncier(enquetePayLoad.getNumeroTitreFoncier()); + + + // Liste des champs pour FISCAD + + enquete.setNumEnterParcelle(enquetePayLoad.getNumEnterParcelle()); + enquete.setNumRue(enquetePayLoad.getNumRue()); + enquete.setNomRue(enquetePayLoad.getNomRue()); + enquete.setEmplacement(enquetePayLoad.getEmplacement()); + enquete.setAltitude(enquetePayLoad.getAltitude()); + enquete.setPrecision(enquetePayLoad.getPrecision()); + enquete.setNbreCoProprietaire(enquetePayLoad.getNbreCoProprietaire()); + enquete.setNbreIndivisiaire(enquetePayLoad.getNbreIndivisiaire()); + enquete.setAutreAdresse(enquetePayLoad.getAutreAdresse()); + enquete.setSurface(enquetePayLoad.getSurface()); + enquete.setNbreBatiment(enquetePayLoad.getNbreBatiment()); + enquete.setNbrePiscine(enquetePayLoad.getNbrePiscine()); + enquete.setDateDebutExcemption(enquetePayLoad.getDateDebutExcemption()); + enquete.setDateFinExcemption(enquetePayLoad.getDateFinExcemption()); + return enquete; } + + private Batiment getBatimentFromBatimentPayLoad(Batiment batiment, BatimentPaylaod batimentPaylaod) { + + + if (batimentPaylaod.getParcelleId() != null) { + Optional optionalParcelle = parcelleRepository.findFirstByExternalKeyAndTerminal_Id(batimentPaylaod.getParcelleId(), batimentPaylaod.getTerminalId()); + batiment.setParcelle(optionalParcelle.orElse(null)); + } + + if (batimentPaylaod.getTerminalId() != null) { + Optional optionalTpe = tpeRepository.findById(batimentPaylaod.getTerminalId()); + batiment.setTerminal(optionalTpe.orElse(null)); + } + + + + batiment.setNub(batimentPaylaod.getNub()); + batiment.setCode(batimentPaylaod.getCode()); + batiment.setDateConstruction(batimentPaylaod.getDateConstruction()); + batiment.setExternalKey(batimentPaylaod.getExternalKey()); + + return batiment; + } + + private UniteLogement getUniteLogementFromUniteLogementPayLoad(UniteLogement uniteLogement, UniteLogementPaylaod uniteLogementPaylaod) { + +// if (batimentPaylaod.getUserId() != null) { +// Optional optionalUser = userRepository.findById(batimentPaylaod.getUserId()); +// batiment.setUser(optionalUser.orElse(null)); +// } + + if (uniteLogementPaylaod.getBatimentId() != null) { + Optional optionalBatiment = batimentRepository.findFirstByExternalKeyAndTerminal_Id(uniteLogementPaylaod.getBatimentId(), uniteLogementPaylaod.getTerminalId()); + uniteLogement.setBatiment(optionalBatiment.orElse(null)); + } + + if (uniteLogementPaylaod.getTerminalId() != null) { + Optional optionalTpe = tpeRepository.findById(uniteLogementPaylaod.getTerminalId()); + uniteLogement.setTerminal(optionalTpe.orElse(null)); + } + + uniteLogement.setNul(uniteLogementPaylaod.getNul()); + uniteLogement.setNumeroEtage(uniteLogementPaylaod.getNumeroEtage()); + uniteLogement.setCode(uniteLogementPaylaod.getCode()); + uniteLogement.setExternalKey(uniteLogementPaylaod.getExternalKey()); + return uniteLogement; + + } + + private CaracteristiqueUniteLogement getCaracteristiqueUniteLogementFromCaracteristiqueUniteLogementPayLoad(CaracteristiqueUniteLogement caracteristiqueUniteLogement, CaracteristiqueUniteLogementPaylod caracteristiqueUniteLogementPaylod) { + + + // TODO: 15/01/2025 A revoir si garder le commentaire +// if (batimentPaylaod.getUserId() != null) { +// Optional optionalUser = userRepository.findById(batimentPaylaod.getUserId()); +// batiment.setUser(optionalUser.orElse(null)); +// } + + if (caracteristiqueUniteLogementPaylod.getEnqueteUniteLogementId() != null) { + Optional optionalEnqueteUniteLogement = enqueteUniteLogementRepository.findFirstByExternalKeyAndTerminal_Id(caracteristiqueUniteLogementPaylod.getEnqueteUniteLogementId(), caracteristiqueUniteLogementPaylod.getTerminalId()); + caracteristiqueUniteLogement.setEnqueteUniteLogement(optionalEnqueteUniteLogement.orElse(null)); + } + + if (caracteristiqueUniteLogementPaylod.getCaracteristiqueId() != null) { + Optional optionalCaracteristique = caracteristiqueRepository.findById(caracteristiqueUniteLogementPaylod.getCaracteristiqueId()); + caracteristiqueUniteLogement.setCaracteristique(optionalCaracteristique.orElse(null)); + } + + // TODO: 15/01/2025 Est-il nécessaire de mettre le terminal qui a fait cette synchronisation ? Vu que les enquetes du batiment + // TODO : sont déjà fait par un TPE qui doit être le même que celui-ci + +// if (caracteristiqueBatimentPaylod.getTerminalId() != null) { +// Optional optionalTpe = tpeRepository.findById(caracteristiqueBatimentPaylod.getTerminalId()); +// caracteristiqueBatiment.sett(optionalTpe.orElse(null)); +// } + + caracteristiqueUniteLogement.setValeur(caracteristiqueUniteLogementPaylod.getValeur()); + caracteristiqueUniteLogement.setExternalKey(caracteristiqueUniteLogementPaylod.getExternalKey()); + return caracteristiqueUniteLogement; + + } + + + private CaracteristiqueBatiment getCaracteristiqueBatimentFromCaracteristiqueBatimentPayLoad(CaracteristiqueBatiment caracteristiqueBatiment, CaracteristiqueBatimentPaylod caracteristiqueBatimentPaylod) { + + + // TODO: 15/01/2025 A revoir si garder le commentaire +// if (batimentPaylaod.getUserId() != null) { +// Optional optionalUser = userRepository.findById(batimentPaylaod.getUserId()); +// batiment.setUser(optionalUser.orElse(null)); +// } + + if (caracteristiqueBatimentPaylod.getEnqueteBatimentId() != null) { + Optional optionalEnqueteBatiment = enqueteBatimentRepository.findFirstByExternalKeyAndTerminal_Id(caracteristiqueBatimentPaylod.getEnqueteBatimentId(), caracteristiqueBatimentPaylod.getTerminalId()); + caracteristiqueBatiment.setEnqueteBatiment(optionalEnqueteBatiment.orElse(null)); + } + + if (caracteristiqueBatimentPaylod.getCaracteristiqueId() != null) { + Optional optionalCaracteristique = caracteristiqueRepository.findById(caracteristiqueBatimentPaylod.getCaracteristiqueId()); + caracteristiqueBatiment.setCaracteristique(optionalCaracteristique.orElse(null)); + } + + // TODO: 15/01/2025 Est-il nécessaire de mettre le terminal qui a fait cette synchronisation ? Vu que les enquetes du batiment + // TODO : sont déjà fait par un TPE qui doit être le même que celui-ci + +// if (caracteristiqueBatimentPaylod.getTerminalId() != null) { +// Optional optionalTpe = tpeRepository.findById(caracteristiqueBatimentPaylod.getTerminalId()); +// caracteristiqueBatiment.sett(optionalTpe.orElse(null)); +// } + + caracteristiqueBatiment.setValeur(caracteristiqueBatimentPaylod.getValeur()); + caracteristiqueBatiment.setExternalKey(caracteristiqueBatimentPaylod.getExternalKey()); + return caracteristiqueBatiment; + + } + + private CaracteristiqueParcelle getCaracteristiqueParcelleFromCaracteristiqueParcellePayLoad(CaracteristiqueParcelle caracteristiqueParcelle, CaracteristiqueParcellePaylod caracteristiqueParcellePaylod) { + + + // TODO: 15/01/2025 A revoir si garder le commentaire +// if (batimentPaylaod.getUserId() != null) { +// Optional optionalUser = userRepository.findById(batimentPaylaod.getUserId()); +// batiment.setUser(optionalUser.orElse(null)); +// } + + if (caracteristiqueParcellePaylod.getEnqueteId() != null) { + Optional optionalEnquete = enqueteRepository.findFirstByExternalKeyAndTerminal_Id(caracteristiqueParcellePaylod.getEnqueteId(), caracteristiqueParcellePaylod.getTerminalId()); + caracteristiqueParcelle.setEnquete(optionalEnquete.orElse(null)); + } + + if (caracteristiqueParcellePaylod.getCaracteristiqueId() != null) { + Optional optionalCaracteristique = caracteristiqueRepository.findById(caracteristiqueParcellePaylod.getCaracteristiqueId()); + caracteristiqueParcelle.setCaracteristique(optionalCaracteristique.orElse(null)); + } + + // TODO: 15/01/2025 Est-il nécessaire de mettre le terminal qui a fait cette synchronisation ? Vu que les enquetes du batiment + // TODO : sont déjà fait par un TPE qui doit être le même que celui-ci + +// if (caracteristiqueBatimentPaylod.getTerminalId() != null) { +// Optional optionalTpe = tpeRepository.findById(caracteristiqueBatimentPaylod.getTerminalId()); +// caracteristiqueBatiment.sett(optionalTpe.orElse(null)); +// } + + caracteristiqueParcelle.setValeur(caracteristiqueParcellePaylod.getValeur()); + caracteristiqueParcelle.setExternalKey(caracteristiqueParcellePaylod.getExternalKey()); + return caracteristiqueParcelle; + + } + @Override public List syncParcelle(List parcellePayLoads) { List syncResponses = new ArrayList<>(); @@ -1121,4 +1319,808 @@ public class SynchronisationServiceImpl implements SynchronisationService { upload.setBlocId(uploadPayLoad.getBlocId()); return upload; } + + + + @Override + public List syncBatiment(List batimentPaylaods) { + + List syncResponses = new ArrayList<>(); + if (batimentPaylaods == null) { + SyncResponse syncResponse = new SyncResponse(null, + null, false, "Aucun batiment à synchroniser"); + syncResponses.add(syncResponse); + return syncResponses; + } + batimentPaylaods.forEach(batimentPaylaod -> { + try { + if (batimentPaylaod.getTerminalId() == null) { + SyncResponse syncResponse = new SyncResponse(batimentPaylaod.getIdBackend(), + batimentPaylaod.getExternalKey(), false, "Le terminal n'est pas précisé."); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalTpe = tpeRepository.findById(batimentPaylaod.getTerminalId()); + if (optionalTpe.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(batimentPaylaod.getIdBackend(), + batimentPaylaod.getExternalKey(), false, "Le terminal n'existe pas."); + syncResponses.add(syncResponse); + return; + } + } + + if (batimentPaylaod.getParcelleId() == null) { + SyncResponse syncResponse = new SyncResponse(batimentPaylaod.getIdBackend(), + batimentPaylaod.getExternalKey(), false, "La parcelle n'est pas précisée"); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalParcelle = parcelleRepository.findFirstByExternalKeyAndTerminal_Id(batimentPaylaod.getParcelleId(), batimentPaylaod.getTerminalId()); + if (optionalParcelle.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(batimentPaylaod.getIdBackend(), + batimentPaylaod.getExternalKey(), false, "La parcelle précisée n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + Batiment batiment = new Batiment(); + batimentPaylaod.setSynchronise(true); + if (batimentPaylaod.getIdBackend() != null && batimentPaylaod.getIdBackend() != 0) { + Optional batimentOptional = batimentRepository.findById(batimentPaylaod.getIdBackend()); + if (!batimentOptional.isPresent()) { + batimentPaylaod.setObservation("La clé interne est non valide : Enregistrement inexistant "); + batimentPaylaod.setSynchronise(false); + } else { + batiment = batimentOptional.get(); + batiment = getBatimentFromBatimentPayLoad(batiment, batimentPaylaod); + batiment = batimentRepository.save(batiment); + batimentPaylaod.setIdBackend(batiment.getId()); + } + } else { + batiment = getBatimentFromBatimentPayLoad(batiment, batimentPaylaod); + batimentRepository.save(batiment); + batimentPaylaod.setIdBackend(batiment.getId()); + } + SyncResponse syncResponse = new SyncResponse(); + syncResponse.setObservation(batimentPaylaod.getObservation()); + syncResponse.setExternalKey(batimentPaylaod.getExternalKey()); + syncResponse.setSynchronise(batimentPaylaod.isSynchronise()); + syncResponse.setIdBackend(batimentPaylaod.getIdBackend()); + syncResponses.add(syncResponse); + } catch (Exception e) { + SyncResponse syncResponse = new SyncResponse(batimentPaylaod.getIdBackend(), + batimentPaylaod.getExternalKey(), false, "Erreur inattendue"); + syncResponses.add(syncResponse); + } + }); + + return syncResponses; + } + + + + @Override + public List syncUniteLogement(List uniteLogementPaylaods) { + + List syncResponses = new ArrayList<>(); + if (uniteLogementPaylaods == null) { + SyncResponse syncResponse = new SyncResponse(null, + null, false, "Aucune unité de logement à synchroniser"); + syncResponses.add(syncResponse); + return syncResponses; + } + uniteLogementPaylaods.forEach(uniteLogementPaylaod -> { + try { + if (uniteLogementPaylaod.getTerminalId() == null) { + SyncResponse syncResponse = new SyncResponse(uniteLogementPaylaod.getIdBackend(), + uniteLogementPaylaod.getExternalKey(), false, "Le terminal n'est pas précisé."); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalTpe = tpeRepository.findById(uniteLogementPaylaod.getTerminalId()); + if (optionalTpe.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(uniteLogementPaylaod.getIdBackend(), + uniteLogementPaylaod.getExternalKey(), false, "Le terminal n'existe pas."); + syncResponses.add(syncResponse); + return; + } + } + + if (uniteLogementPaylaod.getBatimentId() == null) { + SyncResponse syncResponse = new SyncResponse(uniteLogementPaylaod.getIdBackend(), + uniteLogementPaylaod.getExternalKey(), false, "Le batiment n'est pas précisé."); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalBatiment = batimentRepository.findFirstByExternalKeyAndTerminal_Id(uniteLogementPaylaod.getBatimentId(), uniteLogementPaylaod.getTerminalId()); + if (optionalBatiment.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(uniteLogementPaylaod.getIdBackend(), + uniteLogementPaylaod.getExternalKey(), false, "Le batiment précisé n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + UniteLogement uniteLogement = new UniteLogement(); + uniteLogementPaylaod.setSynchronise(true); + if (uniteLogementPaylaod.getIdBackend() != null && uniteLogementPaylaod.getIdBackend() != 0) { + Optional uniteLogementOptional = uniteLogementRepository.findById(uniteLogementPaylaod.getIdBackend()); + if (!uniteLogementOptional.isPresent()) { + uniteLogementPaylaod.setObservation("La clé interne est non valide : Enregistrement inexistant "); + uniteLogementPaylaod.setSynchronise(false); + } else { + uniteLogement = uniteLogementOptional.get(); + uniteLogement = getUniteLogementFromUniteLogementPayLoad(uniteLogement, uniteLogementPaylaod); + uniteLogementRepository.save(uniteLogement); + uniteLogementPaylaod.setIdBackend(uniteLogement.getId()); + } + } else { + uniteLogement = getUniteLogementFromUniteLogementPayLoad(uniteLogement, uniteLogementPaylaod); + uniteLogementRepository.save(uniteLogement); + uniteLogementPaylaod.setIdBackend(uniteLogement.getId()); + } + SyncResponse syncResponse = new SyncResponse(); + syncResponse.setObservation(uniteLogementPaylaod.getObservation()); + syncResponse.setExternalKey(uniteLogementPaylaod.getExternalKey()); + syncResponse.setSynchronise(uniteLogementPaylaod.isSynchronise()); + syncResponse.setIdBackend(uniteLogementPaylaod.getIdBackend()); + syncResponses.add(syncResponse); + } catch (Exception e) { + SyncResponse syncResponse = new SyncResponse(uniteLogementPaylaod.getIdBackend(), + uniteLogementPaylaod.getExternalKey(), false, "Erreur inattendue"); + syncResponses.add(syncResponse); + } + }); + + return syncResponses; + } + + @Override + public List syncCaracteristiqueBatiment(List caracteristiqueBatimentPaylods) { + + List syncResponses = new ArrayList<>(); + if (caracteristiqueBatimentPaylods == null) { + SyncResponse syncResponse = new SyncResponse(null, + null, false, "Aucune caracteristique de bâtiment à synchroniser"); + syncResponses.add(syncResponse); + return syncResponses; + } + caracteristiqueBatimentPaylods.forEach(caracteristiqueBatimentPaylod -> { + try { + if (caracteristiqueBatimentPaylod.getTerminalId() == null) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueBatimentPaylod.getIdBackend(), + caracteristiqueBatimentPaylod.getExternalKey(), false, "Le terminal n'est pas précisé."); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalTpe = tpeRepository.findById(caracteristiqueBatimentPaylod.getTerminalId()); + if (optionalTpe.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueBatimentPaylod.getIdBackend(), + caracteristiqueBatimentPaylod.getExternalKey(), false, "Le terminal n'existe pas."); + syncResponses.add(syncResponse); + return; + } + } + + + if (caracteristiqueBatimentPaylod.getEnqueteBatimentId() == null) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueBatimentPaylod.getIdBackend(), + caracteristiqueBatimentPaylod.getExternalKey(), false, "L'enquête batiment n'est pas précisé."); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalEnqueteBatiment = enqueteBatimentRepository.findFirstByExternalKeyAndTerminal_Id(caracteristiqueBatimentPaylod.getEnqueteBatimentId(), caracteristiqueBatimentPaylod.getTerminalId()); + if (optionalEnqueteBatiment.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueBatimentPaylod.getIdBackend(), + caracteristiqueBatimentPaylod.getExternalKey(), false, "L'enquête batiment précisée n'existe pas"); + syncResponses.add(syncResponse); + return; + }else { + EnqueteBatiment enqueteBatiment = optionalEnqueteBatiment.get(); + if(enqueteBatiment.getStatutEnregistrement().equals(StatutEnregistrement.MISE_A_JOUR)){ + //suppression de toutes les caractéristiques liées à une enquête si l'enquete à pour statut d'enregistrement MAJ + deleteAllCaracteristiqueBatimentFromEnqueteBatiment(enqueteBatiment); + } + } + } + + if (caracteristiqueBatimentPaylod.getCaracteristiqueId() == null) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueBatimentPaylod.getIdBackend(), + caracteristiqueBatimentPaylod.getExternalKey(), false, "La caracteristique du batiment n'est pas précisé."); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalCaracteristique = caracteristiqueRepository.findById(caracteristiqueBatimentPaylod.getCaracteristiqueId()); + if (optionalCaracteristique.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueBatimentPaylod.getIdBackend(), + caracteristiqueBatimentPaylod.getExternalKey(), false, "La caracteristique du batiment précisée n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + + + CaracteristiqueBatiment caracteristiqueBatiment = new CaracteristiqueBatiment(); + + caracteristiqueBatimentPaylod.setSynchronise(true); + + caracteristiqueBatiment = getCaracteristiqueBatimentFromCaracteristiqueBatimentPayLoad(caracteristiqueBatiment, caracteristiqueBatimentPaylod); + caracteristiqueBatimentRepository.save(caracteristiqueBatiment); + caracteristiqueBatimentPaylod.setIdBackend(caracteristiqueBatiment.getId()); + + SyncResponse syncResponse = new SyncResponse(); + syncResponse.setObservation(caracteristiqueBatimentPaylod.getObservation()); + syncResponse.setExternalKey(caracteristiqueBatimentPaylod.getExternalKey()); + syncResponse.setSynchronise(caracteristiqueBatimentPaylod.isSynchronise()); + syncResponse.setIdBackend(caracteristiqueBatimentPaylod.getIdBackend()); + syncResponses.add(syncResponse); + } catch (Exception e) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueBatimentPaylod.getIdBackend(), + caracteristiqueBatimentPaylod.getExternalKey(), false, "Erreur inattendue"); + syncResponses.add(syncResponse); + } + }); + + return syncResponses; + } + + private void deleteAllCaracteristiqueBatimentFromEnqueteBatiment(EnqueteBatiment enqueteBatiment) { + caracteristiqueBatimentRepository.deleteAllByEnqueteBatiment(enqueteBatiment); + } + + + @Override + public List syncCaracteristiqueUniteLogement(List caracteristiqueUniteLogementPaylods) { + + List syncResponses = new ArrayList<>(); + if (caracteristiqueUniteLogementPaylods == null) { + SyncResponse syncResponse = new SyncResponse(null, + null, false, "Aucune caracteristique d'unité de logement à synchroniser"); + syncResponses.add(syncResponse); + return syncResponses; + } + caracteristiqueUniteLogementPaylods.forEach(caracteristiqueUniteLogementPaylod -> { + try { + if (caracteristiqueUniteLogementPaylod.getTerminalId() == null) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueUniteLogementPaylod.getIdBackend(), + caracteristiqueUniteLogementPaylod.getExternalKey(), false, "Le terminal n'est pas précisé."); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalTpe = tpeRepository.findById(caracteristiqueUniteLogementPaylod.getTerminalId()); + if (optionalTpe.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueUniteLogementPaylod.getIdBackend(), + caracteristiqueUniteLogementPaylod.getExternalKey(), false, "Le terminal n'existe pas."); + syncResponses.add(syncResponse); + return; + } + } + + if (caracteristiqueUniteLogementPaylod.getEnqueteUniteLogementId() == null) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueUniteLogementPaylod.getIdBackend(), + caracteristiqueUniteLogementPaylod.getExternalKey(), false, "L'enquête de l'unité de logement n'est pas précisé."); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalEnqueteUniteLogement = enqueteUniteLogementRepository.findFirstByExternalKeyAndTerminal_Id(caracteristiqueUniteLogementPaylod.getEnqueteUniteLogementId(), caracteristiqueUniteLogementPaylod.getTerminalId()); + if (optionalEnqueteUniteLogement.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueUniteLogementPaylod.getIdBackend(), + caracteristiqueUniteLogementPaylod.getExternalKey(), false, "L'enquête de l'unité de logement précisée n'existe pas"); + syncResponses.add(syncResponse); + return; + }else{ + EnqueteUniteLogement enqueteUniteLogement = optionalEnqueteUniteLogement.get(); + if(enqueteUniteLogement.getStatutEnregistrement().equals(StatutEnregistrement.MISE_A_JOUR)){ + //suppression de toutes les caractéristiques liées à une enquête si l'enquete à pour statut d'enregistrement MAJ + deleteAllCaracteristiqueUniteLogementFromEnqueteUniteLogement(enqueteUniteLogement); + } + } + } + + if (caracteristiqueUniteLogementPaylod.getCaracteristiqueId() == null) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueUniteLogementPaylod.getIdBackend(), + caracteristiqueUniteLogementPaylod.getExternalKey(), false, "La caracteristique de l'unité de logement n'est pas précisée."); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalCaracteristique = caracteristiqueRepository.findById(caracteristiqueUniteLogementPaylod.getCaracteristiqueId()); + if (optionalCaracteristique.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueUniteLogementPaylod.getIdBackend(), + caracteristiqueUniteLogementPaylod.getExternalKey(), false, "La caracteristique de l'unité de logement précisée n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + + + CaracteristiqueUniteLogement caracteristiqueUniteLogement = new CaracteristiqueUniteLogement(); + + caracteristiqueUniteLogementPaylod.setSynchronise(true); + + caracteristiqueUniteLogement = getCaracteristiqueUniteLogementFromCaracteristiqueUniteLogementPayLoad(caracteristiqueUniteLogement, caracteristiqueUniteLogementPaylod); + caracteristiqueUniteLogementRepository.save(caracteristiqueUniteLogement); + caracteristiqueUniteLogementPaylod.setIdBackend(caracteristiqueUniteLogement.getId()); + + SyncResponse syncResponse = new SyncResponse(); + syncResponse.setObservation(caracteristiqueUniteLogementPaylod.getObservation()); + syncResponse.setExternalKey(caracteristiqueUniteLogementPaylod.getExternalKey()); + syncResponse.setSynchronise(caracteristiqueUniteLogementPaylod.isSynchronise()); + syncResponse.setIdBackend(caracteristiqueUniteLogementPaylod.getIdBackend()); + syncResponses.add(syncResponse); + } catch (Exception e) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueUniteLogementPaylod.getIdBackend(), + caracteristiqueUniteLogementPaylod.getExternalKey(), false, "Erreur inattendue"); + syncResponses.add(syncResponse); + } + }); + + return syncResponses; + } + + private void deleteAllCaracteristiqueUniteLogementFromEnqueteUniteLogement(EnqueteUniteLogement enqueteUniteLogement) { + caracteristiqueUniteLogementRepository.deleteAllByEnqueteUniteLogement(enqueteUniteLogement); + } + + + @Override + public List syncCaracteristiqueParcelle(List caracteristiqueParcellePaylods) { + + List syncResponses = new ArrayList<>(); + if (caracteristiqueParcellePaylods == null) { + SyncResponse syncResponse = new SyncResponse(null, + null, false, "Aucune caracteristique de parcelle à synchroniser"); + syncResponses.add(syncResponse); + return syncResponses; + } + + caracteristiqueParcellePaylods.forEach(caracteristiqueParcellePaylod -> { + try { + if (caracteristiqueParcellePaylod.getTerminalId() == null) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueParcellePaylod.getIdBackend(), + caracteristiqueParcellePaylod.getExternalKey(), false, "Le terminal n'est pas précisé."); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalTpe = tpeRepository.findById(caracteristiqueParcellePaylod.getTerminalId()); + if (optionalTpe.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueParcellePaylod.getIdBackend(), + caracteristiqueParcellePaylod.getExternalKey(), false, "Le terminal n'existe pas."); + syncResponses.add(syncResponse); + return; + } + } + + if (caracteristiqueParcellePaylod.getEnqueteId() == null) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueParcellePaylod.getIdBackend(), + caracteristiqueParcellePaylod.getExternalKey(), false, "L'enquête n'est pas précisé."); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalEnquete = enqueteRepository.findFirstByExternalKeyAndTerminal_Id(caracteristiqueParcellePaylod.getEnqueteId(), caracteristiqueParcellePaylod.getTerminalId()); + if (optionalEnquete.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueParcellePaylod.getIdBackend(), + caracteristiqueParcellePaylod.getExternalKey(), false, "L'enquête précisée n'existe pas"); + syncResponses.add(syncResponse); + return; + }else { + Enquete enquete = optionalEnquete.get(); + if(enquete.getStatutEnregistrement().equals(StatutEnregistrement.MISE_A_JOUR)){ + //suppression de toutes les caractéristiques liées à une enquête si l'enquete à pour statut d'enregistrement MAJ + deleteAllCaracteristiqueParcelleFromEnquete(enquete); + } + } + } + + if (caracteristiqueParcellePaylod.getCaracteristiqueId() == null) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueParcellePaylod.getIdBackend(), + caracteristiqueParcellePaylod.getExternalKey(), false, "La caracteristique de la parcelle n'est pas précisée."); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalCaracteristique = caracteristiqueRepository.findById(caracteristiqueParcellePaylod.getCaracteristiqueId()); + if (optionalCaracteristique.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueParcellePaylod.getIdBackend(), + caracteristiqueParcellePaylod.getExternalKey(), false, "La caracteristique de la parcelle précisée n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + + + CaracteristiqueParcelle caracteristiqueParcelle = new CaracteristiqueParcelle(); + + caracteristiqueParcellePaylod.setSynchronise(true); + + caracteristiqueParcelle = getCaracteristiqueParcelleFromCaracteristiqueParcellePayLoad(caracteristiqueParcelle, caracteristiqueParcellePaylod); + caracteristiqueParcelleRepository.save(caracteristiqueParcelle); + caracteristiqueParcellePaylod.setIdBackend(caracteristiqueParcelle.getId()); + + SyncResponse syncResponse = new SyncResponse(); + syncResponse.setObservation(caracteristiqueParcellePaylod.getObservation()); + syncResponse.setExternalKey(caracteristiqueParcellePaylod.getExternalKey()); + syncResponse.setSynchronise(caracteristiqueParcellePaylod.isSynchronise()); + syncResponse.setIdBackend(caracteristiqueParcellePaylod.getIdBackend()); + syncResponses.add(syncResponse); + } catch (Exception e) { + SyncResponse syncResponse = new SyncResponse(caracteristiqueParcellePaylod.getIdBackend(), + caracteristiqueParcellePaylod.getExternalKey(), false, "Erreur inattendue"); + syncResponses.add(syncResponse); + } + }); + + return syncResponses; + } + + private void deleteAllCaracteristiqueParcelleFromEnquete(Enquete enquete) { + caracteristiqueParcelleRepository.deleteAllByEnquete(enquete); + } + + + + @Override + public List syncEnqueteBatiment(List enqueteBatimentPayLoads) { + List syncResponses = new ArrayList<>(); + if (enqueteBatimentPayLoads == null) { + SyncResponse syncResponse = new SyncResponse(null, + null, false, "Aucune enquête de batiment à synchroniser"); + syncResponses.add(syncResponse); + return syncResponses; + } + enqueteBatimentPayLoads.forEach(enqueteBatimentPayload -> { + + try { + if (enqueteBatimentPayload.getTerminalId() == null) { + SyncResponse syncResponse = new SyncResponse(enqueteBatimentPayload.getIdBackend(), + enqueteBatimentPayload.getExternalKey(), false, "Le terminal n'est pas précisé"); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalTpe = tpeRepository.findById(enqueteBatimentPayload.getTerminalId()); + if (optionalTpe.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(enqueteBatimentPayload.getIdBackend(), + enqueteBatimentPayload.getExternalKey(), false, "Le terminal n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + + if (enqueteBatimentPayload.getUserId() == null) { + SyncResponse syncResponse = new SyncResponse(enqueteBatimentPayload.getIdBackend(), + enqueteBatimentPayload.getExternalKey(), false, "L'enquêteur n'est pas précisé"); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalUser = userRepository.findById(enqueteBatimentPayload.getUserId()); + if (optionalUser.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(enqueteBatimentPayload.getIdBackend(), + enqueteBatimentPayload.getExternalKey(), false, "L'enquêteur précisé n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + if (enqueteBatimentPayload.getEnqueteId() == null) { + SyncResponse syncResponse = new SyncResponse(enqueteBatimentPayload.getIdBackend(), + enqueteBatimentPayload.getExternalKey(), false, "L'enquete de la parcelle n'est pas précisée"); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalEnquete = enqueteRepository.findFirstByExternalKeyAndTerminal_Id(enqueteBatimentPayload.getEnqueteId(), enqueteBatimentPayload.getTerminalId()); + if (optionalEnquete.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(enqueteBatimentPayload.getIdBackend(), + enqueteBatimentPayload.getExternalKey(), false, "L'enquete de la parcelle précisée n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + if (enqueteBatimentPayload.getPersonneId() == null) { + SyncResponse syncResponse = new SyncResponse(enqueteBatimentPayload.getIdBackend(), + enqueteBatimentPayload.getExternalKey(), false, "La personne n'est pas précisée."); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalPersonne = personneRepository.findById(enqueteBatimentPayload.getPersonneId()); + if (optionalPersonne.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(enqueteBatimentPayload.getIdBackend(), + enqueteBatimentPayload.getExternalKey(), false, "La personne précisée n'existe pas."); + syncResponses.add(syncResponse); + return; + } + } + + if (enqueteBatimentPayload.getBatimentId() == null) { + SyncResponse syncResponse = new SyncResponse(enqueteBatimentPayload.getIdBackend(), + enqueteBatimentPayload.getExternalKey(), false, "Le batiment n'est pas précisée."); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalBatiment = batimentRepository.findFirstByExternalKeyAndTerminal_Id(enqueteBatimentPayload.getBatimentId(), enqueteBatimentPayload.getTerminalId()); + if (optionalBatiment.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(enqueteBatimentPayload.getIdBackend(), + enqueteBatimentPayload.getExternalKey(), false, "Le batiment précisé n'existe pas."); + syncResponses.add(syncResponse); + return; + } + } + + EnqueteBatiment enqueteBatiment = new EnqueteBatiment(); + enqueteBatimentPayload.setSynchronise(true); + if (enqueteBatimentPayload.getIdBackend() != null && enqueteBatimentPayload.getIdBackend() != 0) { + Optional optionalEnqueteBatiment = enqueteBatimentRepository.findById(enqueteBatimentPayload.getIdBackend()); + if (!optionalEnqueteBatiment.isPresent()) { + enqueteBatimentPayload.setObservation("La clé interne est non valide : Enregistrement inexistant "); + enqueteBatimentPayload.setSynchronise(false); + } else { + //récupération de l'enquete en base de donnéees + enqueteBatiment = optionalEnqueteBatiment.get(); + //verification du statut de l'enquete (Si le status est en_cours ou rejet alors mise à jour) + if(enqueteBatiment.getStatusEnquete().equals(StatusEnquete.EN_COURS) || enqueteBatiment.getStatusEnquete().equals(StatusEnquete.REJETE)){ + // suppression des pièces, uploads et acteurs concernés + deleteAllUploadFromEnqueteBatiment(enqueteBatiment); + enqueteBatiment = getEnqueteBatimentFromEnqueteBatimentPayLoad(enqueteBatiment, enqueteBatimentPayload); + enqueteBatiment.setStatutEnregistrement(StatutEnregistrement.MISE_A_JOUR); + enqueteBatimentRepository.save(enqueteBatiment); + enqueteBatimentPayload.setIdBackend(enqueteBatiment.getId()); + }else{ + enqueteBatimentPayload.setObservation("Le statut de cette enquête est déjà VALIDE. Une mise à jour sur cette enquête n'est donc plus possible."); + } + } + } else { + // TODO: 19/01/2025 Est-il nécessaire des rechercher les lignes de la table enquete ayant meme [externalKey, terminalId, batimentId, enqueteId] ? + // TODO: 19/01/2025 Si oui, que faire ? + enqueteBatiment = getEnqueteBatimentFromEnqueteBatimentPayLoad(enqueteBatiment, enqueteBatimentPayload); + enqueteBatiment.setStatutEnregistrement(StatutEnregistrement.NOUVELLE_INSERTION); + enqueteBatiment = enqueteBatimentRepository.save(enqueteBatiment); + enqueteBatimentPayload.setIdBackend(enqueteBatiment.getId()); + } + SyncResponse syncResponse = new SyncResponse(); + syncResponse.setObservation(enqueteBatimentPayload.getObservation()); + syncResponse.setExternalKey(enqueteBatimentPayload.getExternalKey()); + syncResponse.setSynchronise(enqueteBatimentPayload.isSynchronise()); + syncResponse.setIdBackend(enqueteBatimentPayload.getIdBackend()); + syncResponses.add(syncResponse); + } catch (Exception e) { + SyncResponse syncResponse = new SyncResponse(enqueteBatimentPayload.getIdBackend(), + enqueteBatimentPayload.getExternalKey(), false, "Erreur inattendue"); + syncResponses.add(syncResponse); + } + }); + + return syncResponses; + } + + @Override + public List syncEnqueteUniteLogement(List enqueteUniteLogementPayloads) { + List syncResponses = new ArrayList<>(); + if (enqueteUniteLogementPayloads == null) { + SyncResponse syncResponse = new SyncResponse(null, + null, false, "Aucune enquête d'unité de logement à synchroniser"); + syncResponses.add(syncResponse); + return syncResponses; + } + enqueteUniteLogementPayloads.forEach(enqueteUniteLogementPayload -> { + + try { + if (enqueteUniteLogementPayload.getTerminalId() == null) { + SyncResponse syncResponse = new SyncResponse(enqueteUniteLogementPayload.getIdBackend(), + enqueteUniteLogementPayload.getExternalKey(), false, "Le terminal n'est pas précisé"); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalTpe = tpeRepository.findById(enqueteUniteLogementPayload.getTerminalId()); + if (optionalTpe.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(enqueteUniteLogementPayload.getIdBackend(), + enqueteUniteLogementPayload.getExternalKey(), false, "Le terminal n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + + if (enqueteUniteLogementPayload.getUserId() == null) { + SyncResponse syncResponse = new SyncResponse(enqueteUniteLogementPayload.getIdBackend(), + enqueteUniteLogementPayload.getExternalKey(), false, "L'enquêteur n'est pas précisé"); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalUser = userRepository.findById(enqueteUniteLogementPayload.getUserId()); + if (optionalUser.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(enqueteUniteLogementPayload.getIdBackend(), + enqueteUniteLogementPayload.getExternalKey(), false, "L'enquêteur précisé n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + if (enqueteUniteLogementPayload.getEnqueteId() == null) { + SyncResponse syncResponse = new SyncResponse(enqueteUniteLogementPayload.getIdBackend(), + enqueteUniteLogementPayload.getExternalKey(), false, "L'enquete de la parcelle n'est pas précisée"); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalEnquete = enqueteRepository.findFirstByExternalKeyAndTerminal_Id(enqueteUniteLogementPayload.getEnqueteId(), enqueteUniteLogementPayload.getTerminalId()); + if (optionalEnquete.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(enqueteUniteLogementPayload.getIdBackend(), + enqueteUniteLogementPayload.getExternalKey(), false, "L'enquete de la parcelle précisée n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + if (enqueteUniteLogementPayload.getPersonneId() == null) { + SyncResponse syncResponse = new SyncResponse(enqueteUniteLogementPayload.getIdBackend(), + enqueteUniteLogementPayload.getExternalKey(), false, "La personne n'est pas précisée."); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalPersonne = personneRepository.findById(enqueteUniteLogementPayload.getPersonneId()); + if (optionalPersonne.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(enqueteUniteLogementPayload.getIdBackend(), + enqueteUniteLogementPayload.getExternalKey(), false, "La personne précisée n'existe pas."); + syncResponses.add(syncResponse); + return; + } + } + + if (enqueteUniteLogementPayload.getUniteLogementId() == null) { + SyncResponse syncResponse = new SyncResponse(enqueteUniteLogementPayload.getIdBackend(), + enqueteUniteLogementPayload.getExternalKey(), false, "L'unité de logement n'est pas précisée."); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalBatiment = batimentRepository.findFirstByExternalKeyAndTerminal_Id(enqueteUniteLogementPayload.getUniteLogementId(), enqueteUniteLogementPayload.getTerminalId()); + if (optionalBatiment.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(enqueteUniteLogementPayload.getIdBackend(), + enqueteUniteLogementPayload.getExternalKey(), false, "L'unité de logement précisée n'existe pas."); + syncResponses.add(syncResponse); + return; + } + } + + EnqueteUniteLogement enqueteUniteLogement = new EnqueteUniteLogement(); + enqueteUniteLogementPayload.setSynchronise(true); + if (enqueteUniteLogementPayload.getIdBackend() != null && enqueteUniteLogementPayload.getIdBackend() != 0) { + Optional optionalEnqueteUniteLogement = enqueteUniteLogementRepository.findById(enqueteUniteLogementPayload.getIdBackend()); + if (!optionalEnqueteUniteLogement.isPresent()) { + enqueteUniteLogementPayload.setObservation("La clé interne est non valide : Enregistrement inexistant "); + enqueteUniteLogementPayload.setSynchronise(false); + } else { + //récupération de l'enquete en base de donnéees + enqueteUniteLogement = optionalEnqueteUniteLogement.get(); + //verification du statut de l'enquete (Si le status est en_cours ou rejet alors mise à jour) + if(enqueteUniteLogement.getStatusEnquete().equals(StatusEnquete.EN_COURS) || enqueteUniteLogement.getStatusEnquete().equals(StatusEnquete.REJETE)){ + // suppression des pièces, uploads et acteurs concernés + // TODO: 19/01/2025 S'assurer que la suppression des uploads est nécessaire et correcte + deleteAllUploadFromEnqueteUniteLogement(enqueteUniteLogement); + enqueteUniteLogement = getEnqueteUniteLogementFromEnqueteUniteLogementPayLoad(enqueteUniteLogement, enqueteUniteLogementPayload); + enqueteUniteLogement.setStatutEnregistrement(StatutEnregistrement.MISE_A_JOUR); + enqueteUniteLogementRepository.save(enqueteUniteLogement); + enqueteUniteLogementPayload.setIdBackend(enqueteUniteLogement.getId()); + }else{ + enqueteUniteLogementPayload.setObservation("Le statut de cette enquête est déjà VALIDE. Une mise à jour sur cette enquête n'est donc plus possible."); + } + } + } else { + // TODO: 19/01/2025 Est-il nécessaire des rechercher les lignes de la table enquete ayant meme [externalKey, terminalId, uniteLogementId, enqueteId] ? + // TODO: 19/01/2025 Si oui, que faire ? + enqueteUniteLogement = getEnqueteUniteLogementFromEnqueteUniteLogementPayLoad(enqueteUniteLogement, enqueteUniteLogementPayload); + enqueteUniteLogement.setStatutEnregistrement(StatutEnregistrement.NOUVELLE_INSERTION); + enqueteUniteLogement = enqueteUniteLogementRepository.save(enqueteUniteLogement); + enqueteUniteLogementPayload.setIdBackend(enqueteUniteLogement.getId()); + } + SyncResponse syncResponse = new SyncResponse(); + syncResponse.setObservation(enqueteUniteLogementPayload.getObservation()); + syncResponse.setExternalKey(enqueteUniteLogementPayload.getExternalKey()); + syncResponse.setSynchronise(enqueteUniteLogementPayload.isSynchronise()); + syncResponse.setIdBackend(enqueteUniteLogementPayload.getIdBackend()); + syncResponses.add(syncResponse); + } catch (Exception e) { + SyncResponse syncResponse = new SyncResponse(enqueteUniteLogementPayload.getIdBackend(), + enqueteUniteLogementPayload.getExternalKey(), false, "Erreur inattendue"); + syncResponses.add(syncResponse); + } + }); + + return syncResponses; + } + + private EnqueteUniteLogement getEnqueteUniteLogementFromEnqueteUniteLogementPayLoad(EnqueteUniteLogement enqueteUniteLogement, EnqueteUniteLogementPayload enqueteUniteLogementPayload) { + + if (enqueteUniteLogementPayload.getPersonneId() != null) { + Optional optionalPersonne = personneRepository.findFirstByExternalKeyAndTerminal_Id(enqueteUniteLogementPayload.getPersonneId(), enqueteUniteLogementPayload.getTerminalId()); + enqueteUniteLogement.setPersonne(optionalPersonne.orElse(null)); + } + + if (enqueteUniteLogementPayload.getUniteLogementId() != null) { + Optional optionalUniteLogement = uniteLogementRepository.findFirstByExternalKeyAndTerminal_Id(enqueteUniteLogementPayload.getUniteLogementId(), enqueteUniteLogementPayload.getTerminalId()); + enqueteUniteLogement.setUniteLogement(optionalUniteLogement.orElse(null)); + } + + if (enqueteUniteLogementPayload.getEnqueteId() != null) { + Optional optionalEnquete = enqueteRepository.findFirstByExternalKeyAndTerminal_Id(enqueteUniteLogementPayload.getEnqueteId(), enqueteUniteLogementPayload.getTerminalId()); + enqueteUniteLogement.setEnquete(optionalEnquete.orElse(null)); + } + if (enqueteUniteLogementPayload.getTerminalId() != null) { + Optional optionalTpe = tpeRepository.findById(enqueteUniteLogementPayload.getTerminalId()); + enqueteUniteLogement.setTerminal(optionalTpe.orElse(null)); + } + + if (enqueteUniteLogementPayload.getUserId() != null) { + Optional optionalUser = userRepository.findById(enqueteUniteLogementPayload.getUserId()); + enqueteUniteLogement.setUser(optionalUser.orElse(null)); + } + + + enqueteUniteLogement.setSurface(enqueteUniteLogementPayload.getSurface()); + enqueteUniteLogement.setNbrePiece(enqueteUniteLogementPayload.getNbrePiece()); + enqueteUniteLogement.setNbreHabitant(enqueteUniteLogementPayload.getNbreHabitant()); + enqueteUniteLogement.setNbreMenage(enqueteUniteLogementPayload.getNbreMenage()); + enqueteUniteLogement.setEnLocation(enqueteUniteLogementPayload.isEnLocation()); + enqueteUniteLogement.setMontantMensuelLoyer(enqueteUniteLogementPayload.getMontantMensuelLoyer()); + enqueteUniteLogement.setNbreMoisEnLocation(enqueteUniteLogementPayload.getNbreMoisEnLocation()); + enqueteUniteLogement.setMontantLocatifAnnuelDeclare(enqueteUniteLogementPayload.getMontantLocatifAnnuelDeclare()); + enqueteUniteLogement.setSurfaceLouee(enqueteUniteLogementPayload.getSurfaceLouee()); + enqueteUniteLogement.setSbee(enqueteUniteLogementPayload.isSbee()); + enqueteUniteLogement.setSoneb(enqueteUniteLogementPayload.isSoneb()); + enqueteUniteLogement.setNumCompteurSbee(enqueteUniteLogementPayload.getNumCompteurSbee()); + enqueteUniteLogement.setNumCompteurSoneb(enqueteUniteLogementPayload.getNumCompteurSoneb()); + enqueteUniteLogement.setDateDebutExcemption(enqueteUniteLogementPayload.getDateDebutExcemption()); + enqueteUniteLogement.setDateFinExcemption(enqueteUniteLogementPayload.getDateFinExcemption()); + + enqueteUniteLogement.setExternalKey(enqueteUniteLogementPayload.getExternalKey()); + + return enqueteUniteLogement; + } + + private void deleteAllUploadFromEnqueteUniteLogement(EnqueteUniteLogement enqueteUniteLogement) { + } + + private void deleteAllUploadFromEnqueteBatiment(EnqueteBatiment enqueteBatiment) { + uploadRepository.deleteAllByEnqueteBatiment(enqueteBatiment); + } + + private EnqueteBatiment getEnqueteBatimentFromEnqueteBatimentPayLoad(EnqueteBatiment enqueteBatiment, EnqueteBatimentPayload enqueteBatimentPayload) { + + enqueteBatiment.setSurfaceAuSol(enqueteBatimentPayload.getSurfaceAuSol()); + enqueteBatiment.setAutreMenuisierie(enqueteBatimentPayload.getAutreMenuisierie()); + enqueteBatiment.setAutreMur(enqueteBatimentPayload.getAutreMur()); + enqueteBatiment.setSbee(enqueteBatimentPayload.isSbee()); + enqueteBatiment.setNumCompteurSbee(enqueteBatimentPayload.getNumCompteurSbee()); + enqueteBatiment.setSoneb(enqueteBatimentPayload.isSoneb()); + enqueteBatiment.setNumCompteurSoneb(enqueteBatimentPayload.getNumCompteurSoneb()); + enqueteBatiment.setNbreLotUnite(enqueteBatimentPayload.getNbreLotUnite()); + enqueteBatiment.setNbreUniteLocation(enqueteBatimentPayload.getNbreUniteLocation()); + enqueteBatiment.setSurfaceLouee(enqueteBatimentPayload.getSurfaceLouee()); + enqueteBatiment.setNbreMenage(enqueteBatimentPayload.getNbreMenage()); + enqueteBatiment.setNbreHabitant(enqueteBatimentPayload.getNbreHabitant()); + enqueteBatiment.setValeurMensuelleLocation(enqueteBatimentPayload.getValeurMensuelleLocation()); + enqueteBatiment.setNbreMoisLocation(enqueteBatimentPayload.getNbreMoisLocation()); + enqueteBatiment.setAutreCaracteristiquePhysique(enqueteBatimentPayload.getAutreCaracteristiquePhysique()); + enqueteBatiment.setDateDebutExcemption(enqueteBatimentPayload.getDateDebutExcemption()); + enqueteBatiment.setDateFinExcemption(enqueteBatimentPayload.getDateFinExcemption()); + enqueteBatiment.setExternalKey(enqueteBatimentPayload.getExternalKey()); + + + if (enqueteBatimentPayload.getPersonneId() != null) { + Optional optionalPersonne = personneRepository.findFirstByExternalKeyAndTerminal_Id(enqueteBatimentPayload.getPersonneId(), enqueteBatimentPayload.getTerminalId()); + enqueteBatiment.setPersonne(optionalPersonne.orElse(null)); + } + + if (enqueteBatimentPayload.getBatimentId() != null) { + Optional optionalBatiment = batimentRepository.findFirstByExternalKeyAndTerminal_Id(enqueteBatimentPayload.getBatimentId(), enqueteBatimentPayload.getTerminalId()); + enqueteBatiment.setBatiment(optionalBatiment.orElse(null)); + } + + if (enqueteBatimentPayload.getEnqueteId() != null) { + Optional optionalEnquete = enqueteRepository.findFirstByExternalKeyAndTerminal_Id(enqueteBatimentPayload.getEnqueteId(), enqueteBatimentPayload.getTerminalId()); + enqueteBatiment.setEnquete(optionalEnquete.orElse(null)); + } + if (enqueteBatimentPayload.getTerminalId() != null) { + Optional optionalTpe = tpeRepository.findById(enqueteBatimentPayload.getTerminalId()); + enqueteBatiment.setTerminal(optionalTpe.orElse(null)); + } + + if (enqueteBatimentPayload.getUserId() != null) { + Optional optionalUser = userRepository.findById(enqueteBatimentPayload.getUserId()); + enqueteBatiment.setUser(optionalUser.orElse(null)); + } + + return enqueteBatiment; + } + } diff --git a/src/main/java/io/gmss/infocad/interfaces/synchronisation/SynchronisationService.java b/src/main/java/io/gmss/infocad/interfaces/synchronisation/SynchronisationService.java index d9926e5..22ba824 100755 --- a/src/main/java/io/gmss/infocad/interfaces/synchronisation/SynchronisationService.java +++ b/src/main/java/io/gmss/infocad/interfaces/synchronisation/SynchronisationService.java @@ -13,13 +13,20 @@ import java.util.List; public interface SynchronisationService { public UserDecoupageSyncResponses getDecoupageAdminUserConnecter(); public ReferencesSyncResponses getReferencesSyncResponses(); - public SyncEnqueteAllDataResponse syncEnqueteAllData(EnqueteAllDataPayload enqueteAllDataPayload ); - public List syncPersonnes(List personnePayLoads ); - public List syncMembreGroupe(List membreGroupePayLoads ); - public List syncEnquete(List enquetePayLoads ); - public List syncParcelle(List parcellePayLoads ); - public List syncPiece(List piecePayLoads ); - public List syncActeurConcerne(List acteurConcernePayLoads ); + public SyncEnqueteAllDataResponse syncEnqueteAllData(EnqueteAllDataPayload enqueteAllDataPayload); + public List syncPersonnes(List personnePayLoads); + public List syncBatiment(List batimentPaylaods); + public List syncUniteLogement(List uniteLogementPaylaods); + public List syncCaracteristiqueBatiment(List caracteristiqueBatimentPaylods); + public List syncCaracteristiqueParcelle(List caracteristiqueParcellePaylods); + public List syncCaracteristiqueUniteLogement(List caracteristiqueUniteLogementPaylods); + public List syncMembreGroupe(List membreGroupePayLoads); + public List syncEnquete(List enquetePayLoads); + public List syncEnqueteBatiment(List enquetebatimentPayLoads); + public List syncEnqueteUniteLogement(List enqueteUniteLogementPayloads); + public List syncParcelle(List parcellePayLoads); + public List syncPiece(List piecePayLoads); + public List syncActeurConcerne(List acteurConcernePayLoads); public SyncResponse syncFiles(MultipartFile file, Long idBackend, Long externalKey, diff --git a/src/main/java/io/gmss/infocad/paylaods/request/BatimentPaylaod.java b/src/main/java/io/gmss/infocad/paylaods/request/BatimentPaylaod.java new file mode 100644 index 0000000..f987a75 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/request/BatimentPaylaod.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.paylaods.request; + +import lombok.Data; + +import java.time.LocalDate; + +@Data +public class BatimentPaylaod { + private Long idBackend; + private Long externalKey; + private Long terminalId; + private boolean synchronise; + private String nub; + private String code; + private LocalDate dateConstruction; + private Long parcelleId; + //private Long userId; + private String observation; + +} diff --git a/src/main/java/io/gmss/infocad/paylaods/request/CaracteristiqueBatimentPaylod.java b/src/main/java/io/gmss/infocad/paylaods/request/CaracteristiqueBatimentPaylod.java new file mode 100644 index 0000000..93bd976 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/request/CaracteristiqueBatimentPaylod.java @@ -0,0 +1,17 @@ +package io.gmss.infocad.paylaods.request; + +import lombok.Data; + +@Data +public class CaracteristiqueBatimentPaylod { + private Long idBackend; + private Long externalKey; + private boolean synchronise; + private Long terminalId; + + private Long enqueteBatimentId; + private Long caracteristiqueId; + private String valeur; + //private Long userId; + private String observation; +} diff --git a/src/main/java/io/gmss/infocad/paylaods/request/CaracteristiqueParcellePaylod.java b/src/main/java/io/gmss/infocad/paylaods/request/CaracteristiqueParcellePaylod.java new file mode 100644 index 0000000..e4a8f08 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/request/CaracteristiqueParcellePaylod.java @@ -0,0 +1,16 @@ +package io.gmss.infocad.paylaods.request; + +import lombok.Data; + +@Data +public class CaracteristiqueParcellePaylod { + private Long idBackend; + private Long externalKey; + private Long terminalId; + private boolean synchronise; + private Long enqueteId; + private Long caracteristiqueId; + private String valeur; + //private Long userId; + private String observation; +} diff --git a/src/main/java/io/gmss/infocad/paylaods/request/CaracteristiqueUniteLogementPaylod.java b/src/main/java/io/gmss/infocad/paylaods/request/CaracteristiqueUniteLogementPaylod.java new file mode 100644 index 0000000..2fb9c9e --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/request/CaracteristiqueUniteLogementPaylod.java @@ -0,0 +1,17 @@ +package io.gmss.infocad.paylaods.request; + +import lombok.Data; + +@Data +public class CaracteristiqueUniteLogementPaylod { + private Long idBackend; + private Long externalKey; + private Long terminalId; + private boolean synchronise; + + private Long enqueteUniteLogementId; + private Long caracteristiqueId; + private String valeur; + //private Long userId; + private String observation; +} diff --git a/src/main/java/io/gmss/infocad/paylaods/request/EnqueteBatimentPayload.java b/src/main/java/io/gmss/infocad/paylaods/request/EnqueteBatimentPayload.java new file mode 100644 index 0000000..ad2b1fe --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/request/EnqueteBatimentPayload.java @@ -0,0 +1,43 @@ +package io.gmss.infocad.paylaods.request; + +import lombok.Data; + +import java.time.LocalDate; + +@Data +public class EnqueteBatimentPayload { + + + private Long idBackend; + private Long externalKey; + + private Long terminalId; + + private boolean synchronise; + + private String observation; + + private float surfaceAuSol; + private String autreMenuisierie; + private String autreMur; + private boolean sbee; + private String numCompteurSbee; + private boolean soneb; + private String numCompteurSoneb; + private byte nbreLotUnite; + private byte nbreUniteLocation; + private float surfaceLouee; + private byte nbreMenage; + private byte nbreHabitant; + private float valeurMensuelleLocation; + private byte nbreMoisLocation; + private String autreCaracteristiquePhysique; + private LocalDate dateDebutExcemption; + private LocalDate dateFinExcemption; + + private Long enqueteId; + private Long personneId; + private Long batimentId; + private Long userId; + +} diff --git a/src/main/java/io/gmss/infocad/paylaods/request/EnquetePayLoad.java b/src/main/java/io/gmss/infocad/paylaods/request/EnquetePayLoad.java index 7f58dfd..5ae02c7 100644 --- a/src/main/java/io/gmss/infocad/paylaods/request/EnquetePayLoad.java +++ b/src/main/java/io/gmss/infocad/paylaods/request/EnquetePayLoad.java @@ -10,6 +10,8 @@ import java.time.LocalDate; public class EnquetePayLoad { private Long idBackend; private Long externalKey; + private Long terminalId; + private LocalDate dateEnquete; private LocalDate dateFinalisation; private boolean litige; @@ -22,7 +24,7 @@ public class EnquetePayLoad { private String observationParticuliere; private String observation; private boolean synchronise; - private Long terminalId; + ////////////////// private Long quartierId; private Long arrondissementId; @@ -34,4 +36,20 @@ public class EnquetePayLoad { private String codeEquipe; private String numeroTitreFoncier; + // Liste des champs ajoutées pour le compte du projet FISCAD + private String numEnterParcelle; + private String numRue; + private String nomRue; + private String emplacement; + private float altitude; + private float precision; + private byte nbreCoProprietaire; + private byte nbreIndivisiaire; + private String autreAdresse; + private String surface; + private byte nbreBatiment; + private byte nbrePiscine; + private LocalDate dateDebutExcemption; + private LocalDate dateFinExcemption; + } diff --git a/src/main/java/io/gmss/infocad/paylaods/request/EnqueteUniteLogementPayload.java b/src/main/java/io/gmss/infocad/paylaods/request/EnqueteUniteLogementPayload.java new file mode 100644 index 0000000..52739ad --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/request/EnqueteUniteLogementPayload.java @@ -0,0 +1,34 @@ +package io.gmss.infocad.paylaods.request; + +import lombok.Data; + +import java.time.LocalDate; + +@Data +public class EnqueteUniteLogementPayload { + private Long idBackend; + private Long externalKey; + private Long terminalId; + private boolean synchronise; + private String observation; + private Long userId; + private float surface; + private byte nbrePiece; + private byte nbreHabitant; + private byte nbreMenage; + private boolean enLocation; + private float montantMensuelLoyer; + private byte nbreMoisEnLocation; + private float montantLocatifAnnuelDeclare; + private float surfaceLouee; + private boolean sbee; + private boolean soneb; + private String numCompteurSbee; + private String numCompteurSoneb; + private LocalDate dateDebutExcemption; + private LocalDate dateFinExcemption; + private Long enqueteId; + private Long uniteLogementId; + private Long personneId; + +} diff --git a/src/main/java/io/gmss/infocad/paylaods/request/ParcellePayLoad.java b/src/main/java/io/gmss/infocad/paylaods/request/ParcellePayLoad.java index 1ca58a7..67df9ed 100644 --- a/src/main/java/io/gmss/infocad/paylaods/request/ParcellePayLoad.java +++ b/src/main/java/io/gmss/infocad/paylaods/request/ParcellePayLoad.java @@ -5,6 +5,8 @@ import lombok.Data; public class ParcellePayLoad { private Long idBackend; private Long externalKey; + private Long terminalId; + private String q; private String nup; private String nupProvisoire; @@ -17,7 +19,7 @@ public class ParcellePayLoad { private String p; private boolean synchronise; private String observation; - private Long terminalId; + private String numTitreFoncier; ///////////////////////////////// diff --git a/src/main/java/io/gmss/infocad/paylaods/request/UniteLogementPaylaod.java b/src/main/java/io/gmss/infocad/paylaods/request/UniteLogementPaylaod.java new file mode 100644 index 0000000..91c73c2 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/request/UniteLogementPaylaod.java @@ -0,0 +1,17 @@ +package io.gmss.infocad.paylaods.request; + +import lombok.Data; +@Data +public class UniteLogementPaylaod { + private Long idBackend; + private Long externalKey; + private Long terminalId; + private boolean synchronise; + + private String nul; + private String numeroEtage; + private String code; + private Long batimentId; + //private Long userId; + private String observation; +} diff --git a/src/main/java/io/gmss/infocad/paylaods/response/restoration/EnquetePayLoad.java b/src/main/java/io/gmss/infocad/paylaods/response/restoration/EnquetePayLoad.java index 2a1cbe5..5effe63 100644 --- a/src/main/java/io/gmss/infocad/paylaods/response/restoration/EnquetePayLoad.java +++ b/src/main/java/io/gmss/infocad/paylaods/response/restoration/EnquetePayLoad.java @@ -39,4 +39,19 @@ public interface EnquetePayLoad { public String getCodeEquipe(); public String getNumeroTitreFoncier(); + public String getNumEnterParcelle(); + public String getNumRue(); + public String getNomRue(); + public String getEmplacement(); + public float getAltitude(); + public float getPrecision(); + public byte getNbreCoProprietaire(); + public byte getNbreIndivisiaire(); + public String getAutreAdresse(); + public String getSurface(); + public byte getNbreBatiment(); + public byte getNbrePiscine(); + public LocalDate getDateDebutExcemption(); + public LocalDate getDateFinExcemption(); + } diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/metier/UploadRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/metier/UploadRepository.java index c35dbf4..dd60314 100644 --- a/src/main/java/io/gmss/infocad/repositories/infocad/metier/UploadRepository.java +++ b/src/main/java/io/gmss/infocad/repositories/infocad/metier/UploadRepository.java @@ -1,6 +1,8 @@ package io.gmss.infocad.repositories.infocad.metier; import io.gmss.infocad.entities.infocad.metier.Upload; +import io.gmss.infocad.entities.rfu.metier.EnqueteBatiment; +import io.gmss.infocad.entities.rfu.metier.EnqueteUniteLogement; import io.gmss.infocad.paylaods.response.restoration.UploadPayLoad; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; @@ -38,5 +40,8 @@ public interface UploadRepository extends JpaRepository { ,nativeQuery = true) List getUploadByTerminalId(Long terminalId); + void deleteAllByEnqueteBatiment(EnqueteBatiment enqueteBatiment); + void deleteAllByEnqueteUniteLogement(EnqueteUniteLogement enqueteUniteLogement); + ///////////////////////////////// } diff --git a/src/main/java/io/gmss/infocad/repositories/rfu/metier/BatimentRepository.java b/src/main/java/io/gmss/infocad/repositories/rfu/metier/BatimentRepository.java index 8014304..57e8d41 100755 --- a/src/main/java/io/gmss/infocad/repositories/rfu/metier/BatimentRepository.java +++ b/src/main/java/io/gmss/infocad/repositories/rfu/metier/BatimentRepository.java @@ -3,6 +3,10 @@ package io.gmss.infocad.repositories.rfu.metier; import io.gmss.infocad.entities.rfu.metier.Batiment; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + public interface BatimentRepository extends JpaRepository { + + Optional findFirstByExternalKeyAndTerminal_Id(Long externalKey,Long TerminalId); } diff --git a/src/main/java/io/gmss/infocad/repositories/rfu/metier/CaracteristiqueBatimentRepository.java b/src/main/java/io/gmss/infocad/repositories/rfu/metier/CaracteristiqueBatimentRepository.java index 6d4be8b..2a27a2c 100755 --- a/src/main/java/io/gmss/infocad/repositories/rfu/metier/CaracteristiqueBatimentRepository.java +++ b/src/main/java/io/gmss/infocad/repositories/rfu/metier/CaracteristiqueBatimentRepository.java @@ -1,8 +1,10 @@ package io.gmss.infocad.repositories.rfu.metier; import io.gmss.infocad.entities.rfu.metier.CaracteristiqueBatiment; +import io.gmss.infocad.entities.rfu.metier.EnqueteBatiment; import org.springframework.data.jpa.repository.JpaRepository; public interface CaracteristiqueBatimentRepository extends JpaRepository { + void deleteAllByEnqueteBatiment(EnqueteBatiment enqueteBatiment); } diff --git a/src/main/java/io/gmss/infocad/repositories/rfu/metier/CaracteristiqueParcelleRepository.java b/src/main/java/io/gmss/infocad/repositories/rfu/metier/CaracteristiqueParcelleRepository.java index 3d5e54f..610049a 100755 --- a/src/main/java/io/gmss/infocad/repositories/rfu/metier/CaracteristiqueParcelleRepository.java +++ b/src/main/java/io/gmss/infocad/repositories/rfu/metier/CaracteristiqueParcelleRepository.java @@ -1,8 +1,11 @@ package io.gmss.infocad.repositories.rfu.metier; +import io.gmss.infocad.entities.infocad.metier.Enquete; import io.gmss.infocad.entities.rfu.metier.CaracteristiqueParcelle; import org.springframework.data.jpa.repository.JpaRepository; public interface CaracteristiqueParcelleRepository extends JpaRepository { + + void deleteAllByEnquete(Enquete enquete); } diff --git a/src/main/java/io/gmss/infocad/repositories/rfu/metier/CaracteristiqueUniteLogementRepository.java b/src/main/java/io/gmss/infocad/repositories/rfu/metier/CaracteristiqueUniteLogementRepository.java index 758c04a..c5f2e94 100755 --- a/src/main/java/io/gmss/infocad/repositories/rfu/metier/CaracteristiqueUniteLogementRepository.java +++ b/src/main/java/io/gmss/infocad/repositories/rfu/metier/CaracteristiqueUniteLogementRepository.java @@ -1,8 +1,10 @@ package io.gmss.infocad.repositories.rfu.metier; import io.gmss.infocad.entities.rfu.metier.CaracteristiqueUniteLogement; +import io.gmss.infocad.entities.rfu.metier.EnqueteUniteLogement; import org.springframework.data.jpa.repository.JpaRepository; public interface CaracteristiqueUniteLogementRepository extends JpaRepository { + void deleteAllByEnqueteUniteLogement(EnqueteUniteLogement enqueteUniteLogement); } diff --git a/src/main/java/io/gmss/infocad/repositories/rfu/metier/EnqueteBatimentRepository.java b/src/main/java/io/gmss/infocad/repositories/rfu/metier/EnqueteBatimentRepository.java index d95fec2..8594b80 100755 --- a/src/main/java/io/gmss/infocad/repositories/rfu/metier/EnqueteBatimentRepository.java +++ b/src/main/java/io/gmss/infocad/repositories/rfu/metier/EnqueteBatimentRepository.java @@ -3,6 +3,10 @@ package io.gmss.infocad.repositories.rfu.metier; import io.gmss.infocad.entities.rfu.metier.EnqueteBatiment; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + public interface EnqueteBatimentRepository extends JpaRepository { + + Optional findFirstByExternalKeyAndTerminal_Id(Long externalKey,Long TerminalId); } diff --git a/src/main/java/io/gmss/infocad/repositories/rfu/metier/EnqueteUniteLogementRepository.java b/src/main/java/io/gmss/infocad/repositories/rfu/metier/EnqueteUniteLogementRepository.java index 383626a..9f2cf18 100755 --- a/src/main/java/io/gmss/infocad/repositories/rfu/metier/EnqueteUniteLogementRepository.java +++ b/src/main/java/io/gmss/infocad/repositories/rfu/metier/EnqueteUniteLogementRepository.java @@ -3,6 +3,9 @@ package io.gmss.infocad.repositories.rfu.metier; import io.gmss.infocad.entities.rfu.metier.EnqueteUniteLogement; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + public interface EnqueteUniteLogementRepository extends JpaRepository { + Optional findFirstByExternalKeyAndTerminal_Id(Long externalKey, Long TerminalId); } diff --git a/src/main/java/io/gmss/infocad/repositories/rfu/metier/UniteLogementRepository.java b/src/main/java/io/gmss/infocad/repositories/rfu/metier/UniteLogementRepository.java index 8f9fc73..c733a26 100755 --- a/src/main/java/io/gmss/infocad/repositories/rfu/metier/UniteLogementRepository.java +++ b/src/main/java/io/gmss/infocad/repositories/rfu/metier/UniteLogementRepository.java @@ -3,6 +3,9 @@ package io.gmss.infocad.repositories.rfu.metier; import io.gmss.infocad.entities.rfu.metier.UniteLogement; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + public interface UniteLogementRepository extends JpaRepository { + Optional findFirstByExternalKeyAndTerminal_Id(Long externalKey, Long TerminalId); } diff --git a/src/main/java/io/gmss/infocad/repositories/rfu/parametre/CaracteristiqueRepository.java b/src/main/java/io/gmss/infocad/repositories/rfu/parametre/CaracteristiqueRepository.java index b4522f4..225a465 100755 --- a/src/main/java/io/gmss/infocad/repositories/rfu/parametre/CaracteristiqueRepository.java +++ b/src/main/java/io/gmss/infocad/repositories/rfu/parametre/CaracteristiqueRepository.java @@ -9,4 +9,5 @@ import java.util.List; public interface CaracteristiqueRepository extends JpaRepository { List findAllByActifIsTrue(); + //Optional findFirstByExternalKeyAndTerminal_Id(Long externalKey, Long TerminalId); }