From db45d62a28cd942f84ba1e9dac5b18b32e2afce6 Mon Sep 17 00:00:00 2001 From: Christian AKPONA Date: Fri, 10 Jan 2025 00:25:33 +0100 Subject: [PATCH] Initial commit --- .gitignore | 5 + .mvn/wrapper/MavenWrapperDownloader.java | 117 ++ .mvn/wrapper/maven-wrapper.jar | Bin 0 -> 50710 bytes .mvn/wrapper/maven-wrapper.properties | 2 + Fiscad.iml | 26 + HELP.md | 9 + Jenkinsfile | 40 + jasperReport/andf.png | Bin 0 -> 29753 bytes jasperReport/listBlocParStructure.jrxml | 245 ++++ jasperReport/listEnqueteParBloc.jrxml | 419 ++++++ jasperReport/listEnqueteParFiltre.jrxml | 396 ++++++ mvnw | 310 +++++ mvnw.cmd | 182 +++ pom.xml | 144 +++ .../io/gmss/infocad/FiscadApplication.java | 22 + .../infocad/component/DataLoadConfig.java | 72 ++ .../infocad/configuration/AuditConfig.java | 26 + .../configuration/AuditorAwareImpl.java | 32 + .../infocad/configuration/JdbcConfig.java | 16 + .../configuration/SpringSecurityConfig.java | 208 +++ .../infocad/configuration/SwaggerConfig.java | 78 ++ .../gmss/infocad/configuration/WebConfig.java | 21 + .../infocad/controllers/OpenController.java | 47 + .../decoupage/ArrondissementController.java | 115 ++ .../decoupage/CommuneController.java | 115 ++ .../decoupage/DepartementController.java | 98 ++ .../decoupage/NationaliteController.java | 98 ++ .../decoupage/QuartierController.java | 115 ++ .../metier/ActeurConcerneController.java | 33 + .../infocad/metier/BlocController.java | 117 ++ .../infocad/metier/CommentaireController.java | 156 +++ .../infocad/metier/EnqueteController.java | 190 +++ .../infocad/metier/TpeController.java | 123 ++ .../infocad/metier/UploadController.java | 232 ++++ .../parametre/ModeAcquisitionController.java | 98 ++ .../parametre/NatureDomaineController.java | 98 ++ .../PositionRepresentationController.java | 98 ++ .../parametre/ProfessionController.java | 98 ++ .../SituationGeographiqueController.java | 98 ++ .../SituationMatrimonialeController.java | 98 ++ .../parametre/SourceDroitController.java | 98 ++ .../parametre/StructureController.java | 118 ++ .../parametre/TypeContestationController.java | 98 ++ .../parametre/TypeDomaineController.java | 98 ++ .../parametre/TypePersonneController.java | 98 ++ .../parametre/TypePieceController.java | 98 ++ .../TypeRepresentationController.java | 98 ++ .../notification/EmailController.java | 38 + .../report/ReportingController.java | 73 ++ .../parametre/CaracteristiqueController.java | 98 ++ .../TypeCaracteristiqueController.java | 98 ++ .../statistique/StatistiqueController.java | 52 + .../RestaurationController.java | 87 ++ .../SynchronisationController.java | 132 ++ .../controllers/user/AuthController.java | 106 ++ .../DemandeReinitialisationMPController.java | 158 +++ .../controllers/user/RoleController.java | 93 ++ .../controllers/user/UserController.java | 217 ++++ .../deserializer/LocalDateDeserializer.java | 18 + .../LocalDateTimeDeserializer.java | 18 + .../io/gmss/infocad/entities/BaseEntity.java | 39 + .../entities/decoupage/Arrondissement.java | 37 + .../infocad/entities/decoupage/Commune.java | 38 + .../entities/decoupage/Departement.java | 31 + .../entities/decoupage/Nationalite.java | 39 + .../infocad/entities/decoupage/Quartier.java | 31 + .../infocad/metier/ActeurConcerne.java | 69 + .../infocad/entities/infocad/metier/Bloc.java | 60 + .../entities/infocad/metier/Commentaire.java | 49 + .../entities/infocad/metier/Enquete.java | 221 ++++ .../infocad/metier/EnqueteFiltreResponse.java | 35 + .../entities/infocad/metier/MembreGroupe.java | 54 + .../entities/infocad/metier/Parcelle.java | 92 ++ .../entities/infocad/metier/Piece.java | 73 ++ .../infocad/entities/infocad/metier/Tpe.java | 40 + .../entities/infocad/metier/Upload.java | 76 ++ .../infocad/parametre/ModeAcquisition.java | 45 + .../infocad/parametre/NatureDomaine.java | 48 + .../entities/infocad/parametre/Personne.java | 89 ++ .../parametre/PositionRepresentation.java | 40 + .../infocad/parametre/Profession.java | 36 + .../parametre/SituationGeographique.java | 36 + .../parametre/SituationMatrimoniale.java | 35 + .../infocad/parametre/SourceDroit.java | 55 + .../infocad/parametre/SourceDroitExerce.java | 45 + .../entities/infocad/parametre/Structure.java | 57 + .../infocad/parametre/TypeContestation.java | 39 + .../infocad/parametre/TypeDomaine.java | 38 + .../infocad/parametre/TypePersonne.java | 40 + .../entities/infocad/parametre/TypePiece.java | 52 + .../infocad/parametre/TypeRepresentation.java | 43 + .../infocad/entities/rfu/metier/Batiment.java | 49 + .../rfu/metier/CaracteristiqueBatiment.java | 36 + .../rfu/metier/CaracteristiqueParcelle.java | 37 + .../metier/CaracteristiqueUniteLogement.java | 36 + .../entities/rfu/metier/EnqueteBatiment.java | 67 + .../rfu/metier/EnqueteUniteLogement.java | 66 + .../entities/rfu/metier/UniteLogement.java | 39 + .../rfu/parametre/Caracteristique.java | 43 + .../rfu/parametre/TypeCaracteristique.java | 37 + .../user/DemandeReinitialisationMP.java | 34 + .../io/gmss/infocad/entities/user/Role.java | 51 + .../io/gmss/infocad/entities/user/User.java | 72 ++ .../java/io/gmss/infocad/enums/Categorie.java | 8 + .../io/gmss/infocad/enums/CategoriePiece.java | 9 + .../io/gmss/infocad/enums/EtatDemande.java | 6 + .../io/gmss/infocad/enums/FormatRapport.java | 6 + .../java/io/gmss/infocad/enums/Origine.java | 6 + .../io/gmss/infocad/enums/PaymentStatus.java | 8 + .../io/gmss/infocad/enums/RoleActeur.java | 10 + src/main/java/io/gmss/infocad/enums/Sexe.java | 6 + .../io/gmss/infocad/enums/StatusEnquete.java | 9 + .../java/io/gmss/infocad/enums/TypeDroit.java | 7 + .../io/gmss/infocad/enums/TypeImmeuble.java | 7 + .../java/io/gmss/infocad/enums/UserRole.java | 11 + .../exceptions/BadRequestException.java | 11 + .../exceptions/FileStorageException.java | 10 + .../exceptions/MyFileNotFoundException.java | 16 + .../infocad/exceptions/NotFoundException.java | 11 + .../exceptions/ResourceNotFoundException.java | 30 + .../decoupage/ArrondissementServiceImpl.java | 82 ++ .../decoupage/CommuneServiceImpl.java | 81 ++ .../decoupage/DepartementServiceImpl.java | 73 ++ .../decoupage/NationaliteServiceImpl.java | 72 ++ .../decoupage/QuartierServiceImpl.java | 85 ++ .../metier/ActeurConcerneServiceImpl.java | 52 + .../infocad/metier/BlocServiceImpl.java | 142 +++ .../metier/CommentaireServiceImpl.java | 133 ++ .../infocad/metier/EnqueteServiceImpl.java | 382 ++++++ .../infocad/metier/ParcelleServiceImpl.java | 185 +++ .../infocad/metier/PieceServiceImpl.java | 43 + .../infocad/metier/TpeServiceImpl.java | 111 ++ .../parametre/ModeAcquisitionServiceImpl.java | 71 ++ .../parametre/NatureDomaineServiceImpl.java | 71 ++ .../PositionRepresentationServiceImpl.java | 71 ++ .../parametre/ProfessionServiceImpl.java | 71 ++ .../SituationGeographiqueServiceImpl.java | 71 ++ .../SituationMatrimonialeServiceImpl.java | 71 ++ .../parametre/SourceDroitServiceImpl.java | 72 ++ .../parametre/StructureServiceImpl.java | 87 ++ .../TypeContestationServiceImpl.java | 71 ++ .../parametre/TypeDomaineServiceImpl.java | 71 ++ .../parametre/TypePersonneServiceImpl.java | 71 ++ .../parametre/TypePieceServiceImpl.java | 72 ++ .../TypeRepresentationServiceImpl.java | 71 ++ .../notification/EmailServiceImpl.java | 509 ++++++++ .../rfu/metier/BatimentServiceImpl.java | 73 ++ .../CaracteristiqueBatimentServiceImpl.java | 73 ++ .../CaracteristiqueParcelleServiceImpl.java | 74 ++ ...racteristiqueUniteLogementServiceImpl.java | 74 ++ .../metier/EnqueteBatimentServiceImpl.java | 75 ++ .../EnqueteUniteLogementServiceImpl.java | 73 ++ .../rfu/metier/UniteLogementServiceImpl.java | 76 ++ .../parametre/CaracteristiqueServiceImpl.java | 73 ++ .../TypeCaracteristiqueServiceImpl.java | 73 ++ .../RestaurationServiceImpl.java | 136 ++ .../StatistiquesServiceImpl.java | 65 + .../SynchronisationServiceImpl.java | 1124 +++++++++++++++++ .../DemandeReinitialisationMPServiceImpl.java | 105 ++ .../implementations/user/RoleServiceImpl.java | 72 ++ .../implementations/user/UserServiceImpl.java | 301 +++++ .../decoupage/ArrondissementService.java | 22 + .../interfaces/decoupage/CommuneService.java | 21 + .../decoupage/DepartementService.java | 20 + .../decoupage/NationaliteService.java | 20 + .../interfaces/decoupage/QuartierService.java | 21 + .../infocad/metier/ActeurConcerneService.java | 20 + .../infocad/metier/BlocService.java | 25 + .../infocad/metier/CommentaireService.java | 30 + .../infocad/metier/EnqueteService.java | 42 + .../infocad/metier/MembreGroupeService.java | 20 + .../infocad/metier/ParcelleService.java | 22 + .../infocad/metier/PieceService.java | 20 + .../interfaces/infocad/metier/TpeService.java | 23 + .../parametre/ModeAcquisitionService.java | 20 + .../parametre/NatureDomaineService.java | 20 + .../infocad/parametre/PersonneService.java | 20 + .../PositionRepresentationService.java | 20 + .../infocad/parametre/ProfessionService.java | 20 + .../SituationGeographiqueService.java | 20 + .../SituationMatrimonialeService.java | 20 + .../parametre/SourceDroitExerceService.java | 20 + .../infocad/parametre/SourceDroitService.java | 20 + .../infocad/parametre/StructureService.java | 22 + .../parametre/TypeContestationService.java | 20 + .../infocad/parametre/TypeDomaineService.java | 20 + .../parametre/TypePersonneService.java | 20 + .../infocad/parametre/TypePieceService.java | 20 + .../parametre/TypeRepresentationService.java | 20 + .../interfaces/notification/EmailService.java | 9 + .../rfu/metier/BatimentService.java | 20 + .../CaracteristiqueBatimentService.java | 20 + .../CaracteristiqueParcelleService.java | 20 + .../CaracteristiqueUniteLogementService.java | 20 + .../rfu/metier/EnqueteBatimentService.java | 20 + .../metier/EnqueteUniteLogementService.java | 20 + .../rfu/metier/UniteLogementService.java | 20 + .../rfu/parametre/CaracteristiqueService.java | 20 + .../parametre/TypeCaracteristiqueService.java | 20 + .../statistique/StatistiquesService.java | 16 + .../synchronisation/RestaurationService.java | 20 + .../SynchronisationService.java | 38 + .../DemandeReinitialisationMPService.java | 23 + .../infocad/interfaces/user/RoleService.java | 27 + .../infocad/interfaces/user/UserService.java | 48 + .../io/gmss/infocad/paylaods/ApiResponse.java | 26 + .../io/gmss/infocad/paylaods/Critere.java | 20 + .../DemandeReinitialisationMPResponse.java | 14 + .../gmss/infocad/paylaods/EmailDetails.java | 23 + .../paylaods/JwtAuthenticationResponse.java | 58 + .../java/io/gmss/infocad/paylaods/Login.java | 13 + .../gmss/infocad/paylaods/StatusResponse.java | 14 + .../paylaods/UserListByStructureResponse.java | 18 + .../io/gmss/infocad/paylaods/UserRequest.java | 17 + .../gmss/infocad/paylaods/UserResponse.java | 26 + .../request/ActeurConcernePayLoad.java | 35 + .../paylaods/request/CommentaireRequest.java | 16 + .../request/EnqueteAllDataPayload.java | 15 + .../paylaods/request/EnquetePayLoad.java | 37 + .../request/EnqueteTraitementPayLoad.java | 10 + .../request/FiltreEnquetePayLoad.java | 21 + .../paylaods/request/MembreGroupePayLoad.java | 22 + .../paylaods/request/ParcellePayLoad.java | 31 + .../paylaods/request/PersonnePayLoad.java | 77 ++ .../paylaods/request/PiecePayLoad.java | 30 + .../request/SyncCommentaireRequest.java | 13 + .../paylaods/request/UploadPayLoad.java | 27 + .../response/ArrondissementEnqResponse.java | 9 + .../response/ArrondissementSyncResponse.java | 8 + .../paylaods/response/BlocEnqResponse.java | 10 + .../paylaods/response/BlocSyncResponse.java | 8 + .../response/CommentaireResponse.java | 13 + .../paylaods/response/CommuneEnqResponse.java | 9 + .../response/CommuneSyncResponse.java | 8 + .../response/DepartementEnqResponse.java | 8 + .../response/DepartementSyncResponse.java | 7 + .../response/EnqueteNonSyncResponse.java | 13 + .../response/EnquetePayLoadResponse.java | 9 + .../paylaods/response/EnqueteResponse.java | 40 + .../response/FicheEnqueteResponse.java | 14 + .../paylaods/response/GenericIDResponse.java | 5 + .../ModesAcquisitionSourceSyncResponse.java | 8 + ...esAcquisitionTypePersonneSyncResponse.java | 7 + .../response/NatureDomaineSyncResponse.java | 9 + .../response/QuartierSyncResponse.java | 8 + .../response/ReferencesSyncResponses.java | 30 + .../response/SourceDroitsSyncResponse.java | 12 + .../StatEnqueteAdminDecoupageResponse.java | 9 + .../StatEnqueteAdminStructureResponse.java | 9 + .../response/StatEnqueteParBlocResponse.java | 8 + .../StatEnqueteParStatutResponse.java | 6 + .../paylaods/response/StructureResponse.java | 11 + .../response/SyncEnqueteAllDataResponse.java | 16 + .../paylaods/response/SyncResponse.java | 31 + ...TypePersonneNatureDomaineSyncResponse.java | 10 + .../response/UserDecoupageEnqResponses.java | 14 + .../response/UserDecoupageSyncResponses.java | 14 + .../report/BlocsParStructureResponse.java | 9 + .../report/EnqueteParBlocResponse.java | 13 + .../ZoneInterventionParStructureResponse.java | 8 + .../restoration/ActeurConcernePayLoad.java | 30 + .../response/restoration/EnquetePayLoad.java | 42 + .../restoration/MembreGroupePayLoad.java | 19 + .../response/restoration/ParcellePayLoad.java | 26 + .../response/restoration/PersonnePayLoad.java | 44 + .../response/restoration/PiecePayLoad.java | 32 + .../response/restoration/UploadPayLoad.java | 23 + .../proprietes/FileStorageProperties.java | 17 + .../decoupage/ArrondissementRepository.java | 36 + .../decoupage/CommuneRepository.java | 36 + .../decoupage/DepartementRepository.java | 17 + .../decoupage/NationaliteRepository.java | 12 + .../decoupage/QuartierRepository.java | 26 + .../metier/ActeurConcerneRepository.java | 41 + .../infocad/metier/BlocRepository.java | 86 ++ .../infocad/metier/CommentaireRepository.java | 18 + .../infocad/metier/EnqueteRepository.java | 191 +++ .../metier/MembreGroupeRepository.java | 33 + .../infocad/metier/ParcelleRepository.java | 41 + .../infocad/metier/PieceRepository.java | 50 + .../infocad/metier/TpeRepository.java | 27 + .../infocad/metier/UploadRepository.java | 42 + .../parametre/ModeAcquisitionRepository.java | 16 + .../parametre/NatureDomaineRepository.java | 23 + .../infocad/parametre/PersonneRepository.java | 51 + .../PositionRepresentationRepository.java | 7 + .../parametre/ProfessionRepository.java | 7 + .../SituationGeographiqueRepository.java | 7 + .../SituationMatrimonialeRepository.java | 7 + .../SourceDroitExerceRepository.java | 7 + .../parametre/SourceDroitRepository.java | 22 + .../parametre/StructureRepository.java | 21 + .../parametre/TypeContestationRepository.java | 7 + .../parametre/TypeDomaineRepository.java | 7 + .../parametre/TypePersonneRepository.java | 11 + .../parametre/TypePieceRepository.java | 7 + .../TypeRepresentationRepository.java | 7 + .../rfu/metier/BatimentRepository.java | 8 + .../CaracteristiqueBatimentRepository.java | 8 + .../CaracteristiqueParcelleRepository.java | 8 + ...aracteristiqueUniteLogementRepository.java | 8 + .../rfu/metier/EnqueteBatimentRepository.java | 8 + .../EnqueteUniteLogementRepository.java | 8 + .../rfu/metier/UniteLogementRepository.java | 8 + .../parametre/CaracteristiqueRepository.java | 12 + .../TypeCaracteristiqueRepository.java | 12 + .../DemandeReinitialisationMPRepository.java | 12 + .../repositories/user/RoleRepository.java | 15 + .../repositories/user/UserRepository.java | 21 + .../io/gmss/infocad/security/CurrentUser.java | 13 + .../security/CustomUserDetailsService.java | 45 + .../security/JwtAuthenticationEntryPoint.java | 27 + .../security/JwtAuthenticationFilter.java | 52 + .../TokenAuthentificationProvider.java | 105 ++ .../gmss/infocad/security/UserPrincipal.java | 85 ++ .../infocad/service/FileStorageService.java | 98 ++ .../gmss/infocad/service/GeometryService.java | 24 + .../infocad/service/PasswordGenerator.java | 24 + .../infocad/service/RandomEnumGenerator.java | 16 + .../gmss/infocad/service/ReportService.java | 230 ++++ .../gmss/infocad/service/StringManager.java | 25 + .../gmss/infocad/service/StringService.java | 32 + .../gmss/infocad/utils/FileNameGenerator.java | 16 + src/main/resources/application.properties | 51 + src/main/resources/static/index.html | 21 + src/main/resources/static/logo.avif | Bin 0 -> 18985 bytes src/main/resources/static/swagger-custom.css | 17 + src/main/resources/static/swagger-custom.html | 16 + .../IfuDistributionApplicationTests.java | 15 + 329 files changed, 18130 insertions(+) create mode 100644 .gitignore create mode 100755 .mvn/wrapper/MavenWrapperDownloader.java create mode 100755 .mvn/wrapper/maven-wrapper.jar create mode 100755 .mvn/wrapper/maven-wrapper.properties create mode 100644 Fiscad.iml create mode 100755 HELP.md create mode 100644 Jenkinsfile create mode 100644 jasperReport/andf.png create mode 100644 jasperReport/listBlocParStructure.jrxml create mode 100644 jasperReport/listEnqueteParBloc.jrxml create mode 100644 jasperReport/listEnqueteParFiltre.jrxml create mode 100755 mvnw create mode 100755 mvnw.cmd create mode 100755 pom.xml create mode 100755 src/main/java/io/gmss/infocad/FiscadApplication.java create mode 100755 src/main/java/io/gmss/infocad/component/DataLoadConfig.java create mode 100755 src/main/java/io/gmss/infocad/configuration/AuditConfig.java create mode 100755 src/main/java/io/gmss/infocad/configuration/AuditorAwareImpl.java create mode 100644 src/main/java/io/gmss/infocad/configuration/JdbcConfig.java create mode 100755 src/main/java/io/gmss/infocad/configuration/SpringSecurityConfig.java create mode 100755 src/main/java/io/gmss/infocad/configuration/SwaggerConfig.java create mode 100644 src/main/java/io/gmss/infocad/configuration/WebConfig.java create mode 100755 src/main/java/io/gmss/infocad/controllers/OpenController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/decoupage/ArrondissementController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/decoupage/CommuneController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/decoupage/DepartementController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/decoupage/NationaliteController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/decoupage/QuartierController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/infocad/metier/ActeurConcerneController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/infocad/metier/BlocController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/infocad/metier/CommentaireController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/infocad/metier/EnqueteController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/infocad/metier/TpeController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/infocad/metier/UploadController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/infocad/parametre/ModeAcquisitionController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/infocad/parametre/NatureDomaineController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/infocad/parametre/PositionRepresentationController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/infocad/parametre/ProfessionController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/infocad/parametre/SituationGeographiqueController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/infocad/parametre/SituationMatrimonialeController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/infocad/parametre/SourceDroitController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/infocad/parametre/StructureController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypeContestationController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypeDomaineController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypePersonneController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypePieceController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypeRepresentationController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/notification/EmailController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/report/ReportingController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/rfu/parametre/CaracteristiqueController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/rfu/parametre/TypeCaracteristiqueController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/statistique/StatistiqueController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/synchronisation/RestaurationController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/synchronisation/SynchronisationController.java create mode 100755 src/main/java/io/gmss/infocad/controllers/user/AuthController.java create mode 100644 src/main/java/io/gmss/infocad/controllers/user/DemandeReinitialisationMPController.java create mode 100755 src/main/java/io/gmss/infocad/controllers/user/RoleController.java create mode 100755 src/main/java/io/gmss/infocad/controllers/user/UserController.java create mode 100644 src/main/java/io/gmss/infocad/deserializer/LocalDateDeserializer.java create mode 100644 src/main/java/io/gmss/infocad/deserializer/LocalDateTimeDeserializer.java create mode 100755 src/main/java/io/gmss/infocad/entities/BaseEntity.java create mode 100644 src/main/java/io/gmss/infocad/entities/decoupage/Arrondissement.java create mode 100644 src/main/java/io/gmss/infocad/entities/decoupage/Commune.java create mode 100644 src/main/java/io/gmss/infocad/entities/decoupage/Departement.java create mode 100644 src/main/java/io/gmss/infocad/entities/decoupage/Nationalite.java create mode 100644 src/main/java/io/gmss/infocad/entities/decoupage/Quartier.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/metier/ActeurConcerne.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/metier/Bloc.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/metier/Commentaire.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/metier/Enquete.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/metier/EnqueteFiltreResponse.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/metier/MembreGroupe.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/metier/Parcelle.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/metier/Piece.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/metier/Tpe.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/metier/Upload.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/parametre/ModeAcquisition.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/parametre/NatureDomaine.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/parametre/Personne.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/parametre/PositionRepresentation.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/parametre/Profession.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/parametre/SituationGeographique.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/parametre/SituationMatrimoniale.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/parametre/SourceDroit.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/parametre/SourceDroitExerce.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/parametre/Structure.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/parametre/TypeContestation.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/parametre/TypeDomaine.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/parametre/TypePersonne.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/parametre/TypePiece.java create mode 100644 src/main/java/io/gmss/infocad/entities/infocad/parametre/TypeRepresentation.java create mode 100644 src/main/java/io/gmss/infocad/entities/rfu/metier/Batiment.java create mode 100644 src/main/java/io/gmss/infocad/entities/rfu/metier/CaracteristiqueBatiment.java create mode 100644 src/main/java/io/gmss/infocad/entities/rfu/metier/CaracteristiqueParcelle.java create mode 100644 src/main/java/io/gmss/infocad/entities/rfu/metier/CaracteristiqueUniteLogement.java create mode 100644 src/main/java/io/gmss/infocad/entities/rfu/metier/EnqueteBatiment.java create mode 100644 src/main/java/io/gmss/infocad/entities/rfu/metier/EnqueteUniteLogement.java create mode 100644 src/main/java/io/gmss/infocad/entities/rfu/metier/UniteLogement.java create mode 100644 src/main/java/io/gmss/infocad/entities/rfu/parametre/Caracteristique.java create mode 100644 src/main/java/io/gmss/infocad/entities/rfu/parametre/TypeCaracteristique.java create mode 100644 src/main/java/io/gmss/infocad/entities/user/DemandeReinitialisationMP.java create mode 100755 src/main/java/io/gmss/infocad/entities/user/Role.java create mode 100755 src/main/java/io/gmss/infocad/entities/user/User.java create mode 100644 src/main/java/io/gmss/infocad/enums/Categorie.java create mode 100644 src/main/java/io/gmss/infocad/enums/CategoriePiece.java create mode 100644 src/main/java/io/gmss/infocad/enums/EtatDemande.java create mode 100644 src/main/java/io/gmss/infocad/enums/FormatRapport.java create mode 100644 src/main/java/io/gmss/infocad/enums/Origine.java create mode 100644 src/main/java/io/gmss/infocad/enums/PaymentStatus.java create mode 100644 src/main/java/io/gmss/infocad/enums/RoleActeur.java create mode 100644 src/main/java/io/gmss/infocad/enums/Sexe.java create mode 100755 src/main/java/io/gmss/infocad/enums/StatusEnquete.java create mode 100644 src/main/java/io/gmss/infocad/enums/TypeDroit.java create mode 100644 src/main/java/io/gmss/infocad/enums/TypeImmeuble.java create mode 100644 src/main/java/io/gmss/infocad/enums/UserRole.java create mode 100755 src/main/java/io/gmss/infocad/exceptions/BadRequestException.java create mode 100644 src/main/java/io/gmss/infocad/exceptions/FileStorageException.java create mode 100644 src/main/java/io/gmss/infocad/exceptions/MyFileNotFoundException.java create mode 100755 src/main/java/io/gmss/infocad/exceptions/NotFoundException.java create mode 100644 src/main/java/io/gmss/infocad/exceptions/ResourceNotFoundException.java create mode 100644 src/main/java/io/gmss/infocad/implementations/decoupage/ArrondissementServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/decoupage/CommuneServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/decoupage/DepartementServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/decoupage/NationaliteServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/decoupage/QuartierServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/metier/ActeurConcerneServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/metier/BlocServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/metier/CommentaireServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/metier/EnqueteServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/metier/ParcelleServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/metier/PieceServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/metier/TpeServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/parametre/ModeAcquisitionServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/parametre/NatureDomaineServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/parametre/PositionRepresentationServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/parametre/ProfessionServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/parametre/SituationGeographiqueServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/parametre/SituationMatrimonialeServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/parametre/SourceDroitServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/parametre/StructureServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypeContestationServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypeDomaineServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypePersonneServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypePieceServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypeRepresentationServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/notification/EmailServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/rfu/metier/BatimentServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/rfu/metier/CaracteristiqueBatimentServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/rfu/metier/CaracteristiqueParcelleServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/rfu/metier/CaracteristiqueUniteLogementServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/rfu/metier/EnqueteBatimentServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/rfu/metier/EnqueteUniteLogementServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/rfu/metier/UniteLogementServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/rfu/parametre/CaracteristiqueServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/rfu/parametre/TypeCaracteristiqueServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/synchronisation/RestaurationServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/synchronisation/StatistiquesServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/synchronisation/SynchronisationServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/user/DemandeReinitialisationMPServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/user/RoleServiceImpl.java create mode 100644 src/main/java/io/gmss/infocad/implementations/user/UserServiceImpl.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/decoupage/ArrondissementService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/decoupage/CommuneService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/decoupage/DepartementService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/decoupage/NationaliteService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/decoupage/QuartierService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/metier/ActeurConcerneService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/metier/BlocService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/metier/CommentaireService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/metier/EnqueteService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/metier/MembreGroupeService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/metier/ParcelleService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/metier/PieceService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/metier/TpeService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/parametre/ModeAcquisitionService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/parametre/NatureDomaineService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/parametre/PersonneService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/parametre/PositionRepresentationService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/parametre/ProfessionService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/parametre/SituationGeographiqueService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/parametre/SituationMatrimonialeService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/parametre/SourceDroitExerceService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/parametre/SourceDroitService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/parametre/StructureService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypeContestationService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypeDomaineService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypePersonneService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypePieceService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypeRepresentationService.java create mode 100644 src/main/java/io/gmss/infocad/interfaces/notification/EmailService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/rfu/metier/BatimentService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/rfu/metier/CaracteristiqueBatimentService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/rfu/metier/CaracteristiqueParcelleService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/rfu/metier/CaracteristiqueUniteLogementService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/rfu/metier/EnqueteBatimentService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/rfu/metier/EnqueteUniteLogementService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/rfu/metier/UniteLogementService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/rfu/parametre/CaracteristiqueService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/rfu/parametre/TypeCaracteristiqueService.java create mode 100644 src/main/java/io/gmss/infocad/interfaces/statistique/StatistiquesService.java create mode 100644 src/main/java/io/gmss/infocad/interfaces/synchronisation/RestaurationService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/synchronisation/SynchronisationService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/user/DemandeReinitialisationMPService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/user/RoleService.java create mode 100755 src/main/java/io/gmss/infocad/interfaces/user/UserService.java create mode 100755 src/main/java/io/gmss/infocad/paylaods/ApiResponse.java create mode 100755 src/main/java/io/gmss/infocad/paylaods/Critere.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/DemandeReinitialisationMPResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/EmailDetails.java create mode 100755 src/main/java/io/gmss/infocad/paylaods/JwtAuthenticationResponse.java create mode 100755 src/main/java/io/gmss/infocad/paylaods/Login.java create mode 100755 src/main/java/io/gmss/infocad/paylaods/StatusResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/UserListByStructureResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/UserRequest.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/UserResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/request/ActeurConcernePayLoad.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/request/CommentaireRequest.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/request/EnqueteAllDataPayload.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/request/EnquetePayLoad.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/request/EnqueteTraitementPayLoad.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/request/FiltreEnquetePayLoad.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/request/MembreGroupePayLoad.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/request/ParcellePayLoad.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/request/PersonnePayLoad.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/request/PiecePayLoad.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/request/SyncCommentaireRequest.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/request/UploadPayLoad.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/ArrondissementEnqResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/ArrondissementSyncResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/BlocEnqResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/BlocSyncResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/CommentaireResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/CommuneEnqResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/CommuneSyncResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/DepartementEnqResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/DepartementSyncResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/EnqueteNonSyncResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/EnquetePayLoadResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/EnqueteResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/FicheEnqueteResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/GenericIDResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/ModesAcquisitionSourceSyncResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/ModesAcquisitionTypePersonneSyncResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/NatureDomaineSyncResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/QuartierSyncResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/ReferencesSyncResponses.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/SourceDroitsSyncResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/StatEnqueteAdminDecoupageResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/StatEnqueteAdminStructureResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/StatEnqueteParBlocResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/StatEnqueteParStatutResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/StructureResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/SyncEnqueteAllDataResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/SyncResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/TypePersonneNatureDomaineSyncResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/UserDecoupageEnqResponses.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/UserDecoupageSyncResponses.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/report/BlocsParStructureResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/report/EnqueteParBlocResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/report/ZoneInterventionParStructureResponse.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/restoration/ActeurConcernePayLoad.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/restoration/EnquetePayLoad.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/restoration/MembreGroupePayLoad.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/restoration/ParcellePayLoad.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/restoration/PersonnePayLoad.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/restoration/PiecePayLoad.java create mode 100644 src/main/java/io/gmss/infocad/paylaods/response/restoration/UploadPayLoad.java create mode 100644 src/main/java/io/gmss/infocad/proprietes/FileStorageProperties.java create mode 100755 src/main/java/io/gmss/infocad/repositories/decoupage/ArrondissementRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/decoupage/CommuneRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/decoupage/DepartementRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/decoupage/NationaliteRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/decoupage/QuartierRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/metier/ActeurConcerneRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/metier/BlocRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/metier/CommentaireRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/metier/EnqueteRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/metier/MembreGroupeRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/metier/ParcelleRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/metier/PieceRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/metier/TpeRepository.java create mode 100644 src/main/java/io/gmss/infocad/repositories/infocad/metier/UploadRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/parametre/ModeAcquisitionRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/parametre/NatureDomaineRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/parametre/PersonneRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/parametre/PositionRepresentationRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/parametre/ProfessionRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/parametre/SituationGeographiqueRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/parametre/SituationMatrimonialeRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/parametre/SourceDroitExerceRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/parametre/SourceDroitRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/parametre/StructureRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypeContestationRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypeDomaineRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypePersonneRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypePieceRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypeRepresentationRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/rfu/metier/BatimentRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/rfu/metier/CaracteristiqueBatimentRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/rfu/metier/CaracteristiqueParcelleRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/rfu/metier/CaracteristiqueUniteLogementRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/rfu/metier/EnqueteBatimentRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/rfu/metier/EnqueteUniteLogementRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/rfu/metier/UniteLogementRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/rfu/parametre/CaracteristiqueRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/rfu/parametre/TypeCaracteristiqueRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/user/DemandeReinitialisationMPRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/user/RoleRepository.java create mode 100755 src/main/java/io/gmss/infocad/repositories/user/UserRepository.java create mode 100755 src/main/java/io/gmss/infocad/security/CurrentUser.java create mode 100755 src/main/java/io/gmss/infocad/security/CustomUserDetailsService.java create mode 100755 src/main/java/io/gmss/infocad/security/JwtAuthenticationEntryPoint.java create mode 100755 src/main/java/io/gmss/infocad/security/JwtAuthenticationFilter.java create mode 100755 src/main/java/io/gmss/infocad/security/TokenAuthentificationProvider.java create mode 100755 src/main/java/io/gmss/infocad/security/UserPrincipal.java create mode 100644 src/main/java/io/gmss/infocad/service/FileStorageService.java create mode 100644 src/main/java/io/gmss/infocad/service/GeometryService.java create mode 100644 src/main/java/io/gmss/infocad/service/PasswordGenerator.java create mode 100644 src/main/java/io/gmss/infocad/service/RandomEnumGenerator.java create mode 100644 src/main/java/io/gmss/infocad/service/ReportService.java create mode 100644 src/main/java/io/gmss/infocad/service/StringManager.java create mode 100644 src/main/java/io/gmss/infocad/service/StringService.java create mode 100644 src/main/java/io/gmss/infocad/utils/FileNameGenerator.java create mode 100755 src/main/resources/application.properties create mode 100644 src/main/resources/static/index.html create mode 100644 src/main/resources/static/logo.avif create mode 100644 src/main/resources/static/swagger-custom.css create mode 100644 src/main/resources/static/swagger-custom.html create mode 100755 src/test/java/io/gmss/infocad/IfuDistributionApplicationTests.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cbcb14a --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +infocad.log* +.idea +.DS_Store +target/* +ansible diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100755 index 0000000..e76d1f3 --- /dev/null +++ b/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,117 @@ +/* + * Copyright 2007-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import java.net.*; +import java.io.*; +import java.nio.channels.*; +import java.util.Properties; + +public class MavenWrapperDownloader { + + private static final String WRAPPER_VERSION = "0.5.6"; + /** + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. + */ + private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to + * use instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; + + /** + * Path where the maven-wrapper.jar will be saved to. + */ + private static final String MAVEN_WRAPPER_JAR_PATH = + ".mvn/wrapper/maven-wrapper.jar"; + + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if(mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { + try { + if(mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... + } + } + } + System.out.println("- Downloading from: " + url); + + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if(!outputFile.getParentFile().exists()) { + if(!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); + } + } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } + +} diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar new file mode 100755 index 0000000000000000000000000000000000000000..2cc7d4a55c0cd0092912bf49ae38b3a9e3fd0054 GIT binary patch literal 50710 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 EfAhh=DF6Tf literal 0 HcmV?d00001 diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties new file mode 100755 index 0000000..abd303b --- /dev/null +++ b/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.2/apache-maven-3.8.2-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar diff --git a/Fiscad.iml b/Fiscad.iml new file mode 100644 index 0000000..7443cac --- /dev/null +++ b/Fiscad.iml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HELP.md b/HELP.md new file mode 100755 index 0000000..84dbb4b --- /dev/null +++ b/HELP.md @@ -0,0 +1,9 @@ +# Getting Started + +### Reference Documentation +For further reference, please consider the following sections: + +* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html) +* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/2.5.4/maven-plugin/reference/html/) +* [Create an OCI image](https://docs.spring.io/spring-boot/docs/2.5.4/maven-plugin/reference/html/#build-image) + diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..4f29809 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,40 @@ +pipeline { + agent any + + tools { + jdk 'jenkins-jdk' + maven 'jenkins-maven' + } + + stages { + stage('Checkout') { + steps { + git url: 'https://gitlab.com/christianakpona/infocad.git', branch: 'main' + } + } + + stage('Build') { + steps { + sh 'mvn clean package' + } + } + + stage('Lint') { + steps { + // Change directory to 'ansible/' before running ansible-lint + dir('ansible') { + sh '/usr/local/bin/ansible-lint playbook_jenkins.yml' + } + } + } + + stage('Deploy') { + steps { + // Change directory to 'ansible/' before running ansible-playbook + dir('ansible') { + sh '/usr/local/bin/ansible-playbook playbook_jenkins.yml' + } + } + } + } +} \ No newline at end of file diff --git a/jasperReport/andf.png b/jasperReport/andf.png new file mode 100644 index 0000000000000000000000000000000000000000..f234ab97559445f1ffbe065183210396e5a3b5c4 GIT binary patch literal 29753 zcmb5Vbyr-?^F10u0>L4;2T5>ux8M#lxJw9b!QCxDkilJt!QI^l3+_X3clRI9=X>A4 z{pYMBy-u&{u3cSwcXfn{k~A7J5%Rlt@6cprzN@`^2RHk6ANvX6?OL`hHudh^uXnQF z#Q^RGN12G;IQ@?U5~uAYfPGB0Ph7d+9IyzAiG(K#oj;E1Q6w@Rqn7G-QA{ru+9?5~ zV3@W4hpEG_&AtimTVcTGnW6?Jt2MS%dAR$${23~S*+sj zt?_nl=hDj`LBtfGq+{xWD-v>Vtl=hBPgjbO9nXWJr90Lv2PayS!w*WkRhabu9 zD>uHe_1XZ(a`JjUeCNMMDq<|3dtNms_IK%Gy8p8mAozTkV^yzPeRzR2x_F0#z|PvB z%ZA6p==*No$6I8HnK;CEO*nGhuOnF6jj^ZHtD`SoqSLg$n(OXhi{IPBNl4hD_mun& ziAAdX`_{m%!^Ffy?j!V5-NUaBY2HpEX+GS@q@CeiRfappldv_%c*%y)m&G&@KjEc1 z%Y@TxzZY$#ywZgQt*j2e*O!nTF~4c|w2DIG-cVe*(_!bG(cuZVt)V#a>A6ZnmeG3A zL}|rMOP`-QKY#wr^_W`o^!VxFbT60+)lKZHnR1sn_VkH}6%U0glf~Nvh+^=iMhnsa$vvNhy zI5rH!^6QKUjUw;4W{fAfdAxKNI$*F7=p-*{BjJ-z-S?Jy@5|djIANpvJ6-Ea_qjKB zuZo>y!p0ypn#L90l`kyUnxY*F42@tcr|nBHS8><1{39d=QZSF(MuODYT?k$&Y~uv{ z;>wY$N@fuEXumFKw7cN`yL_6Z@MgwEi+c?o<`$<8<`o{q^Kfr}0dLx))EWs`Gsn%I zqcb4KW4?YULCm%_SnRmEA^rDoc`>Ed_G2Cksbtm|B@JT6$Dm&{0GAiuo3P&8r=;(6 z&4hQUl0De-ZBa@igSox&Sf8GK$Qtx{Kc&w;f)`X4<$qiCLB&u2kS*jadTy%|Y)P6j z0;H)b+Vg^21VPA_d1(>@y0QvxvSP2vqNT9YSGpbi+=CKvmY6zGYE7pL&qLX^1+00A z(hbn|nDF@rAfX9Pb>zEzW4=gGdQrb6WP8WNK36B+R9CN}@$)Vdx%F2N4eiw0g==DC zT=5eG73`UdLYVAsMsPKT^Giz*uXfJow_-KopA3sY`FAwK+X{hP_5wBR9nzjq3kNMc z_=ekc&Q2t+@zSc@4g@b4aaHqZ-JC;?CBkt zh8?g*SmZDuA5GbxXH zpLm_Vu{Xv1AVc!Hd3G>cLASUOVjOely~qk!z2K|i;OUOXN30i`UpC@i&WHkeX>R&; z3PtS5llO%i8j31BvGJwmIwfi~muR+Z%(j#G#BV(UF53C+w-rBDd?jSg>o0W?0!JR| z#Ur0ti35X^+F&}LSqNt2)btFMbErIOm9KK>B}S$lDS8c7FgExj@fdvUbKa¬k-C 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 z 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 literal 0 HcmV?d00001 diff --git a/jasperReport/listBlocParStructure.jrxml b/jasperReport/listBlocParStructure.jrxml new file mode 100644 index 0000000..32e944f --- /dev/null +++ b/jasperReport/listBlocParStructure.jrxml @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <band height="134" splitType="Stretch"> + <staticText> + <reportElement x="179" y="75" width="421" height="30" uuid="10a08362-9a39-4235-a0d1-33a733f0861e"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font size="16" isBold="true"/> + </textElement> + <text><![CDATA[LISTE DES BLOCS]]></text> + </staticText> + <staticText> + <reportElement x="0" y="112" width="90" height="20" uuid="4368e598-76c3-4ad7-867e-c3c9efe5ebd8"/> + <textElement textAlignment="Left" verticalAlignment="Middle"> + <font size="14" isBold="true"/> + </textElement> + <text><![CDATA[Structure :]]></text> + </staticText> + <textField > + <reportElement x="90" y="112" width="590" height="20" uuid="890f9a0d-98c7-4acd-becc-ea41d147c44d"/> + <textElement> + <font size="12"/> + </textElement> + <textFieldExpression><![CDATA[$P{structure}]]></textFieldExpression> + </textField> + <image> + <reportElement x="0" y="0" width="200" height="70" uuid="e194874d-8732-48bc-b829-5eee66cd557d"/> + <imageExpression><![CDATA[$P{logoGauche}]]></imageExpression> + </image> + <image> + <reportElement x="455" y="0" width="100" height="70" uuid="f2e94782-7bfb-4a44-b7d7-8a1815583080"/> + <imageExpression><![CDATA[$P{logoDroit}]]></imageExpression> + </image> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jasperReport/listEnqueteParBloc.jrxml b/jasperReport/listEnqueteParBloc.jrxml new file mode 100644 index 0000000..6a0e959 --- /dev/null +++ b/jasperReport/listEnqueteParBloc.jrxml @@ -0,0 +1,419 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <band height="170" splitType="Stretch"> + <staticText> + <reportElement x="302" y="70" width="190" height="30" uuid="10a08362-9a39-4235-a0d1-33a733f0861e"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font size="16" isBold="true"/> + </textElement> + <text><![CDATA[LISTE DES ENQUETES]]></text> + </staticText> + <staticText> + <reportElement x="0" y="112" width="120" height="20" uuid="4368e598-76c3-4ad7-867e-c3c9efe5ebd8"/> + <textElement textAlignment="Left" verticalAlignment="Middle"> + <font size="14" isBold="true"/> + </textElement> + <text><![CDATA[Structure :]]></text> + </staticText> + <textField > + <reportElement x="120" y="112" width="260" height="20" uuid="890f9a0d-98c7-4acd-becc-ea41d147c44d"/> + <textElement> + <font size="12"/> + </textElement> + <textFieldExpression><![CDATA[$P{structure}]]></textFieldExpression> + </textField> + <image> + <reportElement x="0" y="0" width="200" height="70" uuid="e194874d-8732-48bc-b829-5eee66cd557d"/> + <imageExpression><![CDATA[$P{logoGauche}]]></imageExpression> + </image> + <textField > + <reportElement x="470" y="112" width="330" height="20" uuid="e89fe5e8-8c95-465a-963a-38c89fe7b45c"/> + <textElement> + <font size="14"/> + </textElement> + <textFieldExpression><![CDATA[$P{bloc}]]></textFieldExpression> + </textField> + <staticText> + <reportElement x="380" y="112" width="90" height="20" uuid="78fbd365-5e80-486f-8b79-fba9f57ff757"/> + <textElement textAlignment="Left" verticalAlignment="Middle"> + <font size="14" isBold="true"/> + </textElement> + <text><![CDATA[Bloc :]]></text> + </staticText> + <staticText> + <reportElement x="380" y="150" width="90" height="20" uuid="104de4fb-c535-4e31-a61b-a5c5066de836"/> + <textElement textAlignment="Left" verticalAlignment="Middle"> + <font size="14" isBold="true"/> + </textElement> + <text><![CDATA[Commune :]]></text> + </staticText> + <textField > + <reportElement x="470" y="150" width="330" height="20" uuid="7944bfcb-94e3-4fc3-b717-a65820dd64de"/> + <textElement> + <font size="14"/> + </textElement> + <textFieldExpression><![CDATA[$P{commune}]]></textFieldExpression> + </textField> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jasperReport/listEnqueteParFiltre.jrxml b/jasperReport/listEnqueteParFiltre.jrxml new file mode 100644 index 0000000..9cb5568 --- /dev/null +++ b/jasperReport/listEnqueteParFiltre.jrxml @@ -0,0 +1,396 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <band height="106" splitType="Stretch"> + <staticText> + <reportElement x="240" y="70" width="400" height="30" uuid="10a08362-9a39-4235-a0d1-33a733f0861e"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font size="16" isBold="true"/> + </textElement> + <text><![CDATA[LISTE DES ENQUETES]]></text> + </staticText> + <image> + <reportElement x="0" y="0" width="200" height="70" uuid="e194874d-8732-48bc-b829-5eee66cd557d"/> + <imageExpression><![CDATA[$P{logoGauche}]]></imageExpression> + </image> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mvnw b/mvnw new file mode 100755 index 0000000..a16b543 --- /dev/null +++ b/mvnw @@ -0,0 +1,310 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mvnw.cmd b/mvnw.cmd new file mode 100755 index 0000000..c8d4337 --- /dev/null +++ b/mvnw.cmd @@ -0,0 +1,182 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/pom.xml b/pom.xml new file mode 100755 index 0000000..89da03f --- /dev/null +++ b/pom.xml @@ -0,0 +1,144 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.5.4 + + + io.gmss + Fiscad + 0.0.1-SNAPSHOT + fiscad + Application de collecte des données socio-foncières + + 11 + 2020.0.3 + + + + org.projectlombok + lombok + 1.18.30 + provided + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-validation + + + io.springfox + springfox-boot-starter + 3.0.0 + + + io.springfox + springfox-oas + 3.0.0 + + + io.jsonwebtoken + jjwt + 0.9.1 + + + org.postgresql + postgresql + runtime + + + + net.sf.jasperreports + jasperreports + 6.21.3 + + + com.lowagie + itext + + + + + com.lowagie + itext + 2.1.7 + + + + org.codehaus.groovy + groovy-all + 2.4.5 + + + org.springframework.boot + spring-boot-starter-mail + + + + + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/src/main/java/io/gmss/infocad/FiscadApplication.java b/src/main/java/io/gmss/infocad/FiscadApplication.java new file mode 100755 index 0000000..8596a20 --- /dev/null +++ b/src/main/java/io/gmss/infocad/FiscadApplication.java @@ -0,0 +1,22 @@ +package io.gmss.infocad; + +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.context.properties.ConfigurationPropertiesScan; +import springfox.documentation.oas.annotations.EnableOpenApi; + +@SpringBootApplication +@EnableOpenApi +@ConfigurationPropertiesScan +public class FiscadApplication implements CommandLineRunner { + + public static void main(String[] args) { + SpringApplication.run(FiscadApplication.class, args); + } + + @Override + public void run(String... args) throws Exception { + System.out.println("InfoCad Application start completed"); + } +} diff --git a/src/main/java/io/gmss/infocad/component/DataLoadConfig.java b/src/main/java/io/gmss/infocad/component/DataLoadConfig.java new file mode 100755 index 0000000..8edf562 --- /dev/null +++ b/src/main/java/io/gmss/infocad/component/DataLoadConfig.java @@ -0,0 +1,72 @@ +package io.gmss.infocad.component; + +import io.gmss.infocad.entities.user.Role; +import io.gmss.infocad.entities.user.User; +import io.gmss.infocad.enums.UserRole; +import io.gmss.infocad.repositories.user.RoleRepository; +import io.gmss.infocad.repositories.user.UserRepository; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.HashSet; +import java.util.Set; + +@Component +public class DataLoadConfig { + + private final RoleRepository roleRepository; + private final UserRepository userRepository; + private final PasswordEncoder passwordEncoder; + + @Value("${app.sourcemind.env.defaultpassword}") + private String defaultPassword; + + public DataLoadConfig(RoleRepository roleRepository, UserRepository userRepository, PasswordEncoder passwordEncoder) { + this.roleRepository = roleRepository; + this.userRepository = userRepository; + this.passwordEncoder = passwordEncoder; + } + + + @PostConstruct + public void loadData(){ + loadRoles(); + loadUsers(); + } + + + + public void loadRoles(){ + + if(roleRepository.count() > 0) return; + Set roles = new HashSet<>(); + roles.add(new Role(UserRole.ROLE_USER, "Role attribué aux utilisateurs simples.")); + roles.add(new Role(UserRole.ROLE_ADMIN, "Role attribué aux administrateurs du système.")); + roles.add(new Role(UserRole.ROLE_DIRECTEUR, "Role attribué aux directeurs des structures.")); + roles.add(new Role(UserRole.ROLE_SUPERVISEUR, "Role attribué aux superviseurs des structures sur le terrain.")); + roles.add(new Role(UserRole.ROLE_ENQUETEUR, "Role attribué aux enquêteurs des structures sur le terrain.")); + roles.add(new Role(UserRole.ROLE_ANONYMOUS, "Role attribué à toutes les personnes qui s'inscrivent en ligne pour le compte d'une structure.")); + roleRepository.saveAll(roles); + + } + + public void loadUsers(){ + if(userRepository.countAllByUsernameIsNotNull() == 0) { + User admin = new User(); + admin.setUsername("administrateur@infocad.bj"); + admin.setEmail("administrateur@infocad.bj"); + admin.setTel("N/A"); + admin.setNom("Administrateur"); + admin.setPrenom("Principal"); + admin.setPassword(passwordEncoder.encode(defaultPassword)); + admin.setActive(true); + Set roles = new HashSet<>(); + roles.add(roleRepository.findRoleByNom(UserRole.ROLE_ADMIN).get()); + admin.setRoles(roles); + userRepository.save(admin); + } + } + +} diff --git a/src/main/java/io/gmss/infocad/configuration/AuditConfig.java b/src/main/java/io/gmss/infocad/configuration/AuditConfig.java new file mode 100755 index 0000000..9eb1ff1 --- /dev/null +++ b/src/main/java/io/gmss/infocad/configuration/AuditConfig.java @@ -0,0 +1,26 @@ +package io.gmss.infocad.configuration; + + +import io.gmss.infocad.repositories.user.UserRepository; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.domain.AuditorAware; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; + +@Configuration +@EnableJpaAuditing(auditorAwareRef = "auditorProvider") +public class AuditConfig { + + private final UserRepository userRepository; + + public AuditConfig(UserRepository userRepository) { + this.userRepository = userRepository; + } + + + @Bean + public AuditorAware auditorProvider() { + return new AuditorAwareImpl(userRepository); + } + +} diff --git a/src/main/java/io/gmss/infocad/configuration/AuditorAwareImpl.java b/src/main/java/io/gmss/infocad/configuration/AuditorAwareImpl.java new file mode 100755 index 0000000..e433d64 --- /dev/null +++ b/src/main/java/io/gmss/infocad/configuration/AuditorAwareImpl.java @@ -0,0 +1,32 @@ +package io.gmss.infocad.configuration; + +import io.gmss.infocad.repositories.user.UserRepository; +import io.gmss.infocad.security.UserPrincipal; +import org.springframework.data.domain.AuditorAware; +import org.springframework.security.authentication.AnonymousAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; + +import java.util.Optional; + +public class AuditorAwareImpl implements AuditorAware { + + private final UserRepository userRepository; + + public AuditorAwareImpl(UserRepository userRepository) { + this.userRepository = userRepository; + } + + @Override + public Optional getCurrentAuditor() { + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + + if(authentication == null || !authentication.isAuthenticated() || authentication instanceof AnonymousAuthenticationToken){ + return Optional.empty(); + } + UserPrincipal userPrincipal = (UserPrincipal) authentication.getPrincipal(); + //return userRepository.findByUsername(userPrincipal.getUsername()).get().getId(); + return Optional.ofNullable(userPrincipal.getUser().getId()); + } +} diff --git a/src/main/java/io/gmss/infocad/configuration/JdbcConfig.java b/src/main/java/io/gmss/infocad/configuration/JdbcConfig.java new file mode 100644 index 0000000..3967f37 --- /dev/null +++ b/src/main/java/io/gmss/infocad/configuration/JdbcConfig.java @@ -0,0 +1,16 @@ +package io.gmss.infocad.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.jdbc.core.JdbcTemplate; + +import javax.sql.DataSource; + +@Configuration +public class JdbcConfig { + @Bean + public JdbcTemplate jdbcTemplate(DataSource dataSource) + { + return new JdbcTemplate(dataSource); + } +} diff --git a/src/main/java/io/gmss/infocad/configuration/SpringSecurityConfig.java b/src/main/java/io/gmss/infocad/configuration/SpringSecurityConfig.java new file mode 100755 index 0000000..005e7c7 --- /dev/null +++ b/src/main/java/io/gmss/infocad/configuration/SpringSecurityConfig.java @@ -0,0 +1,208 @@ +//package io.artcreativity.ifudistribution.config; +// +//import io.artcreativity.ifudistribution.security.CustomUserDetailsService; +//import io.artcreativity.ifudistribution.security.JwtAuthenticationEntryPoint; +//import io.artcreativity.ifudistribution.security.JwtAuthenticationFilter; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.http.HttpMethod; +//import org.springframework.security.authentication.AuthenticationManager; +//import org.springframework.security.config.BeanIds; +//import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +//import org.springframework.security.config.annotation.web.builders.HttpSecurity; +//import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +//import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +//import org.springframework.security.config.http.SessionCreationPolicy; +//import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +//import org.springframework.security.crypto.password.PasswordEncoder; +//import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +// +//@EnableWebSecurity +//@Configuration +//public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { +// +// private final CustomUserDetailsService customUserDetailsService; +// private final JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint; +// +// public SpringSecurityConfig(CustomUserDetailsService customUserDetailsService, JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint) { +// this.customUserDetailsService = customUserDetailsService; +// this.jwtAuthenticationEntryPoint = jwtAuthenticationEntryPoint; +// } +// +// @Override +// public void configure(AuthenticationManagerBuilder auth) throws Exception { +//// auth.userDetailsService(customUserDetailsService) +//// .passwordEncoder(getPasswordEncoder()); +// +// auth +// .ldapAuthentication() +// .userDnPatterns("uid={0},ou=people") +// .groupSearchBase("ou=groups") +// .contextSource() +// .url("ldap://localhost:5645/dc=artcreativity,dc=io") +// .and() +// .passwordCompare() +// .passwordEncoder(getPasswordEncoder()) +// .passwordAttribute("userPassword"); +// } +// +// @Bean(BeanIds.AUTHENTICATION_MANAGER) +// @Override +// public AuthenticationManager authenticationManagerBean() throws Exception{ +// return super.authenticationManagerBean(); +// } +// +// @Bean +// public PasswordEncoder getPasswordEncoder(){ +// return new BCryptPasswordEncoder(); +// } +// +// @Bean +// JwtAuthenticationFilter jwtAuthenticationFilter(){ +// return new JwtAuthenticationFilter(); +// } +// +// private static final String[] AUTH_WHITELIST = { +// +// // -- swagger ui +// "/swagger-resources/**", +// "/swagger-ui.html", +// "/swagger-ui/**", +// "/springfox/**", +// "/v3/api-docs", +// "/v2/api-docs", +// "/webjars/**", +// "/api/auth/**", +// "/api/contribuable/**", +// "/api/auth/login" +// }; +// +// @Override +// protected void configure(HttpSecurity http) throws Exception { +// http +// .cors() +// .and() +// .csrf() +// .disable() +// .exceptionHandling() +// .authenticationEntryPoint(jwtAuthenticationEntryPoint) +// .and() +//// .sessionManagement() +//// .sessionCreationPolicy(SessionCreationPolicy.STATELESS) +//// .and() +// .authorizeRequests() +// .antMatchers("/", +// "/favicon.ico", +// "/**/*.png", +// "/**/*.gif", +// "/**/*.svg", +// "/**/*.jpg", +// "/**/*.html", +// "/**/*.css", +// "/**/*.js") +// .permitAll() +// .antMatchers(AUTH_WHITELIST).permitAll() +// .antMatchers(HttpMethod.GET, "/api/polls/**", "/api/users/**") +// .permitAll() +// .anyRequest() +// .authenticated(); +// +// http.addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class); +// } +// +//} + +package io.gmss.infocad.configuration; + +import io.gmss.infocad.security.CustomUserDetailsService; +import io.gmss.infocad.security.JwtAuthenticationEntryPoint; +import io.gmss.infocad.security.JwtAuthenticationFilter; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.BeanIds; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; + +@EnableWebSecurity +@Configuration +@EnableGlobalMethodSecurity(securedEnabled = true, jsr250Enabled = true, prePostEnabled = true) +public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { + + private final CustomUserDetailsService customUserDetailsService; + private final JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint; + + + public SpringSecurityConfig(CustomUserDetailsService customUserDetailsService, + JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint) { + this.customUserDetailsService = customUserDetailsService; + this.jwtAuthenticationEntryPoint = jwtAuthenticationEntryPoint; + } + + @Override + public void configure(AuthenticationManagerBuilder auth) throws Exception { + auth.userDetailsService(customUserDetailsService) + .passwordEncoder(getPasswordEncoder()); + } + + @Bean + public PasswordEncoder getPasswordEncoder() { + return new BCryptPasswordEncoder(); + } + + @Bean + public JwtAuthenticationFilter jwtAuthenticationFilter() { + return new JwtAuthenticationFilter(); + } + + @Bean(BeanIds.AUTHENTICATION_MANAGER) + @Override + public AuthenticationManager authenticationManagerBean() throws Exception { + return super.authenticationManagerBean(); + } + + + private static final String[] AUTH_WHITELIST = { + + // -- CSS and JS + "/","/favicon.ico","/**/*.png","/**/*.gif","/**/*.svg","/**/*.jpg","/**/*.html","/**/*.css","/**/*.js", + + // -- swagger ui + "/v2/api-docs", "/configuration/**", "/swagger-resources/**", "/swagger-ui.html", "/swagger-ui/**", "/webjars/**", "/api-docs/**", "/springfox/**", "/v3/api-docs", + + // -- Login + "/api/**" + //"/api/auth/**" + }; + + @Override + public void configure(HttpSecurity http) throws Exception { + + http + .cors() + .and() + .csrf() + .disable() + .exceptionHandling() + .authenticationEntryPoint(jwtAuthenticationEntryPoint) + .and() + .sessionManagement() + .sessionCreationPolicy(SessionCreationPolicy.STATELESS) + .and() + .authorizeRequests() + .antMatchers(AUTH_WHITELIST) + .permitAll() + .anyRequest() + .authenticated(); + + + http.addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class); + } +} diff --git a/src/main/java/io/gmss/infocad/configuration/SwaggerConfig.java b/src/main/java/io/gmss/infocad/configuration/SwaggerConfig.java new file mode 100755 index 0000000..5434b3e --- /dev/null +++ b/src/main/java/io/gmss/infocad/configuration/SwaggerConfig.java @@ -0,0 +1,78 @@ +package io.gmss.infocad.configuration; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Contact; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger.web.*; + +@Configuration +//@Import(SpringDataRestConfiguration.class) +public class SwaggerConfig { + @Bean + public Docket api() { + return new Docket(DocumentationType.OAS_30) + .select() + .apis(RequestHandlerSelectors.basePackage("io.gmss.infocad.controllers")).paths(PathSelectors.any()).build().apiInfo(this.getApiInfo()); +// .securitySchemes(this.securitySchemes()) +// .securityContexts(Arrays.asList(this.securityContext())); + } + + + +// public SecurityContext securityContext() { +// AuthorizationScope[] scopes = { new AuthorizationScope("read", "for read operation"), +// new AuthorizationScope("write", "for write operation") }; +// List securityReferences = Arrays.asList(new SecurityReference("basicAuth", scopes), +// new SecurityReference("Key", scopes), new SecurityReference("Authorization", scopes)); +// return SecurityContext.builder().securityReferences(securityReferences) +// .forPaths(PathSelectors.any()) +// .build(); +// } + +// public List securitySchemes() { +// // SecurityScheme basicAuth = new BasicAuth("basicAuth"); +// SecurityScheme userAuthToken = new ApiKey("Authorization", "Authorization", "header"); +// // SecurityScheme keyAuth = new ApiKey("Key", "Key", "header"); +// return Arrays.asList( +// // keyAuth, +// userAuthToken +// //, basicAuth +// ); +// } + + @Bean + public UiConfiguration uiConfig() { + return UiConfigurationBuilder.builder() + .deepLinking(true) + .displayOperationId(false) + .defaultModelsExpandDepth(1) + .defaultModelExpandDepth(1) + .displayRequestDuration(false) + .docExpansion(DocExpansion.LIST) // Use 'LIST', 'FULL', or 'NONE' + .filter(false) + .maxDisplayedTags(100) // Set the maximum number of tags to display + .operationsSorter(OperationsSorter.ALPHA) // Use 'ALPHA' or 'METHOD' + .showExtensions(false) + .tagsSorter(TagsSorter.ALPHA) // Use 'ALPHA' + .validatorUrl(null) + .build(); + } + + private ApiInfo getApiInfo() { + Contact contact = new Contact("INFOCAD", "https://gmss.com/", "contact@gmss.com"); + return new ApiInfoBuilder() + .title("LIST OF API") + .description("This page show all ressources that you could handle to communicate with database via REST API.") + .version("1.0") + .license("INFOCAD v.1.0") + .licenseUrl("https://www.apache.org/licenses/LICENSE-3.0") + .contact(contact) + .build(); + } +} diff --git a/src/main/java/io/gmss/infocad/configuration/WebConfig.java b/src/main/java/io/gmss/infocad/configuration/WebConfig.java new file mode 100644 index 0000000..24857f0 --- /dev/null +++ b/src/main/java/io/gmss/infocad/configuration/WebConfig.java @@ -0,0 +1,21 @@ +package io.gmss.infocad.configuration; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +@EnableWebMvc +public class WebConfig implements WebMvcConfigurer { + + private final long MAX_AGE_SECS = 3600; + + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**") + .allowedOrigins("*") + .allowedMethods("HEAD", "OPTIONS", "GET", "POST", "PUT", "PATCH", "DELETE") + .maxAge(MAX_AGE_SECS); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/OpenController.java b/src/main/java/io/gmss/infocad/controllers/OpenController.java new file mode 100755 index 0000000..f48db44 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/OpenController.java @@ -0,0 +1,47 @@ +package io.gmss.infocad.controllers; + +import net.sf.jasperreports.engine.JasperCompileManager; +import net.sf.jasperreports.engine.JasperReport; +import net.sf.jasperreports.engine.util.JRSaver; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; + +@RestController +@RequestMapping(value = "api/open", produces = MediaType.APPLICATION_JSON_VALUE) +public class OpenController { + + @Value("${file.jasper-reports}") + private String jaspersDir; + + @GetMapping("/compile-report") + public ResponseEntity compile(@RequestParam String jrxmlFileName) { + try{ + InputStream quitusReportStream = getStream(jaspersDir + "/" + jrxmlFileName + ".jrxml"); + JasperReport jasperReport = JasperCompileManager.compileReport(quitusReportStream); + JRSaver.saveObject(jasperReport, jaspersDir + "/" + jrxmlFileName + ".jasper"); + + }catch (Exception e){ + e.printStackTrace(); + } + return null; + } + + private InputStream getStream(String fileName) throws IOException { + File initialFile = new File(fileName); + InputStream stream = new FileInputStream(initialFile); + return stream; + } + + + +} diff --git a/src/main/java/io/gmss/infocad/controllers/decoupage/ArrondissementController.java b/src/main/java/io/gmss/infocad/controllers/decoupage/ArrondissementController.java new file mode 100644 index 0000000..bcd3732 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/decoupage/ArrondissementController.java @@ -0,0 +1,115 @@ +package io.gmss.infocad.controllers.decoupage; + + +import io.gmss.infocad.entities.decoupage.Arrondissement; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.decoupage.ArrondissementService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/arrondissement", produces = MediaType.APPLICATION_JSON_VALUE) +public class ArrondissementController { + + private final ArrondissementService arrondissementService; + + public ArrondissementController(ArrondissementService arrondissementService) { + this.arrondissementService = arrondissementService; + } + + @PostMapping("/create") + public ResponseEntity createArrondissement(@RequestBody @Valid @Validated Arrondissement arrondissement) { + try{ + arrondissement = arrondissementService.createArrondissement(arrondissement); + return new ResponseEntity<>( + new ApiResponse<>(true, arrondissement, "Arrondissement créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateArrondissement(@PathVariable Long id, @RequestBody Arrondissement arrondissement) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, arrondissementService.updateArrondissement(id, arrondissement), "Arrondissement mis à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteArrondissement(@PathVariable Long id) { + try{ + arrondissementService.deleteArrondissement(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Arrondissement supprimée avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllArrondissementList() { + return new ResponseEntity<>( + new ApiResponse<>(true, arrondissementService.getArrondissementList(), "Liste des arrondissements chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllArrondissementPaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, arrondissementService.getArrondissementList(pageable), "Liste des arrondissements chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getArrondissementById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, arrondissementService.getArrondissementById(id), "Arrondissement trouvé avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/commune/{communeId}") + public ResponseEntity getArrondissementByCommune(@PathVariable Long communeId) { + + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, arrondissementService.getArrondissementByComune(communeId), "Liste des arrondissements par commune chargée avec succès."), + HttpStatus.OK + ); + }catch (NotFoundException e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/decoupage/CommuneController.java b/src/main/java/io/gmss/infocad/controllers/decoupage/CommuneController.java new file mode 100644 index 0000000..4d03f5e --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/decoupage/CommuneController.java @@ -0,0 +1,115 @@ +package io.gmss.infocad.controllers.decoupage; + + +import io.gmss.infocad.entities.decoupage.Commune; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.decoupage.CommuneService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/commune", produces = MediaType.APPLICATION_JSON_VALUE) +public class CommuneController { + + private final CommuneService communeService; + + public CommuneController(CommuneService communeService) { + this.communeService = communeService; + } + + @PostMapping("/create") + public ResponseEntity createCommune(@RequestBody @Valid @Validated Commune commune) { + try{ + commune = communeService.createCommune(commune); + return new ResponseEntity<>( + new ApiResponse<>(true, commune, "Commune créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateCommune(@PathVariable Long id, @RequestBody Commune commune) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, communeService.updateCommune(id, commune), "Commune mis à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteCommuner(@PathVariable Long id) { + try{ + communeService.deleteCommune(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Commune supprimée avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllCommuneList() { + return new ResponseEntity<>( + new ApiResponse<>(true, communeService.getCommuneList(), "Liste des communes chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllCommunePaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, communeService.getCommuneList(pageable), "Liste des communes chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getCommuneById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, communeService.getCommuneById(id), "Commune trouvée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/departement/{departementId}") + public ResponseEntity getCommuneByDepartement(@PathVariable Long departementId) { + + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, communeService.getCommunesByDepartement(departementId), "Liste des communes par département chargée avec succès."), + HttpStatus.OK + ); + }catch (NotFoundException e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/decoupage/DepartementController.java b/src/main/java/io/gmss/infocad/controllers/decoupage/DepartementController.java new file mode 100644 index 0000000..f3cd1cf --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/decoupage/DepartementController.java @@ -0,0 +1,98 @@ +package io.gmss.infocad.controllers.decoupage; + + +import io.gmss.infocad.entities.decoupage.Departement; +import io.gmss.infocad.interfaces.decoupage.DepartementService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/departement", produces = MediaType.APPLICATION_JSON_VALUE) +public class DepartementController { + + private final DepartementService departementService; + + public DepartementController(DepartementService departementService) { + this.departementService = departementService; + } + + @PostMapping("/create") + public ResponseEntity createDepartement(@RequestBody @Valid @Validated Departement departement) { + try{ + departement = departementService.createDepartement(departement); + return new ResponseEntity<>( + new ApiResponse<>(true, departement, "Departement créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateDepartement(@PathVariable Long id, @RequestBody Departement departement) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, departementService.updateDepartement(id, departement), "Département mis à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteDepartementr(@PathVariable Long id) { + try{ + departementService.deleteDepartement(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Département supprimé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllDepartementList() { + return new ResponseEntity<>( + new ApiResponse<>(true, departementService.getDepartementList(), "Liste des département chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllDepartementPaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, departementService.getDepartementList(pageable), "Liste des département chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getDepartementById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, departementService.getDepartementById(id), "Département trouvé avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/decoupage/NationaliteController.java b/src/main/java/io/gmss/infocad/controllers/decoupage/NationaliteController.java new file mode 100644 index 0000000..e247069 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/decoupage/NationaliteController.java @@ -0,0 +1,98 @@ +package io.gmss.infocad.controllers.decoupage; + + +import io.gmss.infocad.entities.decoupage.Nationalite; +import io.gmss.infocad.interfaces.decoupage.NationaliteService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/nationalite", produces = MediaType.APPLICATION_JSON_VALUE) +public class NationaliteController { + + private final NationaliteService nationaliteService; + + public NationaliteController(NationaliteService nationaliteService) { + this.nationaliteService = nationaliteService; + } + + @PostMapping("/create") + public ResponseEntity createNationalite(@RequestBody @Valid @Validated Nationalite nationalite) { + try{ + nationalite = nationaliteService.createNationalite(nationalite); + return new ResponseEntity<>( + new ApiResponse<>(true, nationalite, "Nationalite créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateNationalite(@PathVariable Long id, @RequestBody Nationalite nationalite) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, nationaliteService.updateNationalite(id, nationalite), "Nationalités mis à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteNationaliter(@PathVariable Long id) { + try{ + nationaliteService.deleteNationalite(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Nationalités supprimé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllNationaliteList() { + return new ResponseEntity<>( + new ApiResponse<>(true, nationaliteService.getNationaliteList(), "Liste des nationalités chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllNationalitePaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, nationaliteService.getNationaliteList(pageable), "Liste des nationalités chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getNationaliteById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, nationaliteService.getNationaliteById(id), "Nationalités trouvées avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/decoupage/QuartierController.java b/src/main/java/io/gmss/infocad/controllers/decoupage/QuartierController.java new file mode 100644 index 0000000..7eaa379 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/decoupage/QuartierController.java @@ -0,0 +1,115 @@ +package io.gmss.infocad.controllers.decoupage; + + +import io.gmss.infocad.entities.decoupage.Quartier; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.decoupage.QuartierService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/quartier", produces = MediaType.APPLICATION_JSON_VALUE) +public class QuartierController { + + private final QuartierService quartierService; + + public QuartierController(QuartierService quartierService) { + this.quartierService = quartierService; + } + + @PostMapping("/create") + public ResponseEntity createQuartier(@RequestBody @Valid @Validated Quartier quartier) { + try{ + quartier = quartierService.createQuartier(quartier); + return new ResponseEntity<>( + new ApiResponse<>(true, quartier, "Quartier créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateQuartier(@PathVariable Long id, @RequestBody Quartier quartier) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, quartierService.updateQuartier(id, quartier), "Quartier mis à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteQuartier(@PathVariable Long id) { + try{ + quartierService.deleteQuartier(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Quartier supprimé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllQuartierList() { + return new ResponseEntity<>( + new ApiResponse<>(true, quartierService.getQuartierList(), "Liste des quartiers chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllQuartierPaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, quartierService.getQuartierList(pageable), "Liste des quartiers chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getQuartierById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, quartierService.getQuartierById(id), "Quartier trouvé avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/arrondissement/{arrondissementId}") + public ResponseEntity getQuartierByArrondissement(@PathVariable Long arrondissementId) { + + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, quartierService.getQuartierByArrondissement(arrondissementId), "Liste des quartiers par commune chargée avec succès."), + HttpStatus.OK + ); + }catch (NotFoundException e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/metier/ActeurConcerneController.java b/src/main/java/io/gmss/infocad/controllers/infocad/metier/ActeurConcerneController.java new file mode 100644 index 0000000..3213577 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/infocad/metier/ActeurConcerneController.java @@ -0,0 +1,33 @@ +package io.gmss.infocad.controllers.infocad.metier; + +import io.gmss.infocad.interfaces.infocad.metier.ActeurConcerneService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping(value = "api/acteur-concerne", produces = MediaType.APPLICATION_JSON_VALUE) +public class ActeurConcerneController { + + private final ActeurConcerneService acteurConcerneService; + + public ActeurConcerneController(ActeurConcerneService acteurConcerneService) { + this.acteurConcerneService = acteurConcerneService; + } + + + @GetMapping("/id/{id}") + public ResponseEntity getArrondissementById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, acteurConcerneService.getActeurConcerneById(id).get(), "Arrondissement trouvé avec succès."), + HttpStatus.OK + ); + } + +} + diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/metier/BlocController.java b/src/main/java/io/gmss/infocad/controllers/infocad/metier/BlocController.java new file mode 100644 index 0000000..b665fc8 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/infocad/metier/BlocController.java @@ -0,0 +1,117 @@ +package io.gmss.infocad.controllers.infocad.metier; + + +import io.gmss.infocad.entities.infocad.metier.Bloc; +import io.gmss.infocad.interfaces.infocad.metier.BlocService; +import io.gmss.infocad.paylaods.ApiResponse; +import io.gmss.infocad.security.CurrentUser; +import io.gmss.infocad.security.UserPrincipal; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/bloc", produces = MediaType.APPLICATION_JSON_VALUE) +public class BlocController { + + private final BlocService blocService; + + public BlocController(BlocService blocService) { + this.blocService = blocService; + } + + @PostMapping("/create") + public ResponseEntity createBloc(@RequestBody @Valid @Validated Bloc bloc, @CurrentUser UserPrincipal userPrincipal) { + try{ + bloc = blocService.createBloc(bloc); + return new ResponseEntity<>( + new ApiResponse<>(true, bloc, "Bloc créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateBloc(@PathVariable Long id, @RequestBody Bloc bloc) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, blocService.updateBloc(id, bloc), "Bloc mis à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteBlocr(@PathVariable Long id) { + try{ + blocService.deleteBloc(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Bloc supprimé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllBlocList() { + return new ResponseEntity<>( + new ApiResponse<>(true, blocService.getBlocList(), "Liste des blocs chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/list-by-arrondissement") + public ResponseEntity getAllBlocListByArrondissement(@RequestParam Long idArrondissement) { + return new ResponseEntity<>( + new ApiResponse<>(true, blocService.getBlocsByArrondissement(idArrondissement), "Liste des blocs chargée avec succès."), + HttpStatus.OK + ); + } + + + @GetMapping("/list-by-structure") + public ResponseEntity getAllBlocListByStructure(@RequestParam Long idStructure) { + return new ResponseEntity<>( + new ApiResponse<>(true, blocService.getBlocsByStructure(idStructure), "Liste des blocs chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllBlocPaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, blocService.getBlocList(pageable), "Liste des blocs chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getBlocById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, blocService.getBlocById(id), "Bloc trouvé avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/metier/CommentaireController.java b/src/main/java/io/gmss/infocad/controllers/infocad/metier/CommentaireController.java new file mode 100644 index 0000000..f1de439 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/infocad/metier/CommentaireController.java @@ -0,0 +1,156 @@ +package io.gmss.infocad.controllers.infocad.metier; + + +import io.gmss.infocad.entities.infocad.metier.Commentaire; +import io.gmss.infocad.interfaces.infocad.metier.CommentaireService; +import io.gmss.infocad.paylaods.ApiResponse; +import io.gmss.infocad.paylaods.request.CommentaireRequest; +import io.gmss.infocad.paylaods.request.SyncCommentaireRequest; +import io.swagger.annotations.ApiOperation; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.time.LocalDateTime; +import java.util.List; + +@RestController +@RequestMapping(value = "api/commentaire", produces = MediaType.APPLICATION_JSON_VALUE) +public class CommentaireController { + + private final CommentaireService commentaireService; + + public CommentaireController(CommentaireService commentaireService) { + this.commentaireService = commentaireService; + } + + + @PostMapping("/create") + public ResponseEntity createcommentaire(@RequestBody @Valid @Validated Commentaire commentaire) { + try{ + commentaire.setDateCommentaire(LocalDateTime.now()); + commentaire = commentaireService.createCommentaire(commentaire); + return new ResponseEntity<>( + new ApiResponse<>(true, commentaire, "Commentaire créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updatecommentaire(@PathVariable Long id, @RequestBody Commentaire commentaire) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, commentaireService.updateCommentaire(id, commentaire), "commentaire mis à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deletecommentaire(@PathVariable Long id) { + try{ + commentaireService.deleteCommentaire(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Commentaire supprimé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllcommentaireList() { + return new ResponseEntity<>( + new ApiResponse<>(true, commentaireService.getCommentaireList(), "Liste des commentaires chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getcommentaireById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, commentaireService.getCommentaireById(id), "commentaire trouvée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/nup/{nup}") + public ResponseEntity getcommentaireByNup(@PathVariable String nup) { + return new ResponseEntity<>( + new ApiResponse<>(true, commentaireService.getCommentaireByNup(nup), "commentaire trouvée avec succès."), + HttpStatus.OK + ); + } + + @PostMapping("/enquete") + public ResponseEntity getcommentaireByEnquete(@RequestBody Commentaire commentaire) { + return new ResponseEntity<>( + new ApiResponse<>(true, commentaireService.getCommentairesByEnqueteAndTerminal(commentaire.getIdEnquete(), commentaire.getTerminalId()), "Liste des commentaires chargée avec succès."), + HttpStatus.OK + ); + } + + @PostMapping("/enquete-and-state") + @ApiOperation(value = "Cette ressource permet d'avoir la liste de tous les commentaires d'une enquête avec le statut (lu ou non lu). Les champs a renseigner pour le payload sont idEnquete et lu") + public ResponseEntity getcommentaireByEnqueteAndStatut(@RequestBody Commentaire commentaire) { + return new ResponseEntity<>( + new ApiResponse<>(true, commentaireService.getCommentairesByEnqueteAndLu(commentaire.getIdEnquete(), commentaire.isLu()), "Liste des commentaires chargée avec succès."), + HttpStatus.OK + ); + } + + @PostMapping("/all-by-params") + @ApiOperation(value = "Cette ressource permet d'avoir 4 résultats différents. \n 1 - Liste des commentaires non lus provenant du Web. \n 2 - Liste des commentaires lus provenant du Web \n 3 - Liste des commentaires non lus provenant du mobile. \n 4 - Liste des commentaires lus provenant du mobile. \n A savoir : Les variables Origine et lu sont à varier pour avoir le résultat") + public ResponseEntity getcommentaireByParams(@RequestBody CommentaireRequest commentaireRequest) { + return new ResponseEntity<>( + new ApiResponse<>(true, commentaireService.getCommentairesByOrigineAndStateReadAndTerminalId(commentaireRequest.getOrigine(), commentaireRequest.isLu(), commentaireRequest.getTerminalId()), "Liste des commentaires chargée avec succès."), + HttpStatus.OK + ); + } + + @PostMapping("synchronise/from-mobile") + @ApiOperation(value = "Cette ressource permet de synchroniser tous les commentaires effectués sur le mobile vers le backend.") + public ResponseEntity synchroniseCommentairesFromMobile(@RequestBody List commentaires) { + return new ResponseEntity<>( + new ApiResponse<>(true, commentaireService.saveAllCommentairesFromMobile(commentaires), "Liste des commentaires synchronisée avec succès."), + HttpStatus.OK + ); + } + + @PostMapping("synchronise/from-web") + @ApiOperation(value = "Cette ressource permet d'avoir 4 résultats différents. \n 1 - Liste des commentaires non synchronisés provenant du Web. \n 2 - Liste des commentaires synchronisés provenant du Web \n 3 - Liste des commentaires non synchronisés provenant du mobile. \n 4 - Liste des commentaires synchronisés provenant du mobile. \n A savoir : Les variables Origine et Synchronise sont à varier pour avoir le résultat") + public ResponseEntity synchroniseCommentairesFromWeb(@RequestBody CommentaireRequest commentaireRequest) { + return new ResponseEntity<>( + new ApiResponse<>(true, commentaireService.getCommentairesByOrigineAndStateSynchronizedAndTerminalId(commentaireRequest.getOrigine(), commentaireRequest.isSynchronise(), commentaireRequest.getTerminalId()), "Liste des commentaires chargée avec succès."), + HttpStatus.OK + ); + } + + @PostMapping("synchronise/notify-done-from-mobile") + @ApiOperation(value = "Cette ressource permet matérialiser coté backend les commentaires du WEB déjà synchronisé avec le MOBILE pour que les prochaines extractions ne prennent pas en compte cela. ") + public ResponseEntity notifyDoneSynchronizedFromMobile(@RequestBody List syncCommentaireRequests) { + return new ResponseEntity<>( + new ApiResponse<>(true, commentaireService.notifySynchronizedDoneFromMobile(syncCommentaireRequests), "Synchronisation terminée."), + HttpStatus.OK + ); + } + +} diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/metier/EnqueteController.java b/src/main/java/io/gmss/infocad/controllers/infocad/metier/EnqueteController.java new file mode 100644 index 0000000..60d627d --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/infocad/metier/EnqueteController.java @@ -0,0 +1,190 @@ +package io.gmss.infocad.controllers.infocad.metier; + +import io.gmss.infocad.interfaces.infocad.metier.EnqueteService; +import io.gmss.infocad.paylaods.ApiResponse; +import io.gmss.infocad.paylaods.request.EnquetePayLoad; +import io.gmss.infocad.paylaods.request.EnqueteTraitementPayLoad; +import io.gmss.infocad.paylaods.request.FiltreEnquetePayLoad; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +@RestController +@RequestMapping(value = "api/enquete", produces = MediaType.APPLICATION_JSON_VALUE) +public class EnqueteController { + + private final EnqueteService enqueteService ; + + public EnqueteController(EnqueteService enqueteService) { + this.enqueteService = enqueteService; + } + + + @PostMapping("/create") + public ResponseEntity createStructure(@RequestBody @Valid @Validated EnquetePayLoad enquetePayLoad) { +// try{ +// enquete = enqueteService.createEnquete(enquete); +// return new ResponseEntity<>( +// new ApiResponse<>(true, structure, "Structure créé avec succès."), +// HttpStatus.OK +// ); +// }catch (Exception e){ +// return new ResponseEntity<>( +// new ApiResponse<>(false, e.getMessage()), +// HttpStatus.OK +// ); +// } + return null; + } + + @PutMapping("/validation") + public ResponseEntity validerEnquete(@RequestBody EnqueteTraitementPayLoad enqueteTraitementPayLoad) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteService.validerEnquete(enqueteTraitementPayLoad), "Validation effectuée avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false,"Impossible de valider l'enquête : "+e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/rejet") + public ResponseEntity rejeterEnquete(@RequestBody EnqueteTraitementPayLoad enqueteTraitementPayLoad) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteService.rejeterEnquete(enqueteTraitementPayLoad), "Rejet effectuée avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false,"Impossible de valider l'enquête : "+e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/validation-lot") + public ResponseEntity validerEnqueteParLot(@RequestBody List enqueteTraitementPayLoads) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteService.validerEnquete(enqueteTraitementPayLoads), "Validation effectuée avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false,"Impossible de valider l'enquête : " + e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/rejet-lot") + public ResponseEntity rejeterEnqueteParLot(@RequestBody List enqueteTraitementPayLoads) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteService.rejeterEnquete(enqueteTraitementPayLoads), "Rejet effectuée avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false,"Impossible de valider l'enquête : "+e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all/decoupage-admin-for-enquete") + public ResponseEntity getAllByEnqueteDecoupageAdmin() { + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteService.getDecoupageAdminUserConnecterAndStat(), "Liste des enquetes chargée avec succès."), + HttpStatus.OK + ); + } + + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteStructurer(@PathVariable Long id) { + try{ + enqueteService.deleteEnquete(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"enquete supprimée avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllStructureList() { + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteService.getEnqueteList(), "Liste des enquetes chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all/com-arrond-bloc") + public ResponseEntity getAllByCommuneArrondBloc() { + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteService.getEnqueteCommuneArrondBloc(), "Liste des enquetes chargée avec succès."), + HttpStatus.OK + ); + } + + @PostMapping("/all/com-arrond-bloc/filtre") + public ResponseEntity getAllByCommuneArrondBlocFiltre(@RequestBody FiltreEnquetePayLoad filtreEnquetePayLoad) { + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteService.getEnqueteCommuneArrondBlocFiltre(filtreEnquetePayLoad), "Liste des enquetes chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllEnquetePaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteService.getEnqueteList(pageable), "Liste des enquetes chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/fiche/id/{id}") + public ResponseEntity getFicheEnqueteById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteService.getFicheEnquete(id), "enquete trouvé avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getStructureById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteService.getEnqueteById(id), "enquete trouvé avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/traiter-non-synch-to-mobile/{terminalId}") + public ResponseEntity getEnqueteValideNonSynch(@PathVariable Long terminalId) { + return new ResponseEntity<>( + new ApiResponse<>(true, enqueteService.getEnqueteValideNonSynch(terminalId), "Liste des enquetes traitées non synchronisées sur le termianl."), + HttpStatus.OK + ); + } + +} + diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/metier/TpeController.java b/src/main/java/io/gmss/infocad/controllers/infocad/metier/TpeController.java new file mode 100644 index 0000000..75a3694 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/infocad/metier/TpeController.java @@ -0,0 +1,123 @@ +package io.gmss.infocad.controllers.infocad.metier; + + +import io.gmss.infocad.entities.infocad.metier.Tpe; +import io.gmss.infocad.interfaces.infocad.metier.TpeService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/tpe", produces = MediaType.APPLICATION_JSON_VALUE) +public class TpeController { + + private final TpeService tpeService; + + public TpeController(TpeService tpeService) { + this.tpeService = tpeService; + } + + @PostMapping("/create") + public ResponseEntity createTpe(@RequestBody @Valid @Validated Tpe tpe) { + try{ + tpe = tpeService.createTpe(tpe); + return new ResponseEntity<>( + new ApiResponse<>(true, tpe, "Tpe créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateTpe(@PathVariable Long id, @RequestBody Tpe tpe) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, tpeService.updateTpe(id, tpe), "Tpe mis à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteTper(@PathVariable Long id) { + try{ + tpeService.deleteTpe(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Tpe supprimé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllTpeList() { + return new ResponseEntity<>( + new ApiResponse<>(true, tpeService.getTpeList(), "Liste des tpe chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-by-model/{model}") + public ResponseEntity getAllTpeListByModel(@PathVariable String model) { + return new ResponseEntity<>( + new ApiResponse<>(true, tpeService.getTpeListByModel(model), "Liste des tpe chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-by-userId/{userId}") + public ResponseEntity getAllTpeListByUserId(@PathVariable Long userId) { + return new ResponseEntity<>( + new ApiResponse<>(true, tpeService.getTpeListByUserId(userId), "Liste des tpe de l'utilisateurs."), + HttpStatus.OK + ); + } + + + @GetMapping("/all-paged") + public ResponseEntity getAllTpePaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, tpeService.getTpeList(pageable), "Liste des tpe chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getTpeById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, tpeService.getTpeById(id), "Tpe trouvé avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/identifier/{identifier}") + public ResponseEntity getTpeByIdentifier(@PathVariable String identifier) { + return new ResponseEntity<>( + new ApiResponse<>(true, tpeService.getTepByIdentifier(identifier), "Tpe trouvé avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/metier/UploadController.java b/src/main/java/io/gmss/infocad/controllers/infocad/metier/UploadController.java new file mode 100644 index 0000000..633f5ed --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/infocad/metier/UploadController.java @@ -0,0 +1,232 @@ +package io.gmss.infocad.controllers.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.Upload; +import io.gmss.infocad.paylaods.ApiResponse; +import io.gmss.infocad.repositories.infocad.metier.UploadRepository; +import io.gmss.infocad.service.FileStorageService; +import io.gmss.infocad.service.StringManager; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.Data; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.Resource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.time.format.DateTimeFormatter; + +/** + * @author AKAKPO Aurince + */ +@RestController +@RequestMapping(value = "/api/upload", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(value = "Uploads controllers", description = "API for accessing to uploads files details.", tags = {"Uploads"}) +@CrossOrigin(origins = "*", maxAge = 3600) +@Data +public class UploadController { + + boolean headIsValid=false; + + private static final Logger logger = LoggerFactory.getLogger(UploadController.class); + + @Autowired + private UploadRepository uploadRepository; + + + + @Autowired + private FileStorageService fileStorageService; + + @Autowired + private StringManager stringManager; + +// @Autowired +// private ActeurRepository proprietaireRepository; + + + + + + private int firstLineColumnNumber = 0; + private String fileHeader; + private String fileHeaderType; + private int anneeFiscale; + private int indiceOfFile = 0; + + + + private SimpleDateFormat sdf = new SimpleDateFormat("YYYYMMDD"); + private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("YYYYMMDD"); + + + + + + @GetMapping("/all") + @ApiOperation(value = "List of uploads files.") + public ResponseEntity all() { + try { + if (uploadRepository.findAll().isEmpty()) { + return new ResponseEntity<>(new ApiResponse(true, uploadRepository.findAll(), "Empty list. No values present."), HttpStatus.OK); + } else { + return new ResponseEntity<>(new ApiResponse(true, uploadRepository.findAll(), "All uploads files founded."), HttpStatus.OK); + } + } catch (HttpClientErrorException.MethodNotAllowed e) { + return new ResponseEntity<>(new ApiResponse(false,null, "Method POST/GET is required."), HttpStatus.OK); + } catch (NullPointerException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false,null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK); + } catch (Exception e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false,null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); + } + } + +// @GetMapping("/all/proprietaireid/{proprietaireid}") +// @ApiOperation(value = "List des fichiers d'un proprietaire.") +// public ResponseEntity allByActeurId(@PathVariable Long proprietaireid) { +// try { +// List uploads=uploadRepository.findAllByActeur_Id(proprietaireid); +// if (uploads.isEmpty()) { +// return new ResponseEntity<>(new ApiResponse(true, "Empty list. No values present.", HttpStatus.NOT_FOUND, uploads), HttpStatus.OK); +// } else { +// return new ResponseEntity<>(new ApiResponse(true, "All uploads files founded.", HttpStatus.OK, uploadRepository.findAll()), HttpStatus.OK); +// } +// } catch (HttpClientErrorException.MethodNotAllowed e) { +// return new ResponseEntity<>(new ApiResponse(false, "Method POST/GET is required.", HttpStatus.METHOD_NOT_ALLOWED, null), HttpStatus.OK); +// } catch (NullPointerException e) { +// logger.error(e.getLocalizedMessage()); +// return new ResponseEntity<>(new ApiResponse(false, "Null value has been detected {" + e.getMessage() + "}.", HttpStatus.BAD_REQUEST, null), HttpStatus.OK); +// } catch (Exception e) { +// logger.error(e.getLocalizedMessage()); +// return new ResponseEntity<>(new ApiResponse(false, "An error has been occur and the content is {" + e.getMessage() + "}.", HttpStatus.INTERNAL_SERVER_ERROR, null), HttpStatus.OK); +// } +// } + + + + + @GetMapping("/id/{id}") + @ApiOperation(value = "Get one upload by his id.") + public ResponseEntity one(@PathVariable Long id) { + + try { + if (uploadRepository.findById(id).isPresent()) { + return new ResponseEntity<>(new ApiResponse(true, uploadRepository.getOne(id), "File with id {" + id + "} is found."), HttpStatus.OK); + } else { + return new ResponseEntity<>(new ApiResponse(true, null,"The upload with id {" + id + "} you request for is not found."), HttpStatus.OK); + } + } catch (HttpClientErrorException.MethodNotAllowed e) { + return new ResponseEntity<>(new ApiResponse(false,null, "Method POST/GET is required."), HttpStatus.OK); + } catch (NullPointerException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false,null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK); + } catch (Exception e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null,"An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); + } + } + + + + /** + * @param fileName + * @param request + * @return + */ + @ApiOperation(value = "This resource is used to download one file from server.") + @GetMapping("/downloadFile/{fileName:.+}") + public ResponseEntity downloadFile(@PathVariable String fileName, HttpServletRequest request) { + // Load file as Resource + Resource resource = fileStorageService.loadFileAsResource(fileName); + + // Try to determine file's content type + String contentType = null; + try { + contentType = request.getServletContext().getMimeType(resource.getFile().getAbsolutePath()); + } catch (IOException ex) { + logger.info("Could not determine file type."); + } + + // Fallback to the default content type if type could not be determined + if (contentType == null) { + contentType = "application/octet-stream"; + } + + return ResponseEntity.ok() + .contentType(MediaType.parseMediaType(contentType)) + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"") + .body(resource); + } + + @PostMapping("/save") + @ApiOperation(value = "Add one upload.") + public ResponseEntity save(@RequestPart(required = true) MultipartFile file , @RequestParam String reference,@RequestParam String description /*, @RequestParam Long idTypeUpload*/) { + + try { + Upload upload = new Upload(); +// Optional optionalTypeUpload=typeUploadRepository.findById(1L); +// if(optionalTypeUpload.isPresent()){ +// upload.setTypeUpload(optionalTypeUpload.get()); +// }else { +// return new ResponseEntity<>(new ApiResponse(false, "Ce type de document n'est pas autorisé", HttpStatus.BAD_REQUEST, null), HttpStatus.OK); +// } +// Optional optionalActeur = proprietaireRepository.findById(idActeur); +// if (optionalActeur.isPresent()) { +// upload.setActeur(optionalActeur.get()); +// } + String fileName = fileStorageService.storeFile(file); + upload.setFileName(fileName); + upload.setMimeType(file.getContentType()); + upload.setSize(file.getSize()); + upload.setOriginalFileName(file.getOriginalFilename()); + return new ResponseEntity<>(new ApiResponse(true,uploadRepository.save(upload), "File has been created successfully."), HttpStatus.OK); + } catch (HttpClientErrorException.MethodNotAllowed e) { + return new ResponseEntity<>(new ApiResponse(false,null, "Method POST/GET is required."), HttpStatus.OK); + } catch (NullPointerException e) { + e.printStackTrace(); + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false,null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK); + } catch (Exception e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false,null,"An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); + } + } + + + + + @DeleteMapping("/delete/id/{id}") + @ApiOperation(value = "Delete one upload.") + public ResponseEntity delete(@PathVariable Long id) { + try { + if (id != null || uploadRepository.findById(id).isPresent()) { + String name = uploadRepository.getOne(id).getFileName(); + fileStorageService.deleteFile(name); + uploadRepository.deleteById(id); + return new ResponseEntity<>(new ApiResponse(true,null, "File with name {" + name + "} has been deleted successfully."), HttpStatus.OK); + } else { + return new ResponseEntity<>(new ApiResponse(true,null, "The upload specified in your request body is not found."), HttpStatus.OK); + } + } catch (HttpClientErrorException.MethodNotAllowed e) { + return new ResponseEntity<>(new ApiResponse(false,null, "Method POST/GET is required."), HttpStatus.OK); + } catch (NullPointerException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false,null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK); + } catch (Exception e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false,null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); + } + } + +} diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/parametre/ModeAcquisitionController.java b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/ModeAcquisitionController.java new file mode 100644 index 0000000..f12eabd --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/ModeAcquisitionController.java @@ -0,0 +1,98 @@ +package io.gmss.infocad.controllers.infocad.parametre; + + +import io.gmss.infocad.entities.infocad.parametre.ModeAcquisition; +import io.gmss.infocad.interfaces.infocad.parametre.ModeAcquisitionService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/mode-acquisition", produces = MediaType.APPLICATION_JSON_VALUE) +public class ModeAcquisitionController { + + private final ModeAcquisitionService modeAcquisitionService; + + public ModeAcquisitionController(ModeAcquisitionService modeAcquisitionService) { + this.modeAcquisitionService = modeAcquisitionService; + } + + @PostMapping("/create") + public ResponseEntity createModeAcquisition(@RequestBody @Valid @Validated ModeAcquisition modeAcquisition) { + try{ + modeAcquisition = modeAcquisitionService.createModeAcquisition(modeAcquisition); + return new ResponseEntity<>( + new ApiResponse<>(true, modeAcquisition, "Mode acquisition créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateModeAcquisition(@PathVariable Long id, @RequestBody ModeAcquisition modeAcquisition) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, modeAcquisitionService.updateModeAcquisition(id, modeAcquisition), "Mode d'acquisition mis à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteModeAcquisitionr(@PathVariable Long id) { + try{ + modeAcquisitionService.deleteModeAcquisition(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Mode d'acquisition supprimé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllModeAcquisitionList() { + return new ResponseEntity<>( + new ApiResponse<>(true, modeAcquisitionService.getModeAcquisitionList(), "Liste des modes d'acquisitions chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllModeAcquisitionPaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, modeAcquisitionService.getModeAcquisitionList(pageable), "Liste des modes d'acquisitions chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getModeAcquisitionById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, modeAcquisitionService.getModeAcquisitionById(id), "Mode d'acquisition trouvé avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/parametre/NatureDomaineController.java b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/NatureDomaineController.java new file mode 100644 index 0000000..f14aea6 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/NatureDomaineController.java @@ -0,0 +1,98 @@ +package io.gmss.infocad.controllers.infocad.parametre; + + +import io.gmss.infocad.entities.infocad.parametre.NatureDomaine; +import io.gmss.infocad.interfaces.infocad.parametre.NatureDomaineService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/nature-domaine", produces = MediaType.APPLICATION_JSON_VALUE) +public class NatureDomaineController { + + private final NatureDomaineService natureDomaineService; + + public NatureDomaineController(NatureDomaineService natureDomaineService) { + this.natureDomaineService = natureDomaineService; + } + + @PostMapping("/create") + public ResponseEntity createNatureDomaine(@RequestBody @Valid @Validated NatureDomaine natureDomaine) { + try{ + natureDomaine = natureDomaineService.createNatureDomaine(natureDomaine); + return new ResponseEntity<>( + new ApiResponse<>(true, natureDomaine, "Nature Domaine créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateNatureDomaine(@PathVariable Long id, @RequestBody NatureDomaine natureDomaine) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, natureDomaineService.updateNatureDomaine(id, natureDomaine), "Nature Domaine mise à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteNatureDomainer(@PathVariable Long id) { + try{ + natureDomaineService.deleteNatureDomaine(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Nature Domaine supprimée avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllNatureDomaineList() { + return new ResponseEntity<>( + new ApiResponse<>(true, natureDomaineService.getNatureDomaineList(), "Liste des natures de domaine chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllNatureDomainePaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, natureDomaineService.getNatureDomaineList(pageable), "Liste des natures de domaine chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getNatureDomaineById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, natureDomaineService.getNatureDomaineById(id), "Nature Domaine trouvé avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/parametre/PositionRepresentationController.java b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/PositionRepresentationController.java new file mode 100644 index 0000000..a2e05a0 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/PositionRepresentationController.java @@ -0,0 +1,98 @@ +package io.gmss.infocad.controllers.infocad.parametre; + + +import io.gmss.infocad.entities.infocad.parametre.PositionRepresentation; +import io.gmss.infocad.interfaces.infocad.parametre.PositionRepresentationService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/position-representation", produces = MediaType.APPLICATION_JSON_VALUE) +public class PositionRepresentationController { + + private final PositionRepresentationService positionRepresentationService; + + public PositionRepresentationController(PositionRepresentationService positionRepresentationService) { + this.positionRepresentationService = positionRepresentationService; + } + + @PostMapping("/create") + public ResponseEntity createPositionRepresentation(@RequestBody @Valid @Validated PositionRepresentation positionRepresentation) { + try{ + positionRepresentation = positionRepresentationService.createPositionRepresentation(positionRepresentation); + return new ResponseEntity<>( + new ApiResponse<>(true, positionRepresentation, "Position de representation créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updatePositionRepresentation(@PathVariable Long id, @RequestBody PositionRepresentation positionRepresentation) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, positionRepresentationService.updatePositionRepresentation(id, positionRepresentation), "Position de representation mise à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deletePositionRepresentation(@PathVariable Long id) { + try{ + positionRepresentationService.deletePositionRepresentation(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Position de representation supprimée avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllPositionRepresentationList() { + return new ResponseEntity<>( + new ApiResponse<>(true, positionRepresentationService.getPositionRepresentationList(), "Liste des positions de representation chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllPositionRepresentationPaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, positionRepresentationService.getPositionRepresentationList(pageable), "Liste des positions de representation chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getPositionRepresentationById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, positionRepresentationService.getPositionRepresentationById(id), "Position de representation trouvée avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/parametre/ProfessionController.java b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/ProfessionController.java new file mode 100644 index 0000000..4be5a10 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/ProfessionController.java @@ -0,0 +1,98 @@ +package io.gmss.infocad.controllers.infocad.parametre; + + +import io.gmss.infocad.entities.infocad.parametre.Profession; +import io.gmss.infocad.interfaces.infocad.parametre.ProfessionService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/profession", produces = MediaType.APPLICATION_JSON_VALUE) +public class ProfessionController { + + private final ProfessionService professionService; + + public ProfessionController(ProfessionService professionService) { + this.professionService = professionService; + } + + @PostMapping("/create") + public ResponseEntity createProfession(@RequestBody @Valid @Validated Profession profession) { + try{ + profession = professionService.createProfession(profession); + return new ResponseEntity<>( + new ApiResponse<>(true, profession, "Profession créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateProfession(@PathVariable Long id, @RequestBody Profession profession) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, professionService.updateProfession(id, profession), "Profession mise à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteProfessionr(@PathVariable Long id) { + try{ + professionService.deleteProfession(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Profession supprimée avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllProfessionList() { + return new ResponseEntity<>( + new ApiResponse<>(true, professionService.getProfessionList(), "Liste des professions chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllProfessionPaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, professionService.getProfessionList(pageable), "Liste des professions chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getProfessionById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, professionService.getProfessionById(id), "Profession trouvée avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/parametre/SituationGeographiqueController.java b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/SituationGeographiqueController.java new file mode 100644 index 0000000..3181056 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/SituationGeographiqueController.java @@ -0,0 +1,98 @@ +package io.gmss.infocad.controllers.infocad.parametre; + + +import io.gmss.infocad.entities.infocad.parametre.SituationGeographique; +import io.gmss.infocad.interfaces.infocad.parametre.SituationGeographiqueService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/situation-geographique", produces = MediaType.APPLICATION_JSON_VALUE) +public class SituationGeographiqueController { + + private final SituationGeographiqueService situationGeographiqueService; + + public SituationGeographiqueController(SituationGeographiqueService situationGeographiqueService) { + this.situationGeographiqueService = situationGeographiqueService; + } + + @PostMapping("/create") + public ResponseEntity createSituationGeographique(@RequestBody @Valid @Validated SituationGeographique situationGeographique) { + try{ + situationGeographique = situationGeographiqueService.createSituationGeographique(situationGeographique); + return new ResponseEntity<>( + new ApiResponse<>(true, situationGeographique, "Situation géographique créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateSituationGeographique(@PathVariable Long id, @RequestBody SituationGeographique situationGeographique) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, situationGeographiqueService.updateSituationGeographique(id, situationGeographique), "Situation géographique mis à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteSituationGeographiquer(@PathVariable Long id) { + try{ + situationGeographiqueService.deleteSituationGeographique(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Situation géographique supprimée avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllSituationGeographiqueList() { + return new ResponseEntity<>( + new ApiResponse<>(true, situationGeographiqueService.getSituationGeographiqueList(), "Liste des situations géographiques chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllSituationGeographiquePaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, situationGeographiqueService.getSituationGeographiqueList(pageable), "Liste des situations géographiques chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getSituationGeographiqueById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, situationGeographiqueService.getSituationGeographiqueById(id), "Situation géographique trouvée avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/parametre/SituationMatrimonialeController.java b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/SituationMatrimonialeController.java new file mode 100644 index 0000000..a493716 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/SituationMatrimonialeController.java @@ -0,0 +1,98 @@ +package io.gmss.infocad.controllers.infocad.parametre; + + +import io.gmss.infocad.entities.infocad.parametre.SituationMatrimoniale; +import io.gmss.infocad.interfaces.infocad.parametre.SituationMatrimonialeService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/situation-matrimoniale", produces = MediaType.APPLICATION_JSON_VALUE) +public class SituationMatrimonialeController { + + private final SituationMatrimonialeService situationMatrimonialeService; + + public SituationMatrimonialeController(SituationMatrimonialeService situationMatrimonialeService) { + this.situationMatrimonialeService = situationMatrimonialeService; + } + + @PostMapping("/create") + public ResponseEntity createSituationMatrimoniale(@RequestBody @Valid @Validated SituationMatrimoniale situationMatrimoniale) { + try{ + situationMatrimoniale = situationMatrimonialeService.createSituationMatrimoniale(situationMatrimoniale); + return new ResponseEntity<>( + new ApiResponse<>(true, situationMatrimoniale, "Situation matrimoniale créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateSituationMatrimoniale(@PathVariable Long id, @RequestBody SituationMatrimoniale situationMatrimoniale) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, situationMatrimonialeService.updateSituationMatrimoniale(id, situationMatrimoniale), "Situation matrimoniale mise à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteSituationMatrimonialer(@PathVariable Long id) { + try{ + situationMatrimonialeService.deleteSituationMatrimoniale(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Situation matrimoniale supprimé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllSituationMatrimonialeList() { + return new ResponseEntity<>( + new ApiResponse<>(true, situationMatrimonialeService.getSituationMatrimonialeList(), "Liste des situations matrimoniales chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllSituationMatrimonialePaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, situationMatrimonialeService.getSituationMatrimonialeList(pageable), "Liste des situations matrimoniales chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getSituationMatrimonialeById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, situationMatrimonialeService.getSituationMatrimonialeById(id), "Situation matrimoniale trouvé avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/parametre/SourceDroitController.java b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/SourceDroitController.java new file mode 100644 index 0000000..a4ebf1f --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/SourceDroitController.java @@ -0,0 +1,98 @@ +package io.gmss.infocad.controllers.infocad.parametre; + + +import io.gmss.infocad.entities.infocad.parametre.SourceDroit; +import io.gmss.infocad.interfaces.infocad.parametre.SourceDroitService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/source-droit", produces = MediaType.APPLICATION_JSON_VALUE) +public class SourceDroitController { + + private final SourceDroitService sourceDroitService; + + public SourceDroitController(SourceDroitService sourceDroitService) { + this.sourceDroitService = sourceDroitService; + } + + @PostMapping("/create") + public ResponseEntity createSourceDroit(@RequestBody @Valid @Validated SourceDroit sourceDroit) { + try{ + sourceDroit = sourceDroitService.createSourceDroit(sourceDroit); + return new ResponseEntity<>( + new ApiResponse<>(true, sourceDroit, "Source de droit créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateSourceDroit(@PathVariable Long id, @RequestBody SourceDroit sourceDroit) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, sourceDroitService.updateSourceDroit(id, sourceDroit), "Source de droit mise à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteSourceDroitr(@PathVariable Long id) { + try{ + sourceDroitService.deleteSourceDroit(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Source de droit supprimée avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllSourceDroitList() { + return new ResponseEntity<>( + new ApiResponse<>(true, sourceDroitService.getSourceDroitList(), "Liste des sources de droit chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllSourceDroitPaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, sourceDroitService.getSourceDroitList(pageable), "Liste des sources de droit chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getSourceDroitById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, sourceDroitService.getSourceDroitById(id), "Source de droit trouvé avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/parametre/StructureController.java b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/StructureController.java new file mode 100644 index 0000000..60d90f8 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/StructureController.java @@ -0,0 +1,118 @@ +package io.gmss.infocad.controllers.infocad.parametre; + + +import io.gmss.infocad.entities.infocad.parametre.Structure; +import io.gmss.infocad.interfaces.decoupage.ArrondissementService; +import io.gmss.infocad.interfaces.infocad.parametre.StructureService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/structure", produces = MediaType.APPLICATION_JSON_VALUE) +public class StructureController { + + private final StructureService structureService; + private final ArrondissementService arrondissementService; + + public StructureController(StructureService structureService, ArrondissementService arrondissementService) { + this.structureService = structureService; + this.arrondissementService = arrondissementService; + } + + @PostMapping("/create") + public ResponseEntity createStructure(@RequestBody @Valid @Validated Structure structure) { + try{ + structure = structureService.createStructure(structure); + return new ResponseEntity<>( + new ApiResponse<>(true, structure, "Structure créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateStructure(@PathVariable Long id, @RequestBody Structure structure) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, structureService.updateStructure(id, structure), "Structure mise à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteStructurer(@PathVariable Long id) { + try{ + structureService.deleteStructure(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Structure supprimée avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllStructureList() { + return new ResponseEntity<>( + new ApiResponse<>(true, structureService.getStructureList(), "Liste des structures chargée avec succès."), + HttpStatus.OK + ); + } + + + @GetMapping("/all-by-arrondissement") + public ResponseEntity getAllStructureListByArrondissement(@RequestParam Long arrondissementId) { + + if(arrondissementService.getArrondissementById(arrondissementId).isPresent()){ + return new ResponseEntity<>( + new ApiResponse<>(true, structureService.getStructuresByArrondissement(arrondissementId), "Liste des structures chargée avec succès."), + HttpStatus.OK + ); + }else{ + return new ResponseEntity<>( + new ApiResponse<>(false,"Impossible de trouver l'arrondissement spécifiée."), + HttpStatus.OK + ); + } + } + + @GetMapping("/all-paged") + public ResponseEntity getAllStructurePaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, structureService.getStructureList(pageable), "Liste des structures chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getStructureById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, structureService.getStructureById(id), "Structure trouvé avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypeContestationController.java b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypeContestationController.java new file mode 100644 index 0000000..ab527bb --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypeContestationController.java @@ -0,0 +1,98 @@ +package io.gmss.infocad.controllers.infocad.parametre; + + +import io.gmss.infocad.entities.infocad.parametre.TypeContestation; +import io.gmss.infocad.interfaces.infocad.parametre.TypeContestationService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/type-contestation", produces = MediaType.APPLICATION_JSON_VALUE) +public class TypeContestationController { + + private final TypeContestationService typeContestationService; + + public TypeContestationController(TypeContestationService typeContestationService) { + this.typeContestationService = typeContestationService; + } + + @PostMapping("/create") + public ResponseEntity createTypeContestation(@RequestBody @Valid @Validated TypeContestation typeContestation) { + try{ + typeContestation = typeContestationService.createTypeContestation(typeContestation); + return new ResponseEntity<>( + new ApiResponse<>(true, typeContestation, "Type de contestation créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateTypeContestation(@PathVariable Long id, @RequestBody TypeContestation typeContestation) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, typeContestationService.updateTypeContestation(id, typeContestation), "Type de contestation mis à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteTypeContestationr(@PathVariable Long id) { + try{ + typeContestationService.deleteTypeContestation(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Type de contestation supprimé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllTypeContestationList() { + return new ResponseEntity<>( + new ApiResponse<>(true, typeContestationService.getTypeContestationList(), "Liste des types de contestation chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllTypeContestationPaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, typeContestationService.getTypeContestationList(pageable), "Liste des types de contestation chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getTypeContestationById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, typeContestationService.getTypeContestationById(id), "Type de contestation trouvé avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypeDomaineController.java b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypeDomaineController.java new file mode 100644 index 0000000..56b4c41 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypeDomaineController.java @@ -0,0 +1,98 @@ +package io.gmss.infocad.controllers.infocad.parametre; + + +import io.gmss.infocad.entities.infocad.parametre.TypeDomaine; +import io.gmss.infocad.interfaces.infocad.parametre.TypeDomaineService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/type-domaine", produces = MediaType.APPLICATION_JSON_VALUE) +public class TypeDomaineController { + + private final TypeDomaineService typeDomaineService; + + public TypeDomaineController(TypeDomaineService typeDomaineService) { + this.typeDomaineService = typeDomaineService; + } + + @PostMapping("/create") + public ResponseEntity createTypeDomaine(@RequestBody @Valid @Validated TypeDomaine typeDomaine) { + try{ + typeDomaine = typeDomaineService.createTypeDomaine(typeDomaine); + return new ResponseEntity<>( + new ApiResponse<>(true, typeDomaine, "Type de domaine créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateTypeDomaine(@PathVariable Long id, @RequestBody TypeDomaine typeDomaine) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, typeDomaineService.updateTypeDomaine(id, typeDomaine), "Type de domaine mis à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteTypeDomainer(@PathVariable Long id) { + try{ + typeDomaineService.deleteTypeDomaine(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Type de domaine supprimé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllTypeDomaineList() { + return new ResponseEntity<>( + new ApiResponse<>(true, typeDomaineService.getTypeDomaineList(), "Liste des types de domaine chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllTypeDomainePaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, typeDomaineService.getTypeDomaineList(pageable), "Liste des types de domaine chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getTypeDomaineById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, typeDomaineService.getTypeDomaineById(id), "Type de domaine trouvé avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypePersonneController.java b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypePersonneController.java new file mode 100644 index 0000000..239d28a --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypePersonneController.java @@ -0,0 +1,98 @@ +package io.gmss.infocad.controllers.infocad.parametre; + + +import io.gmss.infocad.entities.infocad.parametre.TypePersonne; +import io.gmss.infocad.interfaces.infocad.parametre.TypePersonneService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/type-personne", produces = MediaType.APPLICATION_JSON_VALUE) +public class TypePersonneController { + + private final TypePersonneService typePersonneService; + + public TypePersonneController(TypePersonneService typePersonneService) { + this.typePersonneService = typePersonneService; + } + + @PostMapping("/create") + public ResponseEntity createTypePersonne(@RequestBody @Valid @Validated TypePersonne typePersonne) { + try{ + typePersonne = typePersonneService.createTypePersonne(typePersonne); + return new ResponseEntity<>( + new ApiResponse<>(true, typePersonne, "Type de personne créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateTypePersonne(@PathVariable Long id, @RequestBody TypePersonne typePersonne) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, typePersonneService.updateTypePersonne(id, typePersonne), "Type de personne mis à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteTypePersonner(@PathVariable Long id) { + try{ + typePersonneService.deleteTypePersonne(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Type de personne supprimé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllTypePersonneList() { + return new ResponseEntity<>( + new ApiResponse<>(true, typePersonneService.getTypePersonneList(), "Liste des types de personne chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllTypePersonnePaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, typePersonneService.getTypePersonneList(pageable), "Liste des types de personne chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getTypePersonneById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, typePersonneService.getTypePersonneById(id), "Type de personne trouvé avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypePieceController.java b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypePieceController.java new file mode 100644 index 0000000..3ff58b5 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypePieceController.java @@ -0,0 +1,98 @@ +package io.gmss.infocad.controllers.infocad.parametre; + + +import io.gmss.infocad.entities.infocad.parametre.TypePiece; +import io.gmss.infocad.interfaces.infocad.parametre.TypePieceService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/type-piece", produces = MediaType.APPLICATION_JSON_VALUE) +public class TypePieceController { + + private final TypePieceService typePieceService; + + public TypePieceController(TypePieceService typePieceService) { + this.typePieceService = typePieceService; + } + + @PostMapping("/create") + public ResponseEntity createTypePiece(@RequestBody @Valid @Validated TypePiece typePiece) { + try{ + typePiece = typePieceService.createTypePiece(typePiece); + return new ResponseEntity<>( + new ApiResponse<>(true, typePiece, "Type de piece créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateTypePiece(@PathVariable Long id, @RequestBody TypePiece typePiece) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, typePieceService.updateTypePiece(id, typePiece), "Type de piece mis à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteTypePiecer(@PathVariable Long id) { + try{ + typePieceService.deleteTypePiece(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Type de piece supprimé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllTypePieceList() { + return new ResponseEntity<>( + new ApiResponse<>(true, typePieceService.getTypePieceList(), "Liste des types de piece chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllTypePiecePaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, typePieceService.getTypePieceList(pageable), "Liste des types de piece chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getTypePieceById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, typePieceService.getTypePieceById(id), "Type de piece trouvé avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypeRepresentationController.java b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypeRepresentationController.java new file mode 100644 index 0000000..391a028 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/TypeRepresentationController.java @@ -0,0 +1,98 @@ +package io.gmss.infocad.controllers.infocad.parametre; + + +import io.gmss.infocad.entities.infocad.parametre.TypeRepresentation; +import io.gmss.infocad.interfaces.infocad.parametre.TypeRepresentationService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/type-representation", produces = MediaType.APPLICATION_JSON_VALUE) +public class TypeRepresentationController { + + private final TypeRepresentationService typeRepresentationService; + + public TypeRepresentationController(TypeRepresentationService typeRepresentationService) { + this.typeRepresentationService = typeRepresentationService; + } + + @PostMapping("/create") + public ResponseEntity createTypeRepresentation(@RequestBody @Valid @Validated TypeRepresentation typeRepresentation) { + try{ + typeRepresentation = typeRepresentationService.createTypeRepresentation(typeRepresentation); + return new ResponseEntity<>( + new ApiResponse<>(true, typeRepresentation, "Type de representation créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateTypeRepresentation(@PathVariable Long id, @RequestBody TypeRepresentation typeRepresentation) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, typeRepresentationService.updateTypeRepresentation(id, typeRepresentation), "Type de representation mis à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteTypeRepresentationr(@PathVariable Long id) { + try{ + typeRepresentationService.deleteTypeRepresentation(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Type de representation supprimé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllTypeRepresentationList() { + return new ResponseEntity<>( + new ApiResponse<>(true, typeRepresentationService.getTypeRepresentationList(), "Liste des types de representation chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllTypeRepresentationPaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, typeRepresentationService.getTypeRepresentationList(pageable), "Liste des types de representation chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getTypeRepresentationById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, typeRepresentationService.getTypeRepresentationById(id), "Type de representation trouvé avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/notification/EmailController.java b/src/main/java/io/gmss/infocad/controllers/notification/EmailController.java new file mode 100644 index 0000000..043db9d --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/notification/EmailController.java @@ -0,0 +1,38 @@ +package io.gmss.infocad.controllers.notification; + +import io.gmss.infocad.interfaces.notification.EmailService; +import io.gmss.infocad.paylaods.EmailDetails; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping(value = "api/email", produces = MediaType.APPLICATION_JSON_VALUE) +public class EmailController { + + private final EmailService emailService; + + public EmailController(EmailService emailService) { + this.emailService = emailService; + } + + // Sending a simple Email + @PostMapping("/sendMail") + public String sendMail(@RequestBody EmailDetails details) + { + return emailService.sendSimpleMail(details); + } + + // Sending email with attachment + @PostMapping("/sendMailWithAttachment") + public String sendMailWithAttachment( + @RequestBody EmailDetails details) + { + String status + = emailService.sendMailWithAttachment(details); + + return status; + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/report/ReportingController.java b/src/main/java/io/gmss/infocad/controllers/report/ReportingController.java new file mode 100644 index 0000000..d90ca7b --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/report/ReportingController.java @@ -0,0 +1,73 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package io.gmss.infocad.controllers.report; + +import io.gmss.infocad.enums.FormatRapport; +import io.gmss.infocad.paylaods.request.FiltreEnquetePayLoad; +import io.gmss.infocad.repositories.infocad.metier.BlocRepository; +import io.gmss.infocad.repositories.infocad.parametre.StructureRepository; +import io.gmss.infocad.service.ReportService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; + +/** + * @author AKAKPO Aurince + */ +@RestController +@RequestMapping(value = "/api/rapport", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(value = "controleur rapport", description = "API d'edition des rapport.", tags = {"Rapports"}) +@CrossOrigin(origins = "*", maxAge = 3600) +public class ReportingController { + private final ReportService reportService; + private final BlocRepository blocRepository; + private final StructureRepository structureRepository; + private static final Logger logger = LoggerFactory.getLogger(ReportingController.class); + + public ReportingController(ReportService reportService, BlocRepository blocRepository, StructureRepository structureRepository) { + this.reportService = reportService; + this.blocRepository = blocRepository; + this.structureRepository = structureRepository; + } + + + @GetMapping("/structure/blocs/{formatRapport}/{structureId}") + @ApiOperation(value = "Liste des blos d'une structure.") + public void imprimerBlocsParStructure(HttpServletResponse response, @PathVariable FormatRapport formatRapport, @PathVariable Long structureId) { + try { + reportService.imprimerBlocsStructure(response,formatRapport,structureId); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @GetMapping("/bloc/enquetes/{formatRapport}/{blocId}") + @ApiOperation(value = "Liste des zones ou quartiers d'intervention d'une structure.") + public void imprimerEnqueteParBloc(HttpServletResponse response, @PathVariable FormatRapport formatRapport, @PathVariable Long blocId) { + try { + reportService.imprimerEnqueteParBloc(response,formatRapport,blocId); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @PostMapping("/filtre/enquetes/{formatRapport}") + @ApiOperation(value = "Liste des zones ou quartiers d'intervention d'une structure.") + public void imprimerEnqueteParFiltre(HttpServletResponse response, @RequestBody FiltreEnquetePayLoad filtreEnquetePayLoad, @PathVariable FormatRapport formatRapport) { + try { + reportService.imprimerEnqueteParFiltre(response,filtreEnquetePayLoad,formatRapport); + } catch (Exception e) { + e.printStackTrace(); + } + } + + +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/controllers/rfu/parametre/CaracteristiqueController.java b/src/main/java/io/gmss/infocad/controllers/rfu/parametre/CaracteristiqueController.java new file mode 100644 index 0000000..652f027 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/rfu/parametre/CaracteristiqueController.java @@ -0,0 +1,98 @@ +package io.gmss.infocad.controllers.rfu.parametre; + + +import io.gmss.infocad.entities.rfu.parametre.Caracteristique; +import io.gmss.infocad.interfaces.rfu.parametre.CaracteristiqueService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/caracteristique", produces = MediaType.APPLICATION_JSON_VALUE) +public class CaracteristiqueController { + + private final CaracteristiqueService caracteristiqueService; + + public CaracteristiqueController(CaracteristiqueService caracteristiqueService) { + this.caracteristiqueService = caracteristiqueService; + } + + @PostMapping("/create") + public ResponseEntity createCaracteristique(@RequestBody @Valid @Validated Caracteristique caracteristique) { + try{ + caracteristique = caracteristiqueService.createCaracteristique(caracteristique); + return new ResponseEntity<>( + new ApiResponse<>(true, caracteristique, "Caracteristique créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateCaracteristique(@PathVariable Long id, @RequestBody Caracteristique caracteristique) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, caracteristiqueService.updateCaracteristique(id, caracteristique), "Caracteristique mise à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteCaracteristique(@PathVariable Long id) { + try{ + caracteristiqueService.deleteCaracteristique(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Caracteristique supprimée avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllCaracteristiqueList() { + return new ResponseEntity<>( + new ApiResponse<>(true, caracteristiqueService.getCaracteristiqueList(), "Liste des caractéristiques chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllCaracteristiquePaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, caracteristiqueService.getCaracteristiqueList(pageable), "Liste des caractéristiques chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getCaracteristiqueById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, caracteristiqueService.getCaracteristiqueById(id), "Caracteristique trouvée avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/rfu/parametre/TypeCaracteristiqueController.java b/src/main/java/io/gmss/infocad/controllers/rfu/parametre/TypeCaracteristiqueController.java new file mode 100644 index 0000000..d4956f3 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/rfu/parametre/TypeCaracteristiqueController.java @@ -0,0 +1,98 @@ +package io.gmss.infocad.controllers.rfu.parametre; + + +import io.gmss.infocad.entities.rfu.parametre.TypeCaracteristique; +import io.gmss.infocad.interfaces.rfu.parametre.TypeCaracteristiqueService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/type-caracteristique", produces = MediaType.APPLICATION_JSON_VALUE) +public class TypeCaracteristiqueController { + + private final TypeCaracteristiqueService typeCaracteristiqueService; + + public TypeCaracteristiqueController(TypeCaracteristiqueService typeCaracteristiqueService) { + this.typeCaracteristiqueService = typeCaracteristiqueService; + } + + @PostMapping("/create") + public ResponseEntity createTypeCaracteristique(@RequestBody @Valid @Validated TypeCaracteristique typeCaracteristique) { + try{ + typeCaracteristique = typeCaracteristiqueService.createTypeCaracteristique(typeCaracteristique); + return new ResponseEntity<>( + new ApiResponse<>(true, typeCaracteristique, "Type de caracteristique créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateTypeCaracteristique(@PathVariable Long id, @RequestBody TypeCaracteristique typeCaracteristique) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, typeCaracteristiqueService.updateTypeCaracteristique(id, typeCaracteristique), "Type caracteristique mis à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteTypeCaracteristique(@PathVariable Long id) { + try{ + typeCaracteristiqueService.deleteTypeCaracteristique(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Type caracteristique supprimé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllTypeCaracteristiqueList() { + return new ResponseEntity<>( + new ApiResponse<>(true, typeCaracteristiqueService.getTypeCaracteristiqueList(), "Liste des types caracteristiques chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllTypeCaracteristiquePaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, typeCaracteristiqueService.getTypeCaracteristiqueList(pageable), "Liste des types caracteristiques chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getTypeCaracteristiqueById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, typeCaracteristiqueService.getTypeCaracteristiqueById(id), "Type caracteristique trouvé avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/statistique/StatistiqueController.java b/src/main/java/io/gmss/infocad/controllers/statistique/StatistiqueController.java new file mode 100644 index 0000000..baaf216 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/statistique/StatistiqueController.java @@ -0,0 +1,52 @@ +package io.gmss.infocad.controllers.statistique; + +import io.gmss.infocad.interfaces.statistique.StatistiquesService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping(value = "api/statistique", produces = MediaType.APPLICATION_JSON_VALUE) +public class StatistiqueController { + private final StatistiquesService statistiquesService ; + + public StatistiqueController(StatistiquesService statistiquesService) { + this.statistiquesService = statistiquesService; + } + @GetMapping(path = "/user/enquete-par-statut") + public ResponseEntity getStatistiquesParStatut() { + return new ResponseEntity<>( + new ApiResponse<>(true, statistiquesService.getStatEnqueteParStatut(), "Statistique des enquêtes par statut."), + HttpStatus.OK + ); + } + + @GetMapping(path = "/enquete-par-arrondissement/{commune_id}") + public ResponseEntity getStatistiquesParArrondissement(@PathVariable Long commune_id) { + return new ResponseEntity<>( + new ApiResponse<>(true, statistiquesService.getStatEnqueteAdminDecoupage(commune_id), "Statistique des enquêtes par arrondissement."), + HttpStatus.OK + ); + } + + @GetMapping(path = "/user/enquete-par-structure") + public ResponseEntity getStatistiquesParStructure() { + return new ResponseEntity<>( + new ApiResponse<>(true, statistiquesService.getStatEnqueteAdminStructure(), "Statistique des enquêtes par structure."), + HttpStatus.OK + ); + } + + @GetMapping(path = "/user/enquete-par-bloc") + public ResponseEntity getStatistiquesParBloc() { + return new ResponseEntity<>( + new ApiResponse<>(true, statistiquesService.getStatBloc(), "Statistique des enquêtes par bloc."), + HttpStatus.OK + ); + } +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/controllers/synchronisation/RestaurationController.java b/src/main/java/io/gmss/infocad/controllers/synchronisation/RestaurationController.java new file mode 100644 index 0000000..9ae736d --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/synchronisation/RestaurationController.java @@ -0,0 +1,87 @@ +package io.gmss.infocad.controllers.synchronisation; + +import io.gmss.infocad.interfaces.synchronisation.RestaurationService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping(value = "api/restauration", produces = MediaType.APPLICATION_JSON_VALUE) +public class RestaurationController { + public final RestaurationService restaurationService; + + public RestaurationController(RestaurationService restaurationService) { + this.restaurationService = restaurationService; + } + + @GetMapping(path = "/enquete/{terminalId}") + public ResponseEntity getEnquetes(@PathVariable Long terminalId) { + return new ResponseEntity<>( + new ApiResponse<>(true, restaurationService.getEnquete(terminalId), "liste des enquetes avec succès."), + HttpStatus.OK + ); + } + + @GetMapping(path = "/acteur-concerne/{terminalId}") + public ResponseEntity getActeurConcerne(@PathVariable Long terminalId) { + return new ResponseEntity<>( + new ApiResponse<>(true, restaurationService.getActeurConcernes(terminalId), "liste des acteurs concernés avec succès."), + HttpStatus.OK + ); + } + + @GetMapping(path = "/personne/{terminalId}") // ok + public ResponseEntity getPersonnes(@PathVariable Long terminalId) { + return new ResponseEntity<>( + new ApiResponse<>(true, restaurationService.getPersonne(terminalId), "liste des personnes avec succès."), + HttpStatus.OK + ); + } + + @GetMapping(path = "/membre-groupe/{terminalId}") + public ResponseEntity getMembrePersonnes(@PathVariable Long terminalId) { + return new ResponseEntity<>( + new ApiResponse<>(true, restaurationService.getMembreGroupe(terminalId), "liste des membres groupe avec succès."), + HttpStatus.OK + ); + } + + @GetMapping(path = "/parcelle/{terminalId}") + public ResponseEntity getParcelle(@PathVariable Long terminalId) { + return new ResponseEntity<>( + new ApiResponse<>(true, restaurationService.getParcelle(terminalId), "liste des parcelle avec succès."), + HttpStatus.OK + ); + } + + @GetMapping(path = "/piece/{terminalId}") + public ResponseEntity getPieces(@PathVariable Long terminalId) { + return new ResponseEntity<>( + new ApiResponse<>(true, restaurationService.getPieces(terminalId), "liste des enquetes avec succès."), + HttpStatus.OK + ); + } + + @GetMapping(path = "/upload/{terminalId}") + public ResponseEntity getUpload(@PathVariable Long terminalId) { + return new ResponseEntity<>( + new ApiResponse<>(true, restaurationService.getUpload(terminalId), "liste des enquetes avec succès."), + HttpStatus.OK + ); + } + + @GetMapping(path = "/current-user-tpes") + public ResponseEntity getCurrentUserTpe() { + return new ResponseEntity<>( + new ApiResponse<>(true, restaurationService.getTpeListByCurrentUser(), "liste des enquetes avec succès."), + HttpStatus.OK + ); + } + + +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/controllers/synchronisation/SynchronisationController.java b/src/main/java/io/gmss/infocad/controllers/synchronisation/SynchronisationController.java new file mode 100644 index 0000000..0960c6e --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/synchronisation/SynchronisationController.java @@ -0,0 +1,132 @@ +package io.gmss.infocad.controllers.synchronisation; + +import io.gmss.infocad.interfaces.synchronisation.SynchronisationService; +import io.gmss.infocad.paylaods.ApiResponse; +import io.gmss.infocad.paylaods.request.*; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +@RestController +@RequestMapping(value = "api/synchronisation", produces = MediaType.APPLICATION_JSON_VALUE) +public class SynchronisationController { + private final SynchronisationService synchronisationService; + + public SynchronisationController(SynchronisationService synchronisationService) { + this.synchronisationService = synchronisationService; + } + + @GetMapping("/user-decoupage-territorial") + public ResponseEntity getUserDecoupageTerritorial() { + return new ResponseEntity<>( + new ApiResponse<>(true, synchronisationService.getDecoupageAdminUserConnecter(), "Liste des découpages territoriaux chargés avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/references") + public ResponseEntity getAllReferences() { + return new ResponseEntity<>( + new ApiResponse<>(true, synchronisationService.getReferencesSyncResponses(), "Liste des données de référence chargée avec succès."), + HttpStatus.OK + ); + } + + @PostMapping("/personnes") + public ResponseEntity syncPersonne(@RequestBody List personnePayLoads) { + return new ResponseEntity<>( + new ApiResponse<>(true, synchronisationService.syncPersonnes(personnePayLoads), "Liste des personnes synchronisée avec succès."), + HttpStatus.OK + ); + } + @PostMapping("/membre-groupe") + public ResponseEntity syncMembreGroupe(@RequestBody List membreGroupePayLoads) { + return new ResponseEntity<>( + new ApiResponse<>(true, synchronisationService.syncMembreGroupe(membreGroupePayLoads), "Liste des membres de groupes de personnes synchronisée avec succès."), + HttpStatus.OK + ); + } + @PostMapping("/enquete") + public ResponseEntity syncEnquete(@RequestBody List enquetePayLoads) { + return new ResponseEntity<>( + new ApiResponse<>(true, synchronisationService.syncEnquete(enquetePayLoads), "Liste des enquêtes synchronisée avec succès."), + HttpStatus.OK + ); + } + @PostMapping("/parcelle") + public ResponseEntity syncParcelle(@RequestBody List parcellePayLoads) { + return new ResponseEntity<>( + new ApiResponse<>(true, synchronisationService.syncParcelle(parcellePayLoads), "Liste des parceclles synchronisée avec succès."), + HttpStatus.OK + ); + } + @PostMapping("/piece") + public ResponseEntity syncPiece(@RequestBody List piecePayLoads) { + return new ResponseEntity<>( + new ApiResponse<>(true, synchronisationService.syncPiece(piecePayLoads), "Liste des pièces synchronisée avec succès."), + HttpStatus.OK + ); + } + @PostMapping("/acteur-concerne") + public ResponseEntity syncActeurConcerne(@RequestBody List piecePayLoads) { + return new ResponseEntity<>( + new ApiResponse<>(true, synchronisationService.syncActeurConcerne(piecePayLoads), "Liste des acteurs concernes synchronisée avec succès."), + HttpStatus.OK + ); + } + + //@PostMapping("/files") + @PostMapping(path = "/files") + public ResponseEntity syncFiles(@RequestPart(required = true) MultipartFile file, + @RequestParam(required=false) Long idBackend, + @RequestParam Long externalKey, + @RequestParam(required=false) Long pieceId, + @RequestParam(required=false) Long membreGroupeId, + @RequestParam(required=false) Long terminalId, + @RequestParam(required=false) String name, + @RequestParam(required=false) String filePath, + @RequestParam(required=false) Long max_numero_piece_id, + @RequestParam(required=false) Long max_numero_upload_id, + @RequestParam(required=false) Long max_numero_acteur_concerne_id, + @RequestParam(required=false) Long enqueteId + ) { + return new ResponseEntity<>( + new ApiResponse<>(true, synchronisationService.syncFiles(file, + idBackend, + externalKey, + pieceId, + membreGroupeId, + terminalId, + name, + filePath, + max_numero_piece_id, + max_numero_upload_id, + max_numero_acteur_concerne_id, + enqueteId), "Liste des fichiers synchronisée avec succès."), + HttpStatus.OK + ); + } + + @PostMapping(path = "/synchronise/all-enquete-data") + public ResponseEntity syncAllEnqueteData(@ModelAttribute EnqueteAllDataPayload enqueteAllDataPayload) { + return new ResponseEntity<>( + new ApiResponse<>(true, synchronisationService.syncEnqueteAllData(enqueteAllDataPayload), "Les enquetes sont synchronisées avec succès."), + HttpStatus.OK + ); + } + + @PostMapping(path = "/synchronise/enquete/confirme-from-mobile") + public ResponseEntity syncAllEnqueteData(@RequestBody List idEnquetes) { + return new ResponseEntity<>( + new ApiResponse<>(true, synchronisationService.syncEnqueteFromMobile(idEnquetes), "Synchronisation confirmée avec succès."), + HttpStatus.OK + ); + } + + + +} diff --git a/src/main/java/io/gmss/infocad/controllers/user/AuthController.java b/src/main/java/io/gmss/infocad/controllers/user/AuthController.java new file mode 100755 index 0000000..ff0fd19 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/user/AuthController.java @@ -0,0 +1,106 @@ +package io.gmss.infocad.controllers.user; + +import io.gmss.infocad.entities.user.Role; +import io.gmss.infocad.entities.user.User; +import io.gmss.infocad.enums.UserRole; +import io.gmss.infocad.interfaces.infocad.parametre.StructureService; +import io.gmss.infocad.interfaces.user.RoleService; +import io.gmss.infocad.interfaces.user.UserService; +import io.gmss.infocad.paylaods.ApiResponse; +import io.gmss.infocad.paylaods.JwtAuthenticationResponse; +import io.gmss.infocad.paylaods.Login; +import io.gmss.infocad.paylaods.UserRequest; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.HashSet; +import java.util.Set; + +@RestController +@RequestMapping(value = "api/auth", produces = MediaType.APPLICATION_JSON_VALUE) +public class AuthController { + + private final UserService userService; + private final RoleService roleService; + private final StructureService structureService; + + public AuthController(UserService userService, RoleService roleService, StructureService structureService) { + this.userService = userService; + this.roleService = roleService; + this.structureService = structureService; + } + + @PostMapping(value = "/login") + public ResponseEntity login(@RequestBody @Validated @Valid Login login) { + try{ + JwtAuthenticationResponse jwtAuthenticationResponse = userService.loginUser(login); + + if(!jwtAuthenticationResponse.getToken().isEmpty()){ + User user = userService.getUserByUsername(login.getUsername()); + if(user.isResetPassword()){ + return new ResponseEntity<>( + new ApiResponse<>(false, jwtAuthenticationResponse, "Vous devez impérativement changer son mot de passe avant de pouvoir continuer toute action dans le logiciel infocad."), + HttpStatus.OK + ); + }else{ + return new ResponseEntity<>( + new ApiResponse<>(true, jwtAuthenticationResponse, "Authentification réussie avec succès."), + HttpStatus.OK + ); + } + }else{ + return new ResponseEntity<>( + new ApiResponse<>(false, "Authentification échouée."), + HttpStatus.OK + ); + } + }catch (Exception e){ + e.printStackTrace(); + return new ResponseEntity<>( + new ApiResponse(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PostMapping("/signup") + public ResponseEntity createUser(@RequestBody @Valid @Validated UserRequest userRequest) { + try{ + User user = getUser(userRequest); + user.setUsername(userRequest.getEmail()); + user = userService.createUser(user, false); + return new ResponseEntity<>( + new ApiResponse<>(true, user, "User created successully."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + private User getUser(UserRequest userRequest) { + User user = new User(); + user.setNom(userRequest.getNom()); + user.setPrenom(userRequest.getPrenom()); + user.setTel(userRequest.getTelephone()); + user.setEmail(userRequest.getEmail()); + user.setUsername(userRequest.getEmail()); + user.setPassword(userRequest.getPassword()); + user.setActive(false); + Set roleSet = new HashSet<>(); + roleSet.add(roleService.getRoleByRoleName(UserRole.ROLE_ANONYMOUS).get()); + user.setRoles(roleSet); + user.setStructure(structureService.getStructureById(userRequest.getStructureId()).get()); + return user; + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/user/DemandeReinitialisationMPController.java b/src/main/java/io/gmss/infocad/controllers/user/DemandeReinitialisationMPController.java new file mode 100644 index 0000000..63cc236 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/user/DemandeReinitialisationMPController.java @@ -0,0 +1,158 @@ +package io.gmss.infocad.controllers.user; + + +import io.gmss.infocad.entities.user.DemandeReinitialisationMP; +import io.gmss.infocad.entities.user.User; +import io.gmss.infocad.enums.UserRole; +import io.gmss.infocad.interfaces.user.DemandeReinitialisationMPService; +import io.gmss.infocad.interfaces.user.RoleService; +import io.gmss.infocad.interfaces.user.UserService; +import io.gmss.infocad.paylaods.ApiResponse; +import io.gmss.infocad.paylaods.DemandeReinitialisationMPResponse; +import io.gmss.infocad.security.CurrentUser; +import io.gmss.infocad.security.UserPrincipal; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping(value = "api/demande-reinitialisation-mp", produces = MediaType.APPLICATION_JSON_VALUE) +public class DemandeReinitialisationMPController { + + private final DemandeReinitialisationMPService demandeReinitialisationMPService; + private final UserService userService; + private final RoleService roleService; + + public DemandeReinitialisationMPController(DemandeReinitialisationMPService demandeReinitialisationMPService, UserService userService, RoleService roleService) { + this.demandeReinitialisationMPService = demandeReinitialisationMPService; + this.userService = userService; + this.roleService = roleService; + } + + @GetMapping("/create") + public ResponseEntity createDemandeReinitialisationMP(@RequestParam String usernamrOrEmail) { + try { + demandeReinitialisationMPService.createDemandeReinitialisationMP(usernamrOrEmail); + return new ResponseEntity<>( + new ApiResponse<>(true, "DemandeReinitialisation MP créé avec succès."), + HttpStatus.OK + ); + } catch (Exception e) { + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateDemandeReinitialisationMP(@PathVariable Long id, @RequestBody DemandeReinitialisationMP demandeReinitialisationMP) { + try { + return new ResponseEntity<>( + new ApiResponse<>(true, demandeReinitialisationMPService.updateDemandeReinitialisationMP(id, demandeReinitialisationMP), "DemandeReinitialisationMP mis à jour avec succès."), + HttpStatus.OK + ); + } catch (Exception e) { + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteDemandeReinitialisationMPr(@PathVariable Long id) { + try { + demandeReinitialisationMPService.deleteDemandeReinitialisationMP(id); + return new ResponseEntity<>( + new ApiResponse<>(true, "Demande de Reinitialisation de mot de passe supprimé avec succès."), + HttpStatus.OK + ); + } catch (Exception e) { + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllDemandeReinitialisationMPList(@CurrentUser UserPrincipal userPrincipal) { + try { + + User user = userPrincipal.getUser(); + + if(user.getRoles().stream().anyMatch(r -> r.getNom().equals(UserRole.ROLE_ADMIN))){ + return new ResponseEntity<>( + new ApiResponse<>(true, demandeReinitialisationMPService.getDemandeReinitialisationMPList(), "Liste des demande de Reinitialisation chargée avec succès."), + HttpStatus.OK + ); + }else{ + if (user.getStructure() == null) { + return new ResponseEntity<>( + new ApiResponse<>(false, "Cet utilisateur n'est pas dans une structure; on ne peut donc pas afficher les demandes de réinitialisation de mot de passe."), + HttpStatus.OK + ); + } else { + return new ResponseEntity<>( + new ApiResponse<>(true, demandeReinitialisationMPService.getDemandeReinitialisationMPNonTraiteList(user.getStructure()), "Liste des demande de Reinitialisation chargée avec succès."), + HttpStatus.OK + ); + } + } +// }else { +// if (user.getStructure() == null) { +// return new ResponseEntity<>( +// new ApiResponse<>(false, "Cet utilisateur n'est pas dans une structure; on ne peut donc pas afficher les demandes de réinitialisation de mot de passe."), +// HttpStatus.OK +// ); +// } else { +// return new ResponseEntity<>( +// new ApiResponse<>(true, demandeReinitialisationMPService.getDemandeReinitialisationMPNonTraiteList(user.getStructure()), "Liste des demande de Reinitialisation chargée avec succès."), +// HttpStatus.OK +// ); +// } +// } + } catch (Exception e) { + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + + } + + @GetMapping("/all-paged") + public ResponseEntity getAllDemandeReinitialisationMPPaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, demandeReinitialisationMPService.getDemandeReinitialisationMPList(pageable), "Liste des demandeReinitialisationMP chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getDemandeReinitialisationMPById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, demandeReinitialisationMPService.getDemandeReinitialisationMPById(id), "DemandeReinitialisationMP trouvé avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/reset") + public ResponseEntity traiterDemande(@RequestParam Long id, @RequestParam String password) { + DemandeReinitialisationMP demandeReinitialisationMP = demandeReinitialisationMPService.traiterDemandeReinitialisation(id, password); + return new ResponseEntity<>( + new ApiResponse<>(true, + new DemandeReinitialisationMPResponse( + userService.getUserResponseFromUser(demandeReinitialisationMP.getUser()), + demandeReinitialisationMP.getEtatDemande() + ), + "Traitement effectué avec succès."), + HttpStatus.OK + ); + } +} diff --git a/src/main/java/io/gmss/infocad/controllers/user/RoleController.java b/src/main/java/io/gmss/infocad/controllers/user/RoleController.java new file mode 100755 index 0000000..610b117 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/user/RoleController.java @@ -0,0 +1,93 @@ +package io.gmss.infocad.controllers.user; + + +import io.gmss.infocad.entities.user.Role; +import io.gmss.infocad.interfaces.user.RoleService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/role", produces = MediaType.APPLICATION_JSON_VALUE) +public class RoleController { + + private final RoleService roleService; + + public RoleController(RoleService roleService) { + this.roleService = roleService; + } + + + @PostMapping("/create") + public ResponseEntity createRole(@RequestBody @Valid @Validated Role role) { + try{ + role = roleService.createRole(role); + return new ResponseEntity<>( + new ApiResponse<>(true, role, "Role created successully."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + + @PutMapping("/update/{id}") + public ResponseEntity updateRole(@PathVariable Long id, @RequestBody Role role) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, roleService.updateRole(id, role), "Role updated successully."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteRole(@PathVariable Long id) { + try{ + roleService.deleteRole(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Role deleted successully"), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAll() { + return new ResponseEntity<>( + new ApiResponse<>(true, roleService.getRoleList(), "Liste des roles."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllPaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, roleService.getRoleList(pageable), "Liste des roles."), + HttpStatus.OK + ); + } + +} diff --git a/src/main/java/io/gmss/infocad/controllers/user/UserController.java b/src/main/java/io/gmss/infocad/controllers/user/UserController.java new file mode 100755 index 0000000..abfc841 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/user/UserController.java @@ -0,0 +1,217 @@ +package io.gmss.infocad.controllers.user; + + +import io.gmss.infocad.entities.user.User; +import io.gmss.infocad.enums.UserRole; +import io.gmss.infocad.interfaces.user.UserService; +import io.gmss.infocad.paylaods.ApiResponse; +import io.gmss.infocad.paylaods.Login; +import io.gmss.infocad.security.CurrentUser; +import io.gmss.infocad.security.UserPrincipal; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping(value = "api/user", produces = MediaType.APPLICATION_JSON_VALUE) +public class UserController { + + private final UserService userService; + + + public UserController(UserService userService) { + this.userService = userService; + } + + @PostMapping("/create") + public ResponseEntity createUser(@RequestBody @Valid @Validated User user) { + try{ + user.setUsername(user.getEmail()); + user = userService.createUser(user, true); + return new ResponseEntity<>( + new ApiResponse<>(true, user, "Utilisateur créé avec succès"), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PostMapping("/change-password") + public ResponseEntity changeUserPassword(@RequestBody @Valid @Validated Login login) { + try{ + userService.updatePassword(login.getUsername(), login.getPassword()); + return new ResponseEntity<>( + new ApiResponse<>(true, "Votre mot de passe à été modifiée avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PostMapping("/reset-password") + public ResponseEntity resetUserPassword(@RequestBody @Valid @Validated Login login) { + try{ + User user = userService.resetPassword(login.getUsername(), login.getPassword()); + return new ResponseEntity<>( + new ApiResponse<>(true, user, "Votre mot de passe à été réinitialisée avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PostMapping("/validate-user-account") + public ResponseEntity validateUserAccount(@RequestBody @Valid @Validated Login login) { + try{ + User user = userService.validateUserAccount(login.getUsername(), login.getUserRole()); + return new ResponseEntity<>( + new ApiResponse<>(true, user, "Cet utilisateur à été activé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + + @PutMapping("/update/{id}") + public ResponseEntity updateUser(@PathVariable Long id, @RequestBody User user) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, userService.updateUser(id, user), "User updated successully."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping ("/activate-or-not") + public ResponseEntity acitvateOrNotUser(@RequestParam Long id) { + try{ + + User user = userService.activateOrNotUser(id); + String message = "Utilisateur activé avec succès"; + if(!user.isActive()) { + message = "Utilisateur désactivé avec succès"; + } + return new ResponseEntity<>( + new ApiResponse<>(true, user , message), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteUser(@PathVariable Long id) { + try{ + userService.deleteUser(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"User deleted successully"), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + + @GetMapping("/all") + public ResponseEntity getAll(@CurrentUser UserPrincipal userPrincipal) { + + User user = userPrincipal.getUser(); + + if(user.getRoles().stream().anyMatch(r -> r.getNom().equals(UserRole.ROLE_ADMIN))){ + return new ResponseEntity<>( + new ApiResponse<>(true, userService.getAllUserListResponse(), "Liste des utilisateurs chargée avec succès."), + HttpStatus.OK + ); + }else{ + return new ResponseEntity<>( + new ApiResponse<>(true, userService.getListUserResponseByStructure(userPrincipal.getUser().getStructure().getId()), "Liste des utilisateurs chargée avec succès."), + HttpStatus.OK + ); + } + } + + @GetMapping("/all-by-structure") + public ResponseEntity getAllByStructure(@CurrentUser UserPrincipal userPrincipal) { + + if(userPrincipal.getUser().getStructure() != null) { + return new ResponseEntity<>( + new ApiResponse<>(true, userService.getListUserByStructure(userPrincipal.getUser().getStructure().getId()), "Liste des utilisateurs chargée avec succès."), + HttpStatus.OK + ); + }else{ + return new ResponseEntity<>( + new ApiResponse<>(false, "Impossible de trouver la structure indiquée."), + HttpStatus.OK + ); + } + } + +// @GetMapping("/all-paged") +// public ResponseEntity getAllpaged(@RequestParam int pageNo, @RequestParam int pageSize) { +// Pageable pageable = PageRequest.of(pageNo, pageSize); +// return new ResponseEntity<>( +// new ApiResponse<>(true, userService.getUserList(pageable), "Liste des utilisateurs chargée avec succès."), +// HttpStatus.OK +// ); +// } + + @GetMapping("/id/{id}") + public ResponseEntity getUserById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, userService.getUserById(id), "User found."), + HttpStatus.OK + ); + } + + @GetMapping("/username/{username}") + public ResponseEntity getUserByUsername(@PathVariable String username) { + return new ResponseEntity<>( + new ApiResponse<>(true, userService.getUserByUsername(username), "User found."), + HttpStatus.OK + ); + } + + @GetMapping("/all-by-role/{userrole}") + public ResponseEntity getUserByUserRole(@PathVariable UserRole userrole) { + return new ResponseEntity<>( + new ApiResponse<>(true, userService.getUserByProfil(userrole), "Users found."), + HttpStatus.OK + ); + } + + +} diff --git a/src/main/java/io/gmss/infocad/deserializer/LocalDateDeserializer.java b/src/main/java/io/gmss/infocad/deserializer/LocalDateDeserializer.java new file mode 100644 index 0000000..58a2c08 --- /dev/null +++ b/src/main/java/io/gmss/infocad/deserializer/LocalDateDeserializer.java @@ -0,0 +1,18 @@ +package io.gmss.infocad.deserializer; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; + +import java.io.IOException; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +public class LocalDateDeserializer extends JsonDeserializer { + private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + @Override + public LocalDate deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + return LocalDate.parse(p.getText(), formatter); + } +} diff --git a/src/main/java/io/gmss/infocad/deserializer/LocalDateTimeDeserializer.java b/src/main/java/io/gmss/infocad/deserializer/LocalDateTimeDeserializer.java new file mode 100644 index 0000000..08defff --- /dev/null +++ b/src/main/java/io/gmss/infocad/deserializer/LocalDateTimeDeserializer.java @@ -0,0 +1,18 @@ +package io.gmss.infocad.deserializer; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; + +import java.io.IOException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +public class LocalDateTimeDeserializer extends JsonDeserializer { + private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + @Override + public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + return LocalDateTime.parse(p.getText(), formatter); + } +} diff --git a/src/main/java/io/gmss/infocad/entities/BaseEntity.java b/src/main/java/io/gmss/infocad/entities/BaseEntity.java new file mode 100755 index 0000000..e46b60f --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/BaseEntity.java @@ -0,0 +1,39 @@ +package io.gmss.infocad.entities; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Getter; +import lombok.Setter; +import org.springframework.data.annotation.CreatedBy; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedBy; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import java.io.Serializable; +import java.time.Instant; + +@Getter +@Setter +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) + +public class BaseEntity implements Serializable { + + @CreatedDate + @JsonIgnore + private Instant createdAt; + @LastModifiedDate + @JsonIgnore + private Instant updatedAt; + @CreatedBy + @JsonIgnore + private Long createdBy; + @LastModifiedBy + @JsonIgnore + private Long updatedBy; + @JsonIgnore + private boolean deleted; + private Long externalKey; +} diff --git a/src/main/java/io/gmss/infocad/entities/decoupage/Arrondissement.java b/src/main/java/io/gmss/infocad/entities/decoupage/Arrondissement.java new file mode 100644 index 0000000..a116f9e --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/decoupage/Arrondissement.java @@ -0,0 +1,37 @@ +package io.gmss.infocad.entities.decoupage; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.infocad.metier.Bloc; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@Where(clause = " deleted = false") +public class Arrondissement extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String code; + private String nom; + @ManyToOne + private Commune commune; + @JsonIgnore + @OneToMany(mappedBy = "arrondissement") + private List quartiers; + @JsonIgnore + @OneToMany(mappedBy = "arrondissement") + private List blocs; +} diff --git a/src/main/java/io/gmss/infocad/entities/decoupage/Commune.java b/src/main/java/io/gmss/infocad/entities/decoupage/Commune.java new file mode 100644 index 0000000..21c2100 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/decoupage/Commune.java @@ -0,0 +1,38 @@ +package io.gmss.infocad.entities.decoupage; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.infocad.parametre.Personne; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@Where(clause = " deleted = false") +public class Commune extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String code; + private String nom; + @ManyToOne + private Departement departement; + @JsonIgnore + @OneToMany(mappedBy = "commune") + private List arrondissements; + @JsonIgnore + @OneToMany(mappedBy = "commune") + private List personnes; + +} diff --git a/src/main/java/io/gmss/infocad/entities/decoupage/Departement.java b/src/main/java/io/gmss/infocad/entities/decoupage/Departement.java new file mode 100644 index 0000000..c09ff35 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/decoupage/Departement.java @@ -0,0 +1,31 @@ +package io.gmss.infocad.entities.decoupage; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@Where(clause = " deleted = false") +public class Departement extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String code; + private String nom; + @JsonIgnore + @OneToMany(mappedBy = "departement") + private List communes; +} diff --git a/src/main/java/io/gmss/infocad/entities/decoupage/Nationalite.java b/src/main/java/io/gmss/infocad/entities/decoupage/Nationalite.java new file mode 100644 index 0000000..e5c4f61 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/decoupage/Nationalite.java @@ -0,0 +1,39 @@ +package io.gmss.infocad.entities.decoupage; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.infocad.parametre.Personne; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE nationalite " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class Nationalite extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String libelle; + private String code; + private String indicatif; + private String nationality; + @JsonIgnore + @OneToMany(mappedBy = "nationalite") + private List personnes; +} diff --git a/src/main/java/io/gmss/infocad/entities/decoupage/Quartier.java b/src/main/java/io/gmss/infocad/entities/decoupage/Quartier.java new file mode 100644 index 0000000..76e28a6 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/decoupage/Quartier.java @@ -0,0 +1,31 @@ +package io.gmss.infocad.entities.decoupage; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@Where(clause = " deleted = false") +public class Quartier extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String code; + private String nom; + @JsonIgnore + @ManyToOne + private Arrondissement arrondissement; + +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/metier/ActeurConcerne.java b/src/main/java/io/gmss/infocad/entities/infocad/metier/ActeurConcerne.java new file mode 100644 index 0000000..595394e --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/metier/ActeurConcerne.java @@ -0,0 +1,69 @@ +package io.gmss.infocad.entities.infocad.metier; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.infocad.parametre.Personne; +import io.gmss.infocad.entities.infocad.parametre.PositionRepresentation; +import io.gmss.infocad.entities.infocad.parametre.TypeContestation; +import io.gmss.infocad.entities.infocad.parametre.TypeRepresentation; +import io.gmss.infocad.enums.RoleActeur; +import io.gmss.infocad.enums.TypeDroit; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.ColumnDefault; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE acteur_concerne " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class ActeurConcerne extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String observation; + @Enumerated(EnumType.STRING) + private TypeDroit typeDroit; + private float part; + @ManyToOne + private TypeRepresentation typeRepresentation; + @ManyToOne + private PositionRepresentation positionRepresentation; + @ManyToOne + private Personne personne; + @ManyToOne + private TypeContestation typeContestation; + @JsonIgnore + @ManyToOne + private Enquete enquete; + @Enumerated(EnumType.STRING) + private RoleActeur roleActeur; + @OneToMany(mappedBy = "acteurConcerne") + private List pieces; + @JsonIgnore + @ManyToOne + private Tpe terminal; + @Column(nullable = false, columnDefinition = "BOOLEAN DEFAULT false") + private boolean synchronise; + ////////////////////////////// + private Long blocId; + @ColumnDefault("0") + private int haveDeclarant ; + private Long max_numero_acteur_concerne_id ; + + +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/metier/Bloc.java b/src/main/java/io/gmss/infocad/entities/infocad/metier/Bloc.java new file mode 100644 index 0000000..a32281e --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/metier/Bloc.java @@ -0,0 +1,60 @@ +package io.gmss.infocad.entities.infocad.metier; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.decoupage.Arrondissement; +import io.gmss.infocad.entities.decoupage.Quartier; +import io.gmss.infocad.entities.infocad.parametre.Structure; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; +import java.util.Set; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE bloc " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class Bloc extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + @Column(updatable = false) + private String cote; + private String nom; + @JsonIgnore + private String idBlocParArrondissement; + @JsonIgnore + @Transient + private String nomArrondissement; + @ManyToMany + @JoinTable(name = "blocs_quartiers", + joinColumns = @JoinColumn(name = "bloc_id"), + inverseJoinColumns = @JoinColumn(name = "quartier_id") + ) + private Set quartiers; + @ManyToOne + private Arrondissement arrondissement; + @ManyToOne + private Structure structure; + @JsonIgnore + @OneToMany(mappedBy = "bloc") + private List enquetes; + public String getNomArrondissement() { + return arrondissement.getNom(); + } + +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/metier/Commentaire.java b/src/main/java/io/gmss/infocad/entities/infocad/metier/Commentaire.java new file mode 100644 index 0000000..dc1ca28 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/metier/Commentaire.java @@ -0,0 +1,49 @@ +package io.gmss.infocad.entities.infocad.metier; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import io.gmss.infocad.deserializer.LocalDateTimeDeserializer; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.enums.Origine; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.time.LocalDateTime; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE commentaire " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class Commentaire extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + @JsonFormat(pattern = "dd-MM-yyyy HH:mm:ss") + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + private LocalDateTime dateCommentaire; + private Long idEnquete; + private String commentaire; + private String nomPrenom; + @Enumerated(EnumType.STRING) + private Origine origine; + private String nupParcelle; + @Column(name = "lu", nullable = false, columnDefinition = "BOOLEAN DEFAULT false") + private boolean lu = false; + @Column(name = "synchronise", nullable = false, columnDefinition = "BOOLEAN DEFAULT false") + private boolean synchronise = false; + private Long externalKey; + private Long terminalId; +} 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 new file mode 100644 index 0000000..7a7fb8f --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/metier/Enquete.java @@ -0,0 +1,221 @@ +package io.gmss.infocad.entities.infocad.metier; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import io.gmss.infocad.deserializer.LocalDateDeserializer; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.decoupage.Arrondissement; +import io.gmss.infocad.entities.infocad.parametre.NatureDomaine; +import io.gmss.infocad.entities.rfu.metier.CaracteristiqueParcelle; +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 lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Type; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.time.LocalDate; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE enquete " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +@Inheritance(strategy = InheritanceType.SINGLE_TABLE) +@DiscriminatorColumn(name = "origine_enquete", discriminatorType = DiscriminatorType.STRING) +@DiscriminatorValue("INFOCAD") +public class Enquete extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateEnquete; + private boolean litige; + @JsonIgnore + @ManyToOne + private User user; + @JsonIgnore + @OneToMany(mappedBy = "enquete") + private List acteurConcernes; + @ManyToOne + private Parcelle parcelle; + @JsonIgnore + @ManyToOne + private Bloc bloc; + + @Enumerated(EnumType.STRING) + private StatusEnquete statusEnquete; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateValidation; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateRejet; + @Type(type="text") + private String descriptionMotifRejet; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateFinalisation; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateLitigeResolu; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateSynchronisation; + private boolean synchronise; + @Type(type="text") + private String observationParticuliere; + @Transient + private String nomPrenomEnqueteur; + @Transient + private String nomBloc; + @Transient + private String departement; + @Transient + private String commune; + @Transient + private String arrondissement; + @Transient + private String codeBloc; + @Transient + private String telEnqueteur; + @Transient + private String typeDomaine; + + @Transient + private String structureEnqueteur; + @JsonIgnore + @ManyToOne + private Tpe terminal; + @Transient + private Long terminalId; + + //////////////////////////////// + private Long quartierId; + private Long arrondissementId; + private Long communeId; + private Long departementId; + private Long numeroProvisoir; + private String codeParcelle; + private String nomProprietaireParcelle; + private String codeEquipe; + private String numeroTitreFoncier; + + /// Nouveau champs ajoutés pour RFU Abomey + 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; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateDebutExcemption; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateFinExcemption; + @JsonIgnore + @OneToMany(mappedBy = "enquete") + private List enqueteUniteLogements; + @JsonIgnore + @OneToMany(mappedBy = "enquete") + private List enqueteBatiments; + @JsonIgnore + @OneToMany(mappedBy = "enquete") + private List caracteristiqueParcelles; + + + public Long getTerminalId(){ + if(this.terminal!=null){ + return this.terminal.getId(); + }else return null; + } + + + + public String getNomPrenomEnqueteur(){ + if(this.user!=null){ + return this.user.getNom()+" "+this.user.getPrenom(); + }else return ""; + } + public String getNomBloc(){ + if(this.bloc!=null){ + return this.bloc.getNom(); + }else return ""; + } + + public String getCodeBloc(){ + if(this.bloc!=null){ + return this.bloc.getCote(); + }else return ""; + } + public String getDepartement(){ + if(this.bloc!=null){ + Arrondissement arrondissement= this.bloc.getArrondissement(); + if(arrondissement!=null){ + return arrondissement.getCommune().getDepartement().getNom(); + }else return ""; + }else return ""; + } + public String getCommune(){ + if(this.bloc!=null){ + Arrondissement arrondissement= this.bloc.getArrondissement(); + if(arrondissement!=null){ + return arrondissement.getCommune().getNom(); + }else return ""; + }else return ""; + } + + public String getArrondissement(){ + if(this.bloc!=null){ + Arrondissement arrondissement= this.bloc.getArrondissement(); + if(arrondissement!=null){ + return arrondissement.getNom(); + }else return ""; + }else return ""; + } + public String getTypeDomaine(){ + if(this.parcelle!=null){ + NatureDomaine natureDomaine= this.parcelle.getNatureDomaine(); + if(natureDomaine!=null){ + return natureDomaine.getTypeDomaine().getLibelle(); + }else return ""; + }else return ""; + } + + public String getTelEnqueteur(){ + if(this.user !=null){ + return this.user.getTel(); + }else return ""; + } + + public String getStructureEnqueteur(){ + if(this.user !=null){ + return this.user.getStructure().getNom(); + }else return ""; + } + + +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/metier/EnqueteFiltreResponse.java b/src/main/java/io/gmss/infocad/entities/infocad/metier/EnqueteFiltreResponse.java new file mode 100644 index 0000000..0ed5564 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/metier/EnqueteFiltreResponse.java @@ -0,0 +1,35 @@ +package io.gmss.infocad.entities.infocad.metier; + +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import java.time.LocalDate; +@Entity +@Data +public class EnqueteFiltreResponse{ + @Id + private Long id; + private String parcelleid; + private Long communeid; + private String communenom; + private Long arrondissementid; + private String arrondissementnom; + private Long blocid; + private String blocnom; + private Long structureid; + private String structurenom; + private boolean litige; + private String statusenquete; + private LocalDate datefinalisation; + private LocalDate datevalidation; + private LocalDate datesynchronisation; + private boolean synchronise; + private String nomsigle; + private String prenomraisonsociale; + private String typepersonne; + private String typedomaine; + private String naturedomaine; + private String nupprovisoire; +} + diff --git a/src/main/java/io/gmss/infocad/entities/infocad/metier/MembreGroupe.java b/src/main/java/io/gmss/infocad/entities/infocad/metier/MembreGroupe.java new file mode 100644 index 0000000..2d27175 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/metier/MembreGroupe.java @@ -0,0 +1,54 @@ +package io.gmss.infocad.entities.infocad.metier; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.infocad.parametre.Personne; +import io.gmss.infocad.entities.infocad.parametre.PositionRepresentation; +import io.gmss.infocad.entities.infocad.parametre.TypeRepresentation; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.ColumnDefault; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Set; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@Where(clause = " deleted = false") +public class MembreGroupe extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + @ManyToOne + private Personne personneRepresantee; // la personne que l'on représente (PM ou PP) + @ManyToOne + private Personne personneRepresantante; // la personne qui représente la personne représentee + @ManyToOne + private TypeRepresentation typeRepresentation; + @ManyToOne + private PositionRepresentation positionRepresentation; + @JsonIgnore + @OneToMany(mappedBy = "membreGroupe") + private Set uploads; + @JsonIgnore + @ManyToOne + private Tpe terminal; + + private Long max_numero_piece_id; + private Long max_numero_acteur_concerne_id; + private Long enqueteId; + private Long blocId; + private String observation; + @ColumnDefault("false") + private boolean synchronise; + + +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/metier/Parcelle.java b/src/main/java/io/gmss/infocad/entities/infocad/metier/Parcelle.java new file mode 100644 index 0000000..7bb794e --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/metier/Parcelle.java @@ -0,0 +1,92 @@ +package io.gmss.infocad.entities.infocad.metier; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.decoupage.Quartier; +import io.gmss.infocad.entities.infocad.parametre.NatureDomaine; +import io.gmss.infocad.entities.rfu.metier.Batiment; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.ColumnDefault; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE parcelle " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class Parcelle extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String qip; + private String q; + @Column(unique = true) + private String nup; + @Column(unique = true) + private String nupProvisoire; + private String numeroParcelle; + private String longitude; + private String latitude; + private String situationGeographique; + @JsonIgnore + @OneToMany(mappedBy = "parcelle") + private List enquetes; +// @ManyToOne +// private SituationGeographique situationGeographique; + @ManyToOne + //private TypeDomaine typeDomaine; + private NatureDomaine natureDomaine; + @JsonIgnore + @ManyToOne + private Quartier quartier; + private String i; + private String p; + private String observation; + private String numTitreFoncier; + @JsonIgnore + @ManyToOne + private Tpe terminal; + + private Long typeDomaineId; + private Long numeroProvisoire; + private Long blocId; + @ColumnDefault("false") + private boolean synchronise; + + + private Long idDerniereEnquete; + @JsonIgnore + @OneToMany(mappedBy = "parcelle") + private List batiments; + + // @ColumnDefault("0") +// private int geomSrid; +// +// @JsonSerialize(using = GeometrySerializer.class) +// @JsonDeserialize(contentUsing = GeometryDeserializer.class) +// @Column(name = "geom",columnDefinition = "geometry(MultiPolygon,4326)") +// private Point geometry; +// +// @JsonSerialize(using = GeometrySerializer.class) +// @JsonDeserialize(contentUsing = GeometryDeserializer.class) +// @Column(name = "geom_32631",columnDefinition = "geometry(MultiPolygon,32631)") +// private Point geometry32631; + + + + +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/metier/Piece.java b/src/main/java/io/gmss/infocad/entities/infocad/metier/Piece.java new file mode 100644 index 0000000..918ef6f --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/metier/Piece.java @@ -0,0 +1,73 @@ +package io.gmss.infocad.entities.infocad.metier; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +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.parametre.ModeAcquisition; +import io.gmss.infocad.entities.infocad.parametre.Personne; +import io.gmss.infocad.entities.infocad.parametre.SourceDroit; +import io.gmss.infocad.entities.infocad.parametre.TypePiece; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.ColumnDefault; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.time.LocalDate; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE piece " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class Piece extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String url; + private String numeroPiece; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateExpiration; + @ManyToOne + private TypePiece typePiece; + @JsonIgnore + @ManyToOne + private Personne personne; + @JsonIgnore + @ManyToOne + private ActeurConcerne acteurConcerne ; + @ManyToOne + private SourceDroit sourceDroit ; + @ManyToOne + private ModeAcquisition modeAcquisition ; + @OneToMany(mappedBy = "piece") + private List uploads ; + + @JsonIgnore + @ManyToOne + private Tpe terminal; + + + private Long max_numero_piece_id; + private Long max_numero_acteur_concerne_id; + private Long enqueteId; + private Long blocId; + @ColumnDefault("false") + private boolean synchronise; + private String observation; + +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/metier/Tpe.java b/src/main/java/io/gmss/infocad/entities/infocad/metier/Tpe.java new file mode 100644 index 0000000..a56e24b --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/metier/Tpe.java @@ -0,0 +1,40 @@ +package io.gmss.infocad.entities.infocad.metier; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE tpe " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class Tpe extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String numeroEquipement; + @Column(unique = true) + private String identifier; + private String model; + private String codeEquipe; + @JsonIgnore + @OneToMany(mappedBy = "terminal") + private List enquetes; + +} 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 new file mode 100644 index 0000000..2686582 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/metier/Upload.java @@ -0,0 +1,76 @@ +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 lombok.Getter; +import lombok.Setter; +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; + +import javax.persistence.*; +import java.io.Serializable; + +@Entity +@Getter +@Setter +public class Upload extends BaseEntity implements Serializable { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private Long externalKey; + private String Observation; + private boolean synchronise; + private String fileName; + private String originalFileName; + @Transient + private String URIFile; + private String checkSum; + private long size; + private String mimeType; + @JsonIgnore + @ManyToOne + private Piece piece; + @JsonIgnore + @ManyToOne + private MembreGroupe membreGroupe; + @JsonIgnore + @ManyToOne + private Tpe terminal; + + private String name; + private String filePath; + private Long max_numero_piece_id; + private Long max_numero_upload_id; + private Long max_numero_acteur_concerne_id; + private Long enqueteId; + private Long blocId; + + @ManyToOne + private Batiment batiment; + @ManyToOne + private UniteLogement uniteLogement; + + public Upload() { + } + + public String getURIFile() { + return this.serverContext()+fileName; + } + + private String serverContext(){ + return ServletUriComponentsBuilder.fromCurrentContextPath() + .path("/api/upload/downloadFile/") + .toUriString(); + } + + @Override + public String toString() { + return "Upload{" + + "id=" + id + + ", fileName='" + fileName + '\'' + + ", originalFileName='" + originalFileName + '\'' + + '}'; + + } +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/entities/infocad/parametre/ModeAcquisition.java b/src/main/java/io/gmss/infocad/entities/infocad/parametre/ModeAcquisition.java new file mode 100644 index 0000000..99e69c1 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/parametre/ModeAcquisition.java @@ -0,0 +1,45 @@ +package io.gmss.infocad.entities.infocad.parametre; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.infocad.metier.Piece; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; +import java.util.Set; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE mode_acquisition " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class ModeAcquisition extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String libelle; + @JsonIgnore + @OneToMany(mappedBy = "modeAcquisition") + //private List sourceDroitExerces; + private List pieces ; + @ManyToMany + @JoinTable(name = "modeAcquisition_typePersonne", + joinColumns = @JoinColumn(name = "mode_acquisition_id"), + inverseJoinColumns = @JoinColumn(name = "type_personne_id") + ) + private Set typePersonnes; + +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/parametre/NatureDomaine.java b/src/main/java/io/gmss/infocad/entities/infocad/parametre/NatureDomaine.java new file mode 100644 index 0000000..5cc36a3 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/parametre/NatureDomaine.java @@ -0,0 +1,48 @@ +package io.gmss.infocad.entities.infocad.parametre; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.infocad.metier.Parcelle; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; +import java.util.Set; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE nature_domaine " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class NatureDomaine extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String libelle; + //@JsonIgnore + @ManyToOne + private TypeDomaine typeDomaine; + @JsonIgnore + @OneToMany(mappedBy = "natureDomaine") + private List parcelles; + @ManyToMany + @JoinTable(name = "natureDomaine_typePersonne", + joinColumns = @JoinColumn(name = "nature_domaine_id"), + inverseJoinColumns = @JoinColumn(name = "type_personne_id") + ) + private Set typePersonnes; + + +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/parametre/Personne.java b/src/main/java/io/gmss/infocad/entities/infocad/parametre/Personne.java new file mode 100644 index 0000000..6a30b1a --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/parametre/Personne.java @@ -0,0 +1,89 @@ +package io.gmss.infocad.entities.infocad.parametre; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.decoupage.Commune; +import io.gmss.infocad.entities.decoupage.Nationalite; +import io.gmss.infocad.entities.infocad.metier.ActeurConcerne; +import io.gmss.infocad.entities.infocad.metier.Piece; +import io.gmss.infocad.entities.infocad.metier.Tpe; +import io.gmss.infocad.enums.Categorie; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.ColumnDefault; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE personne " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class Personne extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String ifu; + private String nomOuSigle; + private String prenomOuRaisonSociale; + private String numRavip; + private String npi; + private String dateNaissanceOuConsti; + private String lieuNaissance; + private String tel1; + private String tel2; + private String adresse; + @Enumerated(EnumType.STRING) + private Categorie categorie; + @JsonIgnore + @OneToMany(mappedBy = "personne") + private List acteurConcernes; + @ManyToOne + private SituationMatrimoniale situationMatrimoniale; + @ManyToOne + private Nationalite nationalite; + @ManyToOne + private TypePersonne typePersonne; + @ManyToOne + private Profession profession; + @ManyToOne + private Commune commune; + @OneToMany(mappedBy = "personne") + private List pieces; + + @JsonIgnore + @ManyToOne + private Tpe terminal; + @ColumnDefault("0") + private int haveRepresentant; + private String ravipQuestion; + private String age; + private String nomJeuneFille; + private String nomMere; + private String prenomMere; + private String indicatifTel1; + private String indicatifTel2; + private String sexe; + @ColumnDefault("0") + private int mustHaveRepresentant; + private String filePath; + private String observation; + @ColumnDefault("false") + private boolean synchronise; + + + + +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/parametre/PositionRepresentation.java b/src/main/java/io/gmss/infocad/entities/infocad/parametre/PositionRepresentation.java new file mode 100644 index 0000000..27bda4a --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/parametre/PositionRepresentation.java @@ -0,0 +1,40 @@ +package io.gmss.infocad.entities.infocad.parametre; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.infocad.metier.ActeurConcerne; +import io.gmss.infocad.entities.infocad.metier.MembreGroupe; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE position_representation " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class PositionRepresentation extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String libelle; + @JsonIgnore + @OneToMany(mappedBy = "positionRepresentation") + private List acteurConcernes; + @JsonIgnore + @OneToMany(mappedBy = "positionRepresentation") + private List membreGroupes; +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/parametre/Profession.java b/src/main/java/io/gmss/infocad/entities/infocad/parametre/Profession.java new file mode 100644 index 0000000..8f02bbe --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/parametre/Profession.java @@ -0,0 +1,36 @@ +package io.gmss.infocad.entities.infocad.parametre; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE profession " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class Profession extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String code; + private String libelle; + @JsonIgnore + @OneToMany(mappedBy = "profession") + private List personnes; +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/parametre/SituationGeographique.java b/src/main/java/io/gmss/infocad/entities/infocad/parametre/SituationGeographique.java new file mode 100644 index 0000000..2991c4a --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/parametre/SituationGeographique.java @@ -0,0 +1,36 @@ +package io.gmss.infocad.entities.infocad.parametre; + +import io.gmss.infocad.entities.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import java.io.Serializable; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE situation_geographique " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class SituationGeographique extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String libelle; +// @JsonIgnore +// @OneToMany(mappedBy = "situationGeographique") +// private List parcelles; +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/parametre/SituationMatrimoniale.java b/src/main/java/io/gmss/infocad/entities/infocad/parametre/SituationMatrimoniale.java new file mode 100644 index 0000000..5e9de47 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/parametre/SituationMatrimoniale.java @@ -0,0 +1,35 @@ +package io.gmss.infocad.entities.infocad.parametre; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE situation_matrimoniale " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class SituationMatrimoniale extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String libelle; + @JsonIgnore + @OneToMany(mappedBy = "situationMatrimoniale") + private List personnes; +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/parametre/SourceDroit.java b/src/main/java/io/gmss/infocad/entities/infocad/parametre/SourceDroit.java new file mode 100644 index 0000000..b43b4de --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/parametre/SourceDroit.java @@ -0,0 +1,55 @@ +package io.gmss.infocad.entities.infocad.parametre; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.infocad.metier.Piece; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; +import java.util.Set; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE source_droit " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class SourceDroit extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String libelle; + @Column(columnDefinition = "integer default 1") + private int tailleChampMin; + @Column(columnDefinition = "integer default 5") + private int tailleChampMax; + @Column(columnDefinition = "varchar(255) default 'text'") + private String typeChamp; + @Column(columnDefinition = "boolean default false") + private boolean temoin; + @ManyToMany + @JoinTable(name = "sourcesDeDroits_ModesAcquisitions", + joinColumns = @JoinColumn(name = "sources_droits_id"), + inverseJoinColumns = @JoinColumn(name = "modes_acquisitions_id") + ) + private Set modeAcquisitions; + @JsonIgnore + @OneToMany(mappedBy = "sourceDroit") + //private List sourceDroitExerces; + private List pieces ; + @Column(columnDefinition = "boolean default false") + private boolean titreFoncier; + +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/parametre/SourceDroitExerce.java b/src/main/java/io/gmss/infocad/entities/infocad/parametre/SourceDroitExerce.java new file mode 100644 index 0000000..831ec2a --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/parametre/SourceDroitExerce.java @@ -0,0 +1,45 @@ +package io.gmss.infocad.entities.infocad.parametre; + +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.infocad.metier.ActeurConcerne; +import io.gmss.infocad.entities.infocad.metier.Piece; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Set; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE source_droit_exerce " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class SourceDroitExerce extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String libelle; + @ManyToOne + private SourceDroit sourceDroit; + @ManyToOne + private ActeurConcerne acteurConcerne; + @ManyToMany + @JoinTable(name = "pieces_sources_droits_exerces", + joinColumns = @JoinColumn(name = "sources_droits_exerce_id"), + inverseJoinColumns = @JoinColumn(name = "piece_id") + ) + private Set pieces; + @ManyToOne + private ModeAcquisition modeAcquisition; +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/parametre/Structure.java b/src/main/java/io/gmss/infocad/entities/infocad/parametre/Structure.java new file mode 100644 index 0000000..6b7b8a8 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/parametre/Structure.java @@ -0,0 +1,57 @@ +package io.gmss.infocad.entities.infocad.parametre; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.decoupage.Arrondissement; +import io.gmss.infocad.entities.infocad.metier.Bloc; +import io.gmss.infocad.entities.user.User; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; +import java.util.Set; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE structure " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class Structure extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + @Column(updatable = false) + private String code; + private String nom; + private String ifu; + private String rccm; + private String tel; + private String email; + private String adresse; + //@JsonIgnore + @ManyToMany + @JoinTable(name = "arrondissements_structures", + joinColumns = @JoinColumn(name = "structure_id"), + inverseJoinColumns = @JoinColumn(name = "arrondissement_id") + ) + private Set arrondissements; + @JsonIgnore + @OneToMany(mappedBy = "structure") + private List agents; + @JsonIgnore + @OneToMany(mappedBy = "structure") + private List blocs; + +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/parametre/TypeContestation.java b/src/main/java/io/gmss/infocad/entities/infocad/parametre/TypeContestation.java new file mode 100644 index 0000000..beb6088 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/parametre/TypeContestation.java @@ -0,0 +1,39 @@ +package io.gmss.infocad.entities.infocad.parametre; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.infocad.metier.ActeurConcerne; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.ColumnDefault; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE type_contestation " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class TypeContestation extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String libelle; + @ColumnDefault("true") + private boolean droitPropriete; + @JsonIgnore + @OneToMany(mappedBy = "typeContestation") + private List acteurConcernes; +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/parametre/TypeDomaine.java b/src/main/java/io/gmss/infocad/entities/infocad/parametre/TypeDomaine.java new file mode 100644 index 0000000..7861535 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/parametre/TypeDomaine.java @@ -0,0 +1,38 @@ +package io.gmss.infocad.entities.infocad.parametre; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE type_domaine " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class TypeDomaine extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String libelle; +// @JsonIgnore +// @OneToMany(mappedBy = "typeDomaine") +// private List parcelles; + @JsonIgnore + @OneToMany(mappedBy = "typeDomaine") + private List natureDomaines; +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/parametre/TypePersonne.java b/src/main/java/io/gmss/infocad/entities/infocad/parametre/TypePersonne.java new file mode 100644 index 0000000..d181d78 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/parametre/TypePersonne.java @@ -0,0 +1,40 @@ +package io.gmss.infocad.entities.infocad.parametre; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.enums.Categorie; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE type_personne " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class TypePersonne extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String libelle; + @Enumerated(EnumType.STRING) + private Categorie categorie; + @Column(nullable = false, columnDefinition = "BOOLEAN DEFAULT false") + private boolean groupeOuvert; + @JsonIgnore + @OneToMany(mappedBy = "typePersonne") + private List personnes; +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/parametre/TypePiece.java b/src/main/java/io/gmss/infocad/entities/infocad/parametre/TypePiece.java new file mode 100644 index 0000000..7df8fb0 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/parametre/TypePiece.java @@ -0,0 +1,52 @@ +package io.gmss.infocad.entities.infocad.parametre; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.infocad.metier.Piece; +import io.gmss.infocad.enums.CategoriePiece; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.ColumnDefault; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE type_piece " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class TypePiece extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String libelle; + @Enumerated(EnumType.STRING) + private CategoriePiece categoriePiece; + @ColumnDefault("true") + private boolean temoin; + @ColumnDefault("true") + private boolean contestataire; + @ColumnDefault("true") + private boolean declarant; + @Column(columnDefinition = "integer default 1") + private int tailleChampMin; + @Column(columnDefinition = "integer default 5") + private int tailleChampMax; + @Column(columnDefinition = "varchar(255) default 'text'") + private String typeChamp; + @JsonIgnore + @OneToMany(mappedBy = "typePiece") + private List pieces; +} diff --git a/src/main/java/io/gmss/infocad/entities/infocad/parametre/TypeRepresentation.java b/src/main/java/io/gmss/infocad/entities/infocad/parametre/TypeRepresentation.java new file mode 100644 index 0000000..5c9f4ef --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/infocad/parametre/TypeRepresentation.java @@ -0,0 +1,43 @@ +package io.gmss.infocad.entities.infocad.parametre; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.infocad.metier.ActeurConcerne; +import io.gmss.infocad.entities.infocad.metier.MembreGroupe; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE type_representation " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class TypeRepresentation extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String libelle; + @Column(columnDefinition = "boolean default false") + private boolean estUnique; + @JsonIgnore + @OneToMany(mappedBy = "typeRepresentation") + private List acteurConcernes; + @JsonIgnore + @OneToMany(mappedBy = "typeRepresentation") + private List membreGroupes; + +} 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 new file mode 100644 index 0000000..0a353fd --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/rfu/metier/Batiment.java @@ -0,0 +1,49 @@ +package io.gmss.infocad.entities.rfu.metier; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +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 lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.time.LocalDate; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@Where(clause = " deleted = false") +public class Batiment extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String nub; + private String code; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateConstruction; + @JsonIgnore + @OneToMany(mappedBy = "batiment") + private List enqueteBatiments; + private Long idDerniereEnquete; + @ManyToOne + private Parcelle parcelle; + @JsonIgnore + @OneToMany(mappedBy = "batiment") + private List uniteLogements; + @JsonIgnore + @OneToMany(mappedBy = "batiment") + private List uploads; +} 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 new file mode 100644 index 0000000..e152eb8 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/rfu/metier/CaracteristiqueBatiment.java @@ -0,0 +1,36 @@ +package io.gmss.infocad.entities.rfu.metier; + +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.rfu.parametre.Caracteristique; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE caracteristique_batiment " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class CaracteristiqueBatiment extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + @ManyToOne + private EnqueteBatiment enqueteBatiment; + @ManyToOne + private Caracteristique caracteristique; + private String valeur; + +} 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 new file mode 100644 index 0000000..53561ac --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/rfu/metier/CaracteristiqueParcelle.java @@ -0,0 +1,37 @@ +package io.gmss.infocad.entities.rfu.metier; + +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.infocad.metier.Enquete; +import io.gmss.infocad.entities.rfu.parametre.Caracteristique; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE caracteristique_parcelle " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class CaracteristiqueParcelle extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + @ManyToOne + private Enquete enquete; + @ManyToOne + private Caracteristique caracteristique; + private String valeur; + +} 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 new file mode 100644 index 0000000..4a6861d --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/rfu/metier/CaracteristiqueUniteLogement.java @@ -0,0 +1,36 @@ +package io.gmss.infocad.entities.rfu.metier; + +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.rfu.parametre.Caracteristique; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE caracteristique_unite_logement " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class CaracteristiqueUniteLogement extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + @ManyToOne + private EnqueteUniteLogement enqueteUniteLogement; + @ManyToOne + private Caracteristique caracteristique; + private String valeur; + +} 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 new file mode 100644 index 0000000..19879e8 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/rfu/metier/EnqueteBatiment.java @@ -0,0 +1,67 @@ +package io.gmss.infocad.entities.rfu.metier; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +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.parametre.Personne; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.time.LocalDate; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE enquete_batiment " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class EnqueteBatiment extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + 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; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateDebutExcemption; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateFinExcemption; + @OneToOne + private Personne personne; + @ManyToOne + private Batiment batiment; + @ManyToOne + private Enquete enquete; + @JsonIgnore + @OneToMany(mappedBy = "enqueteBatiment") + List caracteristiqueBatiments; +} 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 new file mode 100644 index 0000000..aa4f23f --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/rfu/metier/EnqueteUniteLogement.java @@ -0,0 +1,66 @@ +package io.gmss.infocad.entities.rfu.metier; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +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.parametre.Personne; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.time.LocalDate; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE enquete_unite_logement " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class EnqueteUniteLogement extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private float surface; + private byte nbrePiece; //les champs byte sont des integer, + // c'est juste la taille en mémoire que je veux préserver + 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; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateDebutExcemption; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateFinExcemption; + @ManyToOne + private Enquete enquete; + @ManyToOne + private UniteLogement uniteLogement; + @OneToOne + private Personne personne; + @JsonIgnore + @OneToMany(mappedBy = "enqueteUniteLogement") + private List caracteristiqueUniteLogements; +} 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 new file mode 100644 index 0000000..acb018e --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/rfu/metier/UniteLogement.java @@ -0,0 +1,39 @@ +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 lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@Where(clause = " deleted = false") +public class UniteLogement extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String nul; + private String numeroEtage; + private String code; + @JsonIgnore + @OneToMany(mappedBy = "uniteLogement") + private List enqueteUniteLogements; + @ManyToOne + private Batiment batiment; + @JsonIgnore + @OneToMany(mappedBy = "uniteLogement") + private List uploads; + private Long idDerniereEnquete; +} 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 new file mode 100644 index 0000000..a9f575b --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/rfu/parametre/Caracteristique.java @@ -0,0 +1,43 @@ +package io.gmss.infocad.entities.rfu.parametre; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.rfu.metier.CaracteristiqueBatiment; +import io.gmss.infocad.entities.rfu.metier.CaracteristiqueUniteLogement; +import io.gmss.infocad.enums.TypeImmeuble; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@Where(clause = " deleted = false") +public class Caracteristique extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String code; + private String libelle; + private boolean actif; + private TypeImmeuble typeImmeuble; + @ManyToOne + private TypeCaracteristique typeCaracteristique; + @JsonIgnore + @OneToMany(mappedBy = "caracteristique") + private List caracteristiqueBatiments; + @JsonIgnore + @OneToMany(mappedBy = "caracteristique") + private List caracteristiqueUniteLogements; + + +} diff --git a/src/main/java/io/gmss/infocad/entities/rfu/parametre/TypeCaracteristique.java b/src/main/java/io/gmss/infocad/entities/rfu/parametre/TypeCaracteristique.java new file mode 100644 index 0000000..50a5a43 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/rfu/parametre/TypeCaracteristique.java @@ -0,0 +1,37 @@ +package io.gmss.infocad.entities.rfu.parametre; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.enums.TypeImmeuble; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@Where(clause = " deleted = false") +public class TypeCaracteristique extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String code; + private String libelle; + private boolean actif; + private boolean bati; + private boolean nonBati; + private TypeImmeuble typeImmeuble; + @JsonIgnore + @OneToMany(mappedBy = "typeCaracteristique") + private List caracteristiques; + +} diff --git a/src/main/java/io/gmss/infocad/entities/user/DemandeReinitialisationMP.java b/src/main/java/io/gmss/infocad/entities/user/DemandeReinitialisationMP.java new file mode 100644 index 0000000..70dbec7 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/user/DemandeReinitialisationMP.java @@ -0,0 +1,34 @@ +package io.gmss.infocad.entities.user; + +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.enums.EtatDemande; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE tpe " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +public class DemandeReinitialisationMP extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + @ManyToOne + private User user; + @Enumerated(EnumType.STRING) + private EtatDemande etatDemande; +} diff --git a/src/main/java/io/gmss/infocad/entities/user/Role.java b/src/main/java/io/gmss/infocad/entities/user/Role.java new file mode 100755 index 0000000..b8ff590 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/user/Role.java @@ -0,0 +1,51 @@ +package io.gmss.infocad.entities.user; + +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.enums.UserRole; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import javax.persistence.*; +import java.io.Serializable; + +@EqualsAndHashCode(callSuper = true) +@Data +@AllArgsConstructor +@NoArgsConstructor +@Entity +public class Role extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + @Enumerated(EnumType.STRING) + private UserRole nom; + private String description; + + public Role(UserRole name, String description) { + this.nom = name; + this.description = description; + } + + public boolean equals(Object o) { + + // If the object is compared with itself then return true + if (o == this) { + return true; + } + + /* Check if o is an instance of Complex or not + "null instanceof [type]" also returns false */ + if (!(o instanceof Role)) { + return false; + } + + // typecast o to Complex so that we can compare data members + Role r = (Role) o; + + // Compare the data members and return accordingly + return r.getNom().equals(this.getNom()); + } +} diff --git a/src/main/java/io/gmss/infocad/entities/user/User.java b/src/main/java/io/gmss/infocad/entities/user/User.java new file mode 100755 index 0000000..33ca3ee --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/user/User.java @@ -0,0 +1,72 @@ +package io.gmss.infocad.entities.user; + +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.parametre.Structure; +import io.gmss.infocad.enums.UserRole; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.hibernate.annotations.SQLDelete; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; +import java.util.Set; + +@Entity +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@SQLDelete(sql = + "UPDATE users " + + "SET deleted = true " + + "WHERE id = ?") +@Where(clause = " deleted = false") +@Table(name = "users") +public class User extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String nom; + private String prenom; + private String tel; + private String email; + @JsonIgnore + private String username; + private String password; + @Column(columnDefinition = "boolean default true") + private boolean active; + @Column(columnDefinition = "boolean default false") + private boolean resetPassword; + @ManyToMany + @JoinTable(name = "users_roles", + joinColumns = @JoinColumn(name = "user_id"), + inverseJoinColumns = @JoinColumn(name = "roles_id") + ) + private Set roles; + @ManyToOne + private Structure structure; + @JsonIgnore + @OneToMany(mappedBy = "user") + private List enquetes; + + public void setUsername(String username) { + this.username = this.email; + } + + public boolean isAdmin(){ + for(Role r:this.roles ){ + if(r.getNom().equals(UserRole.ROLE_ADMIN)){ + return true; + } + } + return false; + } + +} diff --git a/src/main/java/io/gmss/infocad/enums/Categorie.java b/src/main/java/io/gmss/infocad/enums/Categorie.java new file mode 100644 index 0000000..308e266 --- /dev/null +++ b/src/main/java/io/gmss/infocad/enums/Categorie.java @@ -0,0 +1,8 @@ +package io.gmss.infocad.enums; + +public enum Categorie { + + PERSONNE_PHYSIQUE, + PERSONNE_MORALE, + GROUPE_INFORMEL +} diff --git a/src/main/java/io/gmss/infocad/enums/CategoriePiece.java b/src/main/java/io/gmss/infocad/enums/CategoriePiece.java new file mode 100644 index 0000000..2c070ae --- /dev/null +++ b/src/main/java/io/gmss/infocad/enums/CategoriePiece.java @@ -0,0 +1,9 @@ +package io.gmss.infocad.enums; + +public enum CategoriePiece { + + PERSONNE_PHYSIQUE, + PERSONNE_MORALE, + GROUPE, + PARCELLE +} diff --git a/src/main/java/io/gmss/infocad/enums/EtatDemande.java b/src/main/java/io/gmss/infocad/enums/EtatDemande.java new file mode 100644 index 0000000..3fa7d3a --- /dev/null +++ b/src/main/java/io/gmss/infocad/enums/EtatDemande.java @@ -0,0 +1,6 @@ +package io.gmss.infocad.enums; + +public enum EtatDemande { + TRAITE, + NON_TRAITE +} diff --git a/src/main/java/io/gmss/infocad/enums/FormatRapport.java b/src/main/java/io/gmss/infocad/enums/FormatRapport.java new file mode 100644 index 0000000..f31194c --- /dev/null +++ b/src/main/java/io/gmss/infocad/enums/FormatRapport.java @@ -0,0 +1,6 @@ +package io.gmss.infocad.enums; + +public enum FormatRapport { + PDF, + XLS; +} diff --git a/src/main/java/io/gmss/infocad/enums/Origine.java b/src/main/java/io/gmss/infocad/enums/Origine.java new file mode 100644 index 0000000..16a7344 --- /dev/null +++ b/src/main/java/io/gmss/infocad/enums/Origine.java @@ -0,0 +1,6 @@ +package io.gmss.infocad.enums; + +public enum Origine { + WEB, + MOBILE +} diff --git a/src/main/java/io/gmss/infocad/enums/PaymentStatus.java b/src/main/java/io/gmss/infocad/enums/PaymentStatus.java new file mode 100644 index 0000000..29410e5 --- /dev/null +++ b/src/main/java/io/gmss/infocad/enums/PaymentStatus.java @@ -0,0 +1,8 @@ +package io.gmss.infocad.enums; + +public enum PaymentStatus { + SUCCESS, + PENDING, + FAILED, + REFUNDED +} diff --git a/src/main/java/io/gmss/infocad/enums/RoleActeur.java b/src/main/java/io/gmss/infocad/enums/RoleActeur.java new file mode 100644 index 0000000..23ec236 --- /dev/null +++ b/src/main/java/io/gmss/infocad/enums/RoleActeur.java @@ -0,0 +1,10 @@ +package io.gmss.infocad.enums; + +public enum RoleActeur { + + PROPRIETAIRE, + TEMOIN, + CONTESTATAIRE, + DECLARANT, + MEMBRE +} diff --git a/src/main/java/io/gmss/infocad/enums/Sexe.java b/src/main/java/io/gmss/infocad/enums/Sexe.java new file mode 100644 index 0000000..e52e68d --- /dev/null +++ b/src/main/java/io/gmss/infocad/enums/Sexe.java @@ -0,0 +1,6 @@ +package io.gmss.infocad.enums; + +public enum Sexe { + MASCULIN, + FEMININ +} diff --git a/src/main/java/io/gmss/infocad/enums/StatusEnquete.java b/src/main/java/io/gmss/infocad/enums/StatusEnquete.java new file mode 100755 index 0000000..d780aaa --- /dev/null +++ b/src/main/java/io/gmss/infocad/enums/StatusEnquete.java @@ -0,0 +1,9 @@ +package io.gmss.infocad.enums; + +public enum StatusEnquete { + EN_COURS, + FINALISE, + REJETE, + VALIDE, + SYNCHRONISE +} diff --git a/src/main/java/io/gmss/infocad/enums/TypeDroit.java b/src/main/java/io/gmss/infocad/enums/TypeDroit.java new file mode 100644 index 0000000..48eb87c --- /dev/null +++ b/src/main/java/io/gmss/infocad/enums/TypeDroit.java @@ -0,0 +1,7 @@ +package io.gmss.infocad.enums; + +public enum TypeDroit { + PROPRIETE, + PRESUME_PROPRIETE, + AUTRE +} diff --git a/src/main/java/io/gmss/infocad/enums/TypeImmeuble.java b/src/main/java/io/gmss/infocad/enums/TypeImmeuble.java new file mode 100644 index 0000000..59fa937 --- /dev/null +++ b/src/main/java/io/gmss/infocad/enums/TypeImmeuble.java @@ -0,0 +1,7 @@ +package io.gmss.infocad.enums; + +public enum TypeImmeuble { + PARCELLE, + BATIMENT, + UNITE_LOGEMENT +} diff --git a/src/main/java/io/gmss/infocad/enums/UserRole.java b/src/main/java/io/gmss/infocad/enums/UserRole.java new file mode 100644 index 0000000..a679f70 --- /dev/null +++ b/src/main/java/io/gmss/infocad/enums/UserRole.java @@ -0,0 +1,11 @@ +package io.gmss.infocad.enums; + +public enum UserRole { + + ROLE_ADMIN, + ROLE_USER, + ROLE_DIRECTEUR, + ROLE_SUPERVISEUR, + ROLE_ENQUETEUR, + ROLE_ANONYMOUS +} diff --git a/src/main/java/io/gmss/infocad/exceptions/BadRequestException.java b/src/main/java/io/gmss/infocad/exceptions/BadRequestException.java new file mode 100755 index 0000000..d179379 --- /dev/null +++ b/src/main/java/io/gmss/infocad/exceptions/BadRequestException.java @@ -0,0 +1,11 @@ +package io.gmss.infocad.exceptions; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(HttpStatus.BAD_REQUEST) +public class BadRequestException extends RuntimeException{ + public BadRequestException(String message){ + super(message); + } +} diff --git a/src/main/java/io/gmss/infocad/exceptions/FileStorageException.java b/src/main/java/io/gmss/infocad/exceptions/FileStorageException.java new file mode 100644 index 0000000..a3c3a17 --- /dev/null +++ b/src/main/java/io/gmss/infocad/exceptions/FileStorageException.java @@ -0,0 +1,10 @@ +package io.gmss.infocad.exceptions; +public class FileStorageException extends RuntimeException { + public FileStorageException(String message) { + super(message); + } + + public FileStorageException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/src/main/java/io/gmss/infocad/exceptions/MyFileNotFoundException.java b/src/main/java/io/gmss/infocad/exceptions/MyFileNotFoundException.java new file mode 100644 index 0000000..48f20b6 --- /dev/null +++ b/src/main/java/io/gmss/infocad/exceptions/MyFileNotFoundException.java @@ -0,0 +1,16 @@ +package io.gmss.infocad.exceptions; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(HttpStatus.NOT_FOUND) +public class MyFileNotFoundException extends RuntimeException { + public MyFileNotFoundException(String message) { + super(message); + } + + public MyFileNotFoundException(String message, Throwable cause) { + super(message, cause); + } +} + diff --git a/src/main/java/io/gmss/infocad/exceptions/NotFoundException.java b/src/main/java/io/gmss/infocad/exceptions/NotFoundException.java new file mode 100755 index 0000000..ff10b7d --- /dev/null +++ b/src/main/java/io/gmss/infocad/exceptions/NotFoundException.java @@ -0,0 +1,11 @@ +package io.gmss.infocad.exceptions; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(HttpStatus.NOT_FOUND) +public class NotFoundException extends RuntimeException{ + public NotFoundException(String message){ + super(message); + } +} diff --git a/src/main/java/io/gmss/infocad/exceptions/ResourceNotFoundException.java b/src/main/java/io/gmss/infocad/exceptions/ResourceNotFoundException.java new file mode 100644 index 0000000..4ee8d98 --- /dev/null +++ b/src/main/java/io/gmss/infocad/exceptions/ResourceNotFoundException.java @@ -0,0 +1,30 @@ +package io.gmss.infocad.exceptions; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(HttpStatus.NOT_FOUND) +public class ResourceNotFoundException extends RuntimeException { + private String resourceName; + private String fieldName; + private Object fieldValue; + + public ResourceNotFoundException(String resourceName, String fieldName, Object fieldValue) { + super(String.format("%s not found with %s : '%s'", resourceName, fieldName, fieldValue)); + this.resourceName = resourceName; + this.fieldName = fieldName; + this.fieldValue = fieldValue; + } + + public String getResourceName() { + return resourceName; + } + + public String getFieldName() { + return fieldName; + } + + public Object getFieldValue() { + return fieldValue; + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/decoupage/ArrondissementServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/decoupage/ArrondissementServiceImpl.java new file mode 100644 index 0000000..e73e00b --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/decoupage/ArrondissementServiceImpl.java @@ -0,0 +1,82 @@ +package io.gmss.infocad.implementations.decoupage; + +import io.gmss.infocad.entities.decoupage.Arrondissement; +import io.gmss.infocad.entities.decoupage.Commune; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.decoupage.ArrondissementService; +import io.gmss.infocad.interfaces.decoupage.CommuneService; +import io.gmss.infocad.repositories.decoupage.ArrondissementRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class ArrondissementServiceImpl implements ArrondissementService { + + private final ArrondissementRepository arrondissementRepository; + private final CommuneService communeService; + + public ArrondissementServiceImpl(ArrondissementRepository arrondissementRepository, CommuneService communeService) { + this.arrondissementRepository = arrondissementRepository; + this.communeService = communeService; + } + + @Override + public Arrondissement createArrondissement(Arrondissement arrondissement) throws BadRequestException { + if(arrondissement.getId() != null ){ + throw new BadRequestException("Impossible de créer un nouvel arrondissement ayant un id non null."); + } + return arrondissementRepository.save(arrondissement); + } + + @Override + public Arrondissement updateArrondissement(Long id, Arrondissement arrondissement) throws NotFoundException { + if(arrondissement.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour un nouvel arrondissement ayant un id null."); + } + if(!arrondissementRepository.existsById(arrondissement.getId())){ + throw new NotFoundException("Impossible de trouver l'arrondissement spécifié dans notre base de données."); + } + return arrondissementRepository.save(arrondissement); + } + + @Override + public void deleteArrondissement(Long id) throws NotFoundException { + Optional arrondissementOptional = arrondissementRepository.findById(id); + if(arrondissementOptional.isPresent()){ + arrondissementRepository.deleteById(arrondissementOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver l'arrondissement spécifié dans notre base de données."); + } + } + + @Override + public Page getArrondissementList(Pageable pageable) { + return arrondissementRepository.findAll(pageable); + } + + @Override + public List getArrondissementList() { + return arrondissementRepository.findAll(); + } + + @Override + public Optional getArrondissementById(Long id) { + return arrondissementRepository.findById(id); + } + + @Override + public List getArrondissementByComune(Long communeId) { + Optional communeOptional = communeService.getCommuneById(communeId); + if(communeOptional.isEmpty()){ + throw new NotFoundException("Impossible de trouver la commune spécifiée."); + } + return arrondissementRepository.findAllByCommune(communeOptional.get()); + } + + +} diff --git a/src/main/java/io/gmss/infocad/implementations/decoupage/CommuneServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/decoupage/CommuneServiceImpl.java new file mode 100644 index 0000000..19f265f --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/decoupage/CommuneServiceImpl.java @@ -0,0 +1,81 @@ +package io.gmss.infocad.implementations.decoupage; + +import io.gmss.infocad.entities.decoupage.Commune; +import io.gmss.infocad.entities.decoupage.Departement; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.decoupage.CommuneService; +import io.gmss.infocad.interfaces.decoupage.DepartementService; +import io.gmss.infocad.repositories.decoupage.CommuneRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class CommuneServiceImpl implements CommuneService { + + private final CommuneRepository communeRepository; + private final DepartementService departementService; + + public CommuneServiceImpl(CommuneRepository communeRepository, DepartementService departementService) { + this.communeRepository = communeRepository; + this.departementService = departementService; + } + + @Override + public Commune createCommune(Commune commune) throws BadRequestException { + if(commune.getId() != null ){ + throw new BadRequestException("Impossible de créer une nouvelle commune ayant un id non null."); + } + return communeRepository.save(commune); + } + + @Override + public Commune updateCommune(Long id, Commune commune) throws NotFoundException { + if(commune.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour une nouvelle commune ayant un id null."); + } + if(!communeRepository.existsById(commune.getId())){ + throw new NotFoundException("Impossible de trouver la commune spécifiée dans notre base de données."); + } + return communeRepository.save(commune); + } + + @Override + public void deleteCommune(Long id) throws NotFoundException { + Optional communeOptional = communeRepository.findById(id); + if(communeOptional.isPresent()){ + communeRepository.deleteById(communeOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la commune spécifiée dans notre base de données."); + } + } + + @Override + public Page getCommuneList(Pageable pageable) { + return communeRepository.findAll(pageable); + } + + @Override + public List getCommuneList() { + return communeRepository.findAll(); + } + + + @Override + public List getCommunesByDepartement(Long departementId) { + Optional departementOptional = departementService.getDepartementById(departementId); + if(departementOptional.isEmpty()){ + throw new NotFoundException("Impossible de trouver le département spécifié."); + } + return communeRepository.findAllByDepartement(departementOptional.get()); + } + + @Override + public Optional getCommuneById(Long id) { + return communeRepository.findById(id); + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/decoupage/DepartementServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/decoupage/DepartementServiceImpl.java new file mode 100644 index 0000000..07679b7 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/decoupage/DepartementServiceImpl.java @@ -0,0 +1,73 @@ +package io.gmss.infocad.implementations.decoupage; + +import io.gmss.infocad.entities.decoupage.Departement; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.decoupage.DepartementService; +import io.gmss.infocad.repositories.decoupage.DepartementRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class DepartementServiceImpl implements DepartementService { + + private final DepartementRepository departementRepository; + + public DepartementServiceImpl(DepartementRepository departementRepository) { + this.departementRepository = departementRepository; + } + + @Override + public Departement createDepartement(Departement departement) throws BadRequestException { + if(departement.getId() != null ){ + throw new BadRequestException("Impossible de créer un nouveau département ayant un id non null."); + } + return departementRepository.save(departement); + } + + @Override + public Departement updateDepartement(Long id, Departement departement) throws NotFoundException { + if(departement.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour un nouveau département ayant un id null."); + } + if(!departementRepository.existsById(departement.getId())){ + throw new NotFoundException("Impossible de trouver le département spécifié dans notre base de données."); + } + return departementRepository.save(departement); + } + + @Override + public void deleteDepartement(Long id) throws NotFoundException { + Optional departementOptional = departementRepository.findById(id); + if(departementOptional.isPresent()){ + departementRepository.deleteById(departementOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver le département spécifié dans notre base de données."); + } + } + + @Override + public Page getDepartementList(Pageable pageable) { + return departementRepository.findAll(pageable); + } + + @Override + public List getDepartementList() { + return departementRepository.findAll(); + } + + + @Override + public Optional getDepartementById(Long id) { + if(departementRepository.existsById(id)){ + return departementRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver le département spécifié dans la base de données."); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/decoupage/NationaliteServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/decoupage/NationaliteServiceImpl.java new file mode 100644 index 0000000..8b7ffad --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/decoupage/NationaliteServiceImpl.java @@ -0,0 +1,72 @@ +package io.gmss.infocad.implementations.decoupage; + +import io.gmss.infocad.entities.decoupage.Nationalite; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.decoupage.NationaliteService; +import io.gmss.infocad.repositories.decoupage.NationaliteRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +@Service +public class NationaliteServiceImpl implements NationaliteService { + + private final NationaliteRepository nationaliteRepository; + + public NationaliteServiceImpl(NationaliteRepository nationaliteRepository) { + this.nationaliteRepository = nationaliteRepository; + } + + @Override + public Nationalite createNationalite(Nationalite nationalite) throws BadRequestException { + if(nationalite.getId() != null ){ + throw new BadRequestException("Impossible de créer une nouvelle nationalité ayant un id non null."); + } + return nationaliteRepository.save(nationalite); + } + + @Override + public Nationalite updateNationalite(Long id, Nationalite nationalite) throws NotFoundException { + if(nationalite.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour une nouvelle nationalité ayant un id null."); + } + if(!nationaliteRepository.existsById(nationalite.getId())){ + throw new NotFoundException("Impossible de trouver la nationalité spécifiée dans notre base de données."); + } + return nationaliteRepository.save(nationalite); + } + + @Override + public void deleteNationalite(Long id) throws NotFoundException { + Optional nationaliteOptional = nationaliteRepository.findById(id); + if(nationaliteOptional.isPresent()){ + nationaliteRepository.deleteById(nationaliteOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la nationalité spécifiée dans notre base de données."); + } + } + + @Override + public Page getNationaliteList(Pageable pageable) { + return nationaliteRepository.findAll(pageable); + } + + @Override + public List getNationaliteList() { + return nationaliteRepository.findAllByOrderByLibelleAsc(); + } + + + @Override + public Optional getNationaliteById(Long id) { + if(nationaliteRepository.existsById(id)){ + return nationaliteRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver la nationalité spécifiée dans la base de données."); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/decoupage/QuartierServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/decoupage/QuartierServiceImpl.java new file mode 100644 index 0000000..c406522 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/decoupage/QuartierServiceImpl.java @@ -0,0 +1,85 @@ +package io.gmss.infocad.implementations.decoupage; + +import io.gmss.infocad.entities.decoupage.Arrondissement; +import io.gmss.infocad.entities.decoupage.Quartier; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.decoupage.ArrondissementService; +import io.gmss.infocad.interfaces.decoupage.QuartierService; +import io.gmss.infocad.repositories.decoupage.QuartierRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class QuartierServiceImpl implements QuartierService { + + private final QuartierRepository quartierRepository; + private final ArrondissementService arrondissementService; + + public QuartierServiceImpl(QuartierRepository quartierRepository, ArrondissementService arrondissementService) { + this.quartierRepository = quartierRepository; + this.arrondissementService = arrondissementService; + } + + @Override + public Quartier createQuartier(Quartier quartier) throws BadRequestException { + if(quartier.getId() != null ){ + throw new BadRequestException("Impossible de créer un nouveau quartier ayant un id non null."); + } + return quartierRepository.save(quartier); + } + + @Override + public Quartier updateQuartier(Long id, Quartier quartier) throws NotFoundException { + if(quartier.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour un nouveau quartier ayant un id null."); + } + if(!quartierRepository.existsById(quartier.getId())){ + throw new NotFoundException("Impossible de trouver le quartier spécifié dans notre base de données."); + } + return quartierRepository.save(quartier); + } + + @Override + public void deleteQuartier(Long id) throws NotFoundException { + Optional quartierOptional = quartierRepository.findById(id); + if(quartierOptional.isPresent()){ + quartierRepository.deleteById(quartierOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver le quartier spécifié dans notre base de données."); + } + } + + @Override + public Page getQuartierList(Pageable pageable) { + return quartierRepository.findAll(pageable); + } + + @Override + public List getQuartierList() { + return quartierRepository.findAll(); + } + + @Override + public Optional getQuartierById(Long id) { + if(quartierRepository.existsById(id)){ + return quartierRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver le quartier spécifié dans la base de données."); + } + + } + + @Override + public List getQuartierByArrondissement(Long arrondissementId) { + Optional arrondissementOptional = arrondissementService.getArrondissementById(arrondissementId); + if(arrondissementOptional.isEmpty()){ + throw new NotFoundException("Impossible de trouver l'arrondissement spécifié."); + } + return quartierRepository.getAllByArrondissement(arrondissementOptional.get()); + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/metier/ActeurConcerneServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/metier/ActeurConcerneServiceImpl.java new file mode 100644 index 0000000..b7811df --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/metier/ActeurConcerneServiceImpl.java @@ -0,0 +1,52 @@ +package io.gmss.infocad.implementations.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.ActeurConcerne; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.metier.ActeurConcerneService; +import io.gmss.infocad.repositories.infocad.metier.ActeurConcerneRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +@Service +public class ActeurConcerneServiceImpl implements ActeurConcerneService { + private final ActeurConcerneRepository acteurConcerneRepository; + + public ActeurConcerneServiceImpl(ActeurConcerneRepository acteurConcerneRepository) { + this.acteurConcerneRepository = acteurConcerneRepository; + } + + @Override + public ActeurConcerne createActeurConcerne(ActeurConcerne acteurConcerne) throws BadRequestException { + return null; + } + + @Override + public ActeurConcerne updateActeurConcerne(Long id, ActeurConcerne acteurConcerne) throws NotFoundException { + return null; + } + + @Override + public void deleteActeurConcerne(Long id) throws NotFoundException { + + } + + @Override + public Page getActeurConcerneList(Pageable pageable) { + return null; + } + + @Override + public List getActeurConcerneList() { + return null; + } + + @Override + public Optional getActeurConcerneById(Long id) { + return acteurConcerneRepository.findById(id); + } +} + diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/metier/BlocServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/metier/BlocServiceImpl.java new file mode 100644 index 0000000..63fd646 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/metier/BlocServiceImpl.java @@ -0,0 +1,142 @@ +package io.gmss.infocad.implementations.infocad.metier; + +import io.gmss.infocad.entities.decoupage.Arrondissement; +import io.gmss.infocad.entities.infocad.metier.Bloc; +import io.gmss.infocad.entities.infocad.parametre.Structure; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.decoupage.ArrondissementService; +import io.gmss.infocad.interfaces.infocad.metier.BlocService; +import io.gmss.infocad.interfaces.infocad.parametre.StructureService; +import io.gmss.infocad.repositories.infocad.metier.BlocRepository; +import io.gmss.infocad.service.StringService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class BlocServiceImpl implements BlocService { + + private final BlocRepository blocRepository; + private final ArrondissementService arrondissementService; + private final StringService stringService; + private final StructureService structureService; + + public BlocServiceImpl(BlocRepository blocRepository, ArrondissementService arrondissementService, StringService stringService, StructureService structureService) { + this.blocRepository = blocRepository; + this.arrondissementService = arrondissementService; + this.stringService = stringService; + this.structureService = structureService; + } + + @Override + public Bloc createBloc(Bloc bloc) throws BadRequestException { + if(bloc.getId() != null ){ + throw new BadRequestException("Impossible de créer un nouveau bloc ayant un id non null."); + } + String idBlocParArrondissement = getIdBlocParArrondissementValue(bloc); + bloc.setIdBlocParArrondissement(idBlocParArrondissement); + if(bloc.getStructure() == null){ + bloc.setCote(getCoteValue(bloc, idBlocParArrondissement, null)); + }else{ + bloc.setCote(getCoteValue(bloc, idBlocParArrondissement, bloc.getStructure().getId())); + } + + return blocRepository.save(bloc); + } + + private String getCoteValue(Bloc bloc, String idBlocParArrondissement, Long structure_id) { + StringBuilder builder = new StringBuilder(); + + if(structure_id == null){ + structure_id = blocRepository.getStructureId(bloc.getArrondissement().getId()); + if(structure_id == null){ + throw new NotFoundException("Aucune structure n'est associé à ce bloc. Il n'est donc pas possible d'enregistrer ce bloc. Vous devez donc attribué ce bloc à une structure."); + } + } + + Optional structureOptional = structureService.getStructureById(structure_id); + if(structureOptional.isPresent()){ + builder.append(structureOptional.get().getCode()); + builder.append(bloc.getArrondissement().getCode()); + builder.append(idBlocParArrondissement); + return builder.toString(); + }else { + throw new NotFoundException("Impossible de trouver la structure associée à ce bloc"); + } + } + + private String getIdBlocParArrondissementValue(Bloc bloc) { + int a = countAllBlocByArrondissement(bloc.getArrondissement().getId()) + 1; + return stringService.generateIntInTwoPositions(a); + } + + @Override + public Bloc updateBloc(Long id, Bloc bloc) throws NotFoundException { + if(bloc.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour un nouveau bloc ayant un id null."); + } + if(!blocRepository.existsById(bloc.getId())){ + throw new NotFoundException("Impossible de trouver le bloc spécifié dans notre base de données."); + } + return blocRepository.save(bloc); + } + + @Override + public void deleteBloc(Long id) throws NotFoundException { + Optional blocOptional = blocRepository.findById(id); + if(blocOptional.isPresent()){ + blocRepository.deleteById(blocOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver le bloc spécifié dans notre base de données."); + } + } + + @Override + public Page getBlocList(Pageable pageable) { + return blocRepository.findAll(pageable); + } + + @Override + public List getBlocsByArrondissement(Long idArrondissement) { + Arrondissement arrondissement = arrondissementService.getArrondissementById(idArrondissement).orElseThrow(() -> { + throw new NotFoundException("Impossible de trouver l'arrondissement"); + }); + return blocRepository.findAllByArrondissement(arrondissement); + } + + @Override + public List getBlocsByStructure(Long idStructure) { + if(structureService.getStructureById(idStructure).isPresent()){ + return blocRepository.getBlocsByStructure(idStructure); + }else{ + throw new NotFoundException("Impossible de trouver la structure spécifiée."); + } + } + + @Override + public List getBlocList() { + return blocRepository.findAll(); + } + + @Override + public Optional getBlocById(Long id) { + if(blocRepository.existsById(id)){ + return blocRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver le bloc spécifié dans la base de données."); + } + } + + @Override + public int countAllBlocByArrondissement(Long idArrondissement) { + if(arrondissementService.getArrondissementById(idArrondissement).isPresent()){ + return blocRepository.countAllBlocByArrondissement(idArrondissement); + }else{ + throw new NotFoundException("Impossible de trouver l'arrondissement' spécifié dans la base de données."); + } + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/metier/CommentaireServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/metier/CommentaireServiceImpl.java new file mode 100644 index 0000000..66970a4 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/metier/CommentaireServiceImpl.java @@ -0,0 +1,133 @@ +package io.gmss.infocad.implementations.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.Commentaire; +import io.gmss.infocad.enums.Origine; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.metier.CommentaireService; +import io.gmss.infocad.paylaods.request.SyncCommentaireRequest; +import io.gmss.infocad.paylaods.response.CommentaireResponse; +import io.gmss.infocad.repositories.infocad.metier.CommentaireRepository; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +@Service +public class CommentaireServiceImpl implements CommentaireService { + + private final CommentaireRepository commentaireRepository; + + public CommentaireServiceImpl(CommentaireRepository commentaireRepository) { + this.commentaireRepository = commentaireRepository; + } + + @Override + public Commentaire createCommentaire(Commentaire commentaire) throws BadRequestException { + if(commentaire.getId() != null ){ + throw new BadRequestException("Impossible de créer un nouveau commentaire ayant un id non null."); + } + return commentaireRepository.save(commentaire); + } + + @Override + public Commentaire updateCommentaire(Long id, Commentaire commentaire) throws NotFoundException { + if(commentaire.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour un nouveau commentaire ayant un id null."); + } + if(!commentaireRepository.existsById(commentaire.getId())){ + throw new NotFoundException("Impossible de trouver le commentaire spécifié dans notre base de données."); + } + return commentaireRepository.save(commentaire); + } + + @Override + public void deleteCommentaire(Long id) throws NotFoundException { + Optional commentaireOptional = commentaireRepository.findById(id); + if(commentaireOptional.isPresent()){ + commentaireRepository.deleteById(commentaireOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver le commentaire spécifié dans notre base de données."); + } + } + + @Override + public List getCommentairesByEnqueteAndTerminal(Long idEnquete , Long terminalId) { + return commentaireRepository.findAllByIdEnqueteAndTerminalId(idEnquete, terminalId); + } + + @Override + public List getCommentairesByEnqueteAndLu(Long idEnquete, boolean lu) { + return commentaireRepository.findAllByIdEnqueteAndLu(idEnquete, lu); + } + + @Override + public List getCommentairesByOrigineAndStateReadAndTerminalId(Origine origine, boolean lu, Long terminalId) { + return commentaireRepository.findAllByOrigineAndLuAndTerminalId(origine, lu, terminalId); + } + + @Override + public List getCommentairesByOrigineAndStateSynchronizedAndTerminalId(Origine origine, boolean synchronise, Long terminalId) { + return commentaireRepository.findAllByOrigineAndSynchroniseAndTerminalId(origine, synchronise, terminalId); + } + + + @Override + public Optional getCommentaireByNup(String nup) { + return commentaireRepository.getCommentaireByNupParcelle(nup); + } + + @Override + public List getCommentaireList() { + return commentaireRepository.findAll(); + } + + @Override + public Optional getCommentaireById(Long id) { + return commentaireRepository.findById(id); + } + + @Override + public boolean setCommentaireRead(Long id) { + if(commentaireRepository.existsById(id)){ + Commentaire commentaire = commentaireRepository.getById(id); + commentaire.setLu(true); + updateCommentaire(id, commentaire); + return true; + } + return false; + } + + @Override + public List saveAllCommentairesFromMobile(List commentaires) { + List commentaireResponses = new ArrayList<>(); + commentaires.forEach(commentaire -> { + Commentaire commentaire1 = createCommentaire(commentaire); + CommentaireResponse commentaireResponse = new CommentaireResponse(commentaire1.getId(), commentaire1.getExternalKey()); + commentaireResponses.add(commentaireResponse); + }); + return commentaireResponses; + } + + @Override + public List notifySynchronizedDoneFromMobile(List syncCommentaireRequests) { + + if(syncCommentaireRequests != null || !syncCommentaireRequests.isEmpty()){ + List commentaireResponses = new ArrayList<>(); + syncCommentaireRequests.forEach(syncCommentaireRequest -> { + Optional commentaireOptional = commentaireRepository.findById(syncCommentaireRequest.getIdBackend()); + if(commentaireOptional.isPresent()){ + Commentaire commentaire = commentaireOptional.get(); + commentaire.setExternalKey(syncCommentaireRequest.getExternalKey()); + commentaire.setSynchronise(true); + commentaireRepository.save(commentaire); + CommentaireResponse commentaireResponse = new CommentaireResponse(commentaire.getId(), commentaire.getExternalKey()); + commentaireResponses.add(commentaireResponse); + } + }); + return commentaireResponses; + } + return null; + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/metier/EnqueteServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/metier/EnqueteServiceImpl.java new file mode 100644 index 0000000..b563266 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/metier/EnqueteServiceImpl.java @@ -0,0 +1,382 @@ +package io.gmss.infocad.implementations.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.*; +import io.gmss.infocad.entities.user.User; +import io.gmss.infocad.enums.StatusEnquete; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.metier.EnqueteService; +import io.gmss.infocad.interfaces.user.UserService; +import io.gmss.infocad.paylaods.request.EnquetePayLoad; +import io.gmss.infocad.paylaods.request.EnqueteTraitementPayLoad; +import io.gmss.infocad.paylaods.request.FiltreEnquetePayLoad; +import io.gmss.infocad.paylaods.response.*; +import io.gmss.infocad.repositories.decoupage.ArrondissementRepository; +import io.gmss.infocad.repositories.decoupage.CommuneRepository; +import io.gmss.infocad.repositories.infocad.metier.ActeurConcerneRepository; +import io.gmss.infocad.repositories.infocad.metier.BlocRepository; +import io.gmss.infocad.repositories.infocad.metier.EnqueteRepository; +import io.gmss.infocad.repositories.infocad.metier.ParcelleRepository; +import io.gmss.infocad.repositories.user.UserRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Service; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +@Service +public class EnqueteServiceImpl implements EnqueteService { + private Authentication authentication; + private final EnqueteRepository enqueteRepository; + private final BlocRepository blocRepository; + private final ParcelleRepository parcelleRepository; + private final UserRepository userRepository; + private final UserService userService; + private final CommuneRepository communeRepository; + private final ArrondissementRepository arrondissementRepository; + private final ActeurConcerneRepository acteurConcerneRepository; + + @PersistenceContext + private final EntityManager em; + + public EnqueteServiceImpl(EnqueteRepository enqueteRepository, BlocRepository blocRepository, ParcelleRepository parcelleRepository, UserRepository userRepository, UserService userService, CommuneRepository communeRepository, ArrondissementRepository arrondissementRepository, ActeurConcerneRepository acteurConcerneRepository, EntityManager em) { + this.enqueteRepository = enqueteRepository; + this.blocRepository = blocRepository; + this.parcelleRepository = parcelleRepository; + this.userRepository = userRepository; + this.userService = userService; + this.communeRepository = communeRepository; + this.arrondissementRepository = arrondissementRepository; + this.acteurConcerneRepository = acteurConcerneRepository; + this.em = em; + } + + + @Override + public Enquete createEnquete(EnquetePayLoad enquetePayLoad) throws BadRequestException { + Optional optionalUser =userRepository.findById(enquetePayLoad.getUserId()); + if(!optionalUser.isPresent()){ + throw new BadRequestException("Impossible d'enregistrer une enquête avec un enquêteur inexistant"); + } + Optional optionalBloc =blocRepository.findById(enquetePayLoad.getBlocId()); + if(!optionalBloc.isPresent()){ + throw new BadRequestException("Impossible d'enregistrer une enquête avec un bloc inexistant"); + } + Optional optionalParcelle =parcelleRepository.findById(enquetePayLoad.getParcelleId()); + if(!optionalParcelle.isPresent()){ + throw new BadRequestException("Impossible d'enregistrer une enquête avec une parcelle inexistante"); + } + Enquete enquete=new Enquete(); + enquete.setDateEnquete(LocalDate.now()); + enquete.setBloc(optionalBloc.get()); + enquete.setUser(optionalUser.get()); + enquete.setParcelle(optionalParcelle.get()); + enquete.setLitige(enquetePayLoad.isLitige()); + enquete.setStatusEnquete(StatusEnquete.EN_COURS); + enquete.setObservationParticuliere(enquetePayLoad.getObservationParticuliere()); + return enqueteRepository.save(enquete); + } + + @Override + public List getEnqueteCommuneArrondBloc() { + return enqueteRepository.getEnqueteComArrondBloc(); + } + + @Override + public List getEnqueteCommuneArrondBlocFiltre(FiltreEnquetePayLoad filtreEnquetePayLoad) { + String condition=""; + Query query ; + String sql ="select distinct " + + " e.id," + + " e.parcelle_id as parcelleId," + + " c.id as communeId, " + + " c.nom as communeNom, " + + " a.id as arrondissementId, " + + " a.nom as arrondissementNom, " + + " b.id as blocId," + + " b.nom as blocNom, " + + " s.id as structureId, " + + " s.nom as structureNom, " + + " e.litige," + + " e.status_enquete as statusEnquete, " + + " e.date_finalisation as dateFinalisation, " + + " e.date_validation as dateValidation, " + + " e.date_synchronisation as dateSynchronisation, " + + " e.synchronise, " + + " coalesce(per.nom_ou_sigle,'') as nomSigle, " + + " coalesce(per.prenom_ou_raison_sociale,'') as prenomRaisonSociale," + + " tp.libelle as typePersonne," + + " td.libelle as typeDomaine, " + + " nd.libelle as natureDomaine, " + + " p.nup_provisoire as nupProvisoire " + + " from enquete e " + + " inner join bloc b on b.id=e.bloc_id " + + " inner join arrondissement a on a.id= b.arrondissement_id " + + " inner join commune c on c.id=a.commune_id " + + " inner join structure s on s.id=b.structure_id " + + " inner join parcelle p on p.id=e.parcelle_id " + + " inner join nature_domaine nd on nd.id=p.nature_domaine_id " + + " inner join type_domaine td on td.id=nd.type_domaine_id " + + " inner join acteur_concerne ac on ac.enquete_id=e.id " + + " inner join personne per on per.id=ac.personne_id " + + " left join type_personne tp on tp.id=per.type_personne_id " + + " where ac.role_acteur='PROPRIETAIRE' "; + + if(filtreEnquetePayLoad.getCommuneId()!=null){ + condition+= " AND c.id = "+filtreEnquetePayLoad.getCommuneId(); + } + if(filtreEnquetePayLoad.getArrondissementId()!=null){ + condition+= " AND a.id = "+filtreEnquetePayLoad.getArrondissementId() ; + } + if(filtreEnquetePayLoad.getStructureId()!=null){ + condition+= " AND s.id = "+filtreEnquetePayLoad.getStructureId() ; + } + if(filtreEnquetePayLoad.getParcelleId()!=null){ + condition+= " AND p.id = "+filtreEnquetePayLoad.getParcelleId(); + } + if(filtreEnquetePayLoad.getBlocId()!=null){ + condition+= " AND b.id = "+filtreEnquetePayLoad.getBlocId() ; + } + if(filtreEnquetePayLoad.getNomPersonne()!=null){ + condition+= " AND per.nom_ou_sigle like '%"+filtreEnquetePayLoad.getNomPersonne() +"%'"; + } + if(filtreEnquetePayLoad.getPrenomPersonne()!=null){ + condition+= " AND per.prenom_ou_raison_sociale like '%"+filtreEnquetePayLoad.getPrenomPersonne() +"%'"; + } + if(filtreEnquetePayLoad.getNatureDomaneId()!=null){ + condition+= " AND nd.id = "+filtreEnquetePayLoad.getNatureDomaneId() ; + } + if(filtreEnquetePayLoad.getTypeDomaineId()!=null){ + condition+= " AND td.id = "+filtreEnquetePayLoad.getTypeDomaineId() ; + } + if(filtreEnquetePayLoad.getTypePersonneId()!=null){ + condition+= " AND tp.id = "+filtreEnquetePayLoad.getTypePersonneId() ; + } + ///////////////// + if(filtreEnquetePayLoad.getEnqueteurId()!=null){ + condition+= " AND e.user_id = "+filtreEnquetePayLoad.getEnqueteurId() ; + } + + if(filtreEnquetePayLoad.getLitige()!=null){ + condition+= " AND e.litige is "+filtreEnquetePayLoad.getLitige() ; + } + + System.out.println(condition); + StringBuilder sb=new StringBuilder(sql).append(condition); + query = em.createNativeQuery(sb.toString(),EnqueteFiltreResponse.class); + List enqueteFiltreResponses=query.getResultList(); + // System.out.println((EnqueteFiltreResponse) list.get(0)); +// List enqueteFiltreResponses=list.stream() +// .map(item -> item instanceof EnqueteFiltreResponse ? (EnqueteFiltreResponse) item : null) +// .collect(Collectors.toList()); + + return enqueteFiltreResponses ; + } + + @Override + public Enquete updateEnquete(EnquetePayLoad enquetePayLoad) throws NotFoundException { + if(enquetePayLoad.getIdBackend() == null ){ + throw new BadRequestException("Impossible de mettre à jour une enquête ayant un id null."); + } + if(!enqueteRepository.existsById(enquetePayLoad.getIdBackend())){ + throw new NotFoundException("Impossible de trouver l'enquête que vous désirez modifier."); + } + Optional optionalUser =userRepository.findById(enquetePayLoad.getUserId()); + if(!optionalUser.isPresent()){ + throw new BadRequestException("Impossible d'enregistrer une enquête avec un enquêteur inexistant"); + } + Optional optionalBloc =blocRepository.findById(enquetePayLoad.getBlocId()); + if(!optionalBloc.isPresent()){ + throw new BadRequestException("Impossible d'enregistrer une enquête avec un bloc inexistant"); + } + Optional optionalParcelle =parcelleRepository.findById(enquetePayLoad.getParcelleId()); + if(!optionalParcelle.isPresent()){ + throw new BadRequestException("Impossible d'enregistrer une enquête avec une parcelle inexistante"); + } + Enquete enquete=enqueteRepository.findById(enquetePayLoad.getParcelleId()).get(); + enquete.setBloc(optionalBloc.get()); + enquete.setUser(optionalUser.get()); + enquete.setParcelle(optionalParcelle.get()); + enquete.setLitige(enquetePayLoad.isLitige()); + enquete.setDateFinalisation(enquetePayLoad.getDateFinalisation()); + enquete.setStatusEnquete(enquetePayLoad.getStatusEnquete()); + enquete.setObservationParticuliere(enquetePayLoad.getObservationParticuliere()); + return enqueteRepository.save(enquete); + } + + @Override + public void deleteEnquete(Long id) throws NotFoundException { + Optional optionalEnquete = enqueteRepository.findById(id); + if(optionalEnquete.isPresent()){ + enqueteRepository.deleteById(optionalEnquete.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver l'enquête que vous désirez supprimer."); + } + } + + @Override + public Page getEnqueteList(Pageable pageable) { + return enqueteRepository.findAll(pageable); + } + + @Override + public List getEnqueteList() { + return enqueteRepository.findAll(); + } + + @Override + public Optional getEnqueteById(Long id) { + if(enqueteRepository.existsById(id)){ + return enqueteRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver l'enquête."); + } + } + + @Override + public Enquete validerEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad) { + if(enqueteTraitementPayLoad == null ){ + throw new BadRequestException("Impossible de valider une enquête ayant un id null."); + } + Optional optionalEnquete=enqueteRepository.findById(enqueteTraitementPayLoad.getIdBackend()); + if(!optionalEnquete.isPresent()){ + throw new NotFoundException("Impossible de trouver l'enquête que vous désirez valider."); + } + optionalEnquete.get().setDateValidation(LocalDate.now()); + optionalEnquete.get().setStatusEnquete(StatusEnquete.VALIDE); + optionalEnquete.get().setSynchronise(false); + return enqueteRepository.save(optionalEnquete.get()); + } + + @Override + public Enquete rejeterEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad) { + if(enqueteTraitementPayLoad.getIdBackend() == null ){ + throw new BadRequestException("Impossible de rejeter une enquête ayant un id null."); + } + Optional optionalEnquete=enqueteRepository.findById(enqueteTraitementPayLoad.getIdBackend()); + if(!optionalEnquete.isPresent()){ + throw new NotFoundException("Impossible de trouver l'enquête que vous désirez rejeter."); + } + optionalEnquete.get().setDateRejet(LocalDate.now()); + optionalEnquete.get().setDescriptionMotifRejet(enqueteTraitementPayLoad.getMotifRejet()); + + optionalEnquete.get().setStatusEnquete(StatusEnquete.REJETE); + optionalEnquete.get().setSynchronise(false); + return enqueteRepository.save(optionalEnquete.get()); + } + + @Override + public List validerEnquete(List enqueteTraitementPayLoads) { + List enquetes = new ArrayList<>(); + try{ + for (EnqueteTraitementPayLoad enqueteTraitementPayLoad : enqueteTraitementPayLoads) { + enquetes.add(validerEnquete(enqueteTraitementPayLoad)); + } + }catch (Exception e){ + enquetes.add(null); + } + return enquetes; + } + + @Override + public List rejeterEnquete(List enqueteTraitementPayLoads) { + List enquetes = new ArrayList<>(); + try{ + for (EnqueteTraitementPayLoad enqueteTraitementPayLoad : enqueteTraitementPayLoads) { + enquetes.add(rejeterEnquete(enqueteTraitementPayLoad)); + } + }catch (Exception e){ + enquetes.add(null); + } + return enquetes; + } + + @Override + public Enquete finaliserEnquete(Long enqueteId) { + if(enqueteId == null ){ + throw new BadRequestException("Impossible de finaliser une enquête ayant un id null."); + } + Optional optionalEnquete=enqueteRepository.findById(enqueteId); + if(!optionalEnquete.isPresent()){ + throw new NotFoundException("Impossible de trouver l'enquête que vous désirez finaliser."); + } + optionalEnquete.get().setDateFinalisation(LocalDate.now()); + optionalEnquete.get().setStatusEnquete(StatusEnquete.FINALISE); + return enqueteRepository.save(optionalEnquete.get()); + } + + @Override + public Enquete reglerLitigeEnquete(Long enqueteId) { + if(enqueteId == null ){ + throw new BadRequestException("Impossible de régler le litige d'une enquête ayant un id null."); + } + Optional optionalEnquete=enqueteRepository.findById(enqueteId); + if(!optionalEnquete.isPresent()){ + throw new NotFoundException("Impossible de trouver l'enquête dont vous désirez régler le litige."); + } + optionalEnquete.get().setDateLitigeResolu(LocalDate.now()); + optionalEnquete.get().setLitige(false); + optionalEnquete.get().setStatusEnquete(StatusEnquete.EN_COURS); + return enqueteRepository.save(optionalEnquete.get()); + } + + + @Override + public UserDecoupageEnqResponses getDecoupageAdminUserConnecterAndStat() { + String userName=""; + try { + authentication = SecurityContextHolder.getContext().getAuthentication(); + userName = authentication.getName(); + }catch (Exception e){ + return null; + } + + User user = userService.getUserByUsername(userName); + //User user = userService.getUserByUsername("admin@gmail.com"); + //User user = userService.getUserByUsername("rnovatopo@gmail.com"); + + + System.out.println(user.isAdmin()); + + List communeEnqResponses = + user.isAdmin() ? communeRepository.getAdminCommuneEnqResponse():communeRepository.getCommuneEnqResponse(user.getStructure().getId()); + + + List arrondissementEnqResponses = + user.isAdmin()? arrondissementRepository.getAdminArrondissementEnqResponse() : arrondissementRepository.getArrondissementEnqResponse(user.getStructure().getId()); + + List blocEnqResponses = + user.isAdmin() ? blocRepository.getAdminBlocEnqResponse(): blocRepository.getBlocEnqResponse(user.getStructure().getId()); + + UserDecoupageEnqResponses userDecoupageEnqResponses = new UserDecoupageEnqResponses(); + userDecoupageEnqResponses.setCommunes(communeEnqResponses); + userDecoupageEnqResponses.setArrondissements(arrondissementEnqResponses); + userDecoupageEnqResponses.setBlocs(blocEnqResponses); + return userDecoupageEnqResponses; + } + + @Override + public FicheEnqueteResponse getFicheEnquete(Long enqueteId) { + Optional optionalEnquete= enqueteRepository.findById(enqueteId); + List acteurConcernes=acteurConcerneRepository.findActeurConcerneByEnqueteId(enqueteId); + FicheEnqueteResponse ficheEnqueteResponse = new FicheEnqueteResponse(); + ficheEnqueteResponse.setEnquete(optionalEnquete.orElse(null)); + ficheEnqueteResponse.setActeurConcernes(acteurConcernes); + return ficheEnqueteResponse ; + } + + @Override + public List getEnqueteValideNonSynch(Long terminalId) { + return enqueteRepository.getEnqueteValNonSync(terminalId); + } + + +} diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/metier/ParcelleServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/metier/ParcelleServiceImpl.java new file mode 100644 index 0000000..0c8ae81 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/metier/ParcelleServiceImpl.java @@ -0,0 +1,185 @@ +package io.gmss.infocad.implementations.infocad.metier; + +import io.gmss.infocad.entities.decoupage.Quartier; +import io.gmss.infocad.entities.infocad.metier.Parcelle; +import io.gmss.infocad.entities.infocad.parametre.NatureDomaine; +import io.gmss.infocad.entities.infocad.parametre.SituationGeographique; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.metier.ParcelleService; +import io.gmss.infocad.paylaods.request.ParcellePayLoad; +import io.gmss.infocad.repositories.decoupage.QuartierRepository; +import io.gmss.infocad.repositories.infocad.metier.ParcelleRepository; +import io.gmss.infocad.repositories.infocad.parametre.NatureDomaineRepository; +import io.gmss.infocad.repositories.infocad.parametre.SituationGeographiqueRepository; +import io.gmss.infocad.service.GeometryService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public class ParcelleServiceImpl implements ParcelleService { + private final NatureDomaineRepository natureDomaineRepository; + private final QuartierRepository quartierRepository; + private final SituationGeographiqueRepository situationGeographiqueRepository; + private final ParcelleRepository parcelleRepository; + private final GeometryService geometryService; + @Value("${infocad.geom.srid}") + private String defaultSrid32631; + + @Value("${infocad.geom.sridfixe}") + private String defaultSrid; + + public ParcelleServiceImpl(NatureDomaineRepository natureDomaineRepository, QuartierRepository quartierRepository, SituationGeographiqueRepository situationGeographiqueRepository, ParcelleRepository parcelleRepository, GeometryService geometryService) { + this.natureDomaineRepository = natureDomaineRepository; + this.quartierRepository = quartierRepository; + this.situationGeographiqueRepository = situationGeographiqueRepository; + this.parcelleRepository = parcelleRepository; + this.geometryService = geometryService; + } + + + @Override + public Parcelle createParcelle(ParcellePayLoad parcellePayLoad) throws BadRequestException { + Optional optionalNatureDomaine = natureDomaineRepository.findById(parcellePayLoad.getNatureDomaineId()); + if(!optionalNatureDomaine.isPresent()){ + throw new BadRequestException("Impossible d'enregistrer une parcelle avec une nature de domaine inexistant"); + } + Optional optionalQuartier =quartierRepository.findById(parcellePayLoad.getQuartierId()); + if(!optionalQuartier.isPresent()){ + throw new BadRequestException("Impossible d'enregistrer une parcelle avec un quartier/village inexistant"); + } + Optional optionalSituationGeographique =situationGeographiqueRepository.findById(parcellePayLoad.getSituationGeographiqueId()); + if(!optionalSituationGeographique.isPresent()){ + throw new BadRequestException("Impossible d'enregistrer une parcelle avec une situation géographique inexistant"); + } + + Parcelle parcelle=getParcelle(parcellePayLoad, optionalSituationGeographique, optionalNatureDomaine); + return parcelleRepository.save(parcelle); + } + + @Override + public Parcelle updateParcelle(ParcellePayLoad parcellePayLoad) throws NotFoundException { + Optional optionalParcelle = parcelleRepository.findById(parcellePayLoad.getIdBackend()); + if(!optionalParcelle.isPresent()){ + throw new NotFoundException("Impossible de trouver la parcelle que vous désirer modifier"); + } + Optional optionalNatureDomaine = natureDomaineRepository.findById(parcellePayLoad.getNatureDomaineId()); + if(!optionalNatureDomaine.isPresent()){ + throw new BadRequestException("Impossible d'enregistrer une parcelle avec une nature de domaine inexistante"); + } + Optional optionalQuartier =quartierRepository.findById(parcellePayLoad.getQuartierId()); + if(!optionalQuartier.isPresent()){ + throw new BadRequestException("Impossible d'enregistrer une parcelle avec un quartier/village inexistant"); + } + Optional optionalSituationGeographique =situationGeographiqueRepository.findById(parcellePayLoad.getSituationGeographiqueId()); + if(!optionalSituationGeographique.isPresent()){ + throw new BadRequestException("Impossible d'enregistrer une parcelle avec une situation géographique inexistant"); + } + + Parcelle parcelle=getParcelle(optionalParcelle.get(),parcellePayLoad,optionalSituationGeographique, optionalNatureDomaine); + return parcelleRepository.save(parcelle); + } + + @Override + public void deleteParcelle(Long id) throws NotFoundException { + Optional optionalParcelle = parcelleRepository.findById(id); + if(optionalParcelle.isPresent()){ + parcelleRepository.deleteById(optionalParcelle.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la parcelle que vous désirez supprimer."); + } + } + + @Override + public Page getParcelleList(Pageable pageable) { + return parcelleRepository.findAll(pageable); + } + + @Override + public List getParcelleList() { + return parcelleRepository.findAll(); + } + + @Override + public Optional getParcelleById(Long id) { + if(parcelleRepository.existsById(id)){ + return parcelleRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver l'enquête."); + } + } + private Parcelle getParcelle(ParcellePayLoad parcellePayLoad, Optional optionalSituationGeographique, Optional optionalNatureDomaine) { + StringBuilder coordonnees =new StringBuilder(); + Parcelle parcelle=new Parcelle(); + parcelle.setP(parcellePayLoad.getP()); + parcelle.setI(parcellePayLoad.getI()); + parcelle.setQ(parcellePayLoad.getQ()); + parcelle.setNup(parcellePayLoad.getNup()); + parcelle.setLatitude(parcellePayLoad.getLatitude()); + parcelle.setLongitude(parcellePayLoad.getLongitude()); + //parcelle.setSituationGeographique(optionalSituationGeographique.get()); + parcelle.setSituationGeographique(parcellePayLoad.getSituationGeographique()); + parcelle.setNatureDomaine(optionalNatureDomaine.get()); + parcelle.setNupProvisoire(parcellePayLoad.getNupProvisoire()); + // parcelle.setGeomSrid(parcellePayLoad.getGeomSrid()); + //////////spatial +// try { +// Point point=null; +// if (parcellePayLoad.getLatitude() != null && parcellePayLoad.getLongitude() != null){ +// coordonnees.append(parcelle.getLongitude()).append(" ").append(parcelle.getLatitude()); +// point = geometryService.toGeometryPoint(coordonnees.toString(), parcelle.getGeomSrid());//Integer.parseInt(defaultSrid)); +// if(parcelle.getGeomSrid()==Integer.parseInt(defaultSrid32631)) { +// parcelle.setGeometry32631(point); +// parcelle. setGeometry(null); +// } +// if(parcelle.getGeomSrid()==Integer.parseInt(defaultSrid)) { +// parcelle.setGeometry(point); +// parcelle.setGeometry32631(null); +// } +// } +// }catch (Exception e){ +// +// } + return parcelle; + } + private Parcelle getParcelle(Parcelle parcelle, ParcellePayLoad parcellePayLoad, Optional optionalSituationGeographique, Optional optionalNatureDomaine) { + StringBuilder coordonnees =new StringBuilder(); + parcelle.setP(parcellePayLoad.getP()); + parcelle.setI(parcellePayLoad.getI()); + parcelle.setQ(parcellePayLoad.getQ()); + parcelle.setNup(parcellePayLoad.getNup()); + parcelle.setLatitude(parcellePayLoad.getLatitude()); + parcelle.setLongitude(parcellePayLoad.getLongitude()); + //parcelle.setSituationGeographique(optionalSituationGeographique.get()); + parcelle.setSituationGeographique(parcellePayLoad.getSituationGeographique()); + parcelle.setNatureDomaine(optionalNatureDomaine.get()); + parcelle.setNupProvisoire(parcellePayLoad.getNupProvisoire()); + //parcelle.setGeomSrid(parcellePayLoad.getGeomSrid()); + //////////spatial +// try { +// Point point=null; +// if (parcellePayLoad.getLatitude() != null && parcellePayLoad.getLongitude() != null && parcellePayLoad.getGeomSrid() != 0){ +// coordonnees.append(parcelle.getLongitude()).append(" ").append(parcelle.getLatitude()); +// point = geometryService.toGeometryPoint(coordonnees.toString(), parcelle.getGeomSrid());//Integer.parseInt(defaultSrid)); +// if(parcelle.getGeomSrid()==Integer.parseInt(defaultSrid32631)) { +// parcelle.setGeometry32631(point); +// parcelle.setGeometry(null); +// } +// if(parcelle.getGeomSrid()==Integer.parseInt(defaultSrid)) { +// parcelle.setGeometry(point); +// parcelle.setGeometry32631(null); +// } +// } +// }catch (Exception e){ +// +// } + return parcelle; + } + + + + +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/metier/PieceServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/metier/PieceServiceImpl.java new file mode 100644 index 0000000..0fbb29d --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/metier/PieceServiceImpl.java @@ -0,0 +1,43 @@ +package io.gmss.infocad.implementations.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.Piece; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.metier.PieceService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public class PieceServiceImpl implements PieceService { + @Override + public Piece createPiece(Piece piece) throws BadRequestException { + return null; + } + + @Override + public Piece updatePiece(Long id, Piece piece) throws NotFoundException { + return null; + } + + @Override + public void deletePiece(Long id) throws NotFoundException { + + } + + @Override + public Page getPieceList(Pageable pageable) { + return null; + } + + @Override + public List getPieceList() { + return null; + } + + @Override + public Optional getPieceById(Long id) { + return Optional.empty(); + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/metier/TpeServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/metier/TpeServiceImpl.java new file mode 100644 index 0000000..f868adc --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/metier/TpeServiceImpl.java @@ -0,0 +1,111 @@ +package io.gmss.infocad.implementations.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.Tpe; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.metier.TpeService; +import io.gmss.infocad.repositories.infocad.metier.EnqueteRepository; +import io.gmss.infocad.repositories.infocad.metier.TpeRepository; +import io.gmss.infocad.service.StringService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +@Service +public class TpeServiceImpl implements TpeService { + + private final TpeRepository tpeRepository; + private final EnqueteRepository enqueteRepository; + + public TpeServiceImpl(TpeRepository tpeRepository, EnqueteRepository enqueteRepository) { + this.tpeRepository = tpeRepository; + this.enqueteRepository = enqueteRepository; + } + + @Override + public Tpe createTpe(Tpe tpe) throws BadRequestException { + String codeEquipe; + do{ + codeEquipe = StringService.getCodeEquipe(); + }while (tpeRepository.existsDistinctByCodeEquipe(codeEquipe)); + + tpe.setCodeEquipe(codeEquipe); + + if(tpe.getId() != null ){ + throw new BadRequestException("Impossible de créer un nouveau tpe ayant un id non null."); + } + + if(tpeRepository.existsDistinctByIdentifier(tpe.getIdentifier())){ + return tpeRepository.findDistinctByIdentifier(tpe.getIdentifier()).get(); + }else{ + return tpeRepository.save(tpe); + } + } + + @Override + public Tpe updateTpe(Long id, Tpe tpe) throws NotFoundException { + if(tpe.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour un nouveau tpe ayant un id null."); + } + if(!tpeRepository.existsById(tpe.getId())){ + throw new NotFoundException("Impossible de trouver le tpe spécifié dans notre base de données."); + } + return tpeRepository.save(tpe); + } + + @Override + public void deleteTpe(Long id) throws NotFoundException { + Optional tpeOptional = tpeRepository.findById(id); + if(tpeOptional.isPresent()){ + tpeRepository.deleteById(tpeOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver le tpe spécifié dans notre base de données."); + } + } + + @Override + public Page getTpeList(Pageable pageable) { + return tpeRepository.findAll(pageable); + } + + @Override + public List getTpeList() { + return tpeRepository.findAll(); + } + + @Override + public Optional getTpeById(Long id) { + if(tpeRepository.existsById(id)){ + return tpeRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver le tpe spécifié dans la base de données."); + } + + } + + @Override + public Optional getTepByIdentifier(String identifier) { + if(tpeRepository.existsDistinctByIdentifier(identifier)){ + return tpeRepository.findDistinctByIdentifier(identifier); + }else{ + throw new NotFoundException("Impossible de trouver le tpe lié à cette clé dans la base de données."); + } + } + + @Override + public List getTpeListByModel(String model) { + if(model != null){ + return tpeRepository.findAllByModel(model); + }else{ + throw new BadRequestException("Vous devez spécifier le model du tpe."); + } + } + + @Override + public List getTpeListByUserId(Long userId) { + return tpeRepository.getTpeByUserId(userId); + } + +} diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/parametre/ModeAcquisitionServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/ModeAcquisitionServiceImpl.java new file mode 100644 index 0000000..0911da6 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/ModeAcquisitionServiceImpl.java @@ -0,0 +1,71 @@ +package io.gmss.infocad.implementations.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.ModeAcquisition; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.parametre.ModeAcquisitionService; +import io.gmss.infocad.repositories.infocad.parametre.ModeAcquisitionRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +@Service +public class ModeAcquisitionServiceImpl implements ModeAcquisitionService { + + private final ModeAcquisitionRepository modeAcquisitionRepository; + + public ModeAcquisitionServiceImpl(ModeAcquisitionRepository modeAcquisitionRepository) { + this.modeAcquisitionRepository = modeAcquisitionRepository; + } + + @Override + public ModeAcquisition createModeAcquisition(ModeAcquisition modeAcquisition) throws BadRequestException { + if(modeAcquisition.getId() != null ){ + throw new BadRequestException("Impossible de créer un nouveau mode d'acquisition ayant un id non null."); + } + return modeAcquisitionRepository.save(modeAcquisition); + } + + @Override + public ModeAcquisition updateModeAcquisition(Long id, ModeAcquisition modeAcquisition) throws NotFoundException { + if(modeAcquisition.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour un nouveau mode d'acquisition ayant un id null."); + } + if(!modeAcquisitionRepository.existsById(modeAcquisition.getId())){ + throw new NotFoundException("Impossible de trouver le mode d'acquisition spécifié dans notre base de données."); + } + return modeAcquisitionRepository.save(modeAcquisition); + } + + @Override + public void deleteModeAcquisition(Long id) throws NotFoundException { + Optional modeAcquisitionOptional = modeAcquisitionRepository.findById(id); + if(modeAcquisitionOptional.isPresent()){ + modeAcquisitionRepository.deleteById(modeAcquisitionOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver le mode d'acquisition spécifié dans notre base de données."); + } + } + + @Override + public Page getModeAcquisitionList(Pageable pageable) { + return modeAcquisitionRepository.findAll(pageable); + } + + @Override + public List getModeAcquisitionList() { + return modeAcquisitionRepository.findAll(); + } + + @Override + public Optional getModeAcquisitionById(Long id) { + if(modeAcquisitionRepository.existsById(id)){ + return modeAcquisitionRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver le mode d'acquisition spécifié dans la base de données."); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/parametre/NatureDomaineServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/NatureDomaineServiceImpl.java new file mode 100644 index 0000000..5695e2f --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/NatureDomaineServiceImpl.java @@ -0,0 +1,71 @@ +package io.gmss.infocad.implementations.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.NatureDomaine; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.parametre.NatureDomaineService; +import io.gmss.infocad.repositories.infocad.parametre.NatureDomaineRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +@Service +public class NatureDomaineServiceImpl implements NatureDomaineService { + + private final NatureDomaineRepository natureDomaineRepository; + + public NatureDomaineServiceImpl(NatureDomaineRepository natureDomaineRepository) { + this.natureDomaineRepository = natureDomaineRepository; + } + + @Override + public NatureDomaine createNatureDomaine(NatureDomaine natureDomaine) throws BadRequestException { + if(natureDomaine.getId() != null ){ + throw new BadRequestException("Impossible de créer une nouvelle nature domaine ayant un id non null."); + } + return natureDomaineRepository.save(natureDomaine); + } + + @Override + public NatureDomaine updateNatureDomaine(Long id, NatureDomaine natureDomaine) throws NotFoundException { + if(natureDomaine.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour une nouvelle nature domaine ayant un id null."); + } + if(!natureDomaineRepository.existsById(natureDomaine.getId())){ + throw new NotFoundException("Impossible de trouver la nature domaine spécifiée dans notre base de données."); + } + return natureDomaineRepository.save(natureDomaine); + } + + @Override + public void deleteNatureDomaine(Long id) throws NotFoundException { + Optional natureDomaineOptional = natureDomaineRepository.findById(id); + if(natureDomaineOptional.isPresent()){ + natureDomaineRepository.deleteById(natureDomaineOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la nature domaine spécifiée dans notre base de données."); + } + } + + @Override + public Page getNatureDomaineList(Pageable pageable) { + return natureDomaineRepository.findAll(pageable); + } + + @Override + public List getNatureDomaineList() { + return natureDomaineRepository.findAll(); + } + + @Override + public Optional getNatureDomaineById(Long id) { + if(natureDomaineRepository.existsById(id)){ + return natureDomaineRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver la nature domaine spécifiée dans la base de données."); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/parametre/PositionRepresentationServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/PositionRepresentationServiceImpl.java new file mode 100644 index 0000000..f4fb1e4 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/PositionRepresentationServiceImpl.java @@ -0,0 +1,71 @@ +package io.gmss.infocad.implementations.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.PositionRepresentation; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.parametre.PositionRepresentationService; +import io.gmss.infocad.repositories.infocad.parametre.PositionRepresentationRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +@Service +public class PositionRepresentationServiceImpl implements PositionRepresentationService { + + private final PositionRepresentationRepository positionRepresentationRepository; + + public PositionRepresentationServiceImpl(PositionRepresentationRepository positionRepresentationRepository) { + this.positionRepresentationRepository = positionRepresentationRepository; + } + + @Override + public PositionRepresentation createPositionRepresentation(PositionRepresentation positionRepresentation) throws BadRequestException { + if(positionRepresentation.getId() != null ){ + throw new BadRequestException("Impossible de créer une nouvelle position de représentation ayant un id non null."); + } + return positionRepresentationRepository.save(positionRepresentation); + } + + @Override + public PositionRepresentation updatePositionRepresentation(Long id, PositionRepresentation positionRepresentation) throws NotFoundException { + if(positionRepresentation.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour une nouvelle position de représentation ayant un id null."); + } + if(!positionRepresentationRepository.existsById(positionRepresentation.getId())){ + throw new NotFoundException("Impossible de trouver la position de représentation spécifiée dans notre base de données."); + } + return positionRepresentationRepository.save(positionRepresentation); + } + + @Override + public void deletePositionRepresentation(Long id) throws NotFoundException { + Optional positionRepresentationOptional = positionRepresentationRepository.findById(id); + if(positionRepresentationOptional.isPresent()){ + positionRepresentationRepository.deleteById(positionRepresentationOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la position de représentation spécifiée dans notre base de données."); + } + } + + @Override + public Page getPositionRepresentationList(Pageable pageable) { + return positionRepresentationRepository.findAll(pageable); + } + + @Override + public List getPositionRepresentationList() { + return positionRepresentationRepository.findAll(); + } + + @Override + public Optional getPositionRepresentationById(Long id) { + if(positionRepresentationRepository.existsById(id)){ + return positionRepresentationRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver la position de représentation spécifiée dans la base de données."); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/parametre/ProfessionServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/ProfessionServiceImpl.java new file mode 100644 index 0000000..ae067e2 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/ProfessionServiceImpl.java @@ -0,0 +1,71 @@ +package io.gmss.infocad.implementations.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.Profession; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.parametre.ProfessionService; +import io.gmss.infocad.repositories.infocad.parametre.ProfessionRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +@Service +public class ProfessionServiceImpl implements ProfessionService { + + private final ProfessionRepository professionRepository; + + public ProfessionServiceImpl(ProfessionRepository professionRepository) { + this.professionRepository = professionRepository; + } + + @Override + public Profession createProfession(Profession profession) throws BadRequestException { + if(profession.getId() != null ){ + throw new BadRequestException("Impossible de créer une nouvelle profession ayant un id non null."); + } + return professionRepository.save(profession); + } + + @Override + public Profession updateProfession(Long id, Profession profession) throws NotFoundException { + if(profession.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour une nouvelle profession ayant un id null."); + } + if(!professionRepository.existsById(profession.getId())){ + throw new NotFoundException("Impossible de trouver la profession spécifiée dans notre base de données."); + } + return professionRepository.save(profession); + } + + @Override + public void deleteProfession(Long id) throws NotFoundException { + Optional professionOptional = professionRepository.findById(id); + if(professionOptional.isPresent()){ + professionRepository.deleteById(professionOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la profession spécifiée dans notre base de données."); + } + } + + @Override + public Page getProfessionList(Pageable pageable) { + return professionRepository.findAll(pageable); + } + + @Override + public List getProfessionList() { + return professionRepository.findAll(); + } + + @Override + public Optional getProfessionById(Long id) { + if(professionRepository.existsById(id)){ + return professionRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver la profession spécifiée dans la base de données."); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/parametre/SituationGeographiqueServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/SituationGeographiqueServiceImpl.java new file mode 100644 index 0000000..dddc4bb --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/SituationGeographiqueServiceImpl.java @@ -0,0 +1,71 @@ +package io.gmss.infocad.implementations.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.SituationGeographique; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.parametre.SituationGeographiqueService; +import io.gmss.infocad.repositories.infocad.parametre.SituationGeographiqueRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +@Service +public class SituationGeographiqueServiceImpl implements SituationGeographiqueService { + + private final SituationGeographiqueRepository situationGeographiqueRepository; + + public SituationGeographiqueServiceImpl(SituationGeographiqueRepository situationGeographiqueRepository) { + this.situationGeographiqueRepository = situationGeographiqueRepository; + } + + @Override + public SituationGeographique createSituationGeographique(SituationGeographique situationGeographique) throws BadRequestException { + if(situationGeographique.getId() != null ){ + throw new BadRequestException("Impossible de créer une nouvelle situation géographique ayant un id non null."); + } + return situationGeographiqueRepository.save(situationGeographique); + } + + @Override + public SituationGeographique updateSituationGeographique(Long id, SituationGeographique situationGeographique) throws NotFoundException { + if(situationGeographique.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour une nouvelle situation géographique ayant un id null."); + } + if(!situationGeographiqueRepository.existsById(situationGeographique.getId())){ + throw new NotFoundException("Impossible de trouver la situation géographique spécifiée dans notre base de données."); + } + return situationGeographiqueRepository.save(situationGeographique); + } + + @Override + public void deleteSituationGeographique(Long id) throws NotFoundException { + Optional situationGeographiqueOptional = situationGeographiqueRepository.findById(id); + if(situationGeographiqueOptional.isPresent()){ + situationGeographiqueRepository.deleteById(situationGeographiqueOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la situation géographique spécifiée dans notre base de données."); + } + } + + @Override + public Page getSituationGeographiqueList(Pageable pageable) { + return situationGeographiqueRepository.findAll(pageable); + } + + @Override + public List getSituationGeographiqueList() { + return situationGeographiqueRepository.findAll(); + } + + @Override + public Optional getSituationGeographiqueById(Long id) { + if(situationGeographiqueRepository.existsById(id)){ + return situationGeographiqueRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver la situation géographique spécifiée dans la base de données."); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/parametre/SituationMatrimonialeServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/SituationMatrimonialeServiceImpl.java new file mode 100644 index 0000000..b855fbd --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/SituationMatrimonialeServiceImpl.java @@ -0,0 +1,71 @@ +package io.gmss.infocad.implementations.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.SituationMatrimoniale; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.parametre.SituationMatrimonialeService; +import io.gmss.infocad.repositories.infocad.parametre.SituationMatrimonialeRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +@Service +public class SituationMatrimonialeServiceImpl implements SituationMatrimonialeService { + + private final SituationMatrimonialeRepository situationMatrimonialeRepository; + + public SituationMatrimonialeServiceImpl(SituationMatrimonialeRepository situationMatrimonialeRepository) { + this.situationMatrimonialeRepository = situationMatrimonialeRepository; + } + + @Override + public SituationMatrimoniale createSituationMatrimoniale(SituationMatrimoniale situationMatrimoniale) throws BadRequestException { + if(situationMatrimoniale.getId() != null ){ + throw new BadRequestException("Impossible de créer une nouvelle situation matrimoniale ayant un id non null."); + } + return situationMatrimonialeRepository.save(situationMatrimoniale); + } + + @Override + public SituationMatrimoniale updateSituationMatrimoniale(Long id, SituationMatrimoniale situationMatrimoniale) throws NotFoundException { + if(situationMatrimoniale.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour une nouvelle situation matrimoniale ayant un id null."); + } + if(!situationMatrimonialeRepository.existsById(situationMatrimoniale.getId())){ + throw new NotFoundException("Impossible de trouver la situation matrimoniale spécifiée dans notre base de données."); + } + return situationMatrimonialeRepository.save(situationMatrimoniale); + } + + @Override + public void deleteSituationMatrimoniale(Long id) throws NotFoundException { + Optional situationMatrimonialeOptional = situationMatrimonialeRepository.findById(id); + if(situationMatrimonialeOptional.isPresent()){ + situationMatrimonialeRepository.deleteById(situationMatrimonialeOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la situation matrimoniale spécifiée dans notre base de données."); + } + } + + @Override + public Page getSituationMatrimonialeList(Pageable pageable) { + return situationMatrimonialeRepository.findAll(pageable); + } + + @Override + public List getSituationMatrimonialeList() { + return situationMatrimonialeRepository.findAll(); + } + + @Override + public Optional getSituationMatrimonialeById(Long id) { + if(situationMatrimonialeRepository.existsById(id)){ + return situationMatrimonialeRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver la situation matrimoniale spécifiée dans la base de données."); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/parametre/SourceDroitServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/SourceDroitServiceImpl.java new file mode 100644 index 0000000..ce4f650 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/SourceDroitServiceImpl.java @@ -0,0 +1,72 @@ +package io.gmss.infocad.implementations.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.SourceDroit; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.parametre.SourceDroitService; +import io.gmss.infocad.repositories.infocad.parametre.SourceDroitRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +@Service +public class SourceDroitServiceImpl implements SourceDroitService { + + private final SourceDroitRepository sourceDroitRepository; + + public SourceDroitServiceImpl(SourceDroitRepository sourceDroitRepository) { + this.sourceDroitRepository = sourceDroitRepository; + } + + @Override + public SourceDroit createSourceDroit(SourceDroit sourceDroit) throws BadRequestException { + if(sourceDroit.getId() != null ){ + throw new BadRequestException("Impossible de créer une nouvelle source de droit ayant un id non null."); + } + return sourceDroitRepository.save(sourceDroit); + } + + @Override + public SourceDroit updateSourceDroit(Long id, SourceDroit sourceDroit) throws NotFoundException { + if(sourceDroit.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour une nouvelle source de droit ayant un id null."); + } + if(!sourceDroitRepository.existsById(sourceDroit.getId())){ + throw new NotFoundException("Impossible de trouver la source de droit spécifiée dans notre base de données."); + } + return sourceDroitRepository.save(sourceDroit); + } + + @Override + public void deleteSourceDroit(Long id) throws NotFoundException { + Optional sourceDroitOptional = sourceDroitRepository.findById(id); + if(sourceDroitOptional.isPresent()){ + sourceDroitRepository.deleteById(sourceDroitOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la source de droit spécifiée dans notre base de données."); + } + } + + @Override + public Page getSourceDroitList(Pageable pageable) { + return sourceDroitRepository.findAll(pageable); + } + + @Override + public List getSourceDroitList() { + return sourceDroitRepository.findAll(); + } + + + @Override + public Optional getSourceDroitById(Long id) { + if(sourceDroitRepository.existsById(id)){ + return sourceDroitRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver la source de droit spécifiée dans la base de données."); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/parametre/StructureServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/StructureServiceImpl.java new file mode 100644 index 0000000..edb6c37 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/StructureServiceImpl.java @@ -0,0 +1,87 @@ +package io.gmss.infocad.implementations.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.Structure; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.parametre.StructureService; +import io.gmss.infocad.paylaods.response.StructureResponse; +import io.gmss.infocad.repositories.infocad.parametre.StructureRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +@Service +public class StructureServiceImpl implements StructureService { + + private final StructureRepository structureRepository; + + public StructureServiceImpl(StructureRepository structureRepository) { + this.structureRepository = structureRepository; + } + + @Override + public Structure createStructure(Structure structure) throws BadRequestException { + if(structure.getId() != null ){ + throw new BadRequestException("Impossible de créer une structure ayant un id non null."); + } + StringBuilder builder = new StringBuilder(); + builder.append("C"); + builder.append(structureRepository.getLastRecordId()+1); + structure.setCode(builder.toString()); + return structureRepository.save(structure); + } + + @Override + public Structure updateStructure(Long id, Structure structure) throws NotFoundException { + + System.out.println("structure = " + structure); + + if(structure.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour une structure ayant un id null."); + } + if(!structureRepository.existsById(structure.getId())){ + throw new NotFoundException("Impossible de trouver la structure spécifiée dans notre base de données."); + } + structureRepository.save(structure); + + Structure structure1 = structureRepository.getById(structure.getId()); + + return structure1; + } + + @Override + public void deleteStructure(Long id) throws NotFoundException { + Optional structureOptional = structureRepository.findById(id); + if(structureOptional.isPresent()){ + structureRepository.deleteById(structureOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la structure spécifiée dans notre base de données."); + } + } + + @Override + public Page getStructureList(Pageable pageable) { + return structureRepository.findAll(pageable); + } + + @Override + public List getStructureList() { + return structureRepository.findAll(); + } + + @Override + public List getStructuresByArrondissement(Long arrondissementID) { + return structureRepository.getStructureByArrondissement(arrondissementID); + } + + @Override + public Optional getStructureById(Long id) { + if(structureRepository.existsById(id)){ + return structureRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver la structure spécifiée dans la base de données."); + } + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypeContestationServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypeContestationServiceImpl.java new file mode 100644 index 0000000..98fcdb5 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypeContestationServiceImpl.java @@ -0,0 +1,71 @@ +package io.gmss.infocad.implementations.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.TypeContestation; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.parametre.TypeContestationService; +import io.gmss.infocad.repositories.infocad.parametre.TypeContestationRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +@Service +public class TypeContestationServiceImpl implements TypeContestationService { + + private final TypeContestationRepository typeContestationRepository; + + public TypeContestationServiceImpl(TypeContestationRepository typeContestationRepository) { + this.typeContestationRepository = typeContestationRepository; + } + + @Override + public TypeContestation createTypeContestation(TypeContestation typeContestation) throws BadRequestException { + if(typeContestation.getId() != null ){ + throw new BadRequestException("Impossible de créer un nouveau type de contestation ayant un id non null."); + } + return typeContestationRepository.save(typeContestation); + } + + @Override + public TypeContestation updateTypeContestation(Long id, TypeContestation typeContestation) throws NotFoundException { + if(typeContestation.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour un nouveau type de contestation ayant un id null."); + } + if(!typeContestationRepository.existsById(typeContestation.getId())){ + throw new NotFoundException("Impossible de trouver le type de contestation spécifié dans notre base de données."); + } + return typeContestationRepository.save(typeContestation); + } + + @Override + public void deleteTypeContestation(Long id) throws NotFoundException { + Optional typeContestationOptional = typeContestationRepository.findById(id); + if(typeContestationOptional.isPresent()){ + typeContestationRepository.deleteById(typeContestationOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver le type de contestation spécifié dans notre base de données."); + } + } + + @Override + public Page getTypeContestationList(Pageable pageable) { + return typeContestationRepository.findAll(pageable); + } + + @Override + public List getTypeContestationList() { + return typeContestationRepository.findAll(); + } + + @Override + public Optional getTypeContestationById(Long id) { + if(typeContestationRepository.existsById(id)){ + return typeContestationRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver le type de contestation spécifié dans la base de données."); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypeDomaineServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypeDomaineServiceImpl.java new file mode 100644 index 0000000..fbbbb26 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypeDomaineServiceImpl.java @@ -0,0 +1,71 @@ +package io.gmss.infocad.implementations.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.TypeDomaine; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.parametre.TypeDomaineService; +import io.gmss.infocad.repositories.infocad.parametre.TypeDomaineRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +@Service +public class TypeDomaineServiceImpl implements TypeDomaineService { + + private final TypeDomaineRepository typeDomaineRepository; + + public TypeDomaineServiceImpl(TypeDomaineRepository typeDomaineRepository) { + this.typeDomaineRepository = typeDomaineRepository; + } + + @Override + public TypeDomaine createTypeDomaine(TypeDomaine typeDomaine) throws BadRequestException { + if(typeDomaine.getId() != null ){ + throw new BadRequestException("Impossible de créer un nouveau type de domaine ayant un id non null."); + } + return typeDomaineRepository.save(typeDomaine); + } + + @Override + public TypeDomaine updateTypeDomaine(Long id, TypeDomaine typeDomaine) throws NotFoundException { + if(typeDomaine.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour un nouveau type de domaine ayant un id null."); + } + if(!typeDomaineRepository.existsById(typeDomaine.getId())){ + throw new NotFoundException("Impossible de trouver le type de domaine spécifié dans notre base de données."); + } + return typeDomaineRepository.save(typeDomaine); + } + + @Override + public void deleteTypeDomaine(Long id) throws NotFoundException { + Optional typeDomaineOptional = typeDomaineRepository.findById(id); + if(typeDomaineOptional.isPresent()){ + typeDomaineRepository.deleteById(typeDomaineOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver le type de domaine spécifié dans notre base de données."); + } + } + + @Override + public Page getTypeDomaineList(Pageable pageable) { + return typeDomaineRepository.findAll(pageable); + } + + @Override + public List getTypeDomaineList() { + return typeDomaineRepository.findAll(); + } + + @Override + public Optional getTypeDomaineById(Long id) { + if(typeDomaineRepository.existsById(id)){ + return typeDomaineRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver le type de domaine spécifié dans la base de données."); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypePersonneServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypePersonneServiceImpl.java new file mode 100644 index 0000000..7c884a8 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypePersonneServiceImpl.java @@ -0,0 +1,71 @@ +package io.gmss.infocad.implementations.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.TypePersonne; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.parametre.TypePersonneService; +import io.gmss.infocad.repositories.infocad.parametre.TypePersonneRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +@Service +public class TypePersonneServiceImpl implements TypePersonneService { + + private final TypePersonneRepository typePersonneRepository; + + public TypePersonneServiceImpl(TypePersonneRepository typePersonneRepository) { + this.typePersonneRepository = typePersonneRepository; + } + + @Override + public TypePersonne createTypePersonne(TypePersonne typePersonne) throws BadRequestException { + if(typePersonne.getId() != null ){ + throw new BadRequestException("Impossible de créer un nouveau type de personne ayant un id non null."); + } + return typePersonneRepository.save(typePersonne); + } + + @Override + public TypePersonne updateTypePersonne(Long id, TypePersonne typePersonne) throws NotFoundException { + if(typePersonne.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour un nouveau type de personne ayant un id null."); + } + if(!typePersonneRepository.existsById(typePersonne.getId())){ + throw new NotFoundException("Impossible de trouver le type de personne spécifié dans notre base de données."); + } + return typePersonneRepository.save(typePersonne); + } + + @Override + public void deleteTypePersonne(Long id) throws NotFoundException { + Optional typePersonneOptional = typePersonneRepository.findById(id); + if(typePersonneOptional.isPresent()){ + typePersonneRepository.deleteById(typePersonneOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver le type de personne spécifié dans notre base de données."); + } + } + + @Override + public Page getTypePersonneList(Pageable pageable) { + return typePersonneRepository.findAll(pageable); + } + + @Override + public List getTypePersonneList() { + return typePersonneRepository.findAll(); + } + + @Override + public Optional getTypePersonneById(Long id) { + if(typePersonneRepository.existsById(id)){ + return typePersonneRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver le type de personne spécifié dans la base de données."); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypePieceServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypePieceServiceImpl.java new file mode 100644 index 0000000..5768f4f --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypePieceServiceImpl.java @@ -0,0 +1,72 @@ +package io.gmss.infocad.implementations.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.TypePiece; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.parametre.TypePieceService; +import io.gmss.infocad.repositories.infocad.parametre.TypePieceRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class TypePieceServiceImpl implements TypePieceService { + + private final TypePieceRepository typePieceRepository; + + public TypePieceServiceImpl(TypePieceRepository typePieceRepository) { + this.typePieceRepository = typePieceRepository; + } + + @Override + public TypePiece createTypePiece(TypePiece typePiece) throws BadRequestException { + if(typePiece.getId() != null ){ + throw new BadRequestException("Impossible de créer un nouveau type de pièce ayant un id non null."); + } + return typePieceRepository.save(typePiece); + } + + @Override + public TypePiece updateTypePiece(Long id, TypePiece typePiece) throws NotFoundException { + if(typePiece.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour un nouveau type de pièce ayant un id null."); + } + if(!typePieceRepository.existsById(typePiece.getId())){ + throw new NotFoundException("Impossible de trouver le type de pièce spécifié dans notre base de données."); + } + return typePieceRepository.save(typePiece); + } + + @Override + public void deleteTypePiece(Long id) throws NotFoundException { + Optional typePieceOptional = typePieceRepository.findById(id); + if(typePieceOptional.isPresent()){ + typePieceRepository.deleteById(typePieceOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver le type de pièce spécifié dans notre base de données."); + } + } + + @Override + public Page getTypePieceList(Pageable pageable) { + return typePieceRepository.findAll(pageable); + } + + @Override + public List getTypePieceList() { + return typePieceRepository.findAll(); + } + + @Override + public Optional getTypePieceById(Long id) { + if(typePieceRepository.existsById(id)){ + return typePieceRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver le type de pièce spécifié dans la base de données."); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypeRepresentationServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypeRepresentationServiceImpl.java new file mode 100644 index 0000000..6b3ffae --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/TypeRepresentationServiceImpl.java @@ -0,0 +1,71 @@ +package io.gmss.infocad.implementations.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.TypeRepresentation; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.parametre.TypeRepresentationService; +import io.gmss.infocad.repositories.infocad.parametre.TypeRepresentationRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +@Service +public class TypeRepresentationServiceImpl implements TypeRepresentationService { + + private final TypeRepresentationRepository typeRepresentationRepository; + + public TypeRepresentationServiceImpl(TypeRepresentationRepository typeRepresentationRepository) { + this.typeRepresentationRepository = typeRepresentationRepository; + } + + @Override + public TypeRepresentation createTypeRepresentation(TypeRepresentation typeRepresentation) throws BadRequestException { + if(typeRepresentation.getId() != null ){ + throw new BadRequestException("Impossible de créer un nouveau type de représentation ayant un id non null."); + } + return typeRepresentationRepository.save(typeRepresentation); + } + + @Override + public TypeRepresentation updateTypeRepresentation(Long id, TypeRepresentation typeRepresentation) throws NotFoundException { + if(typeRepresentation.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour un nouveau type de représentation ayant un id null."); + } + if(!typeRepresentationRepository.existsById(typeRepresentation.getId())){ + throw new NotFoundException("Impossible de trouver le type de représentation spécifié dans notre base de données."); + } + return typeRepresentationRepository.save(typeRepresentation); + } + + @Override + public void deleteTypeRepresentation(Long id) throws NotFoundException { + Optional typeRepresentationOptional = typeRepresentationRepository.findById(id); + if(typeRepresentationOptional.isPresent()){ + typeRepresentationRepository.deleteById(typeRepresentationOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver le type de représentation spécifié dans notre base de données."); + } + } + + @Override + public Page getTypeRepresentationList(Pageable pageable) { + return typeRepresentationRepository.findAll(pageable); + } + + @Override + public List getTypeRepresentationList() { + return typeRepresentationRepository.findAll(); + } + + @Override + public Optional getTypeRepresentationById(Long id) { + if(typeRepresentationRepository.existsById(id)){ + return typeRepresentationRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver le type de représentation spécifié dans la base de données."); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/notification/EmailServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/notification/EmailServiceImpl.java new file mode 100644 index 0000000..1484af2 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/notification/EmailServiceImpl.java @@ -0,0 +1,509 @@ +package io.gmss.infocad.implementations.notification; + +import io.gmss.infocad.interfaces.notification.EmailService; +import io.gmss.infocad.paylaods.EmailDetails; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.FileSystemResource; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.MimeMessageHelper; +import org.springframework.stereotype.Service; + +import javax.mail.MessagingException; +import javax.mail.internet.MimeMessage; +import java.io.File; + +// Annotation +@Service +// Class +// Implementing EmailService interface +public class EmailServiceImpl implements EmailService { + + private final JavaMailSender javaMailSender; + + @Value("${spring.mail.username}") + private String sender; + + public EmailServiceImpl(JavaMailSender javaMailSender) { + this.javaMailSender = javaMailSender; + } + + // To send a simple email + public String sendSimpleMail(EmailDetails details) + { + + // Try block to check for exceptions + try { + MimeMessage message = javaMailSender.createMimeMessage(); + MimeMessageHelper helper = new MimeMessageHelper(message, true); + message.setContent(getHtmlMessage(details.getResetLink(), ""), "text/html"); + message.setSubject(details.getSubject()); + helper.setFrom(sender); + helper.setTo(details.getRecipient()); + helper.setText("Test de message", true); + javaMailSender.send(message); + +// // Creating a simple mail message +// SimpleMailMessage mailMessage +// = new SimpleMailMessage(); +// +// // Setting up necessary details +// mailMessage.setFrom(sender); +// mailMessage.setTo(details.getRecipient()); +// mailMessage.set(getHtmlMessage(details.getMsgBody())); +// mailMessage.setSubject(details.getSubject()); +// +// // Sending the mail +// javaMailSender.send(mailMessage); + return "Mail Sent Successfully..."; + } + + // Catch block to handle the exceptions + catch (Exception e) { + return "Error while Sending Mail"; + } + } + + private String getHtmlMessage(String resetlink, String firstName) { + + return "\n" + + "\n" + + " \n" + + " \n" + + " \n" + + " Simple Transactional Email\n" + + " \n" + + " \n" + + " \n" + + " infoCad - Votre application de données socio-foncières\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
 \n" + + "
\n" + + "\n" + + " \n" + + " \n" + + "\n" + + " \n" + + " \n" + + " \n" + + " \n" + + "\n" + + " \n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
\n" + + "

Hi" + firstName + ",

\n" + + "

You have just created an account on infocad. Pour changer votre mot de passe, cliquez sur le bouton ci-dessous pour effecteur le changement.

\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
Change my password
\n" + + "
\n" + + "

Hope to see you quicly and get your first order.

\n" + + "

Thanks

\n" + + "
\n" + + "
\n" + + " \n" + + "\n" + + " \n" + + "
\n" + + " \n" + + " \n" + + " \n" + + " \n" + + "
\n" + + " infoCad Inc, Cotonou\n" + + "
Keep the nature safe, don't print this email.\n" + + "
\n" + + "
\n" + + " \n" + + "\n" + + "
\n" + + "
 
\n" + + " \n" + + "\n"; + + } + + // To send an email with attachment + public String + sendMailWithAttachment(EmailDetails details) + { + // Creating a mime message + MimeMessage mimeMessage + = javaMailSender.createMimeMessage(); + MimeMessageHelper mimeMessageHelper; + + try { + mimeMessageHelper + = new MimeMessageHelper(mimeMessage, true); + mimeMessageHelper.setFrom(sender); + mimeMessageHelper.setTo(details.getRecipient()); + mimeMessageHelper.setText("infoCad"); + mimeMessageHelper.setSubject( + details.getSubject()); + + // Adding the attachment + FileSystemResource file + = new FileSystemResource( + new File(details.getAttachment())); + + mimeMessageHelper.addAttachment( + file.getFilename(), file); + + // Sending the mail + javaMailSender.send(mimeMessage); + return "Mail sent Successfully"; + } + + // Catch block to handle MessagingException + catch (MessagingException e) { + + // Display message when exception occurred + return "Error while sending mail!!!"; + } + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/rfu/metier/BatimentServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/rfu/metier/BatimentServiceImpl.java new file mode 100644 index 0000000..a9d8615 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/rfu/metier/BatimentServiceImpl.java @@ -0,0 +1,73 @@ +package io.gmss.infocad.implementations.rfu.metier; + +import io.gmss.infocad.entities.rfu.metier.Batiment; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.rfu.metier.BatimentService; +import io.gmss.infocad.repositories.rfu.metier.BatimentRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class BatimentServiceImpl implements BatimentService { + + private final BatimentRepository batimentRepository; + + public BatimentServiceImpl(BatimentRepository batimentRepository) { + this.batimentRepository = batimentRepository; + } + + @Override + public Batiment createBatiment(Batiment batiment) throws BadRequestException { + if(batiment.getId() != null ){ + throw new BadRequestException("Impossible de créer un nouveau batiment ayant un id non null."); + } + return batimentRepository.save(batiment); + } + + @Override + public Batiment updateBatiment(Long id, Batiment batiment) throws NotFoundException { + if(batiment.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour un nouveau batiment ayant un id null."); + } + if(!batimentRepository.existsById(batiment.getId())){ + throw new NotFoundException("Impossible de trouver le batiment spécifié dans notre base de données."); + } + return batimentRepository.save(batiment); + } + + @Override + public void deleteBatiment(Long id) throws NotFoundException { + Optional batimentOptional = batimentRepository.findById(id); + if(batimentOptional.isPresent()){ + batimentRepository.deleteById(batimentOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver le batiment spécifié dans notre base de données."); + } + } + + @Override + public Page getBatimentList(Pageable pageable) { + return batimentRepository.findAll(pageable); + } + + @Override + public List getBatimentList() { + return batimentRepository.findAll(); + } + + + @Override + public Optional getBatimentById(Long id) { + if(batimentRepository.existsById(id)){ + return batimentRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver la caractéristique spécifiée dans la base de données."); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/rfu/metier/CaracteristiqueBatimentServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/rfu/metier/CaracteristiqueBatimentServiceImpl.java new file mode 100644 index 0000000..8c94ae2 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/rfu/metier/CaracteristiqueBatimentServiceImpl.java @@ -0,0 +1,73 @@ +package io.gmss.infocad.implementations.rfu.metier; + +import io.gmss.infocad.entities.rfu.metier.CaracteristiqueBatiment; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.rfu.metier.CaracteristiqueBatimentService; +import io.gmss.infocad.repositories.rfu.metier.CaracteristiqueBatimentRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class CaracteristiqueBatimentServiceImpl implements CaracteristiqueBatimentService { + + private final CaracteristiqueBatimentRepository caracteristiqueBatimentRepository; + + public CaracteristiqueBatimentServiceImpl(CaracteristiqueBatimentRepository caracteristiqueBatimentRepository) { + this.caracteristiqueBatimentRepository = caracteristiqueBatimentRepository; + } + + @Override + public CaracteristiqueBatiment createCaracteristiqueBatiment(CaracteristiqueBatiment caracteristiqueBatiment) throws BadRequestException { + if(caracteristiqueBatiment.getId() != null ){ + throw new BadRequestException("Impossible de créer une nouvelle caracteristique de batiment ayant un id non null."); + } + return caracteristiqueBatimentRepository.save(caracteristiqueBatiment); + } + + @Override + public CaracteristiqueBatiment updateCaracteristiqueBatiment(Long id, CaracteristiqueBatiment caracteristiqueBatiment) throws NotFoundException { + if(caracteristiqueBatiment.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour une nouvelle caracteristique de batiment ayant un id null."); + } + if(!caracteristiqueBatimentRepository.existsById(caracteristiqueBatiment.getId())){ + throw new NotFoundException("Impossible de trouver la nouvelle caracteristique de batiment spécifié dans notre base de données."); + } + return caracteristiqueBatimentRepository.save(caracteristiqueBatiment); + } + + @Override + public void deleteCaracteristiqueBatiment(Long id) throws NotFoundException { + Optional caracteristiqueBatimentOptional = caracteristiqueBatimentRepository.findById(id); + if(caracteristiqueBatimentOptional.isPresent()){ + caracteristiqueBatimentRepository.deleteById(caracteristiqueBatimentOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la nouvelle caracteristique de batiment spécifié dans notre base de données."); + } + } + + @Override + public Page getCaracteristiqueBatimentList(Pageable pageable) { + return caracteristiqueBatimentRepository.findAll(pageable); + } + + @Override + public List getCaracteristiqueBatimentList() { + return caracteristiqueBatimentRepository.findAll(); + } + + + @Override + public Optional getCaracteristiqueBatimentById(Long id) { + if(caracteristiqueBatimentRepository.existsById(id)){ + return caracteristiqueBatimentRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver la caractéristique spécifiée dans la base de données."); + } + + } +} 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 new file mode 100644 index 0000000..23b383e --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/rfu/metier/CaracteristiqueParcelleServiceImpl.java @@ -0,0 +1,74 @@ +package io.gmss.infocad.implementations.rfu.metier; + +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; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class CaracteristiqueParcelleServiceImpl implements CaracteristiqueParcelleService { + + private final CaracteristiqueParcelleRepository caracteristiqueParcelleRepository; + + public CaracteristiqueParcelleServiceImpl(CaracteristiqueParcelleRepository caracteristiqueParcelleRepository) { + this.caracteristiqueParcelleRepository = caracteristiqueParcelleRepository; + } + + @Override + public CaracteristiqueParcelle createCaracteristiqueParcelle(CaracteristiqueParcelle caracteristiqueParcelle) throws BadRequestException { + if(caracteristiqueParcelle.getId() != null ){ + throw new BadRequestException("Impossible de créer une nouvelle caracteristique de parcelle ayant un id non null."); + } + return caracteristiqueParcelleRepository.save(caracteristiqueParcelle); + } + + @Override + public CaracteristiqueParcelle updateCaracteristiqueParcelle(Long id, CaracteristiqueParcelle caracteristiqueParcelle) throws NotFoundException { + if(caracteristiqueParcelle.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour une nouvelle caracteristique de parcelle ayant un id null."); + } + if(!caracteristiqueParcelleRepository.existsById(caracteristiqueParcelle.getId())){ + throw new NotFoundException("Impossible de trouver la nouvelle caracteristique de parcelle spécifié dans notre base de données."); + } + return caracteristiqueParcelleRepository.save(caracteristiqueParcelle); + } + + @Override + public void deleteCaracteristiqueParcelle(Long id) throws NotFoundException { + Optional caracteristiqueParcelleOptional = caracteristiqueParcelleRepository.findById(id); + if(caracteristiqueParcelleOptional.isPresent()){ + caracteristiqueParcelleRepository.deleteById(caracteristiqueParcelleOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la nouvelle caracteristique de parcelle spécifié dans notre base de données."); + } + } + + @Override + public Page getCaracteristiqueParcelleList(Pageable pageable) { + return caracteristiqueParcelleRepository.findAll(pageable); + } + + @Override + public List getCaracteristiqueParcelleList() { + return caracteristiqueParcelleRepository.findAll(); + } + + + @Override + public Optional getCaracteristiqueParcelleById(Long id) { + if(caracteristiqueParcelleRepository.existsById(id)){ + return caracteristiqueParcelleRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver la caractéristique spécifiée dans la base de données."); + } + + } +} 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 new file mode 100644 index 0000000..f8bb308 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/rfu/metier/CaracteristiqueUniteLogementServiceImpl.java @@ -0,0 +1,74 @@ +package io.gmss.infocad.implementations.rfu.metier; + +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; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class CaracteristiqueUniteLogementServiceImpl implements CaracteristiqueUniteLogementService { + + private final CaracteristiqueUniteLogementRepository caracteristiqueUniteLogementRepository; + + public CaracteristiqueUniteLogementServiceImpl(CaracteristiqueUniteLogementRepository caracteristiqueUniteLogementRepository) { + this.caracteristiqueUniteLogementRepository = caracteristiqueUniteLogementRepository; + } + + @Override + public CaracteristiqueUniteLogement createCaracteristiqueUniteLogement(CaracteristiqueUniteLogement caracteristiqueUniteLogement) throws BadRequestException { + if(caracteristiqueUniteLogement.getId() != null ){ + throw new BadRequestException("Impossible de créer une nouvelle caracteristique d'unité de logement ayant un id non null."); + } + return caracteristiqueUniteLogementRepository.save(caracteristiqueUniteLogement); + } + + @Override + public CaracteristiqueUniteLogement updateCaracteristiqueUniteLogement(Long id, CaracteristiqueUniteLogement caracteristiqueUniteLogement) throws NotFoundException { + if(caracteristiqueUniteLogement.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour une nouvelle caracteristique d'unité de logement ayant un id null."); + } + if(!caracteristiqueUniteLogementRepository.existsById(caracteristiqueUniteLogement.getId())){ + throw new NotFoundException("Impossible de trouver la nouvelle caracteristique d'unité de logement spécifiée dans notre base de données."); + } + return caracteristiqueUniteLogementRepository.save(caracteristiqueUniteLogement); + } + + @Override + public void deleteCaracteristiqueUniteLogement(Long id) throws NotFoundException { + Optional caracteristiqueUniteLogementOptional = caracteristiqueUniteLogementRepository.findById(id); + if(caracteristiqueUniteLogementOptional.isPresent()){ + caracteristiqueUniteLogementRepository.deleteById(caracteristiqueUniteLogementOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la nouvelle caracteristique d'unité de logement spécifiée dans notre base de données."); + } + } + + @Override + public Page getCaracteristiqueUniteLogementList(Pageable pageable) { + return caracteristiqueUniteLogementRepository.findAll(pageable); + } + + @Override + public List getCaracteristiqueUniteLogementList() { + return caracteristiqueUniteLogementRepository.findAll(); + } + + + @Override + public Optional getCaracteristiqueUniteLogementById(Long id) { + if(caracteristiqueUniteLogementRepository.existsById(id)){ + return caracteristiqueUniteLogementRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver la caracteristique d'unité de logement spécifiée dans la base de données."); + } + + } +} 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 new file mode 100644 index 0000000..a10c208 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/rfu/metier/EnqueteBatimentServiceImpl.java @@ -0,0 +1,75 @@ +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; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class EnqueteBatimentServiceImpl implements EnqueteBatimentService { + + private final EnqueteBatimentRepository enqueteBatimentRepository; + + public EnqueteBatimentServiceImpl(EnqueteBatimentRepository enqueteBatimentRepository) { + this.enqueteBatimentRepository = enqueteBatimentRepository; + } + + @Override + public EnqueteBatiment createEnqueteBatiment(EnqueteBatiment enqueteBatiment) throws BadRequestException { + if(enqueteBatiment.getId() != null ){ + throw new BadRequestException("Impossible de créer une nouvelle enquete de batiment ayant un id non null."); + } + return enqueteBatimentRepository.save(enqueteBatiment); + } + + @Override + public EnqueteBatiment updateEnqueteBatiment(Long id, EnqueteBatiment enqueteBatiment) throws NotFoundException { + if(enqueteBatiment.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour une nouvelle enquete de batiment ayant un id null."); + } + if(!enqueteBatimentRepository.existsById(enqueteBatiment.getId())){ + throw new NotFoundException("Impossible de trouver la nouvelle enquete de batiment spécifiée dans notre base de données."); + } + return enqueteBatimentRepository.save(enqueteBatiment); + } + + @Override + public void deleteEnqueteBatiment(Long id) throws NotFoundException { + Optional enqueteBatimentOptional = enqueteBatimentRepository.findById(id); + if(enqueteBatimentOptional.isPresent()){ + enqueteBatimentRepository.deleteById(enqueteBatimentOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la nouvelle enquete de batiment spécifiée dans notre base de données."); + } + } + + @Override + public Page getEnqueteBatimentList(Pageable pageable) { + return enqueteBatimentRepository.findAll(pageable); + } + + @Override + public List getEnqueteBatimentList() { + return enqueteBatimentRepository.findAll(); + } + + + @Override + public Optional getEnqueteBatimentById(Long id) { + if(enqueteBatimentRepository.existsById(id)){ + return enqueteBatimentRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver la nouvelle enquete de batiment spécifiée dans la base de données."); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/rfu/metier/EnqueteUniteLogementServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/rfu/metier/EnqueteUniteLogementServiceImpl.java new file mode 100644 index 0000000..a844610 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/rfu/metier/EnqueteUniteLogementServiceImpl.java @@ -0,0 +1,73 @@ +package io.gmss.infocad.implementations.rfu.metier; + +import io.gmss.infocad.entities.rfu.metier.EnqueteUniteLogement; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.rfu.metier.EnqueteUniteLogementService; +import io.gmss.infocad.repositories.rfu.metier.EnqueteUniteLogementRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class EnqueteUniteLogementServiceImpl implements EnqueteUniteLogementService { + + private final EnqueteUniteLogementRepository enqueteUniteLogementRepository; + + public EnqueteUniteLogementServiceImpl(EnqueteUniteLogementRepository enqueteUniteLogementRepository) { + this.enqueteUniteLogementRepository = enqueteUniteLogementRepository; + } + + @Override + public EnqueteUniteLogement createEnqueteUniteLogement(EnqueteUniteLogement enqueteUniteLogement) throws BadRequestException { + if(enqueteUniteLogement.getId() != null ){ + throw new BadRequestException("Impossible de créer une nouvelle enquete de d'unité de logement ayant un id non null."); + } + return enqueteUniteLogementRepository.save(enqueteUniteLogement); + } + + @Override + public EnqueteUniteLogement updateEnqueteUniteLogement(Long id, EnqueteUniteLogement enqueteUniteLogement) throws NotFoundException { + if(enqueteUniteLogement.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour une nouvelle enquete d'unité de logement ayant un id null."); + } + if(!enqueteUniteLogementRepository.existsById(enqueteUniteLogement.getId())){ + throw new NotFoundException("Impossible de trouver la nouvelle enquete d'unité de logement spécifiée dans notre base de données."); + } + return enqueteUniteLogementRepository.save(enqueteUniteLogement); + } + + @Override + public void deleteEnqueteUniteLogement(Long id) throws NotFoundException { + Optional enqueteUniteLogementOptional = enqueteUniteLogementRepository.findById(id); + if(enqueteUniteLogementOptional.isPresent()){ + enqueteUniteLogementRepository.deleteById(enqueteUniteLogementOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la nouvelle enquete d'unité de logement spécifiée dans notre base de données."); + } + } + + @Override + public Page getEnqueteUniteLogementList(Pageable pageable) { + return enqueteUniteLogementRepository.findAll(pageable); + } + + @Override + public List getEnqueteUniteLogementList() { + return enqueteUniteLogementRepository.findAll(); + } + + + @Override + public Optional getEnqueteUniteLogementById(Long id) { + if(enqueteUniteLogementRepository.existsById(id)){ + return enqueteUniteLogementRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver la nouvelle enquete d'unité de logement spécifiée dans la base de données."); + } + + } +} 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 new file mode 100644 index 0000000..eb5f765 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/rfu/metier/UniteLogementServiceImpl.java @@ -0,0 +1,76 @@ +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; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class UniteLogementServiceImpl implements UniteLogementService { + + private final UniteLogementRepository uniteLogementRepository; + + public UniteLogementServiceImpl(UniteLogementRepository uniteLogementRepository) { + this.uniteLogementRepository = uniteLogementRepository; + } + + @Override + public UniteLogement createUniteLogement(UniteLogement uniteLogement) throws BadRequestException { + if(uniteLogement.getId() != null ){ + throw new BadRequestException("Impossible de créer une nouvelle unité de logement ayant un id non null."); + } + return uniteLogementRepository.save(uniteLogement); + } + + @Override + public UniteLogement updateUniteLogement(Long id, UniteLogement uniteLogement) throws NotFoundException { + if(uniteLogement.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour une nouvelle unité de logement ayant un id null."); + } + if(!uniteLogementRepository.existsById(uniteLogement.getId())){ + throw new NotFoundException("Impossible de trouver la nouvelle unité de logement spécifiée dans notre base de données."); + } + return uniteLogementRepository.save(uniteLogement); + } + + @Override + public void deleteUniteLogement(Long id) throws NotFoundException { + Optional uniteLogementOptional = uniteLogementRepository.findById(id); + if(uniteLogementOptional.isPresent()){ + uniteLogementRepository.deleteById(uniteLogementOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la nouvelle unité de logement spécifiée dans notre base de données."); + } + } + + @Override + public Page getUniteLogementList(Pageable pageable) { + return uniteLogementRepository.findAll(pageable); + } + + @Override + public List getUniteLogementList() { + return uniteLogementRepository.findAll(); + } + + + @Override + public Optional getUniteLogementById(Long id) { + if(uniteLogementRepository.existsById(id)){ + return uniteLogementRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver la nouvelle unité de logement spécifiée dans la base de données."); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/rfu/parametre/CaracteristiqueServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/rfu/parametre/CaracteristiqueServiceImpl.java new file mode 100644 index 0000000..4f97212 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/rfu/parametre/CaracteristiqueServiceImpl.java @@ -0,0 +1,73 @@ +package io.gmss.infocad.implementations.rfu.parametre; + +import io.gmss.infocad.entities.rfu.parametre.Caracteristique; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.rfu.parametre.CaracteristiqueService; +import io.gmss.infocad.repositories.rfu.parametre.CaracteristiqueRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class CaracteristiqueServiceImpl implements CaracteristiqueService { + + private final CaracteristiqueRepository caracteristiqueRepository; + + public CaracteristiqueServiceImpl(CaracteristiqueRepository caracteristiqueRepository) { + this.caracteristiqueRepository = caracteristiqueRepository; + } + + @Override + public Caracteristique createCaracteristique(Caracteristique caracteristique) throws BadRequestException { + if(caracteristique.getId() != null ){ + throw new BadRequestException("Impossible de créer une nouvelle caracteristique ayant un id non null."); + } + return caracteristiqueRepository.save(caracteristique); + } + + @Override + public Caracteristique updateCaracteristique(Long id, Caracteristique caracteristique) throws NotFoundException { + if(caracteristique.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour une nouvelle caracteristique ayant un id null."); + } + if(!caracteristiqueRepository.existsById(caracteristique.getId())){ + throw new NotFoundException("Impossible de trouver la caractéristique spécifiée dans notre base de données."); + } + return caracteristiqueRepository.save(caracteristique); + } + + @Override + public void deleteCaracteristique(Long id) throws NotFoundException { + Optional caracteristiqueOptional = caracteristiqueRepository.findById(id); + if(caracteristiqueOptional.isPresent()){ + caracteristiqueRepository.deleteById(caracteristiqueOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la caractéristique spécifiée dans notre base de données."); + } + } + + @Override + public Page getCaracteristiqueList(Pageable pageable) { + return caracteristiqueRepository.findAll(pageable); + } + + @Override + public List getCaracteristiqueList() { + return caracteristiqueRepository.findAll(); + } + + + @Override + public Optional getCaracteristiqueById(Long id) { + if(caracteristiqueRepository.existsById(id)){ + return caracteristiqueRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver la caractéristique spécifiée dans la base de données."); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/rfu/parametre/TypeCaracteristiqueServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/rfu/parametre/TypeCaracteristiqueServiceImpl.java new file mode 100644 index 0000000..0901258 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/rfu/parametre/TypeCaracteristiqueServiceImpl.java @@ -0,0 +1,73 @@ +package io.gmss.infocad.implementations.rfu.parametre; + +import io.gmss.infocad.entities.rfu.parametre.TypeCaracteristique; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.rfu.parametre.TypeCaracteristiqueService; +import io.gmss.infocad.repositories.rfu.parametre.TypeCaracteristiqueRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class TypeCaracteristiqueServiceImpl implements TypeCaracteristiqueService { + + private final TypeCaracteristiqueRepository typeCaracteristiqueRepository; + + public TypeCaracteristiqueServiceImpl(TypeCaracteristiqueRepository typeCaracteristiqueRepository) { + this.typeCaracteristiqueRepository = typeCaracteristiqueRepository; + } + + @Override + public TypeCaracteristique createTypeCaracteristique(TypeCaracteristique typeCaracteristique) throws BadRequestException { + if(typeCaracteristique.getId() != null ){ + throw new BadRequestException("Impossible de créer un nouveau type de caracteristique ayant un id non null."); + } + return typeCaracteristiqueRepository.save(typeCaracteristique); + } + + @Override + public TypeCaracteristique updateTypeCaracteristique(Long id, TypeCaracteristique typeCaracteristique) throws NotFoundException { + if(typeCaracteristique.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour un nouveau type caracteristique ayant un id null."); + } + if(!typeCaracteristiqueRepository.existsById(typeCaracteristique.getId())){ + throw new NotFoundException("Impossible de trouver le type caractéristique spécifié dans notre base de données."); + } + return typeCaracteristiqueRepository.save(typeCaracteristique); + } + + @Override + public void deleteTypeCaracteristique(Long id) throws NotFoundException { + Optional typeCaracteristiqueOptional = typeCaracteristiqueRepository.findById(id); + if(typeCaracteristiqueOptional.isPresent()){ + typeCaracteristiqueRepository.deleteById(typeCaracteristiqueOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver le type caractéristique spécifié dans notre base de données."); + } + } + + @Override + public Page getTypeCaracteristiqueList(Pageable pageable) { + return typeCaracteristiqueRepository.findAll(pageable); + } + + @Override + public List getTypeCaracteristiqueList() { + return typeCaracteristiqueRepository.findAll(); + } + + + @Override + public Optional getTypeCaracteristiqueById(Long id) { + if(typeCaracteristiqueRepository.existsById(id)){ + return typeCaracteristiqueRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver le type caractéristique spécifié dans la base de données."); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/synchronisation/RestaurationServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/synchronisation/RestaurationServiceImpl.java new file mode 100644 index 0000000..9053047 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/synchronisation/RestaurationServiceImpl.java @@ -0,0 +1,136 @@ +package io.gmss.infocad.implementations.synchronisation; + +import io.gmss.infocad.entities.infocad.metier.Tpe; +import io.gmss.infocad.entities.user.User; +import io.gmss.infocad.interfaces.synchronisation.RestaurationService; +import io.gmss.infocad.interfaces.user.UserService; +import io.gmss.infocad.paylaods.response.restoration.*; +import io.gmss.infocad.repositories.infocad.metier.*; +import io.gmss.infocad.repositories.infocad.parametre.PersonneRepository; +import io.gmss.infocad.service.FileStorageService; +import org.springframework.core.io.Resource; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; +@Service +public class RestaurationServiceImpl implements RestaurationService { + public final ActeurConcerneRepository acteurConcerneRepository; + public final EnqueteRepository enqueteRepository; + public final PersonneRepository personneRepository; + public final ParcelleRepository parcelleRepository; + public final MembreGroupeRepository membreGroupeRepository; + public final PieceRepository pieceRepository; + public final UploadRepository uploadRepository; + private final FileStorageService fileStorageService;; + private final TpeRepository tpeRepository; + private final UserService userService; + private Authentication authentication; + + public RestaurationServiceImpl(ActeurConcerneRepository acteurConcerneRepository, EnqueteRepository enqueteRepository, PersonneRepository personneRepository, ParcelleRepository parcelleRepository, MembreGroupeRepository membreGroupeRepository, PieceRepository pieceRepository, UploadRepository uploadRepository, FileStorageService fileStorageService, TpeRepository tpeRepository, UserService userService) { + this.acteurConcerneRepository = acteurConcerneRepository; + this.enqueteRepository = enqueteRepository; + this.personneRepository = personneRepository; + this.parcelleRepository = parcelleRepository; + this.membreGroupeRepository = membreGroupeRepository; + this.pieceRepository = pieceRepository; + this.uploadRepository = uploadRepository; + this.fileStorageService = fileStorageService; + this.tpeRepository = tpeRepository; + this.userService = userService; + } + + + @Override + public List getActeurConcernes(Long terminaleId) { + return acteurConcerneRepository.getActeurConcerneByTerminalId(terminaleId); + } + + @Override + public List getEnquete(Long terminaleId) { + + return enqueteRepository.getEnqueteByTerminalId(terminaleId); + } + + @Override + public List getPersonne(Long terminaleId) { + return personneRepository.getPersonnesByTerminalId(terminaleId); + } + + @Override + public List getParcelle(Long terminaleId) { + + return parcelleRepository.getParcellesByTerminalId(terminaleId); + } + + @Override + public List getPieces(Long terminaleId) { + + return pieceRepository.getPiecesByTerminalId(terminaleId); + } + + @Override + public List getMembreGroupe(Long terminaleId) { + + return membreGroupeRepository.getMembreGroupeByTerminalId(terminaleId ); + } + + @Override + public List getUpload(Long terminaleId) { + List uploadPayLoads = uploadRepository.getUploadByTerminalId(terminaleId); + + List uploadPayLoadsOut=new ArrayList<>(); + + System.out.println(uploadPayLoads.size()); + uploadPayLoads.forEach(uploadPayLoad -> { + io.gmss.infocad.paylaods.request.UploadPayLoad uploadPayLoadLocal=new io.gmss.infocad.paylaods.request.UploadPayLoad(); + uploadPayLoadLocal.setTerminalId(uploadPayLoad.getTerminalId()); + String inputStream= getUploadFile(uploadPayLoad); + uploadPayLoadLocal.setFileBase64(inputStream); + uploadPayLoadLocal.setIdBackend(uploadPayLoad.getIdBackend()); + uploadPayLoadLocal.setPieceId(uploadPayLoad.getPieceId()); + uploadPayLoadLocal.setSynchronise(uploadPayLoad.getSynchronise()); + uploadPayLoadLocal.setMembreGroupeId(uploadPayLoad.getMembreGroupeId()); + uploadPayLoadLocal.setExternalKey(uploadPayLoad.getExternalKey()); + uploadPayLoadLocal.setBlocId(uploadPayLoad.getBlocId()); + uploadPayLoadLocal.setFilePath(uploadPayLoad.getFilePath()); + uploadPayLoadLocal.setEnqueteId(uploadPayLoad.getEnqueteId()); + uploadPayLoadLocal.setMax_numero_acteur_concerne_id(uploadPayLoad.getMax_numero_acteur_concerne_id()); + uploadPayLoadLocal.setMax_numero_piece_id(uploadPayLoad.getMax_numero_piece_id()); + uploadPayLoadLocal.setMax_numero_upload_id(uploadPayLoad.getMax_numero_upload_id()); + uploadPayLoadLocal.setName(uploadPayLoad.getName()); + uploadPayLoadLocal.setObservation(uploadPayLoad.getObservation()); + uploadPayLoadsOut.add(uploadPayLoadLocal); + }); + return uploadPayLoadsOut; + } + + private String getUploadFile(UploadPayLoad uploadPayLoad) { + + try { + Resource resource = fileStorageService.loadFileAsResource(uploadPayLoad.getFileBackendName()); + final var bytes =resource.getInputStream().readAllBytes(); + return Base64.getEncoder().encodeToString(bytes); + } catch (Exception e) { + System.out.println("ERREUR"+ e.getMessage()); + //throw new RuntimeException(e); + return null; + } + } + + + public List getTpeListByCurrentUser() { + try { + authentication = SecurityContextHolder.getContext().getAuthentication(); + String userName = authentication.getName(); + User user = userService.getUserByUsername(userName); + return tpeRepository.getTpeByUserId(user.getId()); + }catch (Exception e){ + return new ArrayList<>(); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/synchronisation/StatistiquesServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/synchronisation/StatistiquesServiceImpl.java new file mode 100644 index 0000000..9ada7ba --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/synchronisation/StatistiquesServiceImpl.java @@ -0,0 +1,65 @@ +package io.gmss.infocad.implementations.synchronisation; + +import io.gmss.infocad.entities.user.User; +import io.gmss.infocad.interfaces.statistique.StatistiquesService; +import io.gmss.infocad.interfaces.user.UserService; +import io.gmss.infocad.paylaods.response.StatEnqueteAdminDecoupageResponse; +import io.gmss.infocad.paylaods.response.StatEnqueteAdminStructureResponse; +import io.gmss.infocad.paylaods.response.StatEnqueteParBlocResponse; +import io.gmss.infocad.paylaods.response.StatEnqueteParStatutResponse; +import io.gmss.infocad.repositories.infocad.metier.EnqueteRepository; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +@Service +public class StatistiquesServiceImpl implements StatistiquesService { + private Authentication authentication; + private final UserService userService; + private final EnqueteRepository enqueteRepository; + public StatistiquesServiceImpl(UserService userService, EnqueteRepository enqueteRepository) { + this.userService = userService; + this.enqueteRepository = enqueteRepository; + } + + @Override + public List getStatEnqueteParStatut() { + String userName=""; + List statEnqueteParStatutResponse=new ArrayList<>(); + try { + authentication = SecurityContextHolder.getContext().getAuthentication(); + userName = authentication.getName(); + User user = userService.getUserByUsername(userName); + statEnqueteParStatutResponse= user.isAdmin()?enqueteRepository.getStatEnqueteParStatut():enqueteRepository.getStatEnqueteParStatut(user.getId()); + return statEnqueteParStatutResponse; + }catch (Exception e){ + return new ArrayList<>(); + } + } + + @Override + public List getStatEnqueteAdminDecoupage(Long idCommune) { + return enqueteRepository.getStatEnqueteParDecoupage(idCommune); + } + + @Override + public List getStatEnqueteAdminStructure() { + return enqueteRepository.getStatEnqueteParStructure(); + } + + @Override + public List getStatBloc() { + String userName=""; + try { + authentication = SecurityContextHolder.getContext().getAuthentication(); + userName = authentication.getName(); + User user = userService.getUserByUsername(userName); + return enqueteRepository.getStatEnqueteParBloc(user.getId()); + }catch (Exception e){ + return new ArrayList<>(); + } + + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/synchronisation/SynchronisationServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/synchronisation/SynchronisationServiceImpl.java new file mode 100644 index 0000000..e5f3d20 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/synchronisation/SynchronisationServiceImpl.java @@ -0,0 +1,1124 @@ +package io.gmss.infocad.implementations.synchronisation; + +import io.gmss.infocad.entities.decoupage.Commune; +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.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.interfaces.synchronisation.SynchronisationService; +import io.gmss.infocad.interfaces.user.UserService; +import io.gmss.infocad.paylaods.request.*; +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.parametre.CaracteristiqueRepository; +import io.gmss.infocad.repositories.rfu.parametre.TypeCaracteristiqueRepository; +import io.gmss.infocad.repositories.user.UserRepository; +import io.gmss.infocad.service.FileStorageService; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +@Service +public class SynchronisationServiceImpl implements SynchronisationService { + private Authentication authentication; + private final UserService userService; + private final DepartementRepository departementRepository; + private final CommuneRepository communeRepository; + private final ArrondissementRepository arrondissementRepository; + private final QuartierRepository quartierRepository; + private final BlocRepository blocRepository; + private final ModeAcquisitionRepository modeAcquisitionRepository; + private final NationaliteRepository nationaliteRepository; + private final NatureDomaineRepository natureDomaineRepository; + private final PositionRepresentationRepository positionRepresentationRepository; + private final ProfessionRepository professionRepository; + private final SituationMatrimonialeRepository situationMatrimonialeRepository; + private final SourceDroitRepository sourceDroitRepository; + private final StructureRepository structureRepository; + private final TypeContestationRepository typeContestationRepository; + private final TypeDomaineRepository typeDomaineRepository; + private final TypePersonneRepository typePersonneRepository; + private final TypePieceRepository typePieceRepository; + private final TypeRepresentationRepository typeRepresentationRepository; + private final MembreGroupeRepository membreGroupeRepository; + private final PersonneRepository personneRepository; + private final EnqueteRepository enqueteRepository; + private final ParcelleRepository parcelleRepository; + private final UserRepository userRepository; + private final SituationGeographiqueRepository situationGeographiqueRepository; + private final PieceRepository pieceRepository; + private final ActeurConcerneRepository acteurConcerneRepository; + private final UploadRepository uploadRepository; + private final FileStorageService fileStorageService; + private final TpeRepository tpeRepository; + + 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) { + this.userService = userService; + this.departementRepository = departementRepository; + this.communeRepository = communeRepository; + this.arrondissementRepository = arrondissementRepository; + this.quartierRepository = quartierRepository; + this.blocRepository = blocRepository; + this.modeAcquisitionRepository = modeAcquisitionRepository; + this.nationaliteRepository = nationaliteRepository; + this.natureDomaineRepository = natureDomaineRepository; + this.positionRepresentationRepository = positionRepresentationRepository; + this.professionRepository = professionRepository; + this.situationMatrimonialeRepository = situationMatrimonialeRepository; + this.sourceDroitRepository = sourceDroitRepository; + this.structureRepository = structureRepository; + this.typeContestationRepository = typeContestationRepository; + this.typeDomaineRepository = typeDomaineRepository; + this.typePersonneRepository = typePersonneRepository; + this.typePieceRepository = typePieceRepository; + this.typeRepresentationRepository = typeRepresentationRepository; + this.membreGroupeRepository = membreGroupeRepository; + this.personneRepository = personneRepository; + this.enqueteRepository = enqueteRepository; + this.parcelleRepository = parcelleRepository; + this.userRepository = userRepository; + this.situationGeographiqueRepository = situationGeographiqueRepository; + this.pieceRepository = pieceRepository; + this.acteurConcerneRepository = acteurConcerneRepository; + this.uploadRepository = uploadRepository; + this.fileStorageService = fileStorageService; + this.tpeRepository = tpeRepository; + this.caracteristiqueRepository = caracteristiqueRepository; + this.typeCaracteristiqueRepository = typeCaracteristiqueRepository; + } + + + @Override + public UserDecoupageSyncResponses getDecoupageAdminUserConnecter() { + authentication = SecurityContextHolder.getContext().getAuthentication(); + String userName = authentication.getName(); + User user = userService.getUserByUsername(userName); + List departementSyncResponses = + departementRepository.getDepartementResponse(); + + List communeSyncResponses = + communeRepository.getCommuneResponse(); + + List arrondissementSyncResponses = + arrondissementRepository.getArrondissementResponse(user.getStructure().getId()); + + List quartierSyncResponses = + quartierRepository.getQuartierResponse(user.getStructure().getId()); + + List blocSyncResponses = + blocRepository.getBlocResponse(user.getStructure().getId()); + + UserDecoupageSyncResponses userDecoupageSyncResponses = new UserDecoupageSyncResponses(); + userDecoupageSyncResponses.setDepartementSyncResponses(departementSyncResponses); + userDecoupageSyncResponses.setCommuneSyncResponses(communeSyncResponses); + userDecoupageSyncResponses.setArrondissementSyncResponses(arrondissementSyncResponses); + userDecoupageSyncResponses.setQuartierSyncResponses(quartierSyncResponses); + userDecoupageSyncResponses.setBlocSyncResponses(blocSyncResponses); + return userDecoupageSyncResponses; + } + + @Override + public ReferencesSyncResponses getReferencesSyncResponses() { + ReferencesSyncResponses referencesSyncResponses = new ReferencesSyncResponses(); + + List typeRepresentationSyncResponses = typeRepresentationRepository.findAll(); + List typePieceSyncResponses = typePieceRepository.findAll(); + List typePersonneSyncResponses = typePersonneRepository.findAll(); + List typeDomaineSyncResponses = typeDomaineRepository.findAll(); + List typeContestationSyncResponses = typeContestationRepository.findAll(); + // List structureSyncResponses = structureRepository.findAll(); + //List sourceDroitResponses = sourceDroitRepository.findAll(); + List sourceDroitSyncResponses = sourceDroitRepository.getSourceDroitSyncResponse(); + List situationMatrimonialeSyncResponses = situationMatrimonialeRepository.findAll(); + List professionSyncResponses = professionRepository.findAll(); + List positionRepresentationSyncResponses = positionRepresentationRepository.findAll(); + List natureDomaineSyncResponses = natureDomaineRepository.getNatureDomaineResponse(); + List nationaliteSyncResponses = nationaliteRepository.findAll(); + List modeAcquisitionSyncResponses = modeAcquisitionRepository.findAll(); + List modeAcquisitionSourceSyncResponses = sourceDroitRepository.getModeAcquitionSourceSyncResponse(); + List situationGeographiques = situationGeographiqueRepository.findAll(); + List typePersonneNatureDomaineSyncResponses = natureDomaineRepository.getTypePersonneNatureDomaineSyncResponse(); + List modesAcquisitionTypePersonneSyncResponses = modeAcquisitionRepository.getModeAcquisitionTypePersonne(); + + List caracteristiquesSyncResponses = caracteristiqueRepository.findAllByActifIsTrue(); + List typeCaracteristiquesSyncResponses = typeCaracteristiqueRepository.findAllByActifIsTrue(); + + referencesSyncResponses.setNatureDomaineSyncResponses(natureDomaineSyncResponses); + referencesSyncResponses.setNationaliteSyncResponses(nationaliteSyncResponses); + referencesSyncResponses.setModeAcquisitionSyncResponses(modeAcquisitionSyncResponses); + referencesSyncResponses.setProfessionSyncResponses(professionSyncResponses); + referencesSyncResponses.setSituationMatrimonialeSyncResponses(situationMatrimonialeSyncResponses); + referencesSyncResponses.setPositionRepresentationSyncResponses(positionRepresentationSyncResponses); + referencesSyncResponses.setSourceDroitSyncResponses(sourceDroitSyncResponses); + //referencesSyncResponses.setStructureSyncResponses(structureSyncResponses); + referencesSyncResponses.setTypeDomaineSyncResponses(typeDomaineSyncResponses); + referencesSyncResponses.setTypePersonneSyncResponses(typePersonneSyncResponses); + referencesSyncResponses.setTypeContestationSyncResponses(typeContestationSyncResponses); + referencesSyncResponses.setTypePieceSyncResponses(typePieceSyncResponses); + referencesSyncResponses.setTypeRepresentationSyncResponses(typeRepresentationSyncResponses); + referencesSyncResponses.setSituationSyncGeographiques(situationGeographiques); + referencesSyncResponses.setModesAcquisitionSourceSyncResponses(modeAcquisitionSourceSyncResponses); + referencesSyncResponses.setTypePersonneNatureDomaineSyncResponses(typePersonneNatureDomaineSyncResponses); + referencesSyncResponses.setModesAcquisitionTypePersonneSyncResponses(modesAcquisitionTypePersonneSyncResponses); + + referencesSyncResponses.setCaracteristiquesSyncResponses(caracteristiquesSyncResponses); + referencesSyncResponses.setTypeCaracteristiquesSyncResponses(typeCaracteristiquesSyncResponses); + + return referencesSyncResponses; + } + + @Override + public SyncEnqueteAllDataResponse syncEnqueteAllData(EnqueteAllDataPayload enqueteAllDataPayload) { + List personnesSyncResp = syncPersonnes(enqueteAllDataPayload.getPersonnes()); + List membreGroupesResp = syncMembreGroupe(enqueteAllDataPayload.getMembreGroupes()); + List parcelleSyncResp = syncParcelle(enqueteAllDataPayload.getParcelle()); + List enqueteSyncResp = syncEnquete(enqueteAllDataPayload.getEnquetes()); + List acteurConcernesSyncResp = syncActeurConcerne(enqueteAllDataPayload.getActeurConcernes()); + List pieceSyncResp = syncPiece(enqueteAllDataPayload.getPieces()); + + SyncEnqueteAllDataResponse syncEnqueteAllDataResponse = new SyncEnqueteAllDataResponse(); + syncEnqueteAllDataResponse.setPersonneSynResponses(personnesSyncResp); + syncEnqueteAllDataResponse.setMembreGroupeSynResponses(membreGroupesResp); + syncEnqueteAllDataResponse.setParcelleSynResponses(parcelleSyncResp); + syncEnqueteAllDataResponse.setEnqueteSynResponses(enqueteSyncResp); + syncEnqueteAllDataResponse.setActeurConcerneSynResponses(acteurConcernesSyncResp); + syncEnqueteAllDataResponse.setPieceSynResponses(pieceSyncResp); + return syncEnqueteAllDataResponse; + } + + @Override + public List syncPersonnes(List personnePayLoads) { + List syncResponses = new ArrayList<>(); + if (personnePayLoads == null) { + SyncResponse syncResponse = new SyncResponse(null, + null, false, "Aucune personne à synchroniser"); + syncResponses.add(syncResponse); + return syncResponses; + } + personnePayLoads.forEach(personnePayLoad -> { + try { + System.out.println(personnePayLoad); + if (personnePayLoad.getTerminalId() == null) { + SyncResponse syncResponse = new SyncResponse(personnePayLoad.getIdBackend(), + personnePayLoad.getExternalKey(), false, "Le terminal n'est pas précisé"); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalTpe = tpeRepository.findById(personnePayLoad.getTerminalId()); + if (optionalTpe.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(personnePayLoad.getIdBackend(), + personnePayLoad.getExternalKey(), false, "Le terminal n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + Personne personne = new Personne(); + SyncResponse syncResponse = new SyncResponse(); + personnePayLoad.setSynchronise(true); + if (personnePayLoad.getIdBackend() != null && personnePayLoad.getIdBackend() != 0 ) { + Optional optionalPersonne = personneRepository.findById(personnePayLoad.getIdBackend()); + if (!optionalPersonne.isPresent()) { + personnePayLoad.setObservation("La clé interne est non valide : Enregistrement inexistant "); + personnePayLoad.setSynchronise(false); + } else { + System.out.println("JE SUIS DANS INSERTION."); + deleteFromPersonne(personnePayLoad.getIdBackend()); + System.out.println("FIN DELETE"); + personne = optionalPersonne.get(); + personne = getPersonneFromPersonnePayLoad(personne, personnePayLoad); + personne = personneRepository.save(personne); + personnePayLoad.setIdBackend(personne.getId()); + } + } else { +// Optional optionalPersonne=personneRepository.findFirstByExternalKey(personnePayLoad.getExternalKey()); +// if(optionalPersonne.isPresent()){ +// personneRepository.delete(optionalPersonne.get()); +// } + personne = getPersonneFromPersonnePayLoad(personne, personnePayLoad); + personne = personneRepository.save(personne); + personnePayLoad.setIdBackend(personne.getId()); + } + syncResponse.setObservation(personnePayLoad.getObservation()); + syncResponse.setExternalKey(personnePayLoad.getExternalKey()); + syncResponse.setSynchronise(personnePayLoad.isSynchronise()); + syncResponse.setIdBackend(personnePayLoad.getIdBackend()); + System.out.println(syncResponse); + syncResponses.add(syncResponse); + } catch (Exception e) { + SyncResponse syncResponse = new SyncResponse(personnePayLoad.getIdBackend(), + personnePayLoad.getExternalKey(), false, "Erreur inattendue"); + syncResponses.add(syncResponse); + } + }); + + return syncResponses; + } + + private void deleteFromPersonne(Long idBackend) { + uploadRepository.deleteUploadByPiece_Personne_Id(idBackend); + uploadRepository.deleteUploadByMembreGroupe_PersonneRepresantee_Id(idBackend); + membreGroupeRepository.deleteMembreGroupeByPersonneRepresantante_Id(idBackend); + pieceRepository.deletePieceByPersonne_Id(idBackend); + } + + private Personne getPersonneFromPersonnePayLoad(Personne personne, PersonnePayLoad personnePayLoad) { + if (personnePayLoad.getCommuneId() != null) { + Optional optionalCommune = communeRepository.findById(personnePayLoad.getCommuneId()); + personne.setCommune(optionalCommune.orElse(null)); + } + if (personnePayLoad.getNationaliteId() != null) { + Optional optionalNationalite = nationaliteRepository.findById(personnePayLoad.getNationaliteId()); + personne.setNationalite(optionalNationalite.orElse(null)); + } + if (personnePayLoad.getProfessionId() != null) { + Optional optionalProfession = professionRepository.findById(personnePayLoad.getProfessionId()); + personne.setProfession(optionalProfession.orElse(null)); + } + if (personnePayLoad.getTypePersonneId() != null) { + Optional optionalTypePersonne = typePersonneRepository.findById(personnePayLoad.getTypePersonneId()); + personne.setTypePersonne(optionalTypePersonne.orElse(null)); + }else{ + Optional optionalTypePersonne=typePersonneRepository.findFirstByCategorie(Categorie.PERSONNE_PHYSIQUE); + personne.setTypePersonne(optionalTypePersonne.orElse(null)); + + } + if (personnePayLoad.getSituationMatrimonialeId() != null) { + Optional optionalSituationMatrimoniale = situationMatrimonialeRepository.findById(personnePayLoad.getSituationMatrimonialeId()); + personne.setSituationMatrimoniale(optionalSituationMatrimoniale.orElse(null)); + } + if (personnePayLoad.getTerminalId() != null) { + Optional optionalTpe = tpeRepository.findById(personnePayLoad.getTerminalId()); + personne.setTerminal(optionalTpe.orElse(null)); + } + personne.setCategorie(personnePayLoad.getCategorie()); + personne.setAdresse(personnePayLoad.getAdresse()); + personne.setIfu(personnePayLoad.getIfu()); + personne.setDateNaissanceOuConsti(personnePayLoad.getDateNaissanceOuConsti()); + personne.setLieuNaissance(personnePayLoad.getLieuNaissance()); + personne.setNomOuSigle(personnePayLoad.getNomOuSigle()); + personne.setNpi(personnePayLoad.getNpi()); + personne.setNumRavip(personnePayLoad.getNumRavip()); + personne.setPrenomOuRaisonSociale(personnePayLoad.getPrenomOuRaisonSociale()); + personne.setTel1(personnePayLoad.getTel1()); + personne.setTel2(personnePayLoad.getTel2()); + personne.setExternalKey(personnePayLoad.getExternalKey()); + + personne.setHaveRepresentant(personnePayLoad.getHaveRepresentant()); + personne.setRavipQuestion(personnePayLoad.getRavipQuestion()); + personne.setAge(personnePayLoad.getAge()); + personne.setNomJeuneFille(personnePayLoad.getNomJeuneFille()); + personne.setNomMere(personnePayLoad.getNomMere()); + personne.setPrenomMere(personnePayLoad.getPrenomMere()); + personne.setIndicatifTel1(personnePayLoad.getIndicatifTel1()); + personne.setIndicatifTel2(personnePayLoad.getIndicatifTel2()); + personne.setSexe(personnePayLoad.getSexe()); + personne.setMustHaveRepresentant(personnePayLoad.getMustHaveRepresentant()); + personne.setFilePath(personnePayLoad.getFilePath()); + personne.setObservation(personnePayLoad.getObservation()); + return personne; + } + + @Override + public List syncMembreGroupe(List membreGroupePayLoads) { + List syncResponses = new ArrayList<>(); + if (membreGroupePayLoads == null) { + SyncResponse syncResponse = new SyncResponse(null, + null, false, "Aucun membre à synchroniser"); + syncResponses.add(syncResponse); + return syncResponses; + } + membreGroupePayLoads.forEach(membreGroupePayLoad -> { + try { + if (membreGroupePayLoad.getTerminalId() == null) { + SyncResponse syncResponse = new SyncResponse(membreGroupePayLoad.getIdBackend(), + membreGroupePayLoad.getExternalKey(), false, "Le terminal n'est pas précisé"); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalTpe = tpeRepository.findById(membreGroupePayLoad.getTerminalId()); + if (optionalTpe.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(membreGroupePayLoad.getIdBackend(), + membreGroupePayLoad.getExternalKey(), false, "Le terminal n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + + if (membreGroupePayLoad.getPersonneRepresentanteId() == null) { + SyncResponse syncResponse = new SyncResponse(membreGroupePayLoad.getIdBackend(), + membreGroupePayLoad.getExternalKey(), false, "La personne représentante n'est pas précisée"); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalPersonne = personneRepository.findFirstByExternalKeyAndTerminal_Id(membreGroupePayLoad.getPersonneRepresentanteId(),membreGroupePayLoad.getTerminalId()); + if (optionalPersonne.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(membreGroupePayLoad.getIdBackend(), + membreGroupePayLoad.getExternalKey(), false, "La personne représentante précisée n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + if (membreGroupePayLoad.getPersonneRepresenteeId() == null) { + SyncResponse syncResponse = new SyncResponse(membreGroupePayLoad.getIdBackend(), + membreGroupePayLoad.getExternalKey(), false, "La personne représentée n'est pas précisée"); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalPersonne = personneRepository.findFirstByExternalKeyAndTerminal_Id(membreGroupePayLoad.getPersonneRepresenteeId(),membreGroupePayLoad.getTerminalId()); + if (optionalPersonne.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(membreGroupePayLoad.getIdBackend(), + membreGroupePayLoad.getExternalKey(), false, "La personne représentée précisée n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + + MembreGroupe membreGroupe = new MembreGroupe(); + membreGroupePayLoad.setSynchronise(true); + if (membreGroupePayLoad.getIdBackend() != null && membreGroupePayLoad.getIdBackend() != 0) { + Optional optionalMembreGroupe = membreGroupeRepository.findById(membreGroupePayLoad.getIdBackend()); + if (!optionalMembreGroupe.isPresent()) { + membreGroupePayLoad.setObservation("La clé interne est non valide : Enregistrement inexistant "); + membreGroupePayLoad.setSynchronise(false); + } else { + membreGroupe = optionalMembreGroupe.get(); + membreGroupe = getMembreGroupeFromMembreGroupePayLoad(membreGroupe, membreGroupePayLoad); + if (membreGroupe != null) { + membreGroupe = membreGroupeRepository.save(membreGroupe); + membreGroupePayLoad.setIdBackend(membreGroupe.getId()); + } + } + } else { + membreGroupe = getMembreGroupeFromMembreGroupePayLoad(membreGroupe, membreGroupePayLoad); + membreGroupe = membreGroupeRepository.save(membreGroupe); + membreGroupePayLoad.setIdBackend(membreGroupe.getId()); + + } + SyncResponse syncResponse = new SyncResponse(); + syncResponse.setObservation(membreGroupePayLoad.getObservation()); + syncResponse.setExternalKey(membreGroupePayLoad.getExternalKey()); + syncResponse.setSynchronise(membreGroupePayLoad.isSynchronise()); + syncResponse.setIdBackend(membreGroupePayLoad.getIdBackend()); + syncResponses.add(syncResponse); + } catch (Exception e) { + SyncResponse syncResponse = new SyncResponse(membreGroupePayLoad.getIdBackend(), + membreGroupePayLoad.getExternalKey(), false, "Erreur inattendue"); + syncResponses.add(syncResponse); + } + }); + return syncResponses; + } + + + private MembreGroupe getMembreGroupeFromMembreGroupePayLoad(MembreGroupe membreGroupe, MembreGroupePayLoad membreGroupePayLoad) { + if (membreGroupePayLoad.getPersonneRepresentanteId() != null) { + Optional optionalRepresentant = personneRepository.findFirstByExternalKeyAndTerminal_Id(membreGroupePayLoad.getPersonneRepresentanteId(),membreGroupePayLoad.getTerminalId()); + membreGroupe.setPersonneRepresantante(optionalRepresentant.orElse(null)); + } + if (membreGroupePayLoad.getPersonneRepresenteeId() != null) { + Optional optionalRepresente = personneRepository.findFirstByExternalKeyAndTerminal_Id(membreGroupePayLoad.getPersonneRepresenteeId(),membreGroupePayLoad.getTerminalId()); + membreGroupe.setPersonneRepresantee(optionalRepresente.orElse(null)); + } + + if (membreGroupePayLoad.getPositionRepresentationId() != null) { + Optional optionalPositionRepresentation = positionRepresentationRepository.findById(membreGroupePayLoad.getPositionRepresentationId()); + membreGroupe.setPositionRepresentation(optionalPositionRepresentation.orElse(null)); + } + if (membreGroupePayLoad.getTerminalId() != null) { + Optional optionalTpe = tpeRepository.findById(membreGroupePayLoad.getTerminalId()); + membreGroupe.setTerminal(optionalTpe.orElse(null)); + } + + if (membreGroupePayLoad.getTypeRepresentationId() != null) { + Optional optionalTypeRepresentation = typeRepresentationRepository.findById(membreGroupePayLoad.getTypeRepresentationId()); + membreGroupe.setExternalKey(membreGroupePayLoad.getExternalKey()); + + } + membreGroupe.setMax_numero_acteur_concerne_id(membreGroupePayLoad.getMax_numero_acteur_concerne_id()); + membreGroupe.setMax_numero_piece_id(membreGroupePayLoad.getMax_numero_piece_id()); + membreGroupe.setEnqueteId(membreGroupePayLoad.getEnqueteId()); + membreGroupe.setBlocId(membreGroupePayLoad.getBlocId()); + membreGroupe.setObservation(membreGroupePayLoad.getObservation()); + + return membreGroupe; + } + + @Override + public List syncEnquete(List enquetePayLoads) { + List syncResponses = new ArrayList<>(); + if (enquetePayLoads == null) { + SyncResponse syncResponse = new SyncResponse(null, + null, false, "Aucune enquête à synchroniser"); + syncResponses.add(syncResponse); + return syncResponses; + } + enquetePayLoads.forEach(enquetePayLoad -> { + System.out.println("enquetePayLoad = " + enquetePayLoad); + try { + if (enquetePayLoad.getTerminalId() == null) { + SyncResponse syncResponse = new SyncResponse(enquetePayLoad.getIdBackend(), + enquetePayLoad.getExternalKey(), false, "Le terminal n'est pas précisé"); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalTpe = tpeRepository.findById(enquetePayLoad.getTerminalId()); + if (optionalTpe.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(enquetePayLoad.getIdBackend(), + enquetePayLoad.getExternalKey(), false, "Le terminal n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + + if (enquetePayLoad.getUserId() == null) { + SyncResponse syncResponse = new SyncResponse(enquetePayLoad.getIdBackend(), + enquetePayLoad.getExternalKey(), false, "L'enquêteur n'est pas précisée"); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalUser = userRepository.findById(enquetePayLoad.getUserId()); + if (optionalUser.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(enquetePayLoad.getIdBackend(), + enquetePayLoad.getExternalKey(), false, "L'enquêteur précisé n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + if (enquetePayLoad.getParcelleId() == null) { + SyncResponse syncResponse = new SyncResponse(enquetePayLoad.getIdBackend(), + enquetePayLoad.getExternalKey(), false, "La parcelle n'est pas précisée"); + syncResponses.add(syncResponse); + return; + } else { + 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"); + syncResponses.add(syncResponse); + return; + } + } + if (enquetePayLoad.getBlocId() == null) { + SyncResponse syncResponse = new SyncResponse(enquetePayLoad.getIdBackend(), + enquetePayLoad.getExternalKey(), false, "Le bloc n'est pas précisé"); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalBloc = blocRepository.findById(enquetePayLoad.getBlocId()); + if (optionalBloc.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(enquetePayLoad.getIdBackend(), + enquetePayLoad.getExternalKey(), false, "Le bloc précisé n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + Enquete enquete = new Enquete(); + enquetePayLoad.setSynchronise(true); + if (enquetePayLoad.getIdBackend() != null && enquetePayLoad.getIdBackend() != 0) { + Optional optionalEnquete = enqueteRepository.findById(enquetePayLoad.getIdBackend()); + if (!optionalEnquete.isPresent()) { + 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() ); + enquete = optionalEnquete.get(); + enquete = getEnqueteFromEnquetePayLoad(enquete, enquetePayLoad); + enquete = enqueteRepository.save(enquete); + enquetePayLoad.setIdBackend(enquete.getId()); + } + } else { + enquete = getEnqueteFromEnquetePayLoad(enquete, enquetePayLoad); + enquete = enqueteRepository.save(enquete); + enquetePayLoad.setIdBackend(enquete.getId()); + } + SyncResponse syncResponse = new SyncResponse(); + syncResponse.setObservation(enquetePayLoad.getObservation()); + syncResponse.setExternalKey(enquetePayLoad.getExternalKey()); + syncResponse.setSynchronise(enquetePayLoad.isSynchronise()); + syncResponse.setIdBackend(enquetePayLoad.getIdBackend()); + syncResponses.add(syncResponse); + } catch (Exception e) { + SyncResponse syncResponse = new SyncResponse(enquetePayLoad.getIdBackend(), + enquetePayLoad.getExternalKey(), false, "Erreur inattendue"); + syncResponses.add(syncResponse); + } + }); + + return syncResponses; + } + + private void deleteFromEnquete(Long idBackend) { + try{ + uploadRepository.deleteUploadByEnqueteID(idBackend); + }catch (Exception e){ + + } + try{ + pieceRepository.deletePieceByEnqueteId(idBackend); + }catch (Exception e){ + + } + try{ + acteurConcerneRepository.deleteActeurConcerneByEnquete(idBackend); + }catch (Exception e){ + + } + } + + private Enquete getEnqueteFromEnquetePayLoad(Enquete enquete, EnquetePayLoad enquetePayLoad) { + + if (enquetePayLoad.getUserId() != null) { + Optional optionalUser = userRepository.findById(enquetePayLoad.getUserId()); + enquete.setUser(optionalUser.orElse(null)); + } + + if (enquetePayLoad.getParcelleId() != null) { + Optional optionalParcelle = parcelleRepository.findFirstByExternalKeyAndTerminal_Id(enquetePayLoad.getParcelleId(), enquetePayLoad.getTerminalId()); + enquete.setParcelle(optionalParcelle.orElse(null)); + } + if (enquetePayLoad.getBlocId() != null) { + Optional optionalBloc = blocRepository.findById(enquetePayLoad.getBlocId()); + enquete.setBloc(optionalBloc.orElse(null)); + } + + if (enquetePayLoad.getTerminalId() != null) { + Optional optionalTpe = tpeRepository.findById(enquetePayLoad.getTerminalId()); + enquete.setTerminal(optionalTpe.orElse(null)); + } + + enquete.setStatusEnquete(StatusEnquete.SYNCHRONISE); + enquete.setLitige(enquetePayLoad.isLitige()); + enquete.setObservationParticuliere(enquetePayLoad.getObservationParticuliere()); + enquete.setDateEnquete(enquetePayLoad.getDateEnquete()); + enquete.setDateFinalisation(enquetePayLoad.getDateFinalisation()); + enquete.setExternalKey(enquetePayLoad.getExternalKey()); + + enquete.setQuartierId(enquetePayLoad.getQuartierId()); + enquete.setArrondissementId(enquetePayLoad.getArrondissementId()); + enquete.setCommuneId(enquetePayLoad.getCommuneId()); + enquete.setCommuneId(enquetePayLoad.getCommuneId()); + enquete.setDepartementId(enquetePayLoad.getDepartementId()); + enquete.setNumeroProvisoir(enquetePayLoad.getNumeroProvisoir()); + enquete.setCodeParcelle(enquetePayLoad.getCodeParcelle()); + enquete.setNomProprietaireParcelle(enquetePayLoad.getNomProprietaireParcelle()); + enquete.setCodeEquipe(enquetePayLoad.getCodeEquipe()); + enquete.setNumeroTitreFoncier(enquetePayLoad.getNumeroTitreFoncier()); + return enquete; + } + + @Override + public List syncParcelle(List parcellePayLoads) { + List syncResponses = new ArrayList<>(); + if (parcellePayLoads == null) { + SyncResponse syncResponse = new SyncResponse(null, + null, false, "Aucune parcelle à synchroniser"); + syncResponses.add(syncResponse); + return syncResponses; + } + + parcellePayLoads.forEach(parcellePayLoad -> { + try { + if (parcellePayLoad.getTerminalId() == null) { + SyncResponse syncResponse = new SyncResponse(parcellePayLoad.getIdBackend(), + parcellePayLoad.getExternalKey(), false, "Le terminal n'est pas précisé"); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalTpe = tpeRepository.findById(parcellePayLoad.getTerminalId()); + if (optionalTpe.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(parcellePayLoad.getIdBackend(), + parcellePayLoad.getExternalKey(), false, "Le terminal n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + Parcelle parcelle = new Parcelle(); + parcellePayLoad.setSynchronise(true); + if (parcellePayLoad.getIdBackend() != null && parcellePayLoad.getIdBackend() != 0) { + Optional optionalParcelle = parcelleRepository.findById(parcellePayLoad.getIdBackend()); + if (!optionalParcelle.isPresent()) { + parcellePayLoad.setObservation("La clé interne est non valide : Enregistrement inexistant "); + parcellePayLoad.setSynchronise(false); + } else { + parcelle = optionalParcelle.get(); + parcelle = getParcelleFromParcellePayLoad(parcelle, parcellePayLoad); + parcelle = parcelleRepository.save(parcelle); + parcellePayLoad.setIdBackend(parcelle.getId()); + } + } else { + parcelle = getParcelleFromParcellePayLoad(parcelle, parcellePayLoad); + parcelle = parcelleRepository.save(parcelle); + parcellePayLoad.setIdBackend(parcelle.getId()); + } + SyncResponse syncResponse = new SyncResponse(); + syncResponse.setObservation(parcellePayLoad.getObservation()); + syncResponse.setExternalKey(parcellePayLoad.getExternalKey()); + syncResponse.setSynchronise(parcellePayLoad.isSynchronise()); + syncResponse.setIdBackend(parcellePayLoad.getIdBackend()); + syncResponses.add(syncResponse); + } catch (Exception e) { + SyncResponse syncResponse = new SyncResponse(parcellePayLoad.getIdBackend(), + parcellePayLoad.getExternalKey(), false, "Erreur inattendue"); + syncResponses.add(syncResponse); + } + }); + return syncResponses; + } + + + private Parcelle getParcelleFromParcellePayLoad(Parcelle parcelle, ParcellePayLoad parcellePayLoad) { +// if (parcellePayLoad.getSituationGeographiqueId() != null) { +// Optional optionalSituationGeographique = situationGeographiqueRepository.findById(parcellePayLoad.getSituationGeographiqueId()); +// parcelle.setSituationGeographique(optionalSituationGeographique.orElse(null)); +// } + if (parcellePayLoad.getNatureDomaineId() != null) { + Optional optionalNatureDomaine = natureDomaineRepository.findById(parcellePayLoad.getNatureDomaineId()); + parcelle.setNatureDomaine(optionalNatureDomaine.orElse(null)); + } + if (parcellePayLoad.getQuartierId() != null) { + Optional optionalQuartier = quartierRepository.findById(parcellePayLoad.getQuartierId()); + parcelle.setQuartier(optionalQuartier.orElse(null)); + } + if (parcellePayLoad.getTerminalId() != null) { + Optional optionalTpe = tpeRepository.findById(parcellePayLoad.getTerminalId()); + parcelle.setTerminal(optionalTpe.orElse(null)); + } + parcelle.setExternalKey(parcellePayLoad.getExternalKey()); + parcelle.setNupProvisoire(parcellePayLoad.getNupProvisoire()); + parcelle.setQ(parcellePayLoad.getQ()); + parcelle.setI(parcellePayLoad.getI()); + parcelle.setP(parcellePayLoad.getP()); + parcelle.setNup(parcellePayLoad.getNup()); + parcelle.setLongitude(parcellePayLoad.getLongitude()); + parcelle.setLatitude(parcellePayLoad.getLatitude()); + parcelle.setNumTitreFoncier(parcellePayLoad.getNumTitreFoncier()); + parcelle.setTypeDomaineId(parcellePayLoad.getTypeDomaineId()); + parcelle.setNumeroProvisoire(parcellePayLoad.getNumeroProvisoire()); + parcelle.setBlocId(parcellePayLoad.getBlocId()); + parcelle.setObservation(parcellePayLoad.getObservation()); + parcelle.setSituationGeographique(parcellePayLoad.getSituationGeographique()); + return parcelle; + } + + + @Override + public List syncPiece(List piecePayLoads) { + List syncResponses = new ArrayList<>(); + if (piecePayLoads == null) { + SyncResponse syncResponse = new SyncResponse(null, + null, false, "Aucune pièce à synchroniser"); + syncResponses.add(syncResponse); + return syncResponses; + } + piecePayLoads.forEach(piecePayLoad -> { + try { + if (piecePayLoad.getTerminalId() == null) { + SyncResponse syncResponse = new SyncResponse(piecePayLoad.getIdBackend(), + piecePayLoad.getExternalKey(), false, "Le terminal n'est pas précisé"); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalTpe = tpeRepository.findById(piecePayLoad.getTerminalId()); + if (optionalTpe.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(piecePayLoad.getIdBackend(), + piecePayLoad.getExternalKey(), false, "Le terminal n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + + if (piecePayLoad.getPersonneId() == null && piecePayLoad.getActeurConcerneId() == null) { + SyncResponse syncResponse = new SyncResponse(piecePayLoad.getIdBackend(), + piecePayLoad.getExternalKey(), false, "La personne ou l'acteur concerné n'est pas précisé"); + syncResponses.add(syncResponse); + return; + } else { + if (piecePayLoad.getPersonneId() != null) { + Optional optionalPersonne = personneRepository.findFirstByExternalKeyAndTerminal_Id(piecePayLoad.getPersonneId(), piecePayLoad.getTerminalId()); + if (optionalPersonne.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(piecePayLoad.getIdBackend(), + piecePayLoad.getExternalKey(), false, "La personne précisée n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + if (piecePayLoad.getActeurConcerneId() != null) { + Optional optionalActeurConcerne = acteurConcerneRepository.findFirstByExternalKeyAndTerminal_Id(piecePayLoad.getActeurConcerneId(),piecePayLoad.getTerminalId()); + if (optionalActeurConcerne.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(piecePayLoad.getIdBackend(), + piecePayLoad.getExternalKey(), false, "L'acteur concerné précisé n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + } + Piece piece = new Piece(); + piecePayLoad.setSynchronise(true); + if (piecePayLoad.getIdBackend() != null && piecePayLoad.getIdBackend() != 0) { + Optional optionalPiece = pieceRepository.findById(piecePayLoad.getIdBackend()); + if (!optionalPiece.isPresent()) { + piecePayLoad.setObservation("La clé interne est non valide : Enregistrement inexistant "); + piecePayLoad.setSynchronise(false); + } else { + piece = optionalPiece.get(); + piece = getPieceFromPiecePayLoad(piece, piecePayLoad); + piece = pieceRepository.save(piece); + piecePayLoad.setIdBackend(piece.getId()); + } + } else { + piece = getPieceFromPiecePayLoad(piece, piecePayLoad); + piece = pieceRepository.save(piece); + piecePayLoad.setIdBackend(piece.getId()); + } + SyncResponse syncResponse = new SyncResponse(); + syncResponse.setObservation(piecePayLoad.getObservation()); + syncResponse.setExternalKey(piecePayLoad.getExternalKey()); + syncResponse.setSynchronise(piecePayLoad.isSynchronise()); + syncResponse.setIdBackend(piecePayLoad.getIdBackend()); + syncResponses.add(syncResponse); + } catch (Exception e) { + SyncResponse syncResponse = new SyncResponse(piecePayLoad.getIdBackend(), + piecePayLoad.getExternalKey(), false, "Erreur inattendue"); + syncResponses.add(syncResponse); + } + }); + return syncResponses; + } + + + private Piece getPieceFromPiecePayLoad(Piece piece, PiecePayLoad piecePayLoad) { + if (piecePayLoad.getTypePieceId() != null) { + Optional optionalTypePiece = typePieceRepository.findById(piecePayLoad.getTypePieceId()); + piece.setTypePiece(optionalTypePiece.orElse(null)); + } else { + piece.setTypePiece(null); + } + if (piecePayLoad.getPersonneId() != null) { + Optional optionalPersonne = personneRepository.findFirstByExternalKeyAndTerminal_Id(piecePayLoad.getPersonneId(), piecePayLoad.getTerminalId()); + piece.setPersonne(optionalPersonne.orElse(null)); + } else { + piece.setPersonne(null); + } + if (piecePayLoad.getActeurConcerneId() != null) { + Optional optionalActeurConcerne = acteurConcerneRepository.findFirstByExternalKeyAndTerminal_Id(piecePayLoad.getActeurConcerneId(), piecePayLoad.getTerminalId()); + piece.setActeurConcerne(optionalActeurConcerne.orElse(null)); + } else { + piece.setActeurConcerne(null); + } + if (piecePayLoad.getModeAcquisitionId() != null) { + Optional optionalModeAcquisition = modeAcquisitionRepository.findById(piecePayLoad.getModeAcquisitionId()); + piece.setModeAcquisition(optionalModeAcquisition.orElse(null)); + } else { + piece.setModeAcquisition(null); + } + if (piecePayLoad.getSourceDroitId() != null) { + Optional optionalSourceDroit = sourceDroitRepository.findById(piecePayLoad.getSourceDroitId()); + piece.setSourceDroit(optionalSourceDroit.orElse(null)); + } else { + piece.setSourceDroit(null); + } + if (piecePayLoad.getTerminalId() != null) { + Optional optionalTpe = tpeRepository.findById(piecePayLoad.getTerminalId()); + piece.setTerminal(optionalTpe.orElse(null)); + } + piece.setNumeroPiece(piecePayLoad.getNumeroPiece()); + piece.setUrl(piecePayLoad.getUrl()); + piece.setExternalKey(piecePayLoad.getExternalKey()); + piece.setDateExpiration(piecePayLoad.getDateExpiration()); + piece.setMax_numero_piece_id(piecePayLoad.getMax_numero_piece_id()); + piece.setMax_numero_acteur_concerne_id(piecePayLoad.getMax_numero_acteur_concerne_id()); + piece.setEnqueteId(piecePayLoad.getEnqueteId()); + piece.setBlocId(piecePayLoad.getBlocId()); + return piece; + } + + @Override + public List syncActeurConcerne(List acteurConcernePayLoads) { + List syncResponses = new ArrayList<>(); + if (acteurConcernePayLoads == null) { + SyncResponse syncResponse = new SyncResponse(null, + null, false, "Aucun acteur concerné à synchroniser"); + syncResponses.add(syncResponse); + return syncResponses; + } + acteurConcernePayLoads.forEach(acteurConcernePayLoad -> { + try { + if (acteurConcernePayLoad.getTerminalId() == null) { + SyncResponse syncResponse = new SyncResponse(acteurConcernePayLoad.getIdBackend(), + acteurConcernePayLoad.getExternalKey(), false, "Le terminal n'est pas précisé"); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalTpe = tpeRepository.findById(acteurConcernePayLoad.getTerminalId()); + if (optionalTpe.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(acteurConcernePayLoad.getIdBackend(), + acteurConcernePayLoad.getExternalKey(), false, "Le terminal n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + if (acteurConcernePayLoad.getPersonneId() == null) { + SyncResponse syncResponse = new SyncResponse(acteurConcernePayLoad.getIdBackend(), + acteurConcernePayLoad.getExternalKey(), false, "La personne n'est pas précisée"); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalPersonne = personneRepository.findFirstByExternalKeyAndTerminal_Id(acteurConcernePayLoad.getPersonneId(), acteurConcernePayLoad.getTerminalId()); + if (optionalPersonne.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(acteurConcernePayLoad.getIdBackend(), + acteurConcernePayLoad.getExternalKey(), false, "La personne précisée n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + if (acteurConcernePayLoad.getEnqueteId() == null) { + SyncResponse syncResponse = new SyncResponse(acteurConcernePayLoad.getIdBackend(), + acteurConcernePayLoad.getExternalKey(), false, "L'enquête n'est pas précisée"); + syncResponses.add(syncResponse); + return; + } else { + Optional optionalEnquete = enqueteRepository.findFirstByExternalKeyAndTerminal_Id(acteurConcernePayLoad.getEnqueteId(), acteurConcernePayLoad.getTerminalId()); + if (optionalEnquete.isEmpty()) { + SyncResponse syncResponse = new SyncResponse(acteurConcernePayLoad.getIdBackend(), + acteurConcernePayLoad.getExternalKey(), false, "L'enquête précisée n'existe pas"); + syncResponses.add(syncResponse); + return; + } + } + ActeurConcerne acteurConcerne = new ActeurConcerne(); + acteurConcernePayLoad.setSynchronise(true); + if (acteurConcernePayLoad.getIdBackend() != null && acteurConcernePayLoad.getIdBackend() != 0) { + Optional optionalActeurConcerne = acteurConcerneRepository.findById(acteurConcernePayLoad.getIdBackend()); + if (!optionalActeurConcerne.isPresent()) { + acteurConcernePayLoad.setObservation("La clé interne est non valide : Enregistrement inexistant "); + acteurConcernePayLoad.setSynchronise(false); + } else { + acteurConcerne = optionalActeurConcerne.get(); + acteurConcerne = getActeurConcerneFromActeurConcernePayLoad(acteurConcerne, acteurConcernePayLoad); + acteurConcerne = acteurConcerneRepository.save(acteurConcerne); + acteurConcernePayLoad.setIdBackend(acteurConcerne.getId()); + } + } else { + acteurConcerne = getActeurConcerneFromActeurConcernePayLoad(acteurConcerne, acteurConcernePayLoad); + acteurConcerne = acteurConcerneRepository.save(acteurConcerne); + acteurConcernePayLoad.setIdBackend(acteurConcerne.getId()); + } + SyncResponse syncResponse = new SyncResponse(); + syncResponse.setObservation(acteurConcernePayLoad.getObservation()); + syncResponse.setExternalKey(acteurConcernePayLoad.getExternalKey()); + syncResponse.setSynchronise(acteurConcernePayLoad.isSynchronise()); + syncResponse.setIdBackend(acteurConcernePayLoad.getIdBackend()); + syncResponses.add(syncResponse); + } catch (Exception e) { + SyncResponse syncResponse = new SyncResponse(acteurConcernePayLoad.getIdBackend(), + acteurConcernePayLoad.getExternalKey(), false, "Erreur inattendue"); + syncResponses.add(syncResponse); + } + }); + return syncResponses; + } + + + private ActeurConcerne getActeurConcerneFromActeurConcernePayLoad(ActeurConcerne acteurConcerne, ActeurConcernePayLoad acteurConcernePayLoad) { + + if (acteurConcernePayLoad.getEnqueteId() != null) { + Optional optionalEnquete = enqueteRepository.findFirstByExternalKeyAndTerminal_Id(acteurConcernePayLoad.getEnqueteId(), acteurConcernePayLoad.getTerminalId()); + acteurConcerne.setEnquete(optionalEnquete.orElse(null)); + } + if (acteurConcernePayLoad.getEnqueteId() != null) { + Optional optionalPersonne = personneRepository.findFirstByExternalKeyAndTerminal_Id(acteurConcernePayLoad.getPersonneId(), acteurConcernePayLoad.getTerminalId()); + acteurConcerne.setPersonne(optionalPersonne.orElse(null)); + } + if (acteurConcernePayLoad.getPositionRepresentationId() != null) { + Optional optionalPositionRepresentation = positionRepresentationRepository.findById(acteurConcernePayLoad.getPositionRepresentationId()); + acteurConcerne.setPositionRepresentation(optionalPositionRepresentation.orElse(null)); + } + if (acteurConcernePayLoad.getTypeContestationId() != null) { + Optional optionalTypeContestation = typeContestationRepository.findById(acteurConcernePayLoad.getTypeContestationId()); + acteurConcerne.setTypeContestation(optionalTypeContestation.orElse(null)); + } + if (acteurConcernePayLoad.getTypeRepresentationId() != null) { + Optional optionalTypeRepresentation = typeRepresentationRepository.findById(acteurConcernePayLoad.getTypeRepresentationId()); + acteurConcerne.setTypeRepresentation(optionalTypeRepresentation.orElse(null)); + } + if (acteurConcernePayLoad.getTerminalId() != null) { + Optional optionalTpe = tpeRepository.findById(acteurConcernePayLoad.getTerminalId()); + acteurConcerne.setTerminal(optionalTpe.orElse(null)); + } + acteurConcerne.setPart(acteurConcernePayLoad.getPart()); + acteurConcerne.setTypeDroit(acteurConcernePayLoad.getTypeDroit()); + acteurConcerne.setExternalKey(acteurConcernePayLoad.getExternalKey()); + acteurConcerne.setRoleActeur(acteurConcernePayLoad.getRoleActeur()); + acteurConcerne.setBlocId(acteurConcernePayLoad.getBlocId()); + acteurConcerne.setHaveDeclarant(acteurConcernePayLoad.getHaveDeclarant()); + acteurConcerne.setMax_numero_acteur_concerne_id(acteurConcernePayLoad.getMax_numero_acteur_concerne_id()); + return acteurConcerne; + } + + @Override + public SyncResponse syncFiles(MultipartFile file, + Long idBackend, + Long externalKey, + Long pieceId, + Long membreGroupeId, + Long terminalId, + String name, + String filePath, + Long max_numero_piece_id, + Long max_numero_upload_id, + Long max_numero_acteur_concerne_id, + Long enqueteId) { + UploadPayLoad uploadPayLoad = new UploadPayLoad(); + uploadPayLoad.setSynchronise(false); + uploadPayLoad.setFile(file); + uploadPayLoad.setExternalKey(externalKey); + uploadPayLoad.setPieceId(pieceId); + uploadPayLoad.setIdBackend(idBackend); + uploadPayLoad.setMembreGroupeId(membreGroupeId); + uploadPayLoad.setTerminalId(terminalId); + uploadPayLoad.setName(name); + uploadPayLoad.setFilePath(filePath); + uploadPayLoad.setMax_numero_upload_id(max_numero_upload_id); + uploadPayLoad.setMax_numero_piece_id(max_numero_piece_id); + uploadPayLoad.setMax_numero_acteur_concerne_id(max_numero_acteur_concerne_id); + uploadPayLoad.setEnqueteId(enqueteId); + try { + Upload upload = new Upload(); + SyncResponse syncResponse = new SyncResponse(); + if (terminalId == null) { + syncResponse = new SyncResponse(idBackend, + externalKey, false, "Le terminal n'est pas précisé"); + return syncResponse; + } else { + Optional optionalTpe = tpeRepository.findById(terminalId); + if (optionalTpe.isEmpty()) { + syncResponse = new SyncResponse(idBackend, + externalKey, false, "Le terminal n'existe pas"); + return syncResponse; + } + } + + if (uploadPayLoad.getPieceId() == null && uploadPayLoad.getMembreGroupeId() == null) { + syncResponse = new SyncResponse(uploadPayLoad.getIdBackend(), + uploadPayLoad.getExternalKey(), false, "La pièce ou le groupe concernée n'est pas précisé"); + return syncResponse; + } + Optional optionalPiece = null; + if (uploadPayLoad.getPieceId() != null) { + optionalPiece = pieceRepository.findFirstByExternalKeyAndTerminal_Id(uploadPayLoad.getPieceId(),terminalId); + } + Optional optionalMembreGroupe = null; + if (uploadPayLoad.getMembreGroupeId() != null) { + optionalMembreGroupe = membreGroupeRepository.findFirstByExternalKeyAndTerminal_Id(uploadPayLoad.getMembreGroupeId(),terminalId); + } + if((optionalMembreGroupe==null || optionalMembreGroupe.isEmpty()) && (optionalPiece==null || optionalPiece.isEmpty())) { + syncResponse = new SyncResponse(uploadPayLoad.getIdBackend(), + uploadPayLoad.getExternalKey(), false, "La pièce ou le groupe précisée n'existe pas"); + return syncResponse; + } + uploadPayLoad.setSynchronise(true); + if (uploadPayLoad.getIdBackend() != null && uploadPayLoad.getIdBackend() != 0) { + Optional optionalUpload = uploadRepository.findById(uploadPayLoad.getIdBackend()); + if (!optionalUpload.isPresent()) { + uploadPayLoad.setObservation("La clé interne est non valide : Enregistrement inexistant "); + uploadPayLoad.setSynchronise(false); + } else { + upload = optionalUpload.get(); + upload = getUploadFromUplaodPayLoad(upload, uploadPayLoad); + upload = uploadRepository.save(upload); + uploadPayLoad.setIdBackend(upload.getId()); + } + } else { + upload = getUploadFromUplaodPayLoad(upload, uploadPayLoad); + upload = uploadRepository.save(upload); + uploadPayLoad.setIdBackend(upload.getId()); + } + syncResponse.setObservation(uploadPayLoad.getObservation()); + syncResponse.setExternalKey(uploadPayLoad.getExternalKey()); + syncResponse.setSynchronise(uploadPayLoad.isSynchronise()); + syncResponse.setIdBackend(uploadPayLoad.getIdBackend()); + return syncResponse; + } catch (Exception e) { + e.printStackTrace(); + SyncResponse syncResponse = new SyncResponse(uploadPayLoad.getIdBackend(), + uploadPayLoad.getExternalKey(), false, "Erreur inattendue"); + return syncResponse; + } + } + + @Override + public List syncEnqueteFromMobile(List idEnquete) { + List syncResponses= new ArrayList<>(); + if (idEnquete==null){ + return null; + }else{ + idEnquete.forEach(aLong -> { + Optional optionalEnquete = enqueteRepository.findById(aLong); + if(optionalEnquete.isPresent()){ + optionalEnquete.get().setSynchronise(true); + Enquete enquete= enqueteRepository.save(optionalEnquete.get()); + SyncResponse syncResponse=new SyncResponse(); + syncResponse.setSynchronise(enquete.isSynchronise()); + syncResponse.setExternalKey(enquete.getExternalKey()); + syncResponse.setIdBackend(enquete.getId()); + syncResponses.add(syncResponse); + } + }); + return syncResponses; + } + } + + private Upload getUploadFromUplaodPayLoad(Upload upload, UploadPayLoad uploadPayLoad) { + if (uploadPayLoad.getTerminalId() != null) { + Optional optionalTpe = tpeRepository.findById(uploadPayLoad.getTerminalId()); + upload.setTerminal(optionalTpe.orElse(null)); + } + if (uploadPayLoad.getPieceId() != null) { + Optional optionalPiece = pieceRepository.findFirstByExternalKeyAndTerminal_Id(uploadPayLoad.getPieceId(), uploadPayLoad.getTerminalId()); + upload.setPiece(optionalPiece.orElse(null)); + } + if (uploadPayLoad.getMembreGroupeId() != null) { + Optional optionalMembreGroupe = membreGroupeRepository.findFirstByExternalKeyAndTerminal_Id(uploadPayLoad.getMembreGroupeId(), uploadPayLoad.getTerminalId()); + upload.setMembreGroupe(optionalMembreGroupe.orElse(null)); + } + if (uploadPayLoad.getIdBackend() != null && uploadPayLoad.getIdBackend() != 0) { + try { + fileStorageService.deleteFile(upload.getFileName()); + } catch (IOException e) { + //throw new RuntimeException(e); + } + } + String fileName = fileStorageService.storeFile(uploadPayLoad.getFile()); + upload.setExternalKey(uploadPayLoad.getExternalKey()); + upload.setFileName(fileName); + upload.setMimeType(uploadPayLoad.getFile().getContentType()); + upload.setSize(uploadPayLoad.getFile().getSize()); + upload.setOriginalFileName(uploadPayLoad.getFile().getOriginalFilename()); + + upload.setName(uploadPayLoad.getName()); + upload.setFilePath(uploadPayLoad.getFilePath()); + upload.setMax_numero_upload_id(uploadPayLoad.getMax_numero_upload_id()); + upload.setMax_numero_piece_id(uploadPayLoad.getMax_numero_piece_id()); + upload.setMax_numero_acteur_concerne_id(uploadPayLoad.getMax_numero_acteur_concerne_id()); + upload.setEnqueteId(uploadPayLoad.getEnqueteId()); + upload.setBlocId(uploadPayLoad.getBlocId()); + return upload; + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/user/DemandeReinitialisationMPServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/user/DemandeReinitialisationMPServiceImpl.java new file mode 100644 index 0000000..e0ce908 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/user/DemandeReinitialisationMPServiceImpl.java @@ -0,0 +1,105 @@ +package io.gmss.infocad.implementations.user; + +import io.gmss.infocad.entities.infocad.parametre.Structure; +import io.gmss.infocad.entities.user.DemandeReinitialisationMP; +import io.gmss.infocad.entities.user.User; +import io.gmss.infocad.enums.EtatDemande; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.user.DemandeReinitialisationMPService; +import io.gmss.infocad.interfaces.user.UserService; +import io.gmss.infocad.repositories.user.DemandeReinitialisationMPRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class DemandeReinitialisationMPServiceImpl implements DemandeReinitialisationMPService { + + private final DemandeReinitialisationMPRepository demandeReinitialisationMPRepository; + private final UserService userService; + + public DemandeReinitialisationMPServiceImpl(DemandeReinitialisationMPRepository demandeReinitialisationMPRepository, UserService userService) { + this.demandeReinitialisationMPRepository = demandeReinitialisationMPRepository; + this.userService = userService; + } + + @Override + public DemandeReinitialisationMP createDemandeReinitialisationMP(String usernameOrEmail) throws BadRequestException { + + + User user = userService.getUserByUsername(usernameOrEmail); + + DemandeReinitialisationMP demandeReinitialisationMP = new DemandeReinitialisationMP(); + demandeReinitialisationMP.setUser(user); + demandeReinitialisationMP.setEtatDemande(EtatDemande.NON_TRAITE); + + if(demandeReinitialisationMP.getId() != null ){ + throw new BadRequestException("Impossible de créer une nouvelle demande de reinitialisation de mot de passe ayant un id non null."); + } + return demandeReinitialisationMPRepository.save(demandeReinitialisationMP); + } + + @Override + public DemandeReinitialisationMP updateDemandeReinitialisationMP(Long id, DemandeReinitialisationMP demandeReinitialisationMP) throws NotFoundException { + if(demandeReinitialisationMP.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour une nouvelle demande de reinitialisation de mot de passe ayant un id null."); + } + if(!demandeReinitialisationMPRepository.existsById(demandeReinitialisationMP.getId())){ + throw new NotFoundException("Impossible de trouver la demande de reinitialisation de mot de passe spécifiée dans notre base de données."); + } + return demandeReinitialisationMPRepository.save(demandeReinitialisationMP); + } + + @Override + public void deleteDemandeReinitialisationMP(Long id) throws NotFoundException { + Optional demandeReinitialisationMPOptional = demandeReinitialisationMPRepository.findById(id); + if(demandeReinitialisationMPOptional.isPresent()){ + demandeReinitialisationMPRepository.deleteById(demandeReinitialisationMPOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la demande de reinitialisation de mot de passe spécifiée dans notre base de données."); + } + } + + @Override + public Page getDemandeReinitialisationMPList(Pageable pageable) { + return demandeReinitialisationMPRepository.findAll(pageable); + } + + @Override + public List getDemandeReinitialisationMPList() { + return demandeReinitialisationMPRepository.findAll(); + } + + @Override + public List getDemandeReinitialisationMPNonTraiteList(Structure structure) { + return demandeReinitialisationMPRepository.findAllByEtatDemandeAndUser_Structure(EtatDemande.NON_TRAITE, structure); + } + + @Override + public Optional getDemandeReinitialisationMPById(Long id) { + if(demandeReinitialisationMPRepository.existsById(id)){ + return demandeReinitialisationMPRepository.findById(id); + }else{ + throw new NotFoundException("Impossible de trouver la demande de reinitialisation de mot de passe spécifiée dans la base de données."); + } + + } + + @Override + public DemandeReinitialisationMP traiterDemandeReinitialisation(Long id, String password) { + Optional demandeReinitialisationMPOptional = getDemandeReinitialisationMPById(id); + if(demandeReinitialisationMPOptional.isPresent()){ + DemandeReinitialisationMP demandeReinitialisationMP = demandeReinitialisationMPOptional.get(); + User user = demandeReinitialisationMP.getUser(); + userService.resetPassword(user.getUsername(), password); + demandeReinitialisationMP.setEtatDemande(EtatDemande.TRAITE); + return demandeReinitialisationMPRepository.save(demandeReinitialisationMP); + }else{ + throw new NotFoundException("La demande de réinitialisation du mot de passe n'est pas trouvée."); + } + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/user/RoleServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/user/RoleServiceImpl.java new file mode 100644 index 0000000..6ea25c4 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/user/RoleServiceImpl.java @@ -0,0 +1,72 @@ +package io.gmss.infocad.implementations.user; + +import io.gmss.infocad.entities.user.Role; +import io.gmss.infocad.enums.UserRole; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.user.RoleService; +import io.gmss.infocad.repositories.user.RoleRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class RoleServiceImpl implements RoleService { + + private final RoleRepository roleRepository; + + public RoleServiceImpl(RoleRepository roleRepository) { + this.roleRepository = roleRepository; + } + + @Override + public Role createRole(Role role) throws BadRequestException { + if(role.getId() != null ){ + throw new BadRequestException("A new role id to save must be null or empty."); + } + return roleRepository.save(role); + } + + @Override + public Role updateRole(Long id, Role role) throws NotFoundException { + return null; + } + + @Override + public void deleteRole(Long id) throws NotFoundException { + } + + @Override + public Page getRoleList(Pageable pageable) { + return roleRepository.findAll(pageable); + } + + @Override + public List getRoleList() { + return roleRepository.findAll(); + } + + + @Override + public Optional getRoleById(Long id) { + return roleRepository.findRoleById(id); + } + + @Override + public Optional getRoleByRoleName(UserRole userRole) { + return roleRepository.findRoleByNom(userRole); + } + + @Override + public boolean roleExistByRoleName(UserRole userRole) { + return roleRepository.existsByNom(userRole); + } + + @Override + public Role retrieveRoleByRoleName(UserRole userRole) { + return roleRepository.getRolesByNom(userRole); + } +} diff --git a/src/main/java/io/gmss/infocad/implementations/user/UserServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/user/UserServiceImpl.java new file mode 100644 index 0000000..062ff42 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/user/UserServiceImpl.java @@ -0,0 +1,301 @@ +package io.gmss.infocad.implementations.user; + +import io.gmss.infocad.entities.infocad.parametre.Structure; +import io.gmss.infocad.entities.user.Role; +import io.gmss.infocad.entities.user.User; +import io.gmss.infocad.enums.UserRole; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.infocad.parametre.StructureService; +import io.gmss.infocad.interfaces.user.RoleService; +import io.gmss.infocad.interfaces.user.UserService; +import io.gmss.infocad.paylaods.JwtAuthenticationResponse; +import io.gmss.infocad.paylaods.Login; +import io.gmss.infocad.paylaods.UserListByStructureResponse; +import io.gmss.infocad.paylaods.UserResponse; +import io.gmss.infocad.repositories.user.UserRepository; +import io.gmss.infocad.security.TokenAuthentificationProvider; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + + +@Service +public class UserServiceImpl implements UserService { + + private final UserRepository userRepository; + private final PasswordEncoder passwordEncoder; + private final RoleService roleService; + private final AuthenticationManager authenticationManager; + private final TokenAuthentificationProvider tokenAuthentificationProvider; + private final StructureService structureService; + + public UserServiceImpl(UserRepository userRepository, PasswordEncoder passwordEncoder, RoleService roleService, AuthenticationManager authenticationManager, TokenAuthentificationProvider tokenAuthentificationProvider, StructureService structureService) { + this.userRepository = userRepository; + this.passwordEncoder = passwordEncoder; + this.roleService = roleService; + this.authenticationManager = authenticationManager; + this.tokenAuthentificationProvider = tokenAuthentificationProvider; + this.structureService = structureService; + } + + + @Override + public User createUser(User user, boolean resetPassword) { + + if (userRepository.findByUsername(user.getUsername()).isPresent()) { + throw new BadRequestException("Ce nom d'utilisateur existe déjà."); + } + + if (user.getId() != null) { + throw new BadRequestException("Cet utilisateur existe déjà dans la base de donnéees."); + } + + Set roleSet = new HashSet<>(); + + user.getRoles().stream().forEach(role -> { + if (roleService.roleExistByRoleName(role.getNom())) { + roleSet.add(roleService.retrieveRoleByRoleName(role.getNom())); + } + }); + user.setUsername(user.getEmail()); + user.setResetPassword(resetPassword); + user.setRoles(roleSet); + user.setPassword(passwordEncoder.encode(user.getPassword())); + userRepository.save(user); + return user; + } + + @Override + public JwtAuthenticationResponse loginUser(Login login) { + + User user = getUserByUsername(login.getUsername()); + + if (user == null) { + throw new NotFoundException("Impossible de trouver l'utilisateur spécifié avec le nom d'utilisateur " + login.getUsername() + "."); + } + + if (!user.isActive()) { + throw new BadRequestException("Le compte de l' utilisateur " + login.getUsername() + " n'est pas actif."); + } + + Authentication authentication = authenticationManager + .authenticate( + new UsernamePasswordAuthenticationToken(login.getUsername(), + login.getPassword()) + ); + + SecurityContextHolder.getContext().setAuthentication(authentication); + return tokenAuthentificationProvider.generateToken(authentication); + } + + @Override + public User updateUser(Long id, User user) { + User user1 = userRepository.findById(id) + .orElseThrow(() -> new NotFoundException( + String.format("L'utilisateur ayant pour id %s n'existe pas.", id) + ) + ); + if (user.getRoles() == null || user.getRoles().isEmpty()) { + user.setRoles(user1.getRoles()); + } + + if (user.getPassword() == null || user.getPassword().isBlank()) { + user.setPassword(user1.getPassword()); + }else{ + user.setPassword(passwordEncoder.encode(user.getPassword())); + } + + if(user.getEmail() == null || user.getEmail().isEmpty()){ + user.setEmail(user1.getEmail()); + }else { + user.setEmail(user.getEmail()); + } + user.setResetPassword(user1.isResetPassword()); + return userRepository.save(user); + } + + @Override + public void updatePassword(String username, String pwd) { + User user = userRepository.findByUsername(username).orElseThrow(() -> new NotFoundException( + String.format("L'utilisateur %s n'existe pas.", username) + )); + user.setUsername(username); + user.setResetPassword(false); + user.setPassword(passwordEncoder.encode(pwd)); + userRepository.save(user); + } + + @Override + public void deleteUser(Long id) { + User user = userRepository.findById(id) + .orElseThrow(() -> new NotFoundException( + String.format("L'utilisateur ayant pour id %s n'existe pas.", id) + ) + ); + userRepository.delete(user); + } + + @Override + public Page getUserList(Pageable pageable) { + return userRepository.findAll(pageable); + } + + @Override + public List getUserList() { + return userRepository.findAll(); + } + + @Override + public List getAllUserListResponse() { + return getUserResponses(getUserList()); + } + + @Override + public List getActivatedUserListByStructure(Long structureId) { + Set roleSet = new HashSet<>(); + roleSet.add(roleService.retrieveRoleByRoleName(UserRole.ROLE_ANONYMOUS)); + Optional structureOptional = structureService.getStructureById(structureId); + if(structureOptional.isPresent()){ + return userRepository.findAllByStructureAndRolesNotIn(structureOptional.get(), roleSet); + }else { + throw new NotFoundException("Impossible de trouver la structure spécifiée."); + } + } + + @Override + public List getUserUnActivatedListByStructure(Long structureId) { + Set roleSet = new HashSet<>(); + roleSet.add(roleService.retrieveRoleByRoleName(UserRole.ROLE_ANONYMOUS)); + Optional structureOptional = structureService.getStructureById(structureId); + if(structureOptional.isPresent()){ + return userRepository.findAllByStructureAndRolesIn(structureOptional.get(), roleSet); + }else { + throw new NotFoundException("Impossible de trouver la structure spécifiée."); + } + } + + private static List getUserResponses(List users) { + return users.stream() + .map(user -> new UserResponse( + user.getId(), + user.getNom(), + user.getPrenom(), + user.getTel(), + user.getEmail(), + user.getUsername(), + user.isActive(), + user.isResetPassword(), + user.getRoles(), + user.getStructure())) + .collect(Collectors.toList()); + } + + + @Override + public long countUser() { + return userRepository.count(); + } + + @Override + public User getUserById(Long id) { + return userRepository.findById(id).orElseThrow(() -> new NotFoundException( + String.format("L'utilisateur ayant pour id %s n'existe pas.", id) + ) + ); + } + + @Override + public List getUserByProfil(UserRole userRole) { + return userRepository.findAllByRolesContains(userRole); + } + + + @Override + public User getUserByUsername(String username) { + return userRepository.findByUsername(username).orElseThrow(() -> new NotFoundException( + String.format("L'utilisateur ayant pour nom %s n'existe pas.", username) + ) + ); + } + + @Override + public User activateOrNotUser(Long id) { + User user = getUserById(id); + if(user.isActive()){ + user.setActive(false); + } + + if(!user.isActive()){ + user.setActive(true); + } + return userRepository.save(user); + } + + @Override + public User resetPassword(String username, String password) { + User user = userRepository.findByUsername(username).orElseThrow(() -> new NotFoundException( + String.format("L'utilisateur %s n'existe pas.", username) + )); + //String pwd = PasswordGenerator.generatePassword(); + user.setPassword(passwordEncoder.encode(password)); + user.setResetPassword(true); + userRepository.save(user); + return user; + } + + @Override + public User assignStructureToUser(Structure structure) { + return null; + } + + @Override + public User validateUserAccount(String username, UserRole userRole) { + User user = userRepository.findByUsername(username).orElseThrow(() -> new NotFoundException( + String.format("L'utilisateur %s n'existe pas.", username) + )); + Set roleSet = new HashSet<>(); + if (roleService.roleExistByRoleName(userRole)) { + roleSet.add(roleService.retrieveRoleByRoleName(userRole)); + } + user.setRoles(roleSet); + user.setActive(true); + return userRepository.save(user); + } + + @Override + public UserListByStructureResponse getListUserByStructure(Long structureId) { + return new UserListByStructureResponse(getUserResponses(getActivatedUserListByStructure(structureId)), getUserResponses(getUserUnActivatedListByStructure(structureId))); + } + + @Override + public List getListUserResponseByStructure(Long structureId) { + List userResponses = new ArrayList<>(); + userResponses.addAll(getUserResponses(getActivatedUserListByStructure(structureId))); + userResponses.addAll(getUserResponses(getUserUnActivatedListByStructure(structureId))); + return userResponses; + } + + @Override + public UserResponse getUserResponseFromUser(User user) { + return new UserResponse( + user.getId(), + user.getNom(), + user.getPrenom(), + user.getTel(), + user.getEmail(), + user.getUsername(), + user.isActive(), + user.isResetPassword(), + user.getRoles(), + user.getStructure()); + } +} diff --git a/src/main/java/io/gmss/infocad/interfaces/decoupage/ArrondissementService.java b/src/main/java/io/gmss/infocad/interfaces/decoupage/ArrondissementService.java new file mode 100755 index 0000000..929f683 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/decoupage/ArrondissementService.java @@ -0,0 +1,22 @@ +package io.gmss.infocad.interfaces.decoupage; + +import io.gmss.infocad.entities.decoupage.Arrondissement; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface ArrondissementService { + + Arrondissement createArrondissement(Arrondissement arrondissement) throws BadRequestException; + Arrondissement updateArrondissement(Long id, Arrondissement arrondissement) throws NotFoundException; + void deleteArrondissement(Long id) throws NotFoundException; + Page getArrondissementList(Pageable pageable); + List getArrondissementList(); + Optional getArrondissementById(Long id); + + List getArrondissementByComune(Long communeId); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/decoupage/CommuneService.java b/src/main/java/io/gmss/infocad/interfaces/decoupage/CommuneService.java new file mode 100755 index 0000000..f905966 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/decoupage/CommuneService.java @@ -0,0 +1,21 @@ +package io.gmss.infocad.interfaces.decoupage; + +import io.gmss.infocad.entities.decoupage.Commune; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface CommuneService { + + Commune createCommune(Commune commune) throws BadRequestException; + Commune updateCommune(Long id, Commune commune) throws NotFoundException; + void deleteCommune(Long id) throws NotFoundException; + Page getCommuneList(Pageable pageable); + List getCommuneList(); + List getCommunesByDepartement(Long departementId); + Optional getCommuneById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/decoupage/DepartementService.java b/src/main/java/io/gmss/infocad/interfaces/decoupage/DepartementService.java new file mode 100755 index 0000000..af93448 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/decoupage/DepartementService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.decoupage; + +import io.gmss.infocad.entities.decoupage.Departement; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface DepartementService { + + Departement createDepartement(Departement departement) throws BadRequestException; + Departement updateDepartement(Long id, Departement departement) throws NotFoundException; + void deleteDepartement(Long id) throws NotFoundException; + Page getDepartementList(Pageable pageable); + List getDepartementList(); + Optional getDepartementById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/decoupage/NationaliteService.java b/src/main/java/io/gmss/infocad/interfaces/decoupage/NationaliteService.java new file mode 100755 index 0000000..3631ead --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/decoupage/NationaliteService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.decoupage; + +import io.gmss.infocad.entities.decoupage.Nationalite; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface NationaliteService { + + Nationalite createNationalite(Nationalite nationalite) throws BadRequestException; + Nationalite updateNationalite(Long id, Nationalite nationalite) throws NotFoundException; + void deleteNationalite(Long id) throws NotFoundException; + Page getNationaliteList(Pageable pageable); + List getNationaliteList(); + Optional getNationaliteById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/decoupage/QuartierService.java b/src/main/java/io/gmss/infocad/interfaces/decoupage/QuartierService.java new file mode 100755 index 0000000..19293b3 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/decoupage/QuartierService.java @@ -0,0 +1,21 @@ +package io.gmss.infocad.interfaces.decoupage; + +import io.gmss.infocad.entities.decoupage.Quartier; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface QuartierService { + + Quartier createQuartier(Quartier quartier) throws BadRequestException; + Quartier updateQuartier(Long id, Quartier quartier) throws NotFoundException; + void deleteQuartier(Long id) throws NotFoundException; + Page getQuartierList(Pageable pageable); + List getQuartierList(); + Optional getQuartierById(Long id); + List getQuartierByArrondissement(Long arrondissementId); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/metier/ActeurConcerneService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/metier/ActeurConcerneService.java new file mode 100755 index 0000000..4e14cbf --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/metier/ActeurConcerneService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.ActeurConcerne; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface ActeurConcerneService { + + ActeurConcerne createActeurConcerne(ActeurConcerne acteurConcerne) throws BadRequestException; + ActeurConcerne updateActeurConcerne(Long id, ActeurConcerne acteurConcerne) throws NotFoundException; + void deleteActeurConcerne(Long id) throws NotFoundException; + Page getActeurConcerneList(Pageable pageable); + List getActeurConcerneList(); + Optional getActeurConcerneById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/metier/BlocService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/metier/BlocService.java new file mode 100755 index 0000000..851cd82 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/metier/BlocService.java @@ -0,0 +1,25 @@ +package io.gmss.infocad.interfaces.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.Bloc; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface BlocService { + + Bloc createBloc(Bloc bloc) throws BadRequestException; + Bloc updateBloc(Long id, Bloc bloc) throws NotFoundException; + void deleteBloc(Long id) throws NotFoundException; + Page getBlocList(Pageable pageable); + List getBlocsByArrondissement(Long idArrondissement); + List getBlocsByStructure(Long idStructure); + List getBlocList(); + Optional getBlocById(Long id); + + int countAllBlocByArrondissement(Long idArrondissement); + +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/metier/CommentaireService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/metier/CommentaireService.java new file mode 100755 index 0000000..c843e07 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/metier/CommentaireService.java @@ -0,0 +1,30 @@ +package io.gmss.infocad.interfaces.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.Commentaire; +import io.gmss.infocad.enums.Origine; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.paylaods.request.SyncCommentaireRequest; +import io.gmss.infocad.paylaods.response.CommentaireResponse; + +import java.util.List; +import java.util.Optional; + +public interface CommentaireService { + + Commentaire createCommentaire(Commentaire commentaire) throws BadRequestException; + Commentaire updateCommentaire(Long id, Commentaire commentaire) throws NotFoundException; + void deleteCommentaire(Long id) throws NotFoundException; + List getCommentairesByEnqueteAndTerminal(Long idEnquete, Long terminalId); + List getCommentairesByEnqueteAndLu(Long idEnquete, boolean lu); + List getCommentairesByOrigineAndStateReadAndTerminalId(Origine origine, boolean lu, Long terminalId); + List getCommentairesByOrigineAndStateSynchronizedAndTerminalId(Origine origine, boolean synchronise, Long terminalId); + Optional getCommentaireByNup(String nup); + List getCommentaireList(); + Optional getCommentaireById(Long id); + boolean setCommentaireRead(Long id); + + List saveAllCommentairesFromMobile(List commentaires); + + List notifySynchronizedDoneFromMobile(List syncCommentaireRequests); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/metier/EnqueteService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/metier/EnqueteService.java new file mode 100755 index 0000000..cc2289a --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/metier/EnqueteService.java @@ -0,0 +1,42 @@ +package io.gmss.infocad.interfaces.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.Enquete; +import io.gmss.infocad.entities.infocad.metier.EnqueteFiltreResponse; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.paylaods.request.EnquetePayLoad; +import io.gmss.infocad.paylaods.request.EnqueteTraitementPayLoad; +import io.gmss.infocad.paylaods.request.FiltreEnquetePayLoad; +import io.gmss.infocad.paylaods.response.EnqueteNonSyncResponse; +import io.gmss.infocad.paylaods.response.EnqueteResponse; +import io.gmss.infocad.paylaods.response.FicheEnqueteResponse; +import io.gmss.infocad.paylaods.response.UserDecoupageEnqResponses; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface EnqueteService { + + Enquete createEnquete(EnquetePayLoad enquetePayLoad) throws BadRequestException; + Enquete updateEnquete(EnquetePayLoad enquetePayLoad) throws NotFoundException; + void deleteEnquete(Long id) throws NotFoundException; + Page getEnqueteList(Pageable pageable); + List getEnqueteList(); + List getEnqueteCommuneArrondBloc(); + List getEnqueteCommuneArrondBlocFiltre(FiltreEnquetePayLoad filtreEnquetePayLoad ); + Optional getEnqueteById(Long id); + Enquete validerEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad); + Enquete rejeterEnquete(EnqueteTraitementPayLoad enqueteTraitementPayLoad); + List validerEnquete(List enqueteTraitementPayLoads); + List rejeterEnquete(List enqueteTraitementPayLoads); + Enquete finaliserEnquete(Long enqueteId); + Enquete reglerLitigeEnquete(Long enqueteId); + public UserDecoupageEnqResponses getDecoupageAdminUserConnecterAndStat(); + public FicheEnqueteResponse getFicheEnquete(Long EnqueteId); + public List getEnqueteValideNonSynch(Long terminalId); + + + +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/metier/MembreGroupeService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/metier/MembreGroupeService.java new file mode 100755 index 0000000..5d2c9de --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/metier/MembreGroupeService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.MembreGroupe; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface MembreGroupeService { + + MembreGroupe createMembreGroupe(MembreGroupe membreGroupe) throws BadRequestException; + MembreGroupe updateMembreGroupe(Long id, MembreGroupe membreGroupe) throws NotFoundException; + void deleteMembreGroupe(Long id) throws NotFoundException; + Page getMembreGroupeList(Pageable pageable); + List getMembreGroupeList(); + Optional getMembreGroupeById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/metier/ParcelleService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/metier/ParcelleService.java new file mode 100755 index 0000000..03de161 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/metier/ParcelleService.java @@ -0,0 +1,22 @@ +package io.gmss.infocad.interfaces.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.Parcelle; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.paylaods.request.ParcellePayLoad; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface ParcelleService { + + + Parcelle createParcelle(ParcellePayLoad parcellePayLoad) throws BadRequestException; + Parcelle updateParcelle(ParcellePayLoad parcellePayLoad) throws NotFoundException; + void deleteParcelle(Long id) throws NotFoundException; + Page getParcelleList(Pageable pageable); + List getParcelleList(); + Optional getParcelleById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/metier/PieceService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/metier/PieceService.java new file mode 100755 index 0000000..5fc4388 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/metier/PieceService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.Piece; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface PieceService { + + Piece createPiece(Piece piece) throws BadRequestException; + Piece updatePiece(Long id, Piece piece) throws NotFoundException; + void deletePiece(Long id) throws NotFoundException; + Page getPieceList(Pageable pageable); + List getPieceList(); + Optional getPieceById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/metier/TpeService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/metier/TpeService.java new file mode 100755 index 0000000..4275524 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/metier/TpeService.java @@ -0,0 +1,23 @@ +package io.gmss.infocad.interfaces.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.Tpe; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface TpeService { + + Tpe createTpe(Tpe tpe) throws BadRequestException; + Tpe updateTpe(Long id, Tpe tpe) throws NotFoundException; + void deleteTpe(Long id) throws NotFoundException; + Page getTpeList(Pageable pageable); + List getTpeList(); + Optional getTpeById(Long id); + Optional getTepByIdentifier(String identifier); + List getTpeListByModel(String model); + List getTpeListByUserId(Long userId); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/ModeAcquisitionService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/ModeAcquisitionService.java new file mode 100755 index 0000000..e8fe0d8 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/ModeAcquisitionService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.ModeAcquisition; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface ModeAcquisitionService { + + ModeAcquisition createModeAcquisition(ModeAcquisition modeAcquisition) throws BadRequestException; + ModeAcquisition updateModeAcquisition(Long id, ModeAcquisition modeAcquisition) throws NotFoundException; + void deleteModeAcquisition(Long id) throws NotFoundException; + Page getModeAcquisitionList(Pageable pageable); + List getModeAcquisitionList(); + Optional getModeAcquisitionById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/NatureDomaineService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/NatureDomaineService.java new file mode 100755 index 0000000..c189151 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/NatureDomaineService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.NatureDomaine; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface NatureDomaineService { + + NatureDomaine createNatureDomaine(NatureDomaine natureDomaine) throws BadRequestException; + NatureDomaine updateNatureDomaine(Long id, NatureDomaine natureDomaine) throws NotFoundException; + void deleteNatureDomaine(Long id) throws NotFoundException; + Page getNatureDomaineList(Pageable pageable); + List getNatureDomaineList(); + Optional getNatureDomaineById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/PersonneService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/PersonneService.java new file mode 100755 index 0000000..5c02395 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/PersonneService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.Personne; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface PersonneService { + + Personne createPersonne(Personne personne) throws BadRequestException; + Personne updatePersonne(Long id, Personne personne) throws NotFoundException; + void deletePersonne(Long id) throws NotFoundException; + Page getPersonneList(Pageable pageable); + List getPersonneList(); + Optional getPersonneById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/PositionRepresentationService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/PositionRepresentationService.java new file mode 100755 index 0000000..4d811b2 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/PositionRepresentationService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.PositionRepresentation; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface PositionRepresentationService { + + PositionRepresentation createPositionRepresentation(PositionRepresentation positionRepresentation) throws BadRequestException; + PositionRepresentation updatePositionRepresentation(Long id, PositionRepresentation positionRepresentation) throws NotFoundException; + void deletePositionRepresentation(Long id) throws NotFoundException; + Page getPositionRepresentationList(Pageable pageable); + List getPositionRepresentationList(); + Optional getPositionRepresentationById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/ProfessionService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/ProfessionService.java new file mode 100755 index 0000000..19e51e7 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/ProfessionService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.Profession; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface ProfessionService { + + Profession createProfession(Profession profession) throws BadRequestException; + Profession updateProfession(Long id, Profession profession) throws NotFoundException; + void deleteProfession(Long id) throws NotFoundException; + Page getProfessionList(Pageable pageable); + List getProfessionList(); + Optional getProfessionById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/SituationGeographiqueService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/SituationGeographiqueService.java new file mode 100755 index 0000000..96cc8e0 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/SituationGeographiqueService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.SituationGeographique; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface SituationGeographiqueService { + + SituationGeographique createSituationGeographique(SituationGeographique situationGeographique) throws BadRequestException; + SituationGeographique updateSituationGeographique(Long id, SituationGeographique situationGeographique) throws NotFoundException; + void deleteSituationGeographique(Long id) throws NotFoundException; + Page getSituationGeographiqueList(Pageable pageable); + List getSituationGeographiqueList(); + Optional getSituationGeographiqueById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/SituationMatrimonialeService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/SituationMatrimonialeService.java new file mode 100755 index 0000000..17b9b52 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/SituationMatrimonialeService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.SituationMatrimoniale; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface SituationMatrimonialeService { + + SituationMatrimoniale createSituationMatrimoniale(SituationMatrimoniale situationMatrimoniale) throws BadRequestException; + SituationMatrimoniale updateSituationMatrimoniale(Long id, SituationMatrimoniale situationMatrimoniale) throws NotFoundException; + void deleteSituationMatrimoniale(Long id) throws NotFoundException; + Page getSituationMatrimonialeList(Pageable pageable); + List getSituationMatrimonialeList(); + Optional getSituationMatrimonialeById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/SourceDroitExerceService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/SourceDroitExerceService.java new file mode 100755 index 0000000..c22209a --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/SourceDroitExerceService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.SourceDroitExerce; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface SourceDroitExerceService { + + SourceDroitExerce createSourceDroitExerce(SourceDroitExerce sourceDroitExerce) throws BadRequestException; + SourceDroitExerce updateSourceDroitExerce(Long id, SourceDroitExerce sourceDroitExerce) throws NotFoundException; + void deleteSourceDroitExerce(Long id) throws NotFoundException; + Page getSourceDroitExerceList(Pageable pageable); + List getSourceDroitExerceList(); + Optional getSourceDroitExerceById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/SourceDroitService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/SourceDroitService.java new file mode 100755 index 0000000..400f9d5 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/SourceDroitService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.SourceDroit; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface SourceDroitService { + + SourceDroit createSourceDroit(SourceDroit sourceDroit) throws BadRequestException; + SourceDroit updateSourceDroit(Long id, SourceDroit sourceDroit) throws NotFoundException; + void deleteSourceDroit(Long id) throws NotFoundException; + Page getSourceDroitList(Pageable pageable); + List getSourceDroitList(); + Optional getSourceDroitById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/StructureService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/StructureService.java new file mode 100755 index 0000000..10bb4f8 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/StructureService.java @@ -0,0 +1,22 @@ +package io.gmss.infocad.interfaces.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.Structure; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.paylaods.response.StructureResponse; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface StructureService { + + Structure createStructure(Structure structure) throws BadRequestException; + Structure updateStructure(Long id, Structure structure) throws NotFoundException; + void deleteStructure(Long id) throws NotFoundException; + Page getStructureList(Pageable pageable); + List getStructureList(); + List getStructuresByArrondissement(Long arrondissementID); + Optional getStructureById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypeContestationService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypeContestationService.java new file mode 100755 index 0000000..4579d21 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypeContestationService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.TypeContestation; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface TypeContestationService { + + TypeContestation createTypeContestation(TypeContestation typeContestation) throws BadRequestException; + TypeContestation updateTypeContestation(Long id, TypeContestation typeContestation) throws NotFoundException; + void deleteTypeContestation(Long id) throws NotFoundException; + Page getTypeContestationList(Pageable pageable); + List getTypeContestationList(); + Optional getTypeContestationById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypeDomaineService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypeDomaineService.java new file mode 100755 index 0000000..73ba844 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypeDomaineService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.TypeDomaine; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface TypeDomaineService { + + TypeDomaine createTypeDomaine(TypeDomaine typeDomaine) throws BadRequestException; + TypeDomaine updateTypeDomaine(Long id, TypeDomaine typeDomaine) throws NotFoundException; + void deleteTypeDomaine(Long id) throws NotFoundException; + Page getTypeDomaineList(Pageable pageable); + List getTypeDomaineList(); + Optional getTypeDomaineById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypePersonneService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypePersonneService.java new file mode 100755 index 0000000..6b5b2dc --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypePersonneService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.TypePersonne; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface TypePersonneService { + + TypePersonne createTypePersonne(TypePersonne typePersonne) throws BadRequestException; + TypePersonne updateTypePersonne(Long id, TypePersonne typePersonne) throws NotFoundException; + void deleteTypePersonne(Long id) throws NotFoundException; + Page getTypePersonneList(Pageable pageable); + List getTypePersonneList(); + Optional getTypePersonneById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypePieceService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypePieceService.java new file mode 100755 index 0000000..d2f3d53 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypePieceService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.TypePiece; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface TypePieceService { + + TypePiece createTypePiece(TypePiece typePiece) throws BadRequestException; + TypePiece updateTypePiece(Long id, TypePiece typePiece) throws NotFoundException; + void deleteTypePiece(Long id) throws NotFoundException; + Page getTypePieceList(Pageable pageable); + List getTypePieceList(); + Optional getTypePieceById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypeRepresentationService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypeRepresentationService.java new file mode 100755 index 0000000..5a6ceb1 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/TypeRepresentationService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.TypeRepresentation; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface TypeRepresentationService { + + TypeRepresentation createTypeRepresentation(TypeRepresentation typeRepresentation) throws BadRequestException; + TypeRepresentation updateTypeRepresentation(Long id, TypeRepresentation typeRepresentation) throws NotFoundException; + void deleteTypeRepresentation(Long id) throws NotFoundException; + Page getTypeRepresentationList(Pageable pageable); + List getTypeRepresentationList(); + Optional getTypeRepresentationById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/notification/EmailService.java b/src/main/java/io/gmss/infocad/interfaces/notification/EmailService.java new file mode 100644 index 0000000..81afa18 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/notification/EmailService.java @@ -0,0 +1,9 @@ +package io.gmss.infocad.interfaces.notification; + +import io.gmss.infocad.paylaods.EmailDetails; + +public interface EmailService { + + String sendSimpleMail(EmailDetails emailDetails); + String sendMailWithAttachment(EmailDetails emailDetails); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/rfu/metier/BatimentService.java b/src/main/java/io/gmss/infocad/interfaces/rfu/metier/BatimentService.java new file mode 100755 index 0000000..c95b911 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/rfu/metier/BatimentService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.rfu.metier; + +import io.gmss.infocad.entities.rfu.metier.Batiment; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface BatimentService { + + Batiment createBatiment(Batiment batiment) throws BadRequestException; + Batiment updateBatiment(Long id, Batiment batiment) throws NotFoundException; + void deleteBatiment(Long id) throws NotFoundException; + Page getBatimentList(Pageable pageable); + List getBatimentList(); + Optional getBatimentById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/rfu/metier/CaracteristiqueBatimentService.java b/src/main/java/io/gmss/infocad/interfaces/rfu/metier/CaracteristiqueBatimentService.java new file mode 100755 index 0000000..1d301ae --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/rfu/metier/CaracteristiqueBatimentService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.rfu.metier; + +import io.gmss.infocad.entities.rfu.metier.CaracteristiqueBatiment; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface CaracteristiqueBatimentService { + + CaracteristiqueBatiment createCaracteristiqueBatiment(CaracteristiqueBatiment caracteristiqueBatiment) throws BadRequestException; + CaracteristiqueBatiment updateCaracteristiqueBatiment(Long id, CaracteristiqueBatiment caracteristiqueBatiment) throws NotFoundException; + void deleteCaracteristiqueBatiment(Long id) throws NotFoundException; + Page getCaracteristiqueBatimentList(Pageable pageable); + List getCaracteristiqueBatimentList(); + Optional getCaracteristiqueBatimentById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/rfu/metier/CaracteristiqueParcelleService.java b/src/main/java/io/gmss/infocad/interfaces/rfu/metier/CaracteristiqueParcelleService.java new file mode 100755 index 0000000..8b2d02f --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/rfu/metier/CaracteristiqueParcelleService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.rfu.metier; + +import io.gmss.infocad.entities.rfu.metier.CaracteristiqueParcelle; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface CaracteristiqueParcelleService { + + CaracteristiqueParcelle createCaracteristiqueParcelle(CaracteristiqueParcelle batiment) throws BadRequestException; + CaracteristiqueParcelle updateCaracteristiqueParcelle(Long id, CaracteristiqueParcelle batiment) throws NotFoundException; + void deleteCaracteristiqueParcelle(Long id) throws NotFoundException; + Page getCaracteristiqueParcelleList(Pageable pageable); + List getCaracteristiqueParcelleList(); + Optional getCaracteristiqueParcelleById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/rfu/metier/CaracteristiqueUniteLogementService.java b/src/main/java/io/gmss/infocad/interfaces/rfu/metier/CaracteristiqueUniteLogementService.java new file mode 100755 index 0000000..237c0a7 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/rfu/metier/CaracteristiqueUniteLogementService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.rfu.metier; + +import io.gmss.infocad.entities.rfu.metier.CaracteristiqueUniteLogement; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface CaracteristiqueUniteLogementService { + + CaracteristiqueUniteLogement createCaracteristiqueUniteLogement(CaracteristiqueUniteLogement caracteristiqueUniteLogement) throws BadRequestException; + CaracteristiqueUniteLogement updateCaracteristiqueUniteLogement(Long id, CaracteristiqueUniteLogement caracteristiqueUniteLogement) throws NotFoundException; + void deleteCaracteristiqueUniteLogement(Long id) throws NotFoundException; + Page getCaracteristiqueUniteLogementList(Pageable pageable); + List getCaracteristiqueUniteLogementList(); + Optional getCaracteristiqueUniteLogementById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/rfu/metier/EnqueteBatimentService.java b/src/main/java/io/gmss/infocad/interfaces/rfu/metier/EnqueteBatimentService.java new file mode 100755 index 0000000..d8dcbcc --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/rfu/metier/EnqueteBatimentService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.rfu.metier; + +import io.gmss.infocad.entities.rfu.metier.EnqueteBatiment; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface EnqueteBatimentService { + + EnqueteBatiment createEnqueteBatiment(EnqueteBatiment enqueteBatiment) throws BadRequestException; + EnqueteBatiment updateEnqueteBatiment(Long id, EnqueteBatiment enqueteBatiment) throws NotFoundException; + void deleteEnqueteBatiment(Long id) throws NotFoundException; + Page getEnqueteBatimentList(Pageable pageable); + List getEnqueteBatimentList(); + Optional getEnqueteBatimentById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/rfu/metier/EnqueteUniteLogementService.java b/src/main/java/io/gmss/infocad/interfaces/rfu/metier/EnqueteUniteLogementService.java new file mode 100755 index 0000000..bb0eb0d --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/rfu/metier/EnqueteUniteLogementService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.rfu.metier; + +import io.gmss.infocad.entities.rfu.metier.EnqueteUniteLogement; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface EnqueteUniteLogementService { + + EnqueteUniteLogement createEnqueteUniteLogement(EnqueteUniteLogement enqueteUniteLogement) throws BadRequestException; + EnqueteUniteLogement updateEnqueteUniteLogement(Long id, EnqueteUniteLogement enqueteUniteLogement) throws NotFoundException; + void deleteEnqueteUniteLogement(Long id) throws NotFoundException; + Page getEnqueteUniteLogementList(Pageable pageable); + List getEnqueteUniteLogementList(); + Optional getEnqueteUniteLogementById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/rfu/metier/UniteLogementService.java b/src/main/java/io/gmss/infocad/interfaces/rfu/metier/UniteLogementService.java new file mode 100755 index 0000000..8df8a22 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/rfu/metier/UniteLogementService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.rfu.metier; + +import io.gmss.infocad.entities.rfu.metier.UniteLogement; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface UniteLogementService { + + UniteLogement createUniteLogement(UniteLogement uniteLogement) throws BadRequestException; + UniteLogement updateUniteLogement(Long id, UniteLogement uniteLogement) throws NotFoundException; + void deleteUniteLogement(Long id) throws NotFoundException; + Page getUniteLogementList(Pageable pageable); + List getUniteLogementList(); + Optional getUniteLogementById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/rfu/parametre/CaracteristiqueService.java b/src/main/java/io/gmss/infocad/interfaces/rfu/parametre/CaracteristiqueService.java new file mode 100755 index 0000000..632c1bc --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/rfu/parametre/CaracteristiqueService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.rfu.parametre; + +import io.gmss.infocad.entities.rfu.parametre.Caracteristique; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface CaracteristiqueService { + + Caracteristique createCaracteristique(Caracteristique caracteristique) throws BadRequestException; + Caracteristique updateCaracteristique(Long id, Caracteristique caracteristique) throws NotFoundException; + void deleteCaracteristique(Long id) throws NotFoundException; + Page getCaracteristiqueList(Pageable pageable); + List getCaracteristiqueList(); + Optional getCaracteristiqueById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/rfu/parametre/TypeCaracteristiqueService.java b/src/main/java/io/gmss/infocad/interfaces/rfu/parametre/TypeCaracteristiqueService.java new file mode 100755 index 0000000..2f109e0 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/rfu/parametre/TypeCaracteristiqueService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.rfu.parametre; + +import io.gmss.infocad.entities.rfu.parametre.TypeCaracteristique; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface TypeCaracteristiqueService { + + TypeCaracteristique createTypeCaracteristique(TypeCaracteristique typeCaracteristique) throws BadRequestException; + TypeCaracteristique updateTypeCaracteristique(Long id, TypeCaracteristique typeCaracteristique) throws NotFoundException; + void deleteTypeCaracteristique(Long id) throws NotFoundException; + Page getTypeCaracteristiqueList(Pageable pageable); + List getTypeCaracteristiqueList(); + Optional getTypeCaracteristiqueById(Long id); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/statistique/StatistiquesService.java b/src/main/java/io/gmss/infocad/interfaces/statistique/StatistiquesService.java new file mode 100644 index 0000000..64193f3 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/statistique/StatistiquesService.java @@ -0,0 +1,16 @@ +package io.gmss.infocad.interfaces.statistique; + +import io.gmss.infocad.paylaods.response.StatEnqueteAdminDecoupageResponse; +import io.gmss.infocad.paylaods.response.StatEnqueteAdminStructureResponse; +import io.gmss.infocad.paylaods.response.StatEnqueteParBlocResponse; +import io.gmss.infocad.paylaods.response.StatEnqueteParStatutResponse; + +import java.util.List; + +public interface StatistiquesService { + List getStatEnqueteParStatut(); + List getStatEnqueteAdminDecoupage(Long idCommune); + List getStatEnqueteAdminStructure(); + List getStatBloc(); + +} diff --git a/src/main/java/io/gmss/infocad/interfaces/synchronisation/RestaurationService.java b/src/main/java/io/gmss/infocad/interfaces/synchronisation/RestaurationService.java new file mode 100644 index 0000000..b142f93 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/synchronisation/RestaurationService.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.interfaces.synchronisation; + +import io.gmss.infocad.entities.infocad.metier.Tpe; +import io.gmss.infocad.paylaods.response.restoration.*; + +import java.util.List; + +public interface RestaurationService { + + List getActeurConcernes(Long terminaleId) ; + List getEnquete(Long terminaleId) ; + List getPersonne(Long terminaleId) ; + List getParcelle(Long terminaleId) ; + List getPieces(Long terminaleId) ; + List getMembreGroupe(Long terminaleId) ; + List getUpload(Long terminaleId) ; + + public List getTpeListByCurrentUser(); + +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/interfaces/synchronisation/SynchronisationService.java b/src/main/java/io/gmss/infocad/interfaces/synchronisation/SynchronisationService.java new file mode 100755 index 0000000..d9926e5 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/synchronisation/SynchronisationService.java @@ -0,0 +1,38 @@ +package io.gmss.infocad.interfaces.synchronisation; + +import io.gmss.infocad.paylaods.request.*; +import io.gmss.infocad.paylaods.response.ReferencesSyncResponses; +import io.gmss.infocad.paylaods.response.SyncEnqueteAllDataResponse; +import io.gmss.infocad.paylaods.response.SyncResponse; +import io.gmss.infocad.paylaods.response.UserDecoupageSyncResponses; +import org.springframework.web.multipart.MultipartFile; + +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 SyncResponse syncFiles(MultipartFile file, + Long idBackend, + Long externalKey, + Long pieceId, + Long membreGroupeId, + Long terminalId, + String name, + String filePath, + Long max_numero_piece_id, + Long max_numero_upload_id, + Long max_numero_acteur_concerne_id, + Long enqueteId); + + public List syncEnqueteFromMobile(List idEnquete); + +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/interfaces/user/DemandeReinitialisationMPService.java b/src/main/java/io/gmss/infocad/interfaces/user/DemandeReinitialisationMPService.java new file mode 100755 index 0000000..644e8df --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/user/DemandeReinitialisationMPService.java @@ -0,0 +1,23 @@ +package io.gmss.infocad.interfaces.user; + +import io.gmss.infocad.entities.infocad.parametre.Structure; +import io.gmss.infocad.entities.user.DemandeReinitialisationMP; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface DemandeReinitialisationMPService { + + DemandeReinitialisationMP createDemandeReinitialisationMP(String usernameOrEmail) throws BadRequestException; + DemandeReinitialisationMP updateDemandeReinitialisationMP(Long id, DemandeReinitialisationMP demandeReinitialisationMP) throws NotFoundException; + void deleteDemandeReinitialisationMP(Long id) throws NotFoundException; + Page getDemandeReinitialisationMPList(Pageable pageable); + List getDemandeReinitialisationMPList(); + List getDemandeReinitialisationMPNonTraiteList(Structure structure); + Optional getDemandeReinitialisationMPById(Long id); + DemandeReinitialisationMP traiterDemandeReinitialisation(Long id, String password); +} diff --git a/src/main/java/io/gmss/infocad/interfaces/user/RoleService.java b/src/main/java/io/gmss/infocad/interfaces/user/RoleService.java new file mode 100755 index 0000000..546c9aa --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/user/RoleService.java @@ -0,0 +1,27 @@ +package io.gmss.infocad.interfaces.user; + +import io.gmss.infocad.entities.user.Role; +import io.gmss.infocad.enums.UserRole; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface RoleService { + + Role createRole(Role role) throws BadRequestException; + Role updateRole(Long id, Role role) throws NotFoundException; + void deleteRole(Long id) throws NotFoundException; + Page getRoleList(Pageable pageable); + List getRoleList(); + Optional getRoleById(Long id); + Optional getRoleByRoleName(UserRole userRole); + + boolean roleExistByRoleName(UserRole userRole); + + Role retrieveRoleByRoleName(UserRole userRole); + +} diff --git a/src/main/java/io/gmss/infocad/interfaces/user/UserService.java b/src/main/java/io/gmss/infocad/interfaces/user/UserService.java new file mode 100755 index 0000000..e9ff841 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/user/UserService.java @@ -0,0 +1,48 @@ +package io.gmss.infocad.interfaces.user; + +import io.gmss.infocad.entities.infocad.parametre.Structure; +import io.gmss.infocad.entities.user.User; +import io.gmss.infocad.enums.UserRole; +import io.gmss.infocad.paylaods.JwtAuthenticationResponse; +import io.gmss.infocad.paylaods.Login; +import io.gmss.infocad.paylaods.UserListByStructureResponse; +import io.gmss.infocad.paylaods.UserResponse; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; + +public interface UserService { + + User createUser(User user, boolean resetPassword); + JwtAuthenticationResponse loginUser(Login login); + User updateUser(Long id, User user); + + void updatePassword(String username, String pwd); + void deleteUser(Long id); + Page getUserList(Pageable pageable); + List getUserList(); + List getAllUserListResponse(); + List getActivatedUserListByStructure(Long structureId); + List getUserUnActivatedListByStructure(Long StructureId); + long countUser(); + User getUserById(Long id); + + User getUserByUsername(String username); + + User activateOrNotUser(Long id); + + User resetPassword(String username, String password); + + User assignStructureToUser(Structure structure); + + User validateUserAccount(String username, UserRole userRole); + + UserListByStructureResponse getListUserByStructure(Long structureId); + List getListUserResponseByStructure(Long structureId); + + UserResponse getUserResponseFromUser(User user); + + List getUserByProfil(UserRole userRole); + +} diff --git a/src/main/java/io/gmss/infocad/paylaods/ApiResponse.java b/src/main/java/io/gmss/infocad/paylaods/ApiResponse.java new file mode 100755 index 0000000..f7488f9 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/ApiResponse.java @@ -0,0 +1,26 @@ +package io.gmss.infocad.paylaods; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ApiResponse { + private boolean success; + private T object; + private String message; + + + public ApiResponse(boolean success, String message) { + this.success = success; + this.message = message; + } + + public ApiResponse(boolean success, T object) { + this.success = success; + this.object = object; + } + +} diff --git a/src/main/java/io/gmss/infocad/paylaods/Critere.java b/src/main/java/io/gmss/infocad/paylaods/Critere.java new file mode 100755 index 0000000..4dfaa8c --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/Critere.java @@ -0,0 +1,20 @@ +package io.gmss.infocad.paylaods; + + +import io.gmss.infocad.enums.StatusEnquete; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Critere { + + private String search; + private StatusEnquete status; + private Date startDate; + private Date endDate; +} diff --git a/src/main/java/io/gmss/infocad/paylaods/DemandeReinitialisationMPResponse.java b/src/main/java/io/gmss/infocad/paylaods/DemandeReinitialisationMPResponse.java new file mode 100644 index 0000000..9b0b1c5 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/DemandeReinitialisationMPResponse.java @@ -0,0 +1,14 @@ +package io.gmss.infocad.paylaods; + +import io.gmss.infocad.enums.EtatDemande; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +@AllArgsConstructor +@Data +public class DemandeReinitialisationMPResponse { + private UserResponse userResponse; + private EtatDemande etatDemande; +} diff --git a/src/main/java/io/gmss/infocad/paylaods/EmailDetails.java b/src/main/java/io/gmss/infocad/paylaods/EmailDetails.java new file mode 100644 index 0000000..ff21e1b --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/EmailDetails.java @@ -0,0 +1,23 @@ +package io.gmss.infocad.paylaods; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class EmailDetails { + private String recipient; + private String resetLink; + private String firstName; + private String subject; + private String attachment; + + public EmailDetails(String recipient, String resetLink, String firstName, String subject) { + this.recipient = recipient; + this.resetLink = resetLink; + this.firstName = firstName; + this.subject = subject; + } +} diff --git a/src/main/java/io/gmss/infocad/paylaods/JwtAuthenticationResponse.java b/src/main/java/io/gmss/infocad/paylaods/JwtAuthenticationResponse.java new file mode 100755 index 0000000..00ff47a --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/JwtAuthenticationResponse.java @@ -0,0 +1,58 @@ +package io.gmss.infocad.paylaods; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonFormat; + +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import java.util.Date; + +@JsonAutoDetect +public class JwtAuthenticationResponse { + + private String token; + private String tokenType = "Bearer"; + @Temporal(value = TemporalType.TIMESTAMP) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm a z") + private Date expiryToken; + + public JwtAuthenticationResponse(String token, Date expiryToken) { + super(); + this.token = token; + this.expiryToken = expiryToken; + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } + + public String getTokenType() { + return tokenType; + } + + public void setTokenType(String tokenType) { + this.tokenType = tokenType; + } + + /** + * @return the expiryToken + */ + @JsonFormat(shape = JsonFormat.Shape.NUMBER) + public Date getExpiryToken() { + return expiryToken; + } + + /** + * @param expiryToken the expiryToken to set + */ + public void setExpiryToken(Date expiryToken) { + this.expiryToken = expiryToken; + } + + + +} diff --git a/src/main/java/io/gmss/infocad/paylaods/Login.java b/src/main/java/io/gmss/infocad/paylaods/Login.java new file mode 100755 index 0000000..216ed08 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/Login.java @@ -0,0 +1,13 @@ +package io.gmss.infocad.paylaods; + +import io.gmss.infocad.enums.UserRole; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +public class Login { + private String username; + private String password; + private UserRole userRole; +} diff --git a/src/main/java/io/gmss/infocad/paylaods/StatusResponse.java b/src/main/java/io/gmss/infocad/paylaods/StatusResponse.java new file mode 100755 index 0000000..7f5edc4 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/StatusResponse.java @@ -0,0 +1,14 @@ +package io.gmss.infocad.paylaods; + +import io.gmss.infocad.enums.StatusEnquete; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class StatusResponse { + + private StatusEnquete status; +} diff --git a/src/main/java/io/gmss/infocad/paylaods/UserListByStructureResponse.java b/src/main/java/io/gmss/infocad/paylaods/UserListByStructureResponse.java new file mode 100644 index 0000000..2987d9f --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/UserListByStructureResponse.java @@ -0,0 +1,18 @@ +package io.gmss.infocad.paylaods; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Data +@Getter +@Setter +@AllArgsConstructor +public class UserListByStructureResponse { + + private List activatedUsers; + private List unActivatedUsers; +} diff --git a/src/main/java/io/gmss/infocad/paylaods/UserRequest.java b/src/main/java/io/gmss/infocad/paylaods/UserRequest.java new file mode 100644 index 0000000..56ecad1 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/UserRequest.java @@ -0,0 +1,17 @@ +package io.gmss.infocad.paylaods; + +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +public class UserRequest { + + private String nom; + private String prenom; + private String telephone; + private String email; + private String password; + private Long structureId; + +} diff --git a/src/main/java/io/gmss/infocad/paylaods/UserResponse.java b/src/main/java/io/gmss/infocad/paylaods/UserResponse.java new file mode 100644 index 0000000..6f27a1a --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/UserResponse.java @@ -0,0 +1,26 @@ +package io.gmss.infocad.paylaods; + +import io.gmss.infocad.entities.infocad.parametre.Structure; +import io.gmss.infocad.entities.user.Role; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Set; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class UserResponse { + private Long id; + private String nom; + private String prenom; + private String tel; + private String email; + private String username; + private boolean active; + private boolean resetPassword; + private Set roles; + private Structure structure; + +} diff --git a/src/main/java/io/gmss/infocad/paylaods/request/ActeurConcernePayLoad.java b/src/main/java/io/gmss/infocad/paylaods/request/ActeurConcernePayLoad.java new file mode 100644 index 0000000..9781e69 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/request/ActeurConcernePayLoad.java @@ -0,0 +1,35 @@ +package io.gmss.infocad.paylaods.request; + +import io.gmss.infocad.enums.RoleActeur; +import io.gmss.infocad.enums.TypeDroit; +import lombok.Data; +import org.hibernate.annotations.ColumnDefault; + +import javax.persistence.EnumType; +import javax.persistence.Enumerated; + +@Data +public class ActeurConcernePayLoad { + private Long idBackend; + private Long externalKey; + private float part; + @Enumerated(EnumType.STRING) + private TypeDroit typeDroit; + private Long enqueteId; + private Long positionRepresentationId; + private Long PersonneId; + private Long typeRepresentationId; + private Long typeContestationId; + @Enumerated(EnumType.STRING) + private RoleActeur roleActeur; + private boolean synchronise; + private String observation; + private Long terminalId; + //////////////////////////////////// + private Long blocId; + @ColumnDefault("0") + private int haveDeclarant ; + private Long max_numero_acteur_concerne_id ; + +} + diff --git a/src/main/java/io/gmss/infocad/paylaods/request/CommentaireRequest.java b/src/main/java/io/gmss/infocad/paylaods/request/CommentaireRequest.java new file mode 100644 index 0000000..c86fa51 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/request/CommentaireRequest.java @@ -0,0 +1,16 @@ +package io.gmss.infocad.paylaods.request; + +import io.gmss.infocad.enums.Origine; +import lombok.Data; + +@Data +public class CommentaireRequest { + private Origine origine; + private boolean lu; + private boolean synchronise; + private Long idEnquete; + private Long terminalId; + + public CommentaireRequest() { + } +} diff --git a/src/main/java/io/gmss/infocad/paylaods/request/EnqueteAllDataPayload.java b/src/main/java/io/gmss/infocad/paylaods/request/EnqueteAllDataPayload.java new file mode 100644 index 0000000..340467b --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/request/EnqueteAllDataPayload.java @@ -0,0 +1,15 @@ +package io.gmss.infocad.paylaods.request; + +import lombok.Data; + +import java.util.List; +@Data +public class EnqueteAllDataPayload { + private List personnes; + private List membreGroupes; + private List parcelle; + private List enquetes; + private List acteurConcernes; + private List pieces; +} + diff --git a/src/main/java/io/gmss/infocad/paylaods/request/EnquetePayLoad.java b/src/main/java/io/gmss/infocad/paylaods/request/EnquetePayLoad.java new file mode 100644 index 0000000..7f58dfd --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/request/EnquetePayLoad.java @@ -0,0 +1,37 @@ +package io.gmss.infocad.paylaods.request; + +import io.gmss.infocad.enums.StatusEnquete; +import lombok.Data; + +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import java.time.LocalDate; +@Data +public class EnquetePayLoad { + private Long idBackend; + private Long externalKey; + private LocalDate dateEnquete; + private LocalDate dateFinalisation; + private boolean litige; + private Long userId; + private Long parcelleId; + private Long blocId; + @Enumerated(EnumType.STRING) + private StatusEnquete statusEnquete; + private String descriptionMotifRejet; + private String observationParticuliere; + private String observation; + private boolean synchronise; + private Long terminalId; + ////////////////// + private Long quartierId; + private Long arrondissementId; + private Long communeId; + private Long departementId; + private Long numeroProvisoir; + private String codeParcelle; + private String nomProprietaireParcelle; + private String codeEquipe; + private String numeroTitreFoncier; + +} diff --git a/src/main/java/io/gmss/infocad/paylaods/request/EnqueteTraitementPayLoad.java b/src/main/java/io/gmss/infocad/paylaods/request/EnqueteTraitementPayLoad.java new file mode 100644 index 0000000..430a5fd --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/request/EnqueteTraitementPayLoad.java @@ -0,0 +1,10 @@ +package io.gmss.infocad.paylaods.request; + +import lombok.Data; + +@Data +public class EnqueteTraitementPayLoad { + private Long idBackend; + private String motifRejet; +} + diff --git a/src/main/java/io/gmss/infocad/paylaods/request/FiltreEnquetePayLoad.java b/src/main/java/io/gmss/infocad/paylaods/request/FiltreEnquetePayLoad.java new file mode 100644 index 0000000..be3cfaf --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/request/FiltreEnquetePayLoad.java @@ -0,0 +1,21 @@ +package io.gmss.infocad.paylaods.request; + +import lombok.Data; + +@Data +public class FiltreEnquetePayLoad { + private Long structureId; + private Long parcelleId; + private Long communeId; + private Long arrondissementId; + private Long blocId; + private Long natureDomaneId; + private Long typeDomaineId; + private Long typePersonneId; + private String nomPersonne; + private String prenomPersonne; + private String enqueteurId; + private Boolean litige; + +} + diff --git a/src/main/java/io/gmss/infocad/paylaods/request/MembreGroupePayLoad.java b/src/main/java/io/gmss/infocad/paylaods/request/MembreGroupePayLoad.java new file mode 100644 index 0000000..312e8b4 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/request/MembreGroupePayLoad.java @@ -0,0 +1,22 @@ +package io.gmss.infocad.paylaods.request; + +import lombok.Data; + +@Data +public class MembreGroupePayLoad { + private Long idBackend; + private Long externalKey; + private Long personneRepresentanteId; //secondaire + private Long personneRepresenteeId; + private Long positionRepresentationId; + private Long typeRepresentationId; + private String observation; + private boolean synchronise; + private Long terminalId; + ///////////////// + private Long max_numero_piece_id; + private Long max_numero_acteur_concerne_id; + private Long enqueteId; + private Long blocId; + +} diff --git a/src/main/java/io/gmss/infocad/paylaods/request/ParcellePayLoad.java b/src/main/java/io/gmss/infocad/paylaods/request/ParcellePayLoad.java new file mode 100644 index 0000000..1ca58a7 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/request/ParcellePayLoad.java @@ -0,0 +1,31 @@ +package io.gmss.infocad.paylaods.request; + +import lombok.Data; +@Data +public class ParcellePayLoad { + private Long idBackend; + private Long externalKey; + private String q; + private String nup; + private String nupProvisoire; + private String longitude; + private String latitude; + private Long situationGeographiqueId; + private Long natureDomaineId; + private Long quartierId; + private String i; + private String p; + private boolean synchronise; + private String observation; + private Long terminalId; + private String numTitreFoncier; + + ///////////////////////////////// + private Long typeDomaineId; + private Long numeroProvisoire; + private Long blocId; + private String situationGeographique; + + // private int geomSrid; + +} diff --git a/src/main/java/io/gmss/infocad/paylaods/request/PersonnePayLoad.java b/src/main/java/io/gmss/infocad/paylaods/request/PersonnePayLoad.java new file mode 100644 index 0000000..2015ade --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/request/PersonnePayLoad.java @@ -0,0 +1,77 @@ +package io.gmss.infocad.paylaods.request; + +import io.gmss.infocad.enums.Categorie; +import lombok.Data; +import org.hibernate.annotations.ColumnDefault; + +import javax.persistence.EnumType; +import javax.persistence.Enumerated; + +@Data +public class PersonnePayLoad { + private Long idBackend; + private String ifu; + private Long externalKey; + private String nomOuSigle; + private String prenomOuRaisonSociale; + private String numRavip; + private String npi; + private String dateNaissanceOuConsti; + private String lieuNaissance; + private String tel1; + private String tel2; + private String adresse; + @Enumerated(EnumType.STRING) + private Categorie categorie; + private Long situationMatrimonialeId; + private Long nationaliteId; + private Long typePersonneId; + private Long professionId; + private Long communeId; + private String observation; + private boolean synchronise; + private Long terminalId; + + ///////////////////////////// + @ColumnDefault("0") + private int haveRepresentant; + private String ravipQuestion; + private String age; + private String nomJeuneFille; + private String nomMere; + private String prenomMere; + private String indicatifTel1; + private String indicatifTel2; + private String sexe; + @ColumnDefault("0") + private int mustHaveRepresentant; + private String filePath; + + + @Override + public String toString() { + return "PersonnePayLoad{" + + "idBackend=" + idBackend + + ", ifu='" + ifu + '\'' + + ", externalKey=" + externalKey + + ", nomOuSigle='" + nomOuSigle + '\'' + + ", prenomOuRaisonSociale='" + prenomOuRaisonSociale + '\'' + + ", numRavip='" + numRavip + '\'' + + ", npi='" + npi + '\'' + + ", dateNaissanceOuConsti='" + dateNaissanceOuConsti + '\'' + + ", lieuNaissance='" + lieuNaissance + '\'' + + ", tel1='" + tel1 + '\'' + + ", tel2='" + tel2 + '\'' + + ", adresse='" + adresse + '\'' + + ", categorie=" + categorie + + ", situationMatrimonialeId=" + situationMatrimonialeId + + ", nationaliteId=" + nationaliteId + + ", typePersonneId=" + typePersonneId + + ", professionId=" + professionId + + ", communeId=" + communeId + + ", Observation='" + observation + '\'' + + ", synchronise=" + synchronise + + ", terminalId=" + terminalId + + '}'; + } +} diff --git a/src/main/java/io/gmss/infocad/paylaods/request/PiecePayLoad.java b/src/main/java/io/gmss/infocad/paylaods/request/PiecePayLoad.java new file mode 100644 index 0000000..dc0e546 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/request/PiecePayLoad.java @@ -0,0 +1,30 @@ +package io.gmss.infocad.paylaods.request; + +import lombok.Data; + +import java.time.LocalDate; + +@Data +public class PiecePayLoad { + private Long idBackend; + private Long externalKey; + private LocalDate dateExpiration; + private String numeroPiece; + private String url; + private Long typePieceId; + private Long personneId; + private Long acteurConcerneId; + private Long membreGroupeId; + private Long sourceDroitId; + private Long modeAcquisitionId; + private boolean synchronise; + private String observation; + private Long terminalId; + //////////////////////////////// + private Long max_numero_piece_id; + private Long max_numero_acteur_concerne_id; + private Long enqueteId; + private Long blocId; + +} + diff --git a/src/main/java/io/gmss/infocad/paylaods/request/SyncCommentaireRequest.java b/src/main/java/io/gmss/infocad/paylaods/request/SyncCommentaireRequest.java new file mode 100644 index 0000000..2516bfb --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/request/SyncCommentaireRequest.java @@ -0,0 +1,13 @@ +package io.gmss.infocad.paylaods.request; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class SyncCommentaireRequest { + private Long idBackend; + private Long externalKey; +} diff --git a/src/main/java/io/gmss/infocad/paylaods/request/UploadPayLoad.java b/src/main/java/io/gmss/infocad/paylaods/request/UploadPayLoad.java new file mode 100644 index 0000000..8f2d618 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/request/UploadPayLoad.java @@ -0,0 +1,27 @@ +package io.gmss.infocad.paylaods.request; + +import lombok.Data; +import org.springframework.web.multipart.MultipartFile; + +@Data +public class UploadPayLoad { + private Long idBackend; + private Long externalKey; + private Long pieceId; + private String Observation; + private boolean synchronise; + private MultipartFile file; + private String fileBase64; + private Long membreGroupeId; + private Long terminalId; + ///////////////////////////////// + private String name; + private String filePath; + private Long max_numero_piece_id; + private Long max_numero_upload_id; + private Long max_numero_acteur_concerne_id; + private Long enqueteId; + private Long blocId; + +} + diff --git a/src/main/java/io/gmss/infocad/paylaods/response/ArrondissementEnqResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/ArrondissementEnqResponse.java new file mode 100644 index 0000000..7f8d7ac --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/ArrondissementEnqResponse.java @@ -0,0 +1,9 @@ +package io.gmss.infocad.paylaods.response; + +public interface ArrondissementEnqResponse { + public Long getId(); + public String getCode(); + public String getLibelle(); + public Long getCommuneId(); + public Long getNombreEnquete(); +} diff --git a/src/main/java/io/gmss/infocad/paylaods/response/ArrondissementSyncResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/ArrondissementSyncResponse.java new file mode 100644 index 0000000..71af1cb --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/ArrondissementSyncResponse.java @@ -0,0 +1,8 @@ +package io.gmss.infocad.paylaods.response; + +public interface ArrondissementSyncResponse { + public Long getId(); + public String getCode(); + public String getNom(); + public Long getCommuneId(); +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/paylaods/response/BlocEnqResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/BlocEnqResponse.java new file mode 100644 index 0000000..f59d123 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/BlocEnqResponse.java @@ -0,0 +1,10 @@ +package io.gmss.infocad.paylaods.response; + +public interface BlocEnqResponse { + public Long getId(); + public String getCote(); + public String getLibelle(); + public Long getArrondissementId(); + public Long getnombreEnquete(); + +} diff --git a/src/main/java/io/gmss/infocad/paylaods/response/BlocSyncResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/BlocSyncResponse.java new file mode 100644 index 0000000..350a718 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/BlocSyncResponse.java @@ -0,0 +1,8 @@ +package io.gmss.infocad.paylaods.response; + +public interface BlocSyncResponse { + public Long getId(); + public String getCote(); + public String getNom(); + public Long getArrondissementId(); +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/paylaods/response/CommentaireResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/CommentaireResponse.java new file mode 100644 index 0000000..9a1452a --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/CommentaireResponse.java @@ -0,0 +1,13 @@ +package io.gmss.infocad.paylaods.response; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class CommentaireResponse { + private Long idBackend; + private Long externalKey; +} diff --git a/src/main/java/io/gmss/infocad/paylaods/response/CommuneEnqResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/CommuneEnqResponse.java new file mode 100644 index 0000000..18d2839 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/CommuneEnqResponse.java @@ -0,0 +1,9 @@ +package io.gmss.infocad.paylaods.response; + +public interface CommuneEnqResponse { + public Long getId(); + public String getCode(); + public String getLibelle(); + public Long getNombreEnquete(); +} + diff --git a/src/main/java/io/gmss/infocad/paylaods/response/CommuneSyncResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/CommuneSyncResponse.java new file mode 100644 index 0000000..af3d5e0 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/CommuneSyncResponse.java @@ -0,0 +1,8 @@ +package io.gmss.infocad.paylaods.response; + +public interface CommuneSyncResponse { + public Long getId(); + public String getCode(); + public String getNom(); + public Long getDepartementId(); +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/paylaods/response/DepartementEnqResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/DepartementEnqResponse.java new file mode 100644 index 0000000..caadff6 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/DepartementEnqResponse.java @@ -0,0 +1,8 @@ +package io.gmss.infocad.paylaods.response; + +public interface DepartementEnqResponse { + public Long getId(); + public String getCode(); + public String getNom(); +} + diff --git a/src/main/java/io/gmss/infocad/paylaods/response/DepartementSyncResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/DepartementSyncResponse.java new file mode 100644 index 0000000..56b5028 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/DepartementSyncResponse.java @@ -0,0 +1,7 @@ +package io.gmss.infocad.paylaods.response; + +public interface DepartementSyncResponse { + public Long getId(); + public String getCode(); + public String getNom(); +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/paylaods/response/EnqueteNonSyncResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/EnqueteNonSyncResponse.java new file mode 100644 index 0000000..cb52d38 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/EnqueteNonSyncResponse.java @@ -0,0 +1,13 @@ +package io.gmss.infocad.paylaods.response; + +import io.gmss.infocad.enums.StatusEnquete; + + +public interface EnqueteNonSyncResponse { + public Long getIdBackend(); + public Long getExternalKey(); + public StatusEnquete getStatusEnquete(); + public String getMotif(); + public Long getTerminalId(); +} + diff --git a/src/main/java/io/gmss/infocad/paylaods/response/EnquetePayLoadResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/EnquetePayLoadResponse.java new file mode 100644 index 0000000..a80c972 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/EnquetePayLoadResponse.java @@ -0,0 +1,9 @@ +package io.gmss.infocad.paylaods.response; + +import io.gmss.infocad.entities.infocad.metier.Enquete; + +public class EnquetePayLoadResponse { + private Enquete enquete; + +} + diff --git a/src/main/java/io/gmss/infocad/paylaods/response/EnqueteResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/EnqueteResponse.java new file mode 100644 index 0000000..4f72528 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/EnqueteResponse.java @@ -0,0 +1,40 @@ +package io.gmss.infocad.paylaods.response; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import io.gmss.infocad.deserializer.LocalDateDeserializer; + +import java.time.LocalDate; + + +public interface EnqueteResponse { + public Long getId(); + public String getParcelleId(); + public Long getCommuneId(); + public String getCommuneNom(); + public Long getArrondissementId(); + public String getArrondissementNom(); + public Long getBlocId(); + public String getBlocNom(); + public Long getStructureId(); + public String getStructureNom(); + public boolean getLitige(); + public String getStatusEnquete(); + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + public LocalDate getDateFinalisation(); + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + public LocalDate getDateValidation(); + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + public LocalDate getDateSynchronisation(); + public String getNomSigle(); + public String getPrenomRaisonSociale(); + public String getTypePersonne(); + public String getTypeDomaine(); + public String getNatureDomaine(); + public String getNupProvisoire(); + public Long getTerminalId(); + +} diff --git a/src/main/java/io/gmss/infocad/paylaods/response/FicheEnqueteResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/FicheEnqueteResponse.java new file mode 100644 index 0000000..8730a6f --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/FicheEnqueteResponse.java @@ -0,0 +1,14 @@ +package io.gmss.infocad.paylaods.response; + +import io.gmss.infocad.entities.infocad.metier.ActeurConcerne; +import io.gmss.infocad.entities.infocad.metier.Enquete; +import lombok.Data; + +import java.util.List; + +@Data +public class FicheEnqueteResponse { + private Enquete enquete ; + private List acteurConcernes; +} + diff --git a/src/main/java/io/gmss/infocad/paylaods/response/GenericIDResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/GenericIDResponse.java new file mode 100644 index 0000000..185fa23 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/GenericIDResponse.java @@ -0,0 +1,5 @@ +package io.gmss.infocad.paylaods.response; + +public interface GenericIDResponse { + public Long getId(); +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/paylaods/response/ModesAcquisitionSourceSyncResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/ModesAcquisitionSourceSyncResponse.java new file mode 100644 index 0000000..97a1146 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/ModesAcquisitionSourceSyncResponse.java @@ -0,0 +1,8 @@ +package io.gmss.infocad.paylaods.response; + +public interface ModesAcquisitionSourceSyncResponse { + public Long getId(); + public String getLibelle(); + public Long getSourceId(); +} + diff --git a/src/main/java/io/gmss/infocad/paylaods/response/ModesAcquisitionTypePersonneSyncResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/ModesAcquisitionTypePersonneSyncResponse.java new file mode 100644 index 0000000..53d6e64 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/ModesAcquisitionTypePersonneSyncResponse.java @@ -0,0 +1,7 @@ +package io.gmss.infocad.paylaods.response; + +public interface ModesAcquisitionTypePersonneSyncResponse { + public Long getId(); + public String getLibelle(); + public Long getTypePersonneId(); +} diff --git a/src/main/java/io/gmss/infocad/paylaods/response/NatureDomaineSyncResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/NatureDomaineSyncResponse.java new file mode 100644 index 0000000..4302a68 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/NatureDomaineSyncResponse.java @@ -0,0 +1,9 @@ +package io.gmss.infocad.paylaods.response; + +public interface NatureDomaineSyncResponse { + public Long getId(); + public String getLibelle(); + + public Long getTypeDomaineId(); + +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/paylaods/response/QuartierSyncResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/QuartierSyncResponse.java new file mode 100644 index 0000000..65009bc --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/QuartierSyncResponse.java @@ -0,0 +1,8 @@ +package io.gmss.infocad.paylaods.response; + +public interface QuartierSyncResponse { + public Long getId(); + public String getCode(); + public String getNom(); + public Long getArrondissementId(); +} diff --git a/src/main/java/io/gmss/infocad/paylaods/response/ReferencesSyncResponses.java b/src/main/java/io/gmss/infocad/paylaods/response/ReferencesSyncResponses.java new file mode 100644 index 0000000..06925fc --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/ReferencesSyncResponses.java @@ -0,0 +1,30 @@ +package io.gmss.infocad.paylaods.response; + +import io.gmss.infocad.entities.decoupage.Nationalite; +import io.gmss.infocad.entities.infocad.parametre.*; +import io.gmss.infocad.entities.rfu.parametre.Caracteristique; +import io.gmss.infocad.entities.rfu.parametre.TypeCaracteristique; +import lombok.Data; + +import java.util.List; +@Data +public class ReferencesSyncResponses { + List typeRepresentationSyncResponses ; + List typePieceSyncResponses ; + List typePersonneSyncResponses ; + List typeDomaineSyncResponses ; + List typeContestationSyncResponses ; + List sourceDroitSyncResponses ; + List situationMatrimonialeSyncResponses ; + List professionSyncResponses ; + List positionRepresentationSyncResponses ; + List natureDomaineSyncResponses ; + List nationaliteSyncResponses ; + List modeAcquisitionSyncResponses ; + List situationSyncGeographiques ; + List modesAcquisitionSourceSyncResponses; + List typePersonneNatureDomaineSyncResponses; + List modesAcquisitionTypePersonneSyncResponses; + List caracteristiquesSyncResponses; + List typeCaracteristiquesSyncResponses; +} diff --git a/src/main/java/io/gmss/infocad/paylaods/response/SourceDroitsSyncResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/SourceDroitsSyncResponse.java new file mode 100644 index 0000000..82c7f31 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/SourceDroitsSyncResponse.java @@ -0,0 +1,12 @@ +package io.gmss.infocad.paylaods.response; + +public interface SourceDroitsSyncResponse { + public Long getId(); + public String getLibelle(); + public boolean isTitreFoncier(); + public String getTypeChamp(); + public int getTailleChampMin(); + public int getTailleChampMax(); + public boolean getTemoin(); +} + diff --git a/src/main/java/io/gmss/infocad/paylaods/response/StatEnqueteAdminDecoupageResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/StatEnqueteAdminDecoupageResponse.java new file mode 100644 index 0000000..434982b --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/StatEnqueteAdminDecoupageResponse.java @@ -0,0 +1,9 @@ +package io.gmss.infocad.paylaods.response; + +public interface StatEnqueteAdminDecoupageResponse { + public String getArrondissement(); + public Long getTotal(); + public Long getValide(); + public Long getRejet(); + public Long getSynchronise(); +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/paylaods/response/StatEnqueteAdminStructureResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/StatEnqueteAdminStructureResponse.java new file mode 100644 index 0000000..6e7777e --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/StatEnqueteAdminStructureResponse.java @@ -0,0 +1,9 @@ +package io.gmss.infocad.paylaods.response; + +public interface StatEnqueteAdminStructureResponse { + public String getStructure(); + public Long getTotal(); + public Long getValide(); + public Long getRejet(); + public Long getSynchronise(); +} diff --git a/src/main/java/io/gmss/infocad/paylaods/response/StatEnqueteParBlocResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/StatEnqueteParBlocResponse.java new file mode 100644 index 0000000..c956c3d --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/StatEnqueteParBlocResponse.java @@ -0,0 +1,8 @@ +package io.gmss.infocad.paylaods.response; + +public interface StatEnqueteParBlocResponse { + public String getBloc(); + public Long getValide(); + public Long getRejet(); + public Long getSynchronise(); +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/paylaods/response/StatEnqueteParStatutResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/StatEnqueteParStatutResponse.java new file mode 100644 index 0000000..3afac5b --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/StatEnqueteParStatutResponse.java @@ -0,0 +1,6 @@ +package io.gmss.infocad.paylaods.response; + +public interface StatEnqueteParStatutResponse { + public String getStatutEnquete(); + public Long getNombre(); +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/paylaods/response/StructureResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/StructureResponse.java new file mode 100644 index 0000000..8fdd7ca --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/StructureResponse.java @@ -0,0 +1,11 @@ +package io.gmss.infocad.paylaods.response; + +public interface StructureResponse { + public Long getId(); + public String getCode(); + public String getNom(); + public String getRccm(); + public String getTel(); + public String getEmail(); + public String getAdresse(); +} diff --git a/src/main/java/io/gmss/infocad/paylaods/response/SyncEnqueteAllDataResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/SyncEnqueteAllDataResponse.java new file mode 100644 index 0000000..4ff3f3a --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/SyncEnqueteAllDataResponse.java @@ -0,0 +1,16 @@ +package io.gmss.infocad.paylaods.response; + +import lombok.Data; + +import java.util.List; + +@Data +public class SyncEnqueteAllDataResponse { + private List personneSynResponses; + private List membreGroupeSynResponses; + private List parcelleSynResponses; + private List enqueteSynResponses; + private List acteurConcerneSynResponses; + private List pieceSynResponses; +} + diff --git a/src/main/java/io/gmss/infocad/paylaods/response/SyncResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/SyncResponse.java new file mode 100644 index 0000000..87e5a2a --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/SyncResponse.java @@ -0,0 +1,31 @@ +package io.gmss.infocad.paylaods.response; + +import lombok.Data; + +@Data +public class SyncResponse { + private Long idBackend; + private Long externalKey; + private boolean synchronise; + private String observation; + public SyncResponse(Long idBackend, Long externalKey, boolean synchronise, String observation) { + this.idBackend = idBackend; + this.externalKey = externalKey; + this.synchronise = synchronise; + this.observation = observation; + } + public SyncResponse() { + } + + @Override + public String toString() { + return "SyncResponse{" + + "idBackend=" + idBackend + + ", externalKey=" + externalKey + + ", synchronise=" + synchronise + + ", observation='" + observation + '\'' + + '}'; + } + +} + diff --git a/src/main/java/io/gmss/infocad/paylaods/response/TypePersonneNatureDomaineSyncResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/TypePersonneNatureDomaineSyncResponse.java new file mode 100644 index 0000000..5fbc8da --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/TypePersonneNatureDomaineSyncResponse.java @@ -0,0 +1,10 @@ + +package io.gmss.infocad.paylaods.response; + +public interface TypePersonneNatureDomaineSyncResponse { + public Long getId(); + public String getLibelle(); + public String isGroupeOuvert(); + public Long getNatureDomaineId(); + public Long getTypeContestationId(); +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/paylaods/response/UserDecoupageEnqResponses.java b/src/main/java/io/gmss/infocad/paylaods/response/UserDecoupageEnqResponses.java new file mode 100644 index 0000000..e091269 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/UserDecoupageEnqResponses.java @@ -0,0 +1,14 @@ +package io.gmss.infocad.paylaods.response; + +import lombok.Data; + +import java.util.List; + +@Data +public class UserDecoupageEnqResponses { + //public List departementEnqResponses; + public List communes; + public List arrondissements; + public List blocs; +} + diff --git a/src/main/java/io/gmss/infocad/paylaods/response/UserDecoupageSyncResponses.java b/src/main/java/io/gmss/infocad/paylaods/response/UserDecoupageSyncResponses.java new file mode 100644 index 0000000..30f6e8e --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/UserDecoupageSyncResponses.java @@ -0,0 +1,14 @@ + +package io.gmss.infocad.paylaods.response; + +import lombok.Data; + +import java.util.List; +@Data +public class UserDecoupageSyncResponses { + public List departementSyncResponses; + public List communeSyncResponses; + public List arrondissementSyncResponses; + public List quartierSyncResponses; + public List blocSyncResponses; +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/paylaods/response/report/BlocsParStructureResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/report/BlocsParStructureResponse.java new file mode 100644 index 0000000..4bb2559 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/report/BlocsParStructureResponse.java @@ -0,0 +1,9 @@ +package io.gmss.infocad.paylaods.response.report; + +public interface BlocsParStructureResponse { + public String getCode(); + public String getNom(); + public String getArrondissement(); + public String getCommune(); + public String getDepartement(); +} diff --git a/src/main/java/io/gmss/infocad/paylaods/response/report/EnqueteParBlocResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/report/EnqueteParBlocResponse.java new file mode 100644 index 0000000..af949d3 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/report/EnqueteParBlocResponse.java @@ -0,0 +1,13 @@ +package io.gmss.infocad.paylaods.response.report; + +public interface EnqueteParBlocResponse { + public String getNupProvisoire(); + public String getQuartier(); + public String getQ(); + public String getI(); + public String getP(); + public boolean getLitige(); + public String getNature(); + public String getNomProprietaire(); + public String getTelephone(); +} diff --git a/src/main/java/io/gmss/infocad/paylaods/response/report/ZoneInterventionParStructureResponse.java b/src/main/java/io/gmss/infocad/paylaods/response/report/ZoneInterventionParStructureResponse.java new file mode 100644 index 0000000..b17886f --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/report/ZoneInterventionParStructureResponse.java @@ -0,0 +1,8 @@ +package io.gmss.infocad.paylaods.response.report; + +public interface ZoneInterventionParStructureResponse { + public String getDepartement(); + public String getCommune(); + public String getArrondissement(); + public String getQuartier(); +} diff --git a/src/main/java/io/gmss/infocad/paylaods/response/restoration/ActeurConcernePayLoad.java b/src/main/java/io/gmss/infocad/paylaods/response/restoration/ActeurConcernePayLoad.java new file mode 100644 index 0000000..57da3f5 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/restoration/ActeurConcernePayLoad.java @@ -0,0 +1,30 @@ +package io.gmss.infocad.paylaods.response.restoration; + +import io.gmss.infocad.enums.RoleActeur; +import io.gmss.infocad.enums.TypeDroit; + +import javax.persistence.EnumType; +import javax.persistence.Enumerated; + + +public interface ActeurConcernePayLoad { + public Long getIdBackend(); + public Long getExternalKey(); + public float getPart(); + @Enumerated(EnumType.STRING) + public TypeDroit getTypeDroit(); + public Long getEnqueteId(); + public Long getPositionRepresentationId(); + public Long getPersonneId(); + public Long getTypeRepresentationId(); + public Long getTypeContestationId(); + @Enumerated(EnumType.STRING) + public RoleActeur getRoleActeur(); + public boolean getSynchronise(); + public String getObservation(); + public Long getTerminalId(); + public Long getBlocId(); + public int getHaveDeclarant() ; + public Long getMax_numero_acteur_concerne_id(); + +} 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 new file mode 100644 index 0000000..2a1cbe5 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/restoration/EnquetePayLoad.java @@ -0,0 +1,42 @@ +package io.gmss.infocad.paylaods.response.restoration; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import io.gmss.infocad.deserializer.LocalDateDeserializer; +import io.gmss.infocad.enums.StatusEnquete; + +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import java.time.LocalDate; + +public interface EnquetePayLoad { + public Long getIdBackend(); + public Long getExternalKey(); + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + public LocalDate getDateEnquete(); + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + public LocalDate getDateFinalisation(); + public boolean getLitige(); + public Long getUserId(); + public Long getParcelleId(); + public Long getBlocId(); + @Enumerated(EnumType.STRING) + public StatusEnquete getStatusEnquete(); + public String getDescriptionMotifRejet(); + public String getObservationParticuliere(); + public String getObservation(); + public boolean getSynchronise(); + public Long getTerminalId(); + public Long getQuartierId(); + public Long getArrondissementId(); + public Long getCommuneId(); + public Long getDepartementId(); + public Long getNumeroProvisoir(); + public String getCodeParcelle(); + public String getNomProprietaireParcelle(); + public String getCodeEquipe(); + public String getNumeroTitreFoncier(); + +} diff --git a/src/main/java/io/gmss/infocad/paylaods/response/restoration/MembreGroupePayLoad.java b/src/main/java/io/gmss/infocad/paylaods/response/restoration/MembreGroupePayLoad.java new file mode 100644 index 0000000..83cfdfb --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/restoration/MembreGroupePayLoad.java @@ -0,0 +1,19 @@ + +package io.gmss.infocad.paylaods.response.restoration; + +public interface MembreGroupePayLoad { + public Long getIdBackend(); + public Long getExternalKey(); + public Long getPersonneSecondaireId(); + public Long getPersonneId(); + public Long getPositionRepresentationId(); + public Long getTypeRepresentationId(); + public String getObservation(); + public boolean getSynchronise(); + public Long getTerminalId(); + public Long getEnqueteId(); + public Long getBlocId(); + public Long getMax_numero_piece_id(); + public Long getMax_numero_acteur_concerne_id(); + +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/paylaods/response/restoration/ParcellePayLoad.java b/src/main/java/io/gmss/infocad/paylaods/response/restoration/ParcellePayLoad.java new file mode 100644 index 0000000..9215484 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/restoration/ParcellePayLoad.java @@ -0,0 +1,26 @@ +package io.gmss.infocad.paylaods.response.restoration; + +public interface ParcellePayLoad { + public Long getIdBackend(); + public Long getExternalKey(); + public String getQ(); + public String getNup(); + public String getNupProvisoire(); + public String getLongitude(); + public String getLatitude(); + public String getSituationGeographique(); + public Long getNatureDomaineId(); + public Long getQuartierId(); + public String getI(); + public String getP(); + public boolean getSynchronise(); + public String getObservation(); + public Long getTerminalId(); + public String getNumTitreFoncier(); + public Long getTypeDomaineId(); + public Long getNumeroProvisoire(); + public Long getBlocId(); + + //public int getGeomSrid(); + +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/paylaods/response/restoration/PersonnePayLoad.java b/src/main/java/io/gmss/infocad/paylaods/response/restoration/PersonnePayLoad.java new file mode 100644 index 0000000..5698adf --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/restoration/PersonnePayLoad.java @@ -0,0 +1,44 @@ +package io.gmss.infocad.paylaods.response.restoration; + +import io.gmss.infocad.enums.Categorie; + +import javax.persistence.EnumType; +import javax.persistence.Enumerated; + + +public interface PersonnePayLoad { + public Long getIdBackend(); + public String getIfu(); + public Long getExternalKey(); + public String getNomOuSigle(); + public String getPrenomOuRaisonSociale(); + public String getNumRavip(); + public String getNpi(); + public String getDateNaissanceOuConsti(); + public String getLieuNaissance(); + public String getTel1(); + public String getTel2(); + public String getAdresse(); + @Enumerated(EnumType.STRING) + public Categorie getCategorie(); + public Long getSituationMatrimonialeId(); + public Long getNationaliteId(); + public Long getTypePersonneId(); + public Long getProfessionId(); + public Long getCommuneId(); + public String getObservation(); + public boolean getSynchronise(); + public Long getTerminalId(); + public int getHaveRepresentant(); + public String getRavipQuestion(); + public String getAge(); + public String getNomJeuneFille(); + public String getNomMere(); + public String getPrenomMere(); + public String getIndicatifTel1(); + public String getIndicatifTel2(); + public String getSexe(); + public int getMustHaveRepresentant(); + public String getFilePath(); + +} diff --git a/src/main/java/io/gmss/infocad/paylaods/response/restoration/PiecePayLoad.java b/src/main/java/io/gmss/infocad/paylaods/response/restoration/PiecePayLoad.java new file mode 100644 index 0000000..0003ca6 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/restoration/PiecePayLoad.java @@ -0,0 +1,32 @@ +package io.gmss.infocad.paylaods.response.restoration; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import io.gmss.infocad.deserializer.LocalDateDeserializer; + +import java.time.LocalDate; + + +public interface PiecePayLoad { + public Long getIdBackend(); + public Long getExternalKey(); + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + public LocalDate getDateExpiration(); + public String getNumeroPiece(); + public String getUrl(); + public Long getTypePieceId(); + public Long getPersonneId(); + public Long getActeurConcerneId(); + public Long getMembreGroupeId(); + public Long getSourceDroitId(); + public Long getModeAcquisitionId(); + public boolean getSynchronise(); + public String getObservation(); + public Long getTerminalId(); + public Long getMax_numero_piece_id(); + public Long getMax_numero_acteur_concerne_id(); + public Long getEnqueteId(); + public Long getBlocId(); + +} diff --git a/src/main/java/io/gmss/infocad/paylaods/response/restoration/UploadPayLoad.java b/src/main/java/io/gmss/infocad/paylaods/response/restoration/UploadPayLoad.java new file mode 100644 index 0000000..fa486f9 --- /dev/null +++ b/src/main/java/io/gmss/infocad/paylaods/response/restoration/UploadPayLoad.java @@ -0,0 +1,23 @@ +package io.gmss.infocad.paylaods.response.restoration; + +import org.springframework.web.multipart.MultipartFile; + +public interface UploadPayLoad { + public Long getIdBackend(); + public Long getExternalKey(); + public Long getPieceId(); + public String getObservation(); + public boolean getSynchronise(); + public MultipartFile getFile(); + public Long getMembreGroupeId(); + public Long getTerminalId(); + public String getName(); + public String getFilePath(); + public Long getMax_numero_piece_id(); + public Long getMax_numero_upload_id(); + public Long getMax_numero_acteur_concerne_id(); + public Long getEnqueteId(); + public Long getBlocId(); + public String getFileBackendName(); + +} diff --git a/src/main/java/io/gmss/infocad/proprietes/FileStorageProperties.java b/src/main/java/io/gmss/infocad/proprietes/FileStorageProperties.java new file mode 100644 index 0000000..b75c396 --- /dev/null +++ b/src/main/java/io/gmss/infocad/proprietes/FileStorageProperties.java @@ -0,0 +1,17 @@ +package io.gmss.infocad.proprietes; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +@ConfigurationProperties(prefix = "file") +public class FileStorageProperties { + private String uploadDir; + + public String getUploadDir() { + return uploadDir; + } + + public void setUploadDir(String uploadDir) { + this.uploadDir = uploadDir; + } +} + diff --git a/src/main/java/io/gmss/infocad/repositories/decoupage/ArrondissementRepository.java b/src/main/java/io/gmss/infocad/repositories/decoupage/ArrondissementRepository.java new file mode 100755 index 0000000..a0b91ac --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/decoupage/ArrondissementRepository.java @@ -0,0 +1,36 @@ +package io.gmss.infocad.repositories.decoupage; + +import io.gmss.infocad.entities.decoupage.Arrondissement; +import io.gmss.infocad.entities.decoupage.Commune; +import io.gmss.infocad.paylaods.response.ArrondissementEnqResponse; +import io.gmss.infocad.paylaods.response.ArrondissementSyncResponse; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +public interface ArrondissementRepository extends JpaRepository { + List findAllByCommune(Commune commune); + + @Query(value = "select a.id,code, nom, a.commune_id as communeId from arrondissement a" + + " inner join arrondissements_structures sa on sa.arrondissement_id=a.id" + + " where a.deleted is false and sa.structure_id = ?1 ", nativeQuery = true) + List getArrondissementResponse(Long structure_id); + + @Query(value = "Select distinct T.id,T.code, T.libelle, T.communeId, sum(case when T.enqueteId is null then 0 else 1 end) as nombreEnquete " + + " From (select a.id,a.code, a.nom as libelle, a.commune_id as communeId, e.id as enqueteId from arrondissement a" + + " left join bloc b on b.arrondissement_id=a.id " + + " left join enquete e on e.bloc_id=b.id )T " + + " group by T.id,T.code, T.libelle, T.communeId ", nativeQuery = true) + List getAdminArrondissementEnqResponse(); + + + @Query(value = "Select T.id,T.code, T.libelle, T.communeId, sum(case when T.enqueteId is null then 0 else 1 end) as nombreEnquete " + + " From (select distinct a.id,a.code, a.nom as libelle, a.commune_id as communeId, e.id as enqueteId from arrondissement a" + + " inner join arrondissements_structures sa on sa.arrondissement_id=a.id " + + " left join bloc b on b.arrondissement_id=a.id " + + " left join enquete e on e.bloc_id=b.id" + + " where sa.structure_id = ?1 )T " + + " group by T.id,T.code, T.libelle, T.communeId ", nativeQuery = true) + List getArrondissementEnqResponse(Long structure_id); +} diff --git a/src/main/java/io/gmss/infocad/repositories/decoupage/CommuneRepository.java b/src/main/java/io/gmss/infocad/repositories/decoupage/CommuneRepository.java new file mode 100755 index 0000000..9bcb9fa --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/decoupage/CommuneRepository.java @@ -0,0 +1,36 @@ +package io.gmss.infocad.repositories.decoupage; + +import io.gmss.infocad.entities.decoupage.Commune; +import io.gmss.infocad.entities.decoupage.Departement; +import io.gmss.infocad.paylaods.response.CommuneEnqResponse; +import io.gmss.infocad.paylaods.response.CommuneSyncResponse; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +public interface CommuneRepository extends JpaRepository { + + @Query(value = "select id, code, nom, departement_id as departementid from commune ",nativeQuery = true) + List getCommuneResponse(); + List findAllByDepartement(Departement departement); + + @Query(value = " Select T.id,T.code, T.libelle, sum(case when T.enqueteId is null then 0 else 1 end) as nombreEnquete " + + " From (select distinct c.id as id,c.code as code, c.nom as libelle, e.id as enqueteId from arrondissement a" + + " inner join arrondissements_structures sa on sa.arrondissement_id=a.id " + + " inner join commune c on c.id= a.commune_id " + + " left join bloc b on b.arrondissement_id=a.id " + + " left join enquete e on e.bloc_id=b.id " + + " where sa.structure_id = ?1 )T" + + " group by T.id,T.code, T.libelle",nativeQuery = true) + List getCommuneEnqResponse(Long structure_id); + @Query(value = " Select T.id,T.code, T.libelle, sum(case when T.enqueteId is null then 0 else 1 end) as nombreEnquete " + + " From (select distinct c.id as id,c.code as code, c.nom as libelle, e.id as enqueteId from arrondissement a" + + " left join arrondissements_structures sa on sa.arrondissement_id=a.id " + + " left join commune c on c.id= a.commune_id " + + " left join bloc b on b.arrondissement_id=a.id " + + " left join enquete e on e.bloc_id=b.id)T " + + " group by T.id,T.code, T.libelle",nativeQuery = true) + List getAdminCommuneEnqResponse(); + +} diff --git a/src/main/java/io/gmss/infocad/repositories/decoupage/DepartementRepository.java b/src/main/java/io/gmss/infocad/repositories/decoupage/DepartementRepository.java new file mode 100755 index 0000000..9bfdae1 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/decoupage/DepartementRepository.java @@ -0,0 +1,17 @@ +package io.gmss.infocad.repositories.decoupage; + +import io.gmss.infocad.entities.decoupage.Departement; +import io.gmss.infocad.paylaods.response.DepartementSyncResponse; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + + +public interface DepartementRepository extends JpaRepository { + + @Query(value = "select id, code, nom from departement" + + " where departement.deleted is false ",nativeQuery = true) + List getDepartementResponse(); + +} diff --git a/src/main/java/io/gmss/infocad/repositories/decoupage/NationaliteRepository.java b/src/main/java/io/gmss/infocad/repositories/decoupage/NationaliteRepository.java new file mode 100755 index 0000000..c11855e --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/decoupage/NationaliteRepository.java @@ -0,0 +1,12 @@ +package io.gmss.infocad.repositories.decoupage; + +import io.gmss.infocad.entities.decoupage.Nationalite; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface NationaliteRepository extends JpaRepository { + List findAllByOrderByLibelleAsc(); + List findAllByOrderByLibelleAsc(Pageable pageable); +} diff --git a/src/main/java/io/gmss/infocad/repositories/decoupage/QuartierRepository.java b/src/main/java/io/gmss/infocad/repositories/decoupage/QuartierRepository.java new file mode 100755 index 0000000..105bc0b --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/decoupage/QuartierRepository.java @@ -0,0 +1,26 @@ +package io.gmss.infocad.repositories.decoupage; + +import io.gmss.infocad.entities.decoupage.Arrondissement; +import io.gmss.infocad.entities.decoupage.Quartier; +import io.gmss.infocad.paylaods.response.QuartierSyncResponse; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +public interface QuartierRepository extends JpaRepository { + List getAllByArrondissement(Arrondissement arrondissement); + @Query(value = "select q.id,q.code, q.nom, a.id as arrondissementid from arrondissement a " + + " left join quartier q on q.arrondissement_id=a.id " + + " left join arrondissements_structures sa on sa.arrondissement_id=a.id" + + " where q.deleted is false and sa.structure_id = ?1 ",nativeQuery = true) + List getQuartierResponse(Long structure_id); + + @Query(value = "select q.id,q.code, q.nom, a.id as arrondissementid from arrondissement a " + + " left join quartier q on q.arrondissement_id=a.id " + + " left join arrondissements_structures sa on sa.arrondissement_id=a.id" + + " where q.deleted is false ",nativeQuery = true) + List getAdminQuartierResponse(); + + +} diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/metier/ActeurConcerneRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/metier/ActeurConcerneRepository.java new file mode 100755 index 0000000..a14bd28 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/metier/ActeurConcerneRepository.java @@ -0,0 +1,41 @@ +package io.gmss.infocad.repositories.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.ActeurConcerne; +import io.gmss.infocad.paylaods.response.restoration.ActeurConcernePayLoad; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; +import java.util.Optional; + +public interface ActeurConcerneRepository extends JpaRepository { + Optional findFirstByExternalKey(Long externalKey); + List findActeurConcerneByEnqueteId(Long EnqueteId); + Optional findFirstByExternalKeyAndTerminal_Id(Long externalKey,Long terminalId); + + @Query(value = "delete from acteur_concerne ac where ac.id in (select ac.id from enquete e" + + " inner join acteur_concerne ac on e.id = ac.enquete_id" + + " where e.id = ?1)", nativeQuery = true) + void deleteActeurConcerneByEnquete(Long enqueteId); + + @Query(value = "SELECT ac.id as idBackend," + + " ac.external_key as externalKey," + + " ac.part," + + " ac.type_droit as typeDroit," + + " e.external_key as enqueteId," + + " ac.position_representation_id as positionRepresentationId, " + + " p.external_key as personneId, " + + " ac.type_representation_id as typeRepresentationId, " + + " ac.type_contestation_id as typeContestationId, " + + " ac.role_acteur as roleActeur, " + + " ac.synchronise, " + + " ac.observation, " + + " ac.terminal_id as terminalId, " + + " ac.bloc_id as blocId, " + + " ac.have_declarant as haveDeclarant, " + + " ac.max_numero_acteur_concerne_id" + + " FROM acteur_concerne ac inner join enquete e on e.id = ac.enquete_id inner join personne p on p.id = ac.personne_id " + + " where ac.terminal_id = ?1 ",nativeQuery = true) + List getActeurConcerneByTerminalId(Long terminalId); + +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/metier/BlocRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/metier/BlocRepository.java new file mode 100755 index 0000000..1cabdb2 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/metier/BlocRepository.java @@ -0,0 +1,86 @@ +package io.gmss.infocad.repositories.infocad.metier; + +import io.gmss.infocad.entities.decoupage.Arrondissement; +import io.gmss.infocad.entities.infocad.metier.Bloc; +import io.gmss.infocad.paylaods.response.BlocEnqResponse; +import io.gmss.infocad.paylaods.response.BlocSyncResponse; +import io.gmss.infocad.paylaods.response.report.BlocsParStructureResponse; +import io.gmss.infocad.paylaods.response.report.ZoneInterventionParStructureResponse; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +public interface BlocRepository extends JpaRepository { + List findAllByStructure_Id(Long structureId); + @Query(value = "select b.id, b.cote, b.nom, b.arrondissement_id as arrondissementid " + + " from bloc b" + + " where b.deleted is false and b.structure_id = ?1 ",nativeQuery = true) + List getBlocResponse(Long structure_id); + + @Query(value = " select b.id, b.cote as code, b.nom as nom , a.nom as arrondissement, c.nom as commune, d.nom as departement " + + " from bloc b inner join arrondissement a on a.id=b.arrondissement_id" + + " inner join commune c on c.id=a.commune_id " + + " inner join departement d on d.id=c.departement_id " + + " where b.deleted is false and b.structure_id = ?1 ",nativeQuery = true) + List getBlocsParStructureResponse(Long structure_id); + List findAllByArrondissement(Arrondissement arrondissement); + + @Query(value = "select structure_id as id from arrondissements_structures " + + " where arrondissement_id = ?1" + + " deleted is false", nativeQuery = true) + Long getStructureId(Long arrondissement_id); + + @Query(value = "select b.* from bloc b " + + " where b.structure_id = ?1 " + + " and b.deleted is false", nativeQuery = true) + List getBlocsByStructure(Long idStructure); + + @Query(value = "select count(*) from bloc " + + " where arrondissement_id = ?1 " + + " and bloc.deleted is false ", nativeQuery = true) + int countAllBlocByArrondissement(Long idArrondissement); + + @Query(value = "select b.id, b.cote as cote, b.nom, a.id as arrondissementid " + + " from arrondissement a" + + " inner join bloc b on b.arrondissement_id=a.id " + + " where b.deleted is false " + + " group by b.id, b.cote, b.nom, a.id ",nativeQuery = true) + List getAdminBlocResponse(); + + @Query(value = "select T.blocId as id, T.cote, T.libelle, T.arrondissementid,sum(case when T.enqueteId is null then 0 else 1 end) as nombreEnquete " + + " from ( select distinct b.id as blocId, b.cote as cote, b.nom as libelle, a.id as arrondissementid, e.id as enqueteId " + + " from arrondissement a" + + " inner join arrondissements_structures sa on sa.arrondissement_id=a.id " + + " inner join bloc b on b.arrondissement_id=a.id " + + " left join enquete e on e.bloc_id=b.id " + + " where (b.deleted is false and e.deleted is false and a.deleted is false) and b.structure_id = ?1)T" + + " group by T.blocId, T.cote, T.libelle, T.arrondissementid ",nativeQuery = true) + List getBlocEnqResponse(Long structure_id); + @Query(value = "select T.blocId as id, T.cote, T.libelle, T.arrondissementid, sum(case when T.enqueteId is null then 0 else 1 end) as nombreEnquete " + + " from ( select distinct b.id as blocId, b.cote as cote, b.nom as libelle, a.id as arrondissementid, e.id as enqueteId " + + " from arrondissement a" + + //" left join arrondissements_structures sa on sa.arrondissement_id=a.id " + + " inner join bloc b on b.arrondissement_id=a.id " + + " left join enquete e on e.bloc_id=b.id " + + " where b.deleted is false ) T" + + " group by T.blocId, T.cote, T.libelle, T.arrondissementid ",nativeQuery = true) + List getAdminBlocEnqResponse(); + + + @Query(value = " select " + + " d.nom as departement, " + + "c.nom as commune, " + + " a.nom as arrondissement, " + + " q.nom as quartier " + + " from departement d " + + " inner join commune c on c.departement_id=d.id " + + " inner join arrondissement a on a.commune_id=a.id " + + " inner join quartier q on q.arrondissement_id=q.id " + + " inner join blocs_quartiers bq on bq.quartier_id=q.id " + + " inner join bloc b on b.id=bq.bloc_id " + + " inner join structure s on s.id=b.structure_id" + + " where e.delete is false and s.id = ?1 ",nativeQuery = true) + List getZoneInterventionParStructureResponse(Long structure_id); + +} \ No newline at end of file diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/metier/CommentaireRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/metier/CommentaireRepository.java new file mode 100755 index 0000000..64dfeea --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/metier/CommentaireRepository.java @@ -0,0 +1,18 @@ +package io.gmss.infocad.repositories.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.Commentaire; +import io.gmss.infocad.enums.Origine; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Optional; + +public interface CommentaireRepository extends JpaRepository { + List findAllByIdEnqueteAndTerminalId(Long idEnquete, Long terminalId); + List findAllByOrigineAndLuAndTerminalId(Origine origine, boolean lu, Long terminalId); + List findAllByOrigineAndSynchroniseAndTerminalId(Origine origine, boolean synchronise, Long terminalId); + List findAllByIdEnqueteAndLu(Long idEnquete, boolean lu); + Optional getCommentaireByNupParcelle(String nup); + + Optional findCommentaireByExternalKey(Long externalKey); +} diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/metier/EnqueteRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/metier/EnqueteRepository.java new file mode 100755 index 0000000..844b93c --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/metier/EnqueteRepository.java @@ -0,0 +1,191 @@ +package io.gmss.infocad.repositories.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.Enquete; +import io.gmss.infocad.paylaods.response.*; +import io.gmss.infocad.paylaods.response.report.EnqueteParBlocResponse; +import io.gmss.infocad.paylaods.response.restoration.EnquetePayLoad; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; +import java.util.Optional; + +public interface EnqueteRepository extends JpaRepository { + @Query(value = "select distinct " + + " e.id," + + " e.parcelle_id as parcelleId," + + " c.id as communeId, " + + " c.nom as communeNom, " + + " a.id as arrondissementId, " + + " a.nom as arrondissementNom, " + + " b.id as blocId," + + " b.nom as blocNom, " + + " s.id as structureId, " + + " s.nom as structureNom, " + + " e.litige," + + " e.status_enquete as statusEnquete, " + + " e.date_finalisation as dateFinalisation, " + + " e.date_validation as dateValidation, " + + " e.date_synchronisation as dateSynchronisation, " + + " e.synchronise, " + + " e.terminal_id as terminalId, " + + " per.nom_ou_sigle as nomSigle, " + + " per.prenom_ou_raison_sociale as prenomRaisonSociale," + + " tp.libelle as typePersonne," + + " td.libelle as typeDomaine, " + + " nd.libelle as natureDomaine, " + + " p.nup_provisoire as nupProvisoire " + + " from enquete e " + + " left join bloc b on b.id=e.bloc_id " + + " left join arrondissement a on a.id= b.arrondissement_id " + + " left join commune c on c.id=a.commune_id " + + " inner join structure s on s.id=b.structure_id " + + " inner join parcelle p on p.id=e.parcelle_id " + + " left join nature_domaine nd on nd.id=p.nature_domaine_id " + + " left join type_domaine td on td.id=nd.type_domaine_id " + + " inner join acteur_concerne ac on ac.enquete_id=e.id " + + " inner join personne per on per.id=ac.personne_id " + + " left join type_personne tp on tp.id=per.type_personne_id " + + " where e.deleted is false and ac.role_acteur='PROPRIETAIRE'" + ,nativeQuery = true) + List getEnqueteComArrondBloc(); + + + Optional findFirstByExternalKey(Long externalKey); + + @Query(value = "select distinct " + + " e.id as idBackend," + + " e.external_key as externalKey, " + + " e.status_enquete as statusEnquete, " + + " e.description_motif_rejet as motif, " + + " e.terminal_id as terminalId " + + " from enquete e " + + " where e.deleted is false and e.synchronise is false " + + " and e.terminal_id= ?1" + ,nativeQuery = true) + List getEnqueteValNonSync(Long terminalId); + + @Query(value = "select " + + " e.status_enquete as statutEnquete," + + " count(*) as nombre " + + " from enquete e " + + " where e.deleted is false " + + " group by e.status_enquete" + ,nativeQuery = true) + List getStatEnqueteParStatut(); + + @Query(value = "select " + + " e.status_enquete as statutEnquete, " + + " count(*) as nombre " + + " from enquete e " + + " inner join bloc b on b.id=e.bloc_id " + + " inner join structure s on s.id = b.structure_id " + + " inner join users u on u.structure_id=s.id " + + " where e.deleted is false and u.id = ?1 " + + " group by e.status_enquete " + ,nativeQuery = true) + List getStatEnqueteParStatut(Long userId); + + @Query(value = "select " + + " b.cote as bloc, " + + " SUM(case when e.status_enquete='VALIDE' then 1 else 0 end) + " + + " SUM(case when e.status_enquete='REJETE' then 1 else 0 end) + " + + " SUM(case when e.status_enquete='SYNCHRONISE' then 1 else 0 end) as total, " + + " SUM(case when e.status_enquete='VALIDE' then 1 else 0 end) as valide, " + + " SUM(case when e.status_enquete='REJETE' then 1 else 0 end) as rejet, " + + " SUM(case when e.status_enquete='SYNCHRONISE' then 1 else 0 end) as synchronise " + + " from enquete e " + + " right join bloc b on b.id=e.bloc_id " + + " right join structure s on s.id = b.structure_id " + + " right join users u on u.structure_id=s.id " + + " where e.deleted is false and u.id = ?1 " + + " group by b.cote " + ,nativeQuery = true) + List getStatEnqueteParBloc(Long idUser); + + + @Query(value = "select " + + " a.nom as arrondissement, " + + " SUM(case when e.status_enquete='VALIDE' then 1 else 0 end) + " + + " SUM(case when e.status_enquete='REJETE' then 1 else 0 end) + " + + " SUM(case when e.status_enquete='SYNCHRONISE' then 1 else 0 end) as total, " + + " SUM(case when e.status_enquete='VALIDE' then 1 else 0 end) as valide, " + + " SUM(case when e.status_enquete='REJETE' then 1 else 0 end) as rejet, " + + " SUM(case when e.status_enquete='SYNCHRONISE' then 1 else 0 end) as synchronise " + + " from enquete e " + + " right join bloc b on b.id=e.bloc_id" + + " right join arrondissement a on a.id=b.arrondissement_id" + + " where e.deleted is false and a.commune_id = ?1 " + + " group by a.nom " + ,nativeQuery = true) + List getStatEnqueteParDecoupage(Long idCommune); + @Query(value = "select " + + " s.nom as structure, " + + " SUM(case when e.status_enquete='VALIDE' then 1 else 0 end) + " + + " SUM(case when e.status_enquete='REJETE' then 1 else 0 end) + " + + " SUM(case when e.status_enquete='SYNCHRONISE' then 1 else 0 end) as total, " + + " SUM(case when e.status_enquete='VALIDE' then 1 else 0 end) as valide, " + + " SUM(case when e.status_enquete='REJETE' then 1 else 0 end) as rejet, " + + " SUM(case when e.status_enquete='SYNCHRONISE' then 1 else 0 end) as synchronise " + + " from enquete e " + + " right join bloc b on b.id=e.bloc_id" + + " right join structure s on s.id=b.structure_id " + + " where e.deleted is false " + + " group by s.nom " + ,nativeQuery = true) + List getStatEnqueteParStructure(); + + Optional findFirstByExternalKeyAndTerminal_Id(Long externalKey,Long terminalId); + + List findAllByUser_Id(Long userId); + + + @Query(value = "SELECT " + + " e.id as idBackend," + + " e.external_key as externalKey," + + " e.date_enquete as dateEnquete," + + " e.date_finalisation as dateFinalisation, " + + " e.litige," + + " e.user_id as userId," + + " p.external_key as parcelleId," + + " e.bloc_id as blocId, " + + " e.status_enquete as statusEnquete, " + + " e.description_motif_rejet as descriptionMotifRejet," + + " e.observation_particuliere as observation," + + " e.synchronise," + + " e.terminal_id as terminalId, " + + + " e.quartier_id as quartierId, " + + " e.arrondissement_id as arrondissementId, " + + " e.commune_id as communeId, " + + " e.terminal_id as departementId, " + + " e.departement_id as numeroProvisoir, " + + " e.code_parcelle as codeParcelle, " + + " e.nom_proprietaire_parcelle as nomProprietaireParcelle, " + + " e.code_equipe as codeEquipe, " + + " e.numero_titre_foncier as numeroTitreFoncier " + + " FROM enquete e inner join parcelle p on p.id = e.parcelle_id " + + " WHERE e.terminal_id = ?1", nativeQuery = true) + List getEnqueteByTerminalId(Long terminalId); + + + @Query(value = "SELECT " + + " p.nup_provisoire as nupProvisoire," + + " q.nom as quartier, " + + " p.q," + + " p.i," + + " p.p, " + + " e.litige," + + " n.libelle as nature," + + " coalesce(pers.nom_ou_sigle,'') || ' ' || coalesce(pers.prenom_ou_raison_sociale,'') as nomProprietaire," + + " pers.tel1 as telephone " + + " FROM enquete e " + + " inner join parcelle p on p.id = e.parcelle_id" + + " inner join acteur_concerne ac on ac.enquete_id=e.id " + + " inner join personne pers on pers.id=ac.personne_id " + + " inner join nature_domaine n on n.id=p.nature_domaine_id" + + " inner join quartier q on q.id=e.quartier_id" + + " WHERE p.deleted is false and e.bloc_id = ?1 and ac.role_acteur=?2 ", nativeQuery = true) + List getEnqueteByBloc(Long BlocId, String roleActeur); + +} diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/metier/MembreGroupeRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/metier/MembreGroupeRepository.java new file mode 100755 index 0000000..0e44421 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/metier/MembreGroupeRepository.java @@ -0,0 +1,33 @@ +package io.gmss.infocad.repositories.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.MembreGroupe; +import io.gmss.infocad.paylaods.response.restoration.MembreGroupePayLoad; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; +import java.util.Optional; + +public interface MembreGroupeRepository extends JpaRepository { + Optional findFirstByExternalKeyAndTerminal_Id(Long externalKey,Long terminalId); + void deleteMembreGroupeByPersonneRepresantante_Id(Long personneRepresenteId); + @Query(value = "Select " + + " mg.id as idBackend, " + + " mg.external_key as externalKey, " + + " p.external_key as personneSecondaireId, " + + " p.external_key as personneId, " + + " mg.position_representation_id as positionRepresentationId, " + + " mg.type_representation_id as typeRepresentationId, " + + " mg.enquete_id as enqueteId, " + + " mg.bloc_id as blocId, " + + " mg.observation as observation," + + " mg.synchronise," + + " mg.terminal_id as terminalId, " + + " mg.max_numero_piece_id, " + + " mg.max_numero_acteur_concerne_id " + + " From membre_groupe mg inner join personne p on p.id = mg.personne_represantante_id and p.id = mg.personne_represantee_id " + + " where mg.terminal_id = ?1" + ,nativeQuery = true) + List getMembreGroupeByTerminalId(Long terminalId); + +} diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/metier/ParcelleRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/metier/ParcelleRepository.java new file mode 100755 index 0000000..5fcf191 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/metier/ParcelleRepository.java @@ -0,0 +1,41 @@ +package io.gmss.infocad.repositories.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.Parcelle; +import io.gmss.infocad.paylaods.response.restoration.ParcellePayLoad; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; +import java.util.Optional; + +public interface ParcelleRepository extends JpaRepository { + Optional findFirstByExternalKeyAndTerminal_Id(Long externalKey,Long TerminalId); + + @Query(value = "Select " + + " p.id as idBackend, " + + " p.external_key as externalKey, " + + " p.q, " + + " p.nup," + + " p.nup_provisoire as nupProvisoire, " + + " p.longitude, " + + " p.latitude, " + + " p.situation_geographique as situationGeographique, " + + " p.nature_domaine_id as natureDomaineId, " + + " p.quartier_id as quartierId, " + + " p.i, " + + " p.p, " + + " p.num_titre_foncier as numTitreFoncier, " + + " p.observation as observation, " + + " p.synchronise, " + + " p.terminal_id as terminalId, " + + + " p.type_domaine_id as typeDomaineId, " + + " p.numero_provisoire as numeroProvisoire, " + + " p.bloc_id as blocId " + + // " p.geom_srid as geomSrid " + + " From parcelle p " + + " where p.terminal_id = ?1",nativeQuery = true) + List getParcellesByTerminalId(Long terminalId); + + +} diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/metier/PieceRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/metier/PieceRepository.java new file mode 100755 index 0000000..72140d0 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/metier/PieceRepository.java @@ -0,0 +1,50 @@ +package io.gmss.infocad.repositories.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.Piece; +import io.gmss.infocad.paylaods.response.restoration.PiecePayLoad; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; +import java.util.Optional; + +public interface PieceRepository extends JpaRepository { + Optional findFirstByExternalKeyAndTerminal_Id(Long externalKey,Long terminalId); + @Query(nativeQuery = true, value = "delete from piece p where p.id in (select p.id " + + " from piece p inner join acteur_concerne a on a.id = p.acteur_concerne_id" + + " inner join enquete e on e.id = a.enquete_id" + + " where e.id = ?1)") + void deletePieceByEnqueteId(Long enqueteId); + + void deletePieceByPersonne_Id(Long personneId); + + @Query(value = "Select " + + " p.id as idBackend, " + + " p.external_key as externalKey, " + + " ac.external_key as acteurConcerneId, " + + " p.date_expiration as dateExpiration," + + " p.numero_piece as numeroPiece," + + " p.url," + + " p.type_piece_id as typePieceId, " + + " pp.external_key as personneId, " + + " p.acteur_concerne_id, " + + " p.source_droit_id as sourceDroitId, " + + " p.mode_acquisition_id as modeAcquisitionId, " + + " p.enquete_id as enqueteId, " + + " p.membre_groupe_id as membreGroupeId, " + + " p.observation as Observation," + + " p.synchronise," + + " p.terminal_id as terminalId, " + + + " p.max_numero_piece_id, " + + " p.max_numero_acteur_concerne_id, " + + " p.bloc_id as blocId " + + " from piece p left join personne pp on p.personne_id = pp.id left join acteur_concerne ac on ac.id = p.personne_id " + + " where p.terminal_id = ?1" + ,nativeQuery = true) + List getPiecesByTerminalId(Long terminalId); + + + +} + diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/metier/TpeRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/metier/TpeRepository.java new file mode 100755 index 0000000..4209dfd --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/metier/TpeRepository.java @@ -0,0 +1,27 @@ +package io.gmss.infocad.repositories.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.Enquete; +import io.gmss.infocad.entities.infocad.metier.Tpe; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; +import java.util.Optional; + +public interface TpeRepository extends JpaRepository { + + Optional findDistinctByIdentifier(String identifier); + List findAllByModel(String model); + + boolean existsDistinctByIdentifier(String identifier); + + boolean existsDistinctByCodeEquipe(String code); + + List findAllByEnquetesIn(List enquetes); + + @Query(value = "select distinct tpe.* " + + "from tpe inner join enquete e on e.terminal_id=tpe.id " + + " where e.user_id = ?1",nativeQuery = true) + List getTpeByUserId(Long userId); + +} \ No newline at end of file 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 new file mode 100644 index 0000000..c35dbf4 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/metier/UploadRepository.java @@ -0,0 +1,42 @@ +package io.gmss.infocad.repositories.infocad.metier; + +import io.gmss.infocad.entities.infocad.metier.Upload; +import io.gmss.infocad.paylaods.response.restoration.UploadPayLoad; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +public interface UploadRepository extends JpaRepository { + + void deleteUploadByPiece_Personne_Id(Long personneId); + //void deleteUploadByPiece_ActeurConcerne_Enquete_Id(Long enqueteId); + @Query(nativeQuery = true, value = "delete from upload u where u.id in (select u.id from upload u" + + " inner join piece p on p.id = u.piece_id" + + " inner join acteur_concerne ac on ac.id = p.acteur_concerne_id" + + " inner join enquete e on e.id = ac.enquete_id where e.id = ?1)") + void deleteUploadByEnqueteID(Long enqueteId); + void deleteUploadByMembreGroupe_PersonneRepresantee_Id(Long personneRepresente); + @Query(value = "Select " + + " u.id as idBackend, " + + " u.external_key as externalKey, " + + " p.external_key as pieceId, " + + " u.observation as observation, " + + " u.membre_groupe_id as membreGroupeId, " + + " u.name, " + + " u.file_path as filePath, " + + " u.synchronise," + + " u.terminal_id as terminalId, " + + " u.max_numero_piece_id, " + + " u.max_numero_acteur_concerne_id, " + + " u.max_numero_upload_id, " + + " u.enquete_id as enqueteId, " + + " u.bloc_id as blocId, " + + " u.file_name as fileBackendName " + + " From upload u inner join public.piece p on p.id = u.piece_id" + + " where u.terminal_id = ?1" + ,nativeQuery = true) + List getUploadByTerminalId(Long terminalId); + + ///////////////////////////////// +} diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/parametre/ModeAcquisitionRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/ModeAcquisitionRepository.java new file mode 100755 index 0000000..39453b9 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/ModeAcquisitionRepository.java @@ -0,0 +1,16 @@ +package io.gmss.infocad.repositories.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.ModeAcquisition; +import io.gmss.infocad.paylaods.response.ModesAcquisitionTypePersonneSyncResponse; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +public interface ModeAcquisitionRepository extends JpaRepository { + @Query(value = "select ma.id, ma.libelle,mat.type_personne_id as typePersonneId " + + " from mode_acquisition ma " + + " inner join mode_acquisition_type_personne mat on mat.mode_acquisition_id=ma.id " + + " where ma.deleted is false ",nativeQuery = true) + List getModeAcquisitionTypePersonne(); +} diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/parametre/NatureDomaineRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/NatureDomaineRepository.java new file mode 100755 index 0000000..e8297f7 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/NatureDomaineRepository.java @@ -0,0 +1,23 @@ +package io.gmss.infocad.repositories.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.NatureDomaine; +import io.gmss.infocad.paylaods.response.NatureDomaineSyncResponse; +import io.gmss.infocad.paylaods.response.TypePersonneNatureDomaineSyncResponse; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + + +public interface NatureDomaineRepository extends JpaRepository { + @Query(value = "select id, libelle, type_domaine_id as typedomaineid from nature_domaine " + + " where deleted is false ",nativeQuery = true) + List getNatureDomaineResponse(); + + + @Query(value = "select tp.id as id, tp.groupe_ouvert as groupeOuvert, tp.libelle as libelle, ndtp.nature_domaine_id as natureDomaineId from type_personne tp " + + " inner join nature_domaine_type_personne ndtp on ndtp.type_personne_id=tp.id " + + " where tp.deleted is false ",nativeQuery = true) + List getTypePersonneNatureDomaineSyncResponse(); + +} diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/parametre/PersonneRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/PersonneRepository.java new file mode 100755 index 0000000..5ddc7f4 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/PersonneRepository.java @@ -0,0 +1,51 @@ +package io.gmss.infocad.repositories.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.Personne; +import io.gmss.infocad.paylaods.response.restoration.PersonnePayLoad; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; +import java.util.Optional; + +public interface PersonneRepository extends JpaRepository { + Optional findFirstByExternalKeyAndTerminal_Id(Long externalKey,Long TerminalId); + @Query(value = "Select " + + " p.id as idBackend, " + + " p.ifu, " + + " p.external_key as externalKey, " + + " p.nom_ou_sigle as nomOuSigle, " + + " p.prenom_ou_raison_sociale as prenomOuRaisonSociale, " + + " p.num_ravip as numRavip, " + + " p.npi, " + + " p.date_naissance_ou_consti as dateNaissanceOuConsti, " + + " p.lieu_naissance as lieuNaissance, " + + " p.tel1," + + " p.tel2," + + " p.adresse," + + " p.categorie, " + + " p.situation_matrimoniale_id as situationMatrimonialeId, " + + " p.nationalite_id as nationaliteId, " + + " p.type_personne_id as typePersonneId, " + + " p.profession_id as professionId," + + " p.commune_id as communeId," + + " p.observation as Observation," + + " p.synchronise," + + " p.terminal_id as terminalId, " + + + " p.have_representant as haveRepresentant, " + + " p.ravip_question as ravipQuestion, " + + " p.age as age, " + + " p.nom_jeune_fille as nomJeuneFille, " + + " p.nom_mere as nomMere, " + + " p.prenom_mere as prenomMere, " + + " p.indicatif_tel1 as indicatifTel1, " + + " p.indicatif_tel2 as indicatifTel2, " + + " p.sexe as sexe, " + + " p.must_have_representant as mustHaveRepresentant, " + + " p.file_path as filePath " + + " From personne p " + + " where p.terminal_id = ?1",nativeQuery = true) + List getPersonnesByTerminalId(Long terminalId); + +} diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/parametre/PositionRepresentationRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/PositionRepresentationRepository.java new file mode 100755 index 0000000..3f2aca6 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/PositionRepresentationRepository.java @@ -0,0 +1,7 @@ +package io.gmss.infocad.repositories.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.PositionRepresentation; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface PositionRepresentationRepository extends JpaRepository { +} diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/parametre/ProfessionRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/ProfessionRepository.java new file mode 100755 index 0000000..b29bda7 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/ProfessionRepository.java @@ -0,0 +1,7 @@ +package io.gmss.infocad.repositories.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.Profession; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ProfessionRepository extends JpaRepository { +} diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/parametre/SituationGeographiqueRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/SituationGeographiqueRepository.java new file mode 100755 index 0000000..38adf83 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/SituationGeographiqueRepository.java @@ -0,0 +1,7 @@ +package io.gmss.infocad.repositories.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.SituationGeographique; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface SituationGeographiqueRepository extends JpaRepository { +} diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/parametre/SituationMatrimonialeRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/SituationMatrimonialeRepository.java new file mode 100755 index 0000000..f6b7b58 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/SituationMatrimonialeRepository.java @@ -0,0 +1,7 @@ +package io.gmss.infocad.repositories.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.SituationMatrimoniale; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface SituationMatrimonialeRepository extends JpaRepository { +} diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/parametre/SourceDroitExerceRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/SourceDroitExerceRepository.java new file mode 100755 index 0000000..5578f64 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/SourceDroitExerceRepository.java @@ -0,0 +1,7 @@ +package io.gmss.infocad.repositories.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.SourceDroitExerce; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface SourceDroitExerceRepository extends JpaRepository { +} diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/parametre/SourceDroitRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/SourceDroitRepository.java new file mode 100755 index 0000000..66b7838 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/SourceDroitRepository.java @@ -0,0 +1,22 @@ +package io.gmss.infocad.repositories.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.SourceDroit; +import io.gmss.infocad.paylaods.response.ModesAcquisitionSourceSyncResponse; +import io.gmss.infocad.paylaods.response.SourceDroitsSyncResponse; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +public interface SourceDroitRepository extends JpaRepository { + @Query(value = "SELECT id, libelle, titre_foncier as titreFoncier, taille_champ_min as tailleChampMin, taille_champ_max as tailleChampMax, type_champ as typeChamp, temoin from source_droit where deleted is false",nativeQuery = true) + List getSourceDroitSyncResponse(); + + + @Query(value = "SELECT distinct id,libelle, sdm.sources_droits_id as sourceid " + + " from mode_acquisition ma " + + " inner join sources_de_droits_modes_acquisitions sdm on sdm.modes_acquisitions_id=ma.id " + + " where ma.deleted is false ",nativeQuery = true) + List getModeAcquitionSourceSyncResponse(); +} + diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/parametre/StructureRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/StructureRepository.java new file mode 100755 index 0000000..4c3c6c3 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/StructureRepository.java @@ -0,0 +1,21 @@ +package io.gmss.infocad.repositories.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.Structure; +import io.gmss.infocad.paylaods.response.StructureResponse; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +public interface StructureRepository extends JpaRepository { + boolean existsDistinctByCode(String code); + + @Query(value = "select max(id) as id from structure", nativeQuery = true) + int getLastRecordId(); + + @Query(value = "select s.id, s.code, s.nom, s.ifu, s.rccm, s.tel, s.email, s.adresse" + + " from structure s inner join " + + " arrondissements_structures sa on s.id = sa.structure_id and " + + " sa.arrondissement_id = ?1",nativeQuery = true) + List getStructureByArrondissement(Long arrondissementId); +} diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypeContestationRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypeContestationRepository.java new file mode 100755 index 0000000..32e63c1 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypeContestationRepository.java @@ -0,0 +1,7 @@ +package io.gmss.infocad.repositories.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.TypeContestation; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface TypeContestationRepository extends JpaRepository { +} diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypeDomaineRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypeDomaineRepository.java new file mode 100755 index 0000000..162e5ca --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypeDomaineRepository.java @@ -0,0 +1,7 @@ +package io.gmss.infocad.repositories.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.TypeDomaine; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface TypeDomaineRepository extends JpaRepository { +} diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypePersonneRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypePersonneRepository.java new file mode 100755 index 0000000..458fe9d --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypePersonneRepository.java @@ -0,0 +1,11 @@ +package io.gmss.infocad.repositories.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.TypePersonne; +import io.gmss.infocad.enums.Categorie; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Optional; + +public interface TypePersonneRepository extends JpaRepository { + Optional findFirstByCategorie(Categorie categorie); +} diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypePieceRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypePieceRepository.java new file mode 100755 index 0000000..bb73680 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypePieceRepository.java @@ -0,0 +1,7 @@ +package io.gmss.infocad.repositories.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.TypePiece; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface TypePieceRepository extends JpaRepository { +} diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypeRepresentationRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypeRepresentationRepository.java new file mode 100755 index 0000000..5d5149b --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/TypeRepresentationRepository.java @@ -0,0 +1,7 @@ +package io.gmss.infocad.repositories.infocad.parametre; + +import io.gmss.infocad.entities.infocad.parametre.TypeRepresentation; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface TypeRepresentationRepository extends JpaRepository { +} 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 new file mode 100755 index 0000000..8014304 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/rfu/metier/BatimentRepository.java @@ -0,0 +1,8 @@ +package io.gmss.infocad.repositories.rfu.metier; + +import io.gmss.infocad.entities.rfu.metier.Batiment; +import org.springframework.data.jpa.repository.JpaRepository; + + +public interface BatimentRepository extends JpaRepository { +} 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 new file mode 100755 index 0000000..6d4be8b --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/rfu/metier/CaracteristiqueBatimentRepository.java @@ -0,0 +1,8 @@ +package io.gmss.infocad.repositories.rfu.metier; + +import io.gmss.infocad.entities.rfu.metier.CaracteristiqueBatiment; +import org.springframework.data.jpa.repository.JpaRepository; + + +public interface CaracteristiqueBatimentRepository extends JpaRepository { +} 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 new file mode 100755 index 0000000..3d5e54f --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/rfu/metier/CaracteristiqueParcelleRepository.java @@ -0,0 +1,8 @@ +package io.gmss.infocad.repositories.rfu.metier; + +import io.gmss.infocad.entities.rfu.metier.CaracteristiqueParcelle; +import org.springframework.data.jpa.repository.JpaRepository; + + +public interface CaracteristiqueParcelleRepository extends JpaRepository { +} 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 new file mode 100755 index 0000000..758c04a --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/rfu/metier/CaracteristiqueUniteLogementRepository.java @@ -0,0 +1,8 @@ +package io.gmss.infocad.repositories.rfu.metier; + +import io.gmss.infocad.entities.rfu.metier.CaracteristiqueUniteLogement; +import org.springframework.data.jpa.repository.JpaRepository; + + +public interface CaracteristiqueUniteLogementRepository extends JpaRepository { +} 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 new file mode 100755 index 0000000..d95fec2 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/rfu/metier/EnqueteBatimentRepository.java @@ -0,0 +1,8 @@ +package io.gmss.infocad.repositories.rfu.metier; + +import io.gmss.infocad.entities.rfu.metier.EnqueteBatiment; +import org.springframework.data.jpa.repository.JpaRepository; + + +public interface EnqueteBatimentRepository extends JpaRepository { +} 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 new file mode 100755 index 0000000..383626a --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/rfu/metier/EnqueteUniteLogementRepository.java @@ -0,0 +1,8 @@ +package io.gmss.infocad.repositories.rfu.metier; + +import io.gmss.infocad.entities.rfu.metier.EnqueteUniteLogement; +import org.springframework.data.jpa.repository.JpaRepository; + + +public interface EnqueteUniteLogementRepository extends JpaRepository { +} 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 new file mode 100755 index 0000000..8f9fc73 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/rfu/metier/UniteLogementRepository.java @@ -0,0 +1,8 @@ +package io.gmss.infocad.repositories.rfu.metier; + +import io.gmss.infocad.entities.rfu.metier.UniteLogement; +import org.springframework.data.jpa.repository.JpaRepository; + + +public interface UniteLogementRepository extends JpaRepository { +} 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 new file mode 100755 index 0000000..b4522f4 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/rfu/parametre/CaracteristiqueRepository.java @@ -0,0 +1,12 @@ +package io.gmss.infocad.repositories.rfu.parametre; + +import io.gmss.infocad.entities.rfu.parametre.Caracteristique; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + + +public interface CaracteristiqueRepository extends JpaRepository { + + List findAllByActifIsTrue(); +} diff --git a/src/main/java/io/gmss/infocad/repositories/rfu/parametre/TypeCaracteristiqueRepository.java b/src/main/java/io/gmss/infocad/repositories/rfu/parametre/TypeCaracteristiqueRepository.java new file mode 100755 index 0000000..761b68a --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/rfu/parametre/TypeCaracteristiqueRepository.java @@ -0,0 +1,12 @@ +package io.gmss.infocad.repositories.rfu.parametre; + +import io.gmss.infocad.entities.rfu.parametre.TypeCaracteristique; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + + +public interface TypeCaracteristiqueRepository extends JpaRepository { + + List findAllByActifIsTrue(); +} diff --git a/src/main/java/io/gmss/infocad/repositories/user/DemandeReinitialisationMPRepository.java b/src/main/java/io/gmss/infocad/repositories/user/DemandeReinitialisationMPRepository.java new file mode 100755 index 0000000..cc8ddbb --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/user/DemandeReinitialisationMPRepository.java @@ -0,0 +1,12 @@ +package io.gmss.infocad.repositories.user; + +import io.gmss.infocad.entities.infocad.parametre.Structure; +import io.gmss.infocad.entities.user.DemandeReinitialisationMP; +import io.gmss.infocad.enums.EtatDemande; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface DemandeReinitialisationMPRepository extends JpaRepository { + List findAllByEtatDemandeAndUser_Structure(EtatDemande etatDemande, Structure structure); +} diff --git a/src/main/java/io/gmss/infocad/repositories/user/RoleRepository.java b/src/main/java/io/gmss/infocad/repositories/user/RoleRepository.java new file mode 100755 index 0000000..af89085 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/user/RoleRepository.java @@ -0,0 +1,15 @@ +package io.gmss.infocad.repositories.user; + +import io.gmss.infocad.entities.user.Role; +import io.gmss.infocad.enums.UserRole; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Optional; + +public interface RoleRepository extends JpaRepository { + Optional findRoleById(Long id); + Optional findRoleByNom(UserRole nom); + + boolean existsByNom(UserRole userRole); + Role getRolesByNom(UserRole userRole); +} diff --git a/src/main/java/io/gmss/infocad/repositories/user/UserRepository.java b/src/main/java/io/gmss/infocad/repositories/user/UserRepository.java new file mode 100755 index 0000000..c02af05 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/user/UserRepository.java @@ -0,0 +1,21 @@ +package io.gmss.infocad.repositories.user; + +import io.gmss.infocad.entities.infocad.parametre.Structure; +import io.gmss.infocad.entities.user.Role; +import io.gmss.infocad.entities.user.User; +import io.gmss.infocad.enums.UserRole; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Optional; +import java.util.Set; + +public interface UserRepository extends JpaRepository { + + Optional findByUsername(String username); + long countAllByUsernameIsNotNull(); + + List findAllByStructureAndRolesIn(Structure structure, Set roleSet); + List findAllByStructureAndRolesNotIn(Structure structure, Set roleSet); + List findAllByRolesContains(UserRole userRole); +} diff --git a/src/main/java/io/gmss/infocad/security/CurrentUser.java b/src/main/java/io/gmss/infocad/security/CurrentUser.java new file mode 100755 index 0000000..5c1beb1 --- /dev/null +++ b/src/main/java/io/gmss/infocad/security/CurrentUser.java @@ -0,0 +1,13 @@ +package io.gmss.infocad.security; + +import org.springframework.security.core.annotation.AuthenticationPrincipal; + +import java.lang.annotation.*; + +@Target({ElementType.PARAMETER, ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@AuthenticationPrincipal +public @interface CurrentUser { + +} diff --git a/src/main/java/io/gmss/infocad/security/CustomUserDetailsService.java b/src/main/java/io/gmss/infocad/security/CustomUserDetailsService.java new file mode 100755 index 0000000..d4623a6 --- /dev/null +++ b/src/main/java/io/gmss/infocad/security/CustomUserDetailsService.java @@ -0,0 +1,45 @@ +package io.gmss.infocad.security; + +import io.gmss.infocad.entities.user.User; +import io.gmss.infocad.repositories.user.RoleRepository; +import io.gmss.infocad.repositories.user.UserRepository; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; + + +@Service +public class CustomUserDetailsService implements UserDetailsService { + + + private final UserRepository userRepository; + private final RoleRepository roleRepository; + + public CustomUserDetailsService(UserRepository userRepository, RoleRepository roleRepository) { + this.userRepository = userRepository; + this.roleRepository = roleRepository; + } + + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + + User user = userRepository.findByUsername(username) + .orElseThrow(() -> + new UsernameNotFoundException("User not found with username or email : " + username) + ); + + UserPrincipal userprincipal = UserPrincipal.create(user); + + System.out.println("userprincipal = " + userprincipal); + return userprincipal; + } + + public UserDetails loadUserById(Long id) throws UsernameNotFoundException{ + User user = userRepository.findById(id).orElseThrow( + () -> new UsernameNotFoundException("User not found with id : " + id) + ); + + return UserPrincipal.create(user); + } +} diff --git a/src/main/java/io/gmss/infocad/security/JwtAuthenticationEntryPoint.java b/src/main/java/io/gmss/infocad/security/JwtAuthenticationEntryPoint.java new file mode 100755 index 0000000..684fd09 --- /dev/null +++ b/src/main/java/io/gmss/infocad/security/JwtAuthenticationEntryPoint.java @@ -0,0 +1,27 @@ +package io.gmss.infocad.security; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.stereotype.Component; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@Component +public class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint { + + private static final Logger logger = LoggerFactory.getLogger(JwtAuthenticationEntryPoint.class); + + @Override + public void commence(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AuthenticationException authExcp) + throws IOException, ServletException { + logger.error("Responding with unauthorized error. Message - {}", authExcp.getMessage()); + httpServletResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED, + "Sorry, You're not authorized to access this resource."); + } + +} diff --git a/src/main/java/io/gmss/infocad/security/JwtAuthenticationFilter.java b/src/main/java/io/gmss/infocad/security/JwtAuthenticationFilter.java new file mode 100755 index 0000000..b993970 --- /dev/null +++ b/src/main/java/io/gmss/infocad/security/JwtAuthenticationFilter.java @@ -0,0 +1,52 @@ +package io.gmss.infocad.security; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; +import org.springframework.util.StringUtils; +import org.springframework.web.filter.OncePerRequestFilter; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public class JwtAuthenticationFilter extends OncePerRequestFilter { + + @Autowired + TokenAuthentificationProvider tokenProvider; + + @Autowired + CustomUserDetailsService customUserDetailsService; + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) + throws ServletException, IOException { + + String jwt = getJwtFromRequest(request); + + if (StringUtils.hasText(jwt) && tokenProvider.validateToken(jwt)) { + String username = tokenProvider.getUsernameFromJWT(jwt); + + UserDetails userDetails = customUserDetailsService.loadUserByUsername(username); + UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); + authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); + + SecurityContextHolder.getContext().setAuthentication(authentication); + } + + filterChain.doFilter(request, response); + } + + private String getJwtFromRequest(HttpServletRequest request) { + String bearerToken = request.getHeader("Authorization"); + if (StringUtils.hasText(bearerToken) && bearerToken.startsWith("Bearer ")) { + return bearerToken.substring(7); + } + return null; + } + +} diff --git a/src/main/java/io/gmss/infocad/security/TokenAuthentificationProvider.java b/src/main/java/io/gmss/infocad/security/TokenAuthentificationProvider.java new file mode 100755 index 0000000..ff30661 --- /dev/null +++ b/src/main/java/io/gmss/infocad/security/TokenAuthentificationProvider.java @@ -0,0 +1,105 @@ +package io.gmss.infocad.security; + +import io.gmss.infocad.entities.user.User; +import io.gmss.infocad.paylaods.JwtAuthenticationResponse; +import io.gmss.infocad.paylaods.UserResponse; +import io.gmss.infocad.repositories.user.UserRepository; +import io.jsonwebtoken.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.stereotype.Component; + +import java.util.*; + +@Component +public class TokenAuthentificationProvider { + + private static final Logger logger = LoggerFactory.getLogger(TokenAuthentificationProvider.class); + + @Value("${jwt.jwtSecret}") + private String jwtSecret; + + @Value("${jwt.jwtExpirationInMs}") + private long jwtExpirationInMs; + + private final UserRepository userRepository; + + public TokenAuthentificationProvider(UserRepository userRepository) { + this.userRepository = userRepository; + } + + + public JwtAuthenticationResponse generateToken(Authentication authentication) { + return generateToken((UserPrincipal) authentication.getPrincipal()); + } + + public JwtAuthenticationResponse generateToken(UserDetails userDetails) { + + Date now = new Date(); + Date expiryDate = new Date(now.getTime() + jwtExpirationInMs); + + Map claims = new HashMap<>(); + List roles = new ArrayList<>(); + userDetails.getAuthorities().forEach(role -> roles.add(role.getAuthority())); + //claims.put("roles", roles); + User user = userRepository.findByUsername(userDetails.getUsername()).get(); + claims.put("user", getUserResponseFromUser(user)); + // JWT for authentication + String token = Jwts.builder() + .setClaims(claims) + .setSubject(userDetails.getUsername()) + .setIssuedAt(new Date()) + .setExpiration(expiryDate) + .signWith(SignatureAlgorithm.HS512, jwtSecret.getBytes()) + .compact(); + + return new JwtAuthenticationResponse(token, expiryDate); + } + + UserResponse getUserResponseFromUser(User user) { + return new UserResponse( + user.getId(), + user.getNom(), + user.getPrenom(), + user.getTel(), + user.getEmail(), + user.getUsername(), + user.isActive(), + user.isResetPassword(), + user.getRoles(), + user.getStructure()); + } + public String getUsernameFromJWT(String token) { + Claims claims = Jwts.parser() + .setSigningKey(jwtSecret.getBytes()) + .parseClaimsJws(token) + .getBody(); + + return claims.getSubject(); + } + + public boolean validateToken(String authToken) { + return validateJWT(authToken, jwtSecret); + } + + private boolean validateJWT(String authToken, String jwtRefreshSecret) { + try { + Jwts.parser().setSigningKey(jwtRefreshSecret.getBytes()).parseClaimsJws(authToken); + return true; + } catch (SignatureException ex) { + logger.error("Invalid JWT signature"); + } catch (MalformedJwtException ex) { + logger.error("Invalid JWT token"); + } catch (ExpiredJwtException ex) { + logger.error("Expired JWT token"); + } catch (UnsupportedJwtException ex) { + logger.error("Unsupported JWT token"); + } catch (IllegalArgumentException ex) { + logger.error("JWT claims string is empty."); + } + return false; + } +} diff --git a/src/main/java/io/gmss/infocad/security/UserPrincipal.java b/src/main/java/io/gmss/infocad/security/UserPrincipal.java new file mode 100755 index 0000000..1f92ad3 --- /dev/null +++ b/src/main/java/io/gmss/infocad/security/UserPrincipal.java @@ -0,0 +1,85 @@ +package io.gmss.infocad.security; + +import io.gmss.infocad.entities.user.User; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + + +public class UserPrincipal implements UserDetails { + + /** + * + */ + private static final long serialVersionUID = -8138269269174282199L; + + private User user; + private Collection authorities; + + public UserPrincipal(User user, Collection authorities) { + this.user = user; + this.authorities = authorities; + } + + public static UserPrincipal create(User user) { + List authorities = new ArrayList<>(); + user.getRoles().forEach((role)-> + authorities.add(new SimpleGrantedAuthority(role.getNom().name())) + ); + return new UserPrincipal( + user, + authorities + ); + } + + public void setAuthorities(Collection authorities) { + this.authorities = authorities; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + + @Override + public String getUsername() { + return user.getUsername(); + } + + @Override + public String getPassword() { + return user.getPassword(); + } + + @Override + public Collection getAuthorities() { + return authorities; + } + + @Override + public boolean isAccountNonExpired() { + return true; + } + + @Override + public boolean isAccountNonLocked() { + return true; + } + + @Override + public boolean isCredentialsNonExpired() { + return true; + } + + @Override + public boolean isEnabled() { + return user.isActive(); + } +} diff --git a/src/main/java/io/gmss/infocad/service/FileStorageService.java b/src/main/java/io/gmss/infocad/service/FileStorageService.java new file mode 100644 index 0000000..c6587b8 --- /dev/null +++ b/src/main/java/io/gmss/infocad/service/FileStorageService.java @@ -0,0 +1,98 @@ +package io.gmss.infocad.service; + +import io.gmss.infocad.exceptions.FileStorageException; +import io.gmss.infocad.exceptions.MyFileNotFoundException; +import io.gmss.infocad.proprietes.FileStorageProperties; +import io.gmss.infocad.utils.FileNameGenerator; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.Resource; +import org.springframework.core.io.UrlResource; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; + +@Service +public class FileStorageService { + + private final Path fileStorageLocation; + @Autowired + public FileStorageService(FileStorageProperties fileStorageProperties) { + this.fileStorageLocation = Paths.get(fileStorageProperties.getUploadDir()) + .toAbsolutePath().normalize(); + System.out.println(fileStorageLocation.getFileSystem()); + try { + Files.createDirectories(this.fileStorageLocation); + } catch (Exception ex) { + throw new FileStorageException("Impossible de créer le répertoire où le fichier sera sauvegarder. Ecriture sur disque impossible. Vérifiez vos droits systèmes.", ex); + } + } + + public String storeFile(MultipartFile file) { + // Normalize file name + String fileName = StringUtils.cleanPath(file.getOriginalFilename()); + + String[] extension = fileName.split("\\."); + + fileName = FileNameGenerator.generateString()+"."+extension[extension.length-1]; + + try { + // Check if the file's name contains invalid characters + if(fileName.contains("..")) { + throw new FileStorageException("Désolé! Le nom du fichier contient des caractères non autorisé " + fileName); + } + + // Copy file to the target location (Replacing existing file with the same name) + Path targetLocation = this.fileStorageLocation.resolve(fileName); + Files.copy(file.getInputStream(), targetLocation, StandardCopyOption.REPLACE_EXISTING); + + return fileName; + } catch (IOException ex) { + throw new FileStorageException("Impossible d'enregistrer le fichier " + fileName + ". Réessayer plus tard!", ex); + } + } + + public boolean deleteFile(String fileName) throws IOException{ + + try { + Path filePath = this.fileStorageLocation.resolve(fileName).normalize(); + Resource resource = new UrlResource(filePath.toUri()); + if(resource.exists()) { + File file = resource.getFile(); + if(file.delete()){ + System.out.println(file.getName() + " is deleted!"); + }else{ + System.out.println("Delete operation is failed."); + } + } else { + throw new MyFileNotFoundException("Impossible de trouver le ficher " + fileName); + } + } catch (MalformedURLException ex) { + throw new MyFileNotFoundException("Impossible de trouver le ficher " + fileName, ex); + } + return true; + } + + public Resource loadFileAsResource(String fileName) { + try { + Path filePath = this.fileStorageLocation.resolve(fileName).normalize(); + Resource resource = new UrlResource(filePath.toUri()); + if(resource.exists()) { + return resource; + } else { + + throw new MyFileNotFoundException("Impossible de trouver le ficher " + fileName); + } + } catch (MalformedURLException ex) { + throw new MyFileNotFoundException("Impossible de trouver le ficher " + fileName, ex); + } + } + +} diff --git a/src/main/java/io/gmss/infocad/service/GeometryService.java b/src/main/java/io/gmss/infocad/service/GeometryService.java new file mode 100644 index 0000000..8fba8df --- /dev/null +++ b/src/main/java/io/gmss/infocad/service/GeometryService.java @@ -0,0 +1,24 @@ +package io.gmss.infocad.service; + +//import org.locationtech.jts.geom.GeometryFactory; +//import org.locationtech.jts.geom.Point; +//import org.locationtech.jts.geom.PrecisionModel; +//import org.locationtech.jts.io.ParseException; +//import org.locationtech.jts.io.WKTReader; + +import org.springframework.stereotype.Service; +@Service +public class GeometryService { +// public Point toGeometryPoint(String wkt, int srid) throws SQLException { +// if(wkt == null) { +// return null; +// } +// try { +// WKTReader wktReaderSRID = new WKTReader(new GeometryFactory(new PrecisionModel(),srid)); +// Point point = (Point) wktReaderSRID.read(String.format("POINT( ((%s)) )",wkt)); +// return point; +// } catch (ParseException ex) { +// throw new SQLException(ex); +// } +// } +} diff --git a/src/main/java/io/gmss/infocad/service/PasswordGenerator.java b/src/main/java/io/gmss/infocad/service/PasswordGenerator.java new file mode 100644 index 0000000..98020b3 --- /dev/null +++ b/src/main/java/io/gmss/infocad/service/PasswordGenerator.java @@ -0,0 +1,24 @@ +package io.gmss.infocad.service; + +import org.springframework.stereotype.Service; + +import java.security.SecureRandom; + +@Service +public class PasswordGenerator { + + private static final String CHARACTERS = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz123456789"; + private static final int PASSWORD_LENGTH = 7; + + public static String generatePassword() { + SecureRandom random = new SecureRandom(); + StringBuilder password = new StringBuilder(PASSWORD_LENGTH); + + for (int i = 0; i < PASSWORD_LENGTH; i++) { + int index = random.nextInt(CHARACTERS.length()); + password.append(CHARACTERS.charAt(index)); + } + + return password.toString(); + } +} diff --git a/src/main/java/io/gmss/infocad/service/RandomEnumGenerator.java b/src/main/java/io/gmss/infocad/service/RandomEnumGenerator.java new file mode 100644 index 0000000..7a8b932 --- /dev/null +++ b/src/main/java/io/gmss/infocad/service/RandomEnumGenerator.java @@ -0,0 +1,16 @@ +package io.gmss.infocad.service; + +import java.util.Random; + +public class RandomEnumGenerator> { + private static final Random PRNG = new Random(); + private final T[] values; + + public RandomEnumGenerator(Class e) { + values = e.getEnumConstants(); + } + + public T randomEnum() { + return values[PRNG.nextInt(values.length)]; + } +} diff --git a/src/main/java/io/gmss/infocad/service/ReportService.java b/src/main/java/io/gmss/infocad/service/ReportService.java new file mode 100644 index 0000000..9723a07 --- /dev/null +++ b/src/main/java/io/gmss/infocad/service/ReportService.java @@ -0,0 +1,230 @@ +package io.gmss.infocad.service; + +import io.gmss.infocad.entities.decoupage.Arrondissement; +import io.gmss.infocad.entities.decoupage.Commune; +import io.gmss.infocad.entities.infocad.metier.Bloc; +import io.gmss.infocad.entities.infocad.metier.EnqueteFiltreResponse; +import io.gmss.infocad.entities.infocad.parametre.Structure; +import io.gmss.infocad.enums.FormatRapport; +import io.gmss.infocad.enums.RoleActeur; +import io.gmss.infocad.interfaces.infocad.metier.EnqueteService; +import io.gmss.infocad.paylaods.request.FiltreEnquetePayLoad; +import io.gmss.infocad.paylaods.response.report.BlocsParStructureResponse; +import io.gmss.infocad.paylaods.response.report.EnqueteParBlocResponse; +import io.gmss.infocad.repositories.decoupage.ArrondissementRepository; +import io.gmss.infocad.repositories.decoupage.CommuneRepository; +import io.gmss.infocad.repositories.infocad.metier.BlocRepository; +import io.gmss.infocad.repositories.infocad.metier.EnqueteRepository; +import io.gmss.infocad.repositories.infocad.parametre.StructureRepository; +import net.sf.jasperreports.engine.*; +import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; +import net.sf.jasperreports.engine.export.JRPdfExporter; +import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter; +import net.sf.jasperreports.export.SimpleExporterInput; +import net.sf.jasperreports.export.SimplePdfExporterConfiguration; +import net.sf.jasperreports.export.SimplePdfReportConfiguration; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.ResourceLoader; +import org.springframework.stereotype.Service; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +@Service +public class ReportService { + private final BlocRepository blocRepository; + private final CommuneRepository communeRepository; + private final ArrondissementRepository arrondissementRepository; + private final EnqueteRepository enqueteRepository; + private final StructureRepository structureRepository; + private final EnqueteService enqueteService; + @Value("${file.jasper-reports}") + private String jaspersDir; + + private final ResourceLoader resourceLoader; + + public ReportService(BlocRepository blocRepository, CommuneRepository communeRepository, ArrondissementRepository arrondissementRepository, EnqueteRepository enqueteRepository, StructureRepository structureRepository, EnqueteService enqueteService, ResourceLoader resourceLoader) { + this.blocRepository = blocRepository; + this.communeRepository = communeRepository; + this.arrondissementRepository = arrondissementRepository; + this.enqueteRepository = enqueteRepository; + this.structureRepository = structureRepository; + this.enqueteService = enqueteService; + this.resourceLoader = resourceLoader; + } + + + public void printPDF(HttpServletResponse response, Map parameters, String jaspers, String fileName, List data) throws JRException, IOException { + try { + + parameters.put("logoGauche", getJaspersDir()+"/andf.png"); + // parameters.put("logoArcep",imageDir+"/logo-arcep.png" ); + + InputStream stream = getStream(getJaspersDir()+ jaspers); + + JRDataSource dataSource = new JRBeanCollectionDataSource(data, false); + JasperPrint jasperPrint = JasperFillManager.fillReport(stream, parameters, dataSource); + JRPdfExporter exporter = new JRPdfExporter(); + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + SimplePdfReportConfiguration reportConfig = new SimplePdfReportConfiguration(); + reportConfig.setSizePageToContent(true); + reportConfig.setForceLineBreakPolicy(false); + SimplePdfExporterConfiguration exportConfig = new SimplePdfExporterConfiguration(); + exportConfig.setMetadataAuthor("ANDF"); + exportConfig.setEncrypted(true); + exportConfig.setAllowedPermissionsHint("PRINTING"); + exporter.setConfiguration(reportConfig); + exporter.setConfiguration(exportConfig); + response.setContentType("application/x-download"); + response.setHeader("Content-Disposition", String.format("attachment; filename=\"" + fileName + ".pdf\"")); + OutputStream out = response.getOutputStream(); + JasperExportManager.exportReportToPdfStream(jasperPrint, out); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void printXLSX(HttpServletResponse response, Map parameters, String jaspers, String fileName, List data) throws SQLException, JRException, IOException { + ServletOutputStream servletOutputStream = response.getOutputStream(); + //parameters.put("logoMEF", imageDir+"/logo_mef-transparent.png"); + // parameters.put("logoArcep",imageDir+"/logo-arcep.png" ); + parameters.put("logoGauche", getJaspersDir()+"/andf.png"); + // parameters.put("logoArcep",imageDir+"/logo-arcep.png" ); + + InputStream stream = getStream(getJaspersDir()+ jaspers); + + JRDataSource dataSource = new JRBeanCollectionDataSource(data, false); + JasperPrint jasperPrint = JasperFillManager.fillReport(stream, parameters, dataSource); + //JRPdfExporter exporter = new JRPdfExporter(); + //exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + SimplePdfReportConfiguration reportConfig = new SimplePdfReportConfiguration(); + reportConfig.setSizePageToContent(true); + reportConfig.setForceLineBreakPolicy(false); + SimplePdfExporterConfiguration exportConfig = new SimplePdfExporterConfiguration(); + exportConfig.setMetadataAuthor("ARCEP"); + exportConfig.setEncrypted(true); + exportConfig.setAllowedPermissionsHint("PRINTING"); + //exporter.setConfiguration(reportConfig); + //exporter.setConfiguration(exportConfig); + response.setContentType("application/x-download"); + response.setHeader("Content-Disposition", String.format("attachment; filename=\"" + fileName + ".xlsx\"")); + JRXlsxExporter docxExporter = new JRXlsxExporter(); + docxExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); + docxExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, servletOutputStream); + docxExporter.exportReport(); + } + + + public InputStream getStream(String fileName) throws IOException { + File initialFile = new File(fileName); + InputStream stream = new FileInputStream(initialFile); + return stream; + } + + private String getResourcePath(String fileName) throws IOException { + return resourceLoader.getResource("classpath:" + fileName).getFile().getAbsolutePath(); + } + + public String getJaspersDir() { + return jaspersDir; + } + + public void imprimerBlocsStructure(HttpServletResponse response, FormatRapport formatRapport, Long structureId) { + try { + Optional optionalStructure= structureRepository.findById(structureId); + if (!optionalStructure.isEmpty()) { + List blocs=blocRepository.getBlocsParStructureResponse(structureId); + + Map parameters = new HashMap(); + parameters.put("structure",optionalStructure.get().getNom()); + try { + String jaspers = "/listBlocParStructure.jasper"; + if(formatRapport.equals(FormatRapport.PDF)){ + printPDF(response, parameters, jaspers, "blocs.pdf", blocs); + } + if(formatRapport.equals(FormatRapport.XLS)){ + printXLSX(response, parameters, jaspers, "blocs.xlsx", blocs); + } + } catch (IOException e) { + e.printStackTrace(); + } catch (JRException e) { + e.printStackTrace(); + } + + } else { + System.out.printf("Structure inexistante"); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void imprimerEnqueteParBloc(HttpServletResponse response, FormatRapport formatRapport, Long blocId) { + try { + Optional optionalBloc= blocRepository.findById(blocId); + if (!optionalBloc.isEmpty()) { + Optional optionalStructure= structureRepository.findById(optionalBloc.get().getStructure().getId()); + Optional optionalArrondissement= arrondissementRepository.findById(optionalBloc.get().getArrondissement().getId()); + Optional optionalCommune= communeRepository.findById(optionalArrondissement.get().getCommune().getId()); + List enqueteParBlocResponses=enqueteRepository.getEnqueteByBloc(blocId, RoleActeur.PROPRIETAIRE.toString()); + Map parameters = new HashMap(); + parameters.put("structure",optionalStructure.get().getNom()); + parameters.put("bloc",optionalBloc.get().getNom()); + parameters.put("commune",optionalCommune.get().getNom()); + parameters.put("arrondissement",optionalArrondissement.get().getNom()); + try { + String jaspers = "/listEnqueteParBloc.jasper"; + if(formatRapport.equals(FormatRapport.PDF)){ + printPDF(response, parameters, jaspers, "listEnqueteParBloc.pdf", enqueteParBlocResponses); + } + if(formatRapport.equals(FormatRapport.XLS)){ + printXLSX(response, parameters, jaspers, "listEnqueteParBloc.xlsx", enqueteParBlocResponses); + } + } catch (IOException e) { + e.printStackTrace(); + } catch (JRException e) { + e.printStackTrace(); + } + + } else { + System.out.printf("Structure inexistante"); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + + + public void imprimerEnqueteParFiltre(HttpServletResponse response, FiltreEnquetePayLoad filtreEnquetePayLoad,FormatRapport formatRapport) { + try { + + List enqueteFiltreResponses=enqueteService.getEnqueteCommuneArrondBlocFiltre(filtreEnquetePayLoad); + Map parameters = new HashMap(); + try { + String jaspers = "/listEnqueteParFiltre.jasper"; + if(formatRapport.equals(FormatRapport.PDF)){ + printPDF(response, parameters, jaspers, "listEnqueteParFiltre.pdf", enqueteFiltreResponses); + } + if(formatRapport.equals(FormatRapport.XLS)){ + printXLSX(response, parameters, jaspers, "listEnqueteParFiltre.xlsx", enqueteFiltreResponses); + } + } catch (IOException e) { + e.printStackTrace(); + } catch (JRException e) { + e.printStackTrace(); + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + + +} diff --git a/src/main/java/io/gmss/infocad/service/StringManager.java b/src/main/java/io/gmss/infocad/service/StringManager.java new file mode 100644 index 0000000..48a6ae7 --- /dev/null +++ b/src/main/java/io/gmss/infocad/service/StringManager.java @@ -0,0 +1,25 @@ +package io.gmss.infocad.service; + +import org.springframework.stereotype.Service; + +@Service +public class StringManager { + + public String deleteWhiteSpace(String in){ + return in.replaceAll(" ", "").trim(); + } + + public int countChar(String someString, String separator) { + int count = 0; + for (int i = 0; i < someString.length(); i++) { + if (someString.charAt(i) == separator.charAt(0)) { + count++; + } + } + count++; + return count; + //return someString.split(separator).length; + } + + +} diff --git a/src/main/java/io/gmss/infocad/service/StringService.java b/src/main/java/io/gmss/infocad/service/StringService.java new file mode 100644 index 0000000..9e0ce5a --- /dev/null +++ b/src/main/java/io/gmss/infocad/service/StringService.java @@ -0,0 +1,32 @@ +package io.gmss.infocad.service; + +import org.springframework.stereotype.Service; + +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.util.UUID; + +@Service +public class StringService { + + public String getUniqueString(){ + UUID uuid = UUID.randomUUID(); + String uuidAsString = uuid.toString(); + return uuidAsString.replaceAll("-", ""); + } + public static String getCodeEquipe(){ + UUID uuid = UUID.randomUUID(); + String uuidAsString = uuid.toString(); + return uuidAsString.replaceAll("-", "").toUpperCase().substring(0,4); + } + + public String generateIntInTwoPositions(int input){ + NumberFormat formatter = new DecimalFormat("00"); + return formatter.format(input); + } + + public String generateIntInThrePositions(int input){ + NumberFormat formatter = new DecimalFormat("000"); + return formatter.format(input); + } +} diff --git a/src/main/java/io/gmss/infocad/utils/FileNameGenerator.java b/src/main/java/io/gmss/infocad/utils/FileNameGenerator.java new file mode 100644 index 0000000..5c9492b --- /dev/null +++ b/src/main/java/io/gmss/infocad/utils/FileNameGenerator.java @@ -0,0 +1,16 @@ +package io.gmss.infocad.utils; + +import java.util.UUID; + +/** + * + * @author AKPONA Christian + */ +public class FileNameGenerator { + + + public static String generateString() { + String uuid = UUID.randomUUID().toString(); + return uuid = uuid.replace("-", ""); + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100755 index 0000000..2cdfab7 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,51 @@ +spring.jpa.properties.hibernate.id.new_generator_mappings=false +spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect +spring.datasource.url=jdbc:postgresql://vmi792116.contaboserver.net:5599/abomey_db +spring.datasource.username=infocad_user +spring.datasource.password=W5fwD({9*q53 +spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true + +spring.jpa.show-sql=true +spring.jpa.hibernate.ddl-auto=update +jwt.jwtSecret=ImThEVeryB@dS@lt@302839_ +jwt.jwtExpirationInMs=7776000000 +spring.application.name=infocad +logging.file.name=infocad.log +logging.level.org.springframework.security=DEBUG +app.sourcemind.env.defaultpassword=1234567890 +app.sourcemind.env.resetlink=http://localhost:4200/reset-password/ + +spring.mail.host=sandbox.smtp.mailtrap.io +spring.mail.port=587 +spring.mail.username=2a06b84a6b8abc +spring.mail.password=654a7c7759506a +spring.mail.auth=plain +spring.mail.starttls.enable=true + +spring.datasource.hikari.minimum-idle=2 +spring.datasource.hikari.maximum-pool-size=10 +spring.datasource.hikari.idle-timeout=120000 +spring.datasource.hikari.connection-timeout=300000 +spring.datasource.hikari.leak-detection-threshold=300000 + +file.upload_dir= ./uploads + +file.jasper-reports= ./jasperReport + +spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration +spring.groovy.template.enabled=false +spring.groovy.template.check-template-location=false + + +#####Gestion de l'identifiant du systme de rfence spatiale########### + +infocad.geom.srid=32631 +infocad.geom.sridfixe=4326 + +server.port=8282 + + +# application.properties +spring.mvc.contentnegotiation.favor-parameter=false +spring.mvc.contentnegotiation.parameter-name=mediaType +spring.mvc.contentnegotiation.ignore-unknown-path-extensions=true diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html new file mode 100644 index 0000000..4b6483f --- /dev/null +++ b/src/main/resources/static/index.html @@ -0,0 +1,21 @@ + + + + + + Swagger UI + + + + + + + + +Test +
+ + + + + \ No newline at end of file diff --git a/src/main/resources/static/logo.avif b/src/main/resources/static/logo.avif new file mode 100644 index 0000000000000000000000000000000000000000..1d4dbf9fa7f907d36e618f15d29def03d840d916 GIT binary patch literal 18985 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/static/swagger-custom.css b/src/main/resources/static/swagger-custom.css new file mode 100644 index 0000000..d299a73 --- /dev/null +++ b/src/main/resources/static/swagger-custom.css @@ -0,0 +1,17 @@ +/* Custom Swagger UI Styles */ + +/* Change the background color of the top bar */ +.topbar { + background-color: #3399ff; /* Your desired color */ +} + +/* Change the color of the top bar text and icons */ +.topbar a, .topbar span { + color: #ffffff; /* Your desired color */ +} + +/* Add custom logo image to the top bar */ +.topbar img { + height: 40px; /* Adjust the logo height as needed */ + margin-right: 10px; +} \ No newline at end of file diff --git a/src/main/resources/static/swagger-custom.html b/src/main/resources/static/swagger-custom.html new file mode 100644 index 0000000..bec2e95 --- /dev/null +++ b/src/main/resources/static/swagger-custom.html @@ -0,0 +1,16 @@ + + + + + + Swagger UI + + + + +
+ + + + + \ No newline at end of file diff --git a/src/test/java/io/gmss/infocad/IfuDistributionApplicationTests.java b/src/test/java/io/gmss/infocad/IfuDistributionApplicationTests.java new file mode 100755 index 0000000..821deec --- /dev/null +++ b/src/test/java/io/gmss/infocad/IfuDistributionApplicationTests.java @@ -0,0 +1,15 @@ +/* +package io.sourcemind.eresto; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class IfuDistributionApplicationTests { + + @Test + void contextLoads() { + } + +} +*/