106 Commits

Author SHA1 Message Date
cd4fcb7aa0 Merge pull request 'develop' (#84) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 47s
Reviewed-on: #84
2026-02-04 01:34:27 +00:00
f50ed9aa5f Merge pull request 'gestion revu de code en utilisant uniquement les DTO' (#83) from features/crud_entites into develop
Reviewed-on: #83
2026-02-04 01:33:32 +00:00
95eb4ad0b9 gestion revu de code en utilisant uniquement les DTO
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 29s
2026-02-04 02:33:04 +01:00
1e0cfead5b Merge pull request 'develop' (#82) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 48s
Reviewed-on: #82
2026-02-03 19:34:06 +00:00
966fd2ca7a Merge pull request 'gestion revu de code en utilisant uniquement les DTO' (#81) from features/crud_entites into develop
Reviewed-on: #81
2026-02-03 19:32:06 +00:00
743bb46b47 gestion revu de code en utilisant uniquement les DTO
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 30s
2026-02-03 20:31:38 +01:00
0837d0ce08 Merge pull request 'develop' (#80) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 49s
Reviewed-on: #80
2026-02-03 15:09:35 +00:00
a10253b2e8 Merge pull request 'gestion revu de code en utilisant uniquement les DTO' (#79) from features/crud_entites into develop
Reviewed-on: #79
2026-02-03 15:08:48 +00:00
2c0aad4d51 gestion revu de code en utilisant uniquement les DTO
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 33s
2026-02-03 16:08:13 +01:00
b58316bb88 Merge pull request 'develop' (#78) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 49s
Reviewed-on: #78
2026-02-02 23:04:11 +00:00
08b68f9e08 Merge pull request 'gestion revu de code en utilisant uniquement les DTO' (#77) from features/crud_entites into develop
Reviewed-on: #77
2026-02-02 23:03:26 +00:00
fc6ff679f0 gestion revu de code en utilisant uniquement les DTO
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 33s
2026-02-03 00:01:45 +01:00
209d1cd777 Merge pull request 'develop' (#76) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 48s
Reviewed-on: #76
2026-02-01 22:50:41 +00:00
be487d6a03 Merge pull request 'gestion revu de code en utilisant uniquement les DTO' (#75) from features/crud_entites into develop
Reviewed-on: #75
2026-02-01 22:49:00 +00:00
772f870dbd gestion revu de code en utilisant uniquement les DTO
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 27s
2026-02-01 23:48:05 +01:00
1c63303f3c gestion revu de code en utilisant uniquement les DTO
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 33s
2026-02-01 23:45:27 +01:00
1eb3aeeda0 Merge pull request 'develop' (#74) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 48s
Reviewed-on: #74
2026-01-27 08:59:25 +00:00
3be64e7f44 Merge pull request 'gestion de profil, secteur, section et arbre decoupage' (#73) from features/crud_entites into develop
Reviewed-on: #73
2026-01-27 08:58:32 +00:00
9a118b41e5 gestion de profil, secteur, section et arbre decoupage
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 26s
2026-01-27 09:57:56 +01:00
03a661cdc0 Merge pull request 'gestion de profil, secteur, section et arbre decoupage' (#72) from features/crud_entites into develop
Reviewed-on: #72
2026-01-27 08:37:52 +00:00
c65fd8a450 gestion de profil, secteur, section et arbre decoupage
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 32s
2026-01-27 09:37:11 +01:00
b3c288628c Merge pull request 'develop' (#71) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 56s
Reviewed-on: #71
2026-01-13 20:34:13 +00:00
a68ec444cc Merge pull request 'features/crud_entites' (#70) from features/crud_entites into develop
Reviewed-on: #70
2026-01-13 20:33:17 +00:00
47b92f9341 gestion des enregistrement par web
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 30s
2026-01-13 21:28:53 +01:00
9947716ef3 ajout des end-point de maj web 2026-01-13 10:31:42 +01:00
d45e01ac85 Merge pull request 'develop' (#69) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 46s
Reviewed-on: #69
2025-12-20 19:04:38 +00:00
58f517bf31 Merge pull request 'correction creation user par defaut' (#68) from features/crud_entites into develop
Reviewed-on: #68
2025-12-20 19:03:51 +00:00
adc3796205 correction creation user par defaut
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 25s
2025-12-20 20:01:37 +01:00
9bb0cc5c75 Merge pull request 'develop' (#67) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 47s
Reviewed-on: #67
2025-12-20 18:56:24 +00:00
7f18f22efb Merge pull request 'correction creation user par defaut' (#66) from features/crud_entites into develop
Reviewed-on: #66
2025-12-20 18:55:42 +00:00
a87ece201f correction creation user par defaut
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 25s
2025-12-20 19:53:11 +01:00
3a68fd2ce4 Merge pull request 'develop' (#65) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 44s
Reviewed-on: #65
2025-12-20 17:07:04 +00:00
af3218412f Merge pull request 'correction creation user par defaut' (#64) from features/crud_entites into develop
Reviewed-on: #64
2025-12-20 17:06:19 +00:00
350b862ae7 correction creation user par defaut
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 24s
2025-12-20 18:05:02 +01:00
fa7421c35b Merge pull request 'develop' (#63) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 35s
Reviewed-on: #63
2025-12-20 15:04:55 +00:00
f35670c72e Merge pull request 'correction creation user par defaut' (#62) from features/crud_entites into develop
Reviewed-on: #62
2025-12-20 15:03:45 +00:00
b53f441bf4 correction creation user par defaut
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 24s
2025-12-20 16:03:12 +01:00
5cb9497163 Merge pull request 'develop' (#61) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 34s
Reviewed-on: #61
2025-12-20 14:50:28 +00:00
a77c0e854d Merge pull request 'correction creation user par defaut' (#60) from features/crud_entites into develop
Reviewed-on: #60
2025-12-20 14:48:47 +00:00
f4f1fa4890 correction creation user par defaut
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 25s
2025-12-20 15:48:07 +01:00
15cac660bc Merge pull request 'develop' (#59) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 34s
Reviewed-on: #59
2025-12-20 14:34:41 +00:00
e75eff4e20 Merge pull request 'correction lecture de secret chargement' (#58) from features/crud_entites into develop
Reviewed-on: #58
2025-12-20 14:33:59 +00:00
8e0bc3948a correction lecture de secret chargement
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 24s
2025-12-20 15:32:30 +01:00
0feec2982f Merge pull request 'develop' (#57) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 35s
Reviewed-on: #57
2025-12-20 14:14:47 +00:00
40d078c653 Merge pull request 'correction lecture de secret chargement' (#56) from features/crud_entites into develop
Reviewed-on: #56
2025-12-20 14:14:02 +00:00
1fbabd6edb correction lecture de secret chargement
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 25s
2025-12-20 15:13:06 +01:00
b5ab0772a0 Merge pull request 'develop' (#55) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 35s
Reviewed-on: #55
2025-12-20 13:11:40 +00:00
31dd11d017 Merge pull request 'correction lecture de secret chargement' (#54) from features/crud_entites into develop
Reviewed-on: #54
2025-12-20 13:10:40 +00:00
52f606c252 correction lecture de secret chargement
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 28s
2025-12-20 14:02:41 +01:00
f293f65650 Merge pull request 'develop' (#53) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 35s
Reviewed-on: #53
2025-12-20 12:58:25 +00:00
6dfd12fae8 Merge pull request 'correction lecture de secret chargement' (#52) from features/crud_entites into develop
Reviewed-on: #52
2025-12-20 12:57:46 +00:00
b0f79f6c7a correction lecture de secret chargement
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 26s
2025-12-20 13:55:49 +01:00
cfd1104c28 Merge pull request 'develop' (#51) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 39s
Reviewed-on: #51
2025-12-20 12:42:50 +00:00
a4ad0a4556 Merge pull request 'correction lecture de secret chargement' (#50) from features/crud_entites into develop
Reviewed-on: #50
2025-12-20 12:41:09 +00:00
237694ca44 correction lecture de secret chargement
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 25s
2025-12-20 13:34:08 +01:00
7d64390bae Merge pull request 'develop' (#49) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 34s
Reviewed-on: #49
2025-12-20 12:22:29 +00:00
411a6c0c2d Merge pull request 'correction lecture de secret' (#48) from features/crud_entites into develop
Reviewed-on: #48
2025-12-20 12:21:25 +00:00
b9fa86fa37 correction lecture de secret
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 25s
2025-12-20 13:20:46 +01:00
4876d8ab14 Merge pull request 'develop' (#47) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 39s
Reviewed-on: #47
2025-12-20 12:11:18 +00:00
bed73b2b16 Merge pull request 'correction lecture de secret' (#46) from features/crud_entites into develop
Reviewed-on: #46
2025-12-20 12:10:00 +00:00
95dcf7929a correction lecture de secret
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 25s
2025-12-20 13:09:21 +01:00
2bfb298054 Merge pull request 'develop' (#45) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 36s
Reviewed-on: #45
2025-12-20 12:01:44 +00:00
5a0814a0ba Merge pull request 'correction lecture de secret' (#44) from features/crud_entites into develop
Reviewed-on: #44
2025-12-20 12:00:12 +00:00
afc780561a correction lecture de secret
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 25s
2025-12-20 12:58:53 +01:00
54ef33d1ab Merge pull request 'develop' (#43) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 33s
Reviewed-on: #43
2025-12-20 11:44:36 +00:00
126254ea94 Merge pull request 'correction lecture de secret' (#42) from features/crud_entites into develop
Reviewed-on: #42
2025-12-20 11:43:55 +00:00
1af99fc21f correction lecture de secret
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 24s
2025-12-20 12:43:04 +01:00
3fd779854f Merge pull request 'develop' (#41) from develop into main
Some checks failed
CD - Deploy on main / deploy (push) Failing after 27s
Reviewed-on: #41
2025-12-20 11:40:18 +00:00
f9e4681af4 Merge pull request 'correction lecture de secret' (#40) from features/crud_entites into develop
Reviewed-on: #40
2025-12-20 11:39:40 +00:00
e3a47de4ef correction lecture de secret
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 25s
2025-12-20 12:38:33 +01:00
de2928414b Merge pull request 'develop' (#39) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 39s
Reviewed-on: #39
2025-12-20 10:49:00 +00:00
84089d3639 Merge pull request 'correction profil actif' (#38) from features/crud_entites into develop
Reviewed-on: #38
2025-12-20 10:48:01 +00:00
cce55c6ba0 correction profil actif
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 24s
2025-12-20 11:40:50 +01:00
9d6d278d78 Merge pull request 'develop' (#37) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 34s
Reviewed-on: #37
2025-12-20 10:02:57 +00:00
02b0a937b4 Merge pull request 'correction profil actif' (#36) from features/crud_entites into develop
Reviewed-on: #36
2025-12-20 10:02:19 +00:00
19a9c6a33a correction profil actif
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 26s
2025-12-20 10:59:23 +01:00
c8b0457195 Merge pull request 'develop' (#35) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 35s
Reviewed-on: #35
2025-12-19 19:18:44 +00:00
c0096457fb Merge pull request 'nouvelle verson ci-cd avec gitea runner natif intallé sur hote' (#34) from features/crud_entites into develop
Reviewed-on: #34
2025-12-19 19:14:24 +00:00
f5a8ac7dba nouvelle verson ci-cd avec gitea runner natif intallé sur hote
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 1m10s
2025-12-19 20:13:59 +01:00
b6062ba4d1 Merge pull request 'nouvelle verson ci-cd avec gitea runner natif intallé sur hote' (#33) from features/crud_entites into develop
Reviewed-on: #33
2025-12-19 10:50:02 +00:00
b3a68e87d0 nouvelle verson ci-cd avec gitea runner natif intallé sur hote
Some checks failed
CI - Build & Test (develop) / build-and-test (pull_request) Failing after 1s
2025-12-19 11:49:27 +01:00
8dc8c974d3 Merge pull request 'correction docker composer avec les secrets' (#32) from features/crud_entites into develop
Reviewed-on: #32
2025-12-19 10:39:57 +00:00
12e017ae8c correction docker composer avec les secrets
Some checks failed
CI - Build & Test (develop) / build-and-test (pull_request) Failing after 11s
2025-12-19 11:30:43 +01:00
9cc74a9a38 Merge pull request 'develop' (#31) from develop into main
Some checks failed
CD - Deploy on main / deploy (push) Failing after 33s
Reviewed-on: #31
2025-12-18 15:47:46 +00:00
957416df9e Merge pull request 'correction docker composer avec les secrets' (#30) from features/crud_entites into develop
Reviewed-on: #30
2025-12-18 15:47:21 +00:00
9390d14bdb correction docker composer avec les secrets
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 27s
2025-12-18 16:46:53 +01:00
8e6168d4ee Merge pull request 'develop' (#29) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Has been skipped
Reviewed-on: #29
2025-12-18 15:46:31 +00:00
8d8af75108 Merge pull request 'correction docker composer avec les secrets' (#28) from features/crud_entites into develop
Reviewed-on: #28
2025-12-18 15:46:02 +00:00
9ddbc260cc correction docker composer avec les secrets
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 27s
2025-12-18 16:45:11 +01:00
c1a8ce86a6 Merge pull request 'develop' (#27) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Has been skipped
Reviewed-on: #27
2025-12-18 10:36:59 +00:00
555f13508e Merge pull request 'correction docker composer avec les secrets' (#26) from features/crud_entites into develop
Reviewed-on: #26
2025-12-18 10:36:10 +00:00
bd900a93c6 correction docker composer avec les secrets
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 28s
2025-12-18 11:35:18 +01:00
14feb49dcd Merge pull request 'develop' (#25) from develop into main
Some checks failed
CD - Deploy on main / deploy (push) Failing after 33s
Reviewed-on: #25
2025-12-17 17:14:31 +00:00
d92a2b2503 Merge pull request 'correction docker composer avec les secrets' (#24) from features/crud_entites into develop
Reviewed-on: #24
2025-12-17 17:13:46 +00:00
c1b93e0fcc correction docker composer avec les secrets
All checks were successful
CI - Build & Test (develop) / build-and-test (pull_request) Successful in 27s
2025-12-17 18:13:10 +01:00
39de1c48c0 Merge pull request 'develop' (#23) from develop into main
Some checks failed
CD - Deploy on main / deploy (push) Failing after 34s
Reviewed-on: #23
2025-12-17 16:59:31 +00:00
f9e2b32118 Merge pull request 'develop' (#21) from develop into main
Some checks failed
CD - Deploy on main / deploy (push) Failing after 33s
Reviewed-on: #21
2025-12-17 16:49:53 +00:00
3ebb1cf165 Merge pull request 'develop' (#19) from develop into main
Some checks failed
CD - Deploy on main / deploy (push) Failing after 33s
Reviewed-on: #19
2025-12-17 16:42:39 +00:00
c84176b8d3 Merge pull request 'develop' (#17) from develop into main
Some checks failed
CD - Deploy on main / deploy (push) Failing after 33s
Reviewed-on: #17
2025-12-17 16:27:26 +00:00
61f4dd513f Merge pull request 'develop' (#15) from develop into main
All checks were successful
CD - Deploy on main / deploy (push) Successful in 38s
Reviewed-on: #15
2025-12-17 14:16:12 +00:00
5e9f437497 Merge pull request 'develop' (#13) from develop into main
Reviewed-on: #13
2025-12-16 18:23:59 +00:00
69af57f876 Merge pull request 'develop' (#11) from develop into main
Reviewed-on: #11
2025-12-16 18:08:36 +00:00
56f78e77f3 Merge pull request 'develop' (#9) from develop into main
Reviewed-on: #9
2025-12-05 19:24:21 +00:00
0c7dc082fd Merge pull request 'develop' (#7) from develop into main
Reviewed-on: #7
2025-12-05 19:21:28 +00:00
3f5d7e980c Merge pull request 'develop' (#5) from develop into main
Reviewed-on: #5
2025-12-05 19:11:10 +00:00
87be4e4483 Merge pull request 'develop' (#3) from develop into main
Reviewed-on: #3
2025-12-05 19:07:16 +00:00
391 changed files with 8366 additions and 2238 deletions

5
.env
View File

@@ -1,2 +1,3 @@
POSTGRES_DB=abomey_db POSTGRES_DB=fiscad_db
POSTGRES_USER=infocad_user POSTGRES_USER=fiscad_user
POSTGRES_PASSWORD=W5fwD({9*q53

View File

@@ -7,33 +7,39 @@ on:
jobs: jobs:
deploy: deploy:
runs-on: self-hosted runs-on: [self-hosted, prod]
steps: steps:
# 1) S'assurer que Node.js est installé # 1) Vérifier Node.js (pas d'installation dynamique)
- name: Ensure Node.js is installed - name: Verify Node.js
shell: sh shell: sh
run: | run: |
if command -v node >/dev/null 2>&1; then if command -v node >/dev/null 2>&1; then
echo "Node.js already installed: $(node -v)" echo "Node.js version:"
node -v
else else
apk update && apk add --no-cache nodejs echo "❌ Node.js is not installed on the runner"
echo "Node.js installed: $(node -v)" exit 1
fi fi
# 2) S'assurer que Java 17 & Maven sont installés # 2) Vérifier Java 17 & Maven (préinstallés sur le VPS)
- name: Ensure Java & Maven are installed - name: Verify Java & Maven
shell: sh shell: sh
run: | run: |
if ! command -v java >/dev/null 2>&1; then if ! command -v java >/dev/null 2>&1; then
apk update && apk add --no-cache openjdk17-jdk echo "❌ Java is not installed on the runner"
exit 1
fi fi
java -version
if ! command -v mvn >/dev/null 2>&1; then if ! command -v mvn >/dev/null 2>&1; then
apk update && apk add --no-cache maven echo "❌ Maven is not installed on the runner"
exit 1
fi fi
echo "Java version:"
java -version
echo "Maven version:"
mvn -version mvn -version
# 3) Détecter JAVA_HOME dynamiquement # 3) Détecter JAVA_HOME dynamiquement
@@ -42,6 +48,7 @@ jobs:
run: | run: |
JAVA_BIN=$(readlink -f "$(command -v java)") JAVA_BIN=$(readlink -f "$(command -v java)")
JAVA_HOME=$(dirname "$(dirname "$JAVA_BIN")") JAVA_HOME=$(dirname "$(dirname "$JAVA_BIN")")
echo "Detected JAVA_HOME=$JAVA_HOME"
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV" echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
# 4) Checkout du dépôt # 4) Checkout du dépôt
@@ -57,26 +64,17 @@ jobs:
echo "JAVA_HOME=$JAVA_HOME" echo "JAVA_HOME=$JAVA_HOME"
java -version java -version
mvn -version mvn -version
docker --version
docker-compose --version || docker compose version
# 6) S'assurer que Docker CLI & docker-compose sont installés # 6) Export de la configuration NON sensible
- name: Ensure Docker & docker-compose are installed
shell: sh
run: |
if command -v docker >/dev/null 2>&1; then
docker version || true
else
apk update && apk add --no-cache docker docker-compose
docker version || true
fi
# 7) Fournir la configuration NON sensible
- name: Export database configuration - name: Export database configuration
shell: sh shell: sh
run: | run: |
echo "POSTGRES_DB_FISCAD=fiscad_db" >> "$GITHUB_ENV" echo "POSTGRES_DB_FISCAD=fiscad_db" >> "$GITHUB_ENV"
echo "POSTGRES_USER_FISCAD=fiscad_user" >> "$GITHUB_ENV" echo "POSTGRES_USER_FISCAD=fiscad_user" >> "$GITHUB_ENV"
# 8) Création des secrets runtime (PRODUCTION) # 7) Création des secrets runtime (PRODUCTION)
- name: Create runtime secrets - name: Create runtime secrets
shell: sh shell: sh
run: | run: |
@@ -86,29 +84,40 @@ jobs:
echo "${{ secrets.POSTGRES_PASSWORD_FISCAD }}" > secrets/postgresPassword.txt echo "${{ secrets.POSTGRES_PASSWORD_FISCAD }}" > secrets/postgresPassword.txt
chmod 600 secrets/* chmod 600 secrets/*
# 9) Build Maven (jar final) # 8) Build Maven (jar final)
- name: Build backend with Maven - name: Build backend with Maven
shell: sh shell: sh
run: mvn -B clean package -DskipTests run: |
mvn -B clean package -DskipTests
# 10) Déploiement avec docker-compose (prod) # 9) Déploiement avec docker-compose (prod)
- name: Deploy using docker-compose (prod) - name: Deploy using docker-compose (prod)
shell: sh shell: sh
run: | run: |
export COMPOSE_PROJECT_NAME=fiscad export COMPOSE_PROJECT_NAME=fiscad
cd $GITHUB_WORKSPACE cd "$GITHUB_WORKSPACE"
echo "Workspace: $(pwd)"
cat secrets/postgresPassword.txt
echo "POSTGRES_DB_FISCAD=$POSTGRES_DB_FISCAD"
echo "POSTGRES_USER_FISCAD=$POSTGRES_USER_FISCAD"
ls -l secrets/
docker-compose -f docker-compose-prod.yml pull || true docker-compose -f docker-compose-prod.yml pull || true
docker-compose -f docker-compose-prod.yml down --remove-orphans docker-compose -f docker-compose-prod.yml down --remove-orphans
docker-compose -f docker-compose-prod.yml up -d --build docker-compose -f docker-compose-prod.yml up -d --build
# 11) ✅ TEST BLOQUANT : connexion PostgreSQL # 10) Test bloquant : connexion PostgreSQL
- name: Test database connection - name: Test database connection
shell: sh shell: sh
run: | run: |
echo "⏳ Waiting for PostgreSQL to be ready..." echo "⏳ Waiting for PostgreSQL to be ready..."
sleep 10 for i in $(seq 1 12); do
if docker exec fiscad-db pg_isready -U ${POSTGRES_USER_FISCAD} >/dev/null 2>&1; then
break
fi
sleep 5
done
echo "🔍 Testing database connection..." echo "🔍 Testing database connection..."
docker exec fiscad-db sh -c " docker exec fiscad-db sh -c "
@@ -117,15 +126,17 @@ jobs:
-U ${POSTGRES_USER_FISCAD} \ -U ${POSTGRES_USER_FISCAD} \
-d ${POSTGRES_DB_FISCAD} \ -d ${POSTGRES_DB_FISCAD} \
-c 'SELECT 1;' -c 'SELECT 1;'
" "
# 12) Nettoyage des secrets (OBLIGATOIRE) # 11) OK Nettoyage des secrets (sécurité OBLIGATOIRE)
- name: Cleanup secrets - name: Cleanup secrets
if: always() if: always()
shell: sh shell: sh
run: rm -rf secrets run: |
rm -rf secrets
# 13) Nettoyage des images Docker inutilisées # 12) Nettoyage des images Docker inutilisées
- name: Cleanup unused Docker images - name: Cleanup unused Docker images
shell: sh shell: sh
run: docker image prune -f || true run: |
docker image prune -f || true

View File

@@ -11,44 +11,51 @@ jobs:
steps: steps:
# 1) Node.js # 1) Vérifier Node.js (aucune installation automatique en CI natif)
- name: Ensure Node.js is installed - name: Verify Node.js
shell: sh shell: sh
run: | run: |
if command -v node >/dev/null 2>&1; then if command -v node >/dev/null 2>&1; then
echo "Node.js already installed: $(node -v)" echo "Node.js version:"
node -v
else else
apk update && apk add --no-cache nodejs echo "❌ Node.js is not installed on the runner"
echo "Node.js installed: $(node -v)" exit 1
fi fi
# 2) Java & Maven # 2) Vérifier Java & Maven (préinstallés sur le VPS)
- name: Ensure Java & Maven are installed - name: Verify Java & Maven
shell: sh shell: sh
run: | run: |
if ! command -v java >/dev/null 2>&1; then if ! command -v java >/dev/null 2>&1; then
apk update && apk add --no-cache openjdk17-jdk echo "❌ Java is not installed on the runner"
exit 1
fi fi
java -version
if ! command -v mvn >/dev/null 2>&1; then if ! command -v mvn >/dev/null 2>&1; then
apk update && apk add --no-cache maven echo "❌ Maven is not installed on the runner"
exit 1
fi fi
echo "Java version:"
java -version
echo "Maven version:"
mvn -version mvn -version
# 3) JAVA_HOME # 3) Détecter JAVA_HOME dynamiquement
- name: Detect JAVA_HOME dynamically - name: Detect JAVA_HOME dynamically
shell: sh shell: sh
run: | run: |
JAVA_BIN=$(readlink -f "$(command -v java)") JAVA_BIN=$(readlink -f "$(command -v java)")
JAVA_HOME=$(dirname "$(dirname "$JAVA_BIN")") JAVA_HOME=$(dirname "$(dirname "$JAVA_BIN")")
echo "Detected JAVA_HOME=$JAVA_HOME"
echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV" echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV"
# 4) Checkout # 4) Checkout du dépôt
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
# 5) Secrets runtime (CI) # 5) Création des secrets runtime (CI uniquement)
- name: Create runtime secrets - name: Create runtime secrets
shell: sh shell: sh
run: | run: |
@@ -58,21 +65,15 @@ jobs:
echo "${{ secrets.POSTGRES_PASSWORD_FISCAD }}" > secrets/postgresPassword.txt echo "${{ secrets.POSTGRES_PASSWORD_FISCAD }}" > secrets/postgresPassword.txt
chmod 600 secrets/* chmod 600 secrets/*
# 6) Vérification outils # 6) Build & tests Maven
- name: Show Java & Maven versions - name: Build & Test with Maven
shell: sh shell: sh
run: | run: |
echo "JAVA_HOME=$JAVA_HOME" mvn -B clean verify
java -version
mvn -version
# 7) Build & tests # 7) Nettoyage des secrets (sécurité)
- name: Build with Maven
shell: sh
run: mvn -B clean verify
# 8) Nettoyage
- name: Cleanup secrets - name: Cleanup secrets
if: always() if: always()
shell: sh shell: sh
run: rm -rf secrets run: |
rm -rf secrets

View File

@@ -11,4 +11,5 @@ COPY ./target/Fiscad-0.0.1-SNAPSHOT.jar fiscad.jar
EXPOSE 8282 EXPOSE 8282
# Lancer l'application # Lancer l'application
ENTRYPOINT ["java", "-jar", "fiscad.jar"] #ENTRYPOINT ["java", "-jar", "fiscad.jar"]
ENTRYPOINT ["sh", "-c", "export SPRING_DATASOURCE_PASSWORD=$(cat /run/secrets/postgresPassword) && export DEFAULT_USER_NAME=$(cat /run/secrets/defaultUserName) && export DEFAULT_USER_PASSWORD=$(cat /run/secrets/defaultUserPassword) && exec java -jar fiscad.jar"]

View File

@@ -0,0 +1,3 @@
CREATE EXTENSION IF NOT EXISTS postgis;
CREATE EXTENSION IF NOT EXISTS postgis_topology;
CREATE EXTENSION IF NOT EXISTS pg_cron;

View File

@@ -1,7 +1,7 @@
services: services:
db: db:
image: postgres:15 image: postgis/postgis:15-3.4
container_name: fiscad-db container_name: fiscad-db
restart: always restart: always
@@ -18,9 +18,10 @@ services:
volumes: volumes:
- db-data-fiscad:/var/lib/postgresql/data - db-data-fiscad:/var/lib/postgresql/data
- ./db-init:/docker-entrypoint-initdb.d
healthcheck: healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER_FISCAD}"] test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER_FISCAD} -d ${POSTGRES_DB_FISCAD}"]
interval: 10s interval: 10s
timeout: 5s timeout: 5s
retries: 5 retries: 5
@@ -32,17 +33,18 @@ services:
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: fiscad-app container_name: fiscad-app
restart: on-failure restart: on-failure
depends_on: depends_on:
- db db:
condition: service_healthy
environment: environment:
SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/${POSTGRES_DB_FISCAD} SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/${POSTGRES_DB_FISCAD}
SPRING_DATASOURCE_USERNAME: ${POSTGRES_USER_FISCAD} SPRING_DATASOURCE_USERNAME: ${POSTGRES_USER_FISCAD}
SPRING_DATASOURCE_PASSWORD_FILE: /run/secrets/postgresPassword
SERVER_PORT: 8282 SERVER_PORT: 8282
IO_GMSS_FISCAD_PROFILE: abomey IO_GMSS_FISCAD_PROFILE: dgi
SPRING_PROFILES_ACTIVE: abomey SPRING_PROFILES_ACTIVE: dgi
DEFAULT_USER_NAME_FILE: /run/secrets/defaultUserName DEFAULT_USER_NAME_FILE: /run/secrets/defaultUserName
DEFAULT_USER_PASSWORD_FILE: /run/secrets/defaultUserPassword DEFAULT_USER_PASSWORD_FILE: /run/secrets/defaultUserPassword
@@ -67,8 +69,8 @@ volumes:
secrets: secrets:
postgresPassword: postgresPassword:
file: ${GITHUB_WORKSPACE}/secrets/postgresPassword.txt file: ./secrets/postgresPassword.txt
defaultUserName: defaultUserName:
file: ${GITHUB_WORKSPACE}/secrets/defaultUserName.txt file: ./secrets/defaultUserName.txt
defaultUserPassword: defaultUserPassword:
file: ${GITHUB_WORKSPACE}/secrets/defaultUserPassword.txt file: ./secrets/defaultUserPassword.txt

View File

@@ -3,8 +3,8 @@ package io.gmss.fiscad.component;
import io.gmss.fiscad.entities.user.Role; import io.gmss.fiscad.entities.user.Role;
import io.gmss.fiscad.entities.user.User; import io.gmss.fiscad.entities.user.User;
import io.gmss.fiscad.enums.UserRole; import io.gmss.fiscad.enums.UserRole;
import io.gmss.fiscad.repositories.user.RoleRepository; import io.gmss.fiscad.persistence.repositories.user.RoleRepository;
import io.gmss.fiscad.repositories.user.UserRepository; import io.gmss.fiscad.persistence.repositories.user.UserRepository;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
@@ -20,12 +20,13 @@ public class DataLoadConfig {
private final UserRepository userRepository; private final UserRepository userRepository;
private final PasswordEncoder passwordEncoder; private final PasswordEncoder passwordEncoder;
@Value("${DEFAULT_USER_NAME_FILE}") @Value("${app.default-user.username}")
private String usernameFile; private String usernameFile;
@Value("${DEFAULT_USER_PASSWORD_FILE}") @Value("${app.default-user.password}")
private String passwordFile; private String passwordFile;
public DataLoadConfig(RoleRepository roleRepository, UserRepository userRepository, PasswordEncoder passwordEncoder) { public DataLoadConfig(RoleRepository roleRepository, UserRepository userRepository, PasswordEncoder passwordEncoder) {
this.roleRepository = roleRepository; this.roleRepository = roleRepository;
this.userRepository = userRepository; this.userRepository = userRepository;
@@ -41,21 +42,17 @@ public class DataLoadConfig {
public void loadRoles() { public void loadRoles() {
if (roleRepository.count() > 0) return; if (roleRepository.count() > 0) return;
Set<Role> roles = new HashSet<>(); Set<Role> roles = new HashSet<>();
roles.add(new Role(UserRole.ROLE_USER, "Role attribué aux utilisateurs simples.")); roles.add(new Role(UserRole.CREATE_USER, "Peut créer un utilisation."));
roles.add(new Role(UserRole.ROLE_ADMIN, "Role attribué aux administrateurs du système.")); roles.add(new Role(UserRole.READ_USER, "peut lire un utilisation"));
roles.add(new Role(UserRole.ROLE_DIRECTEUR, "Role attribué aux directeurs des structures.")); roles.add(new Role(UserRole.UPDATE_USER, "peut modifier un utilisation"));
roles.add(new Role(UserRole.ROLE_SUPERVISEUR, "Role attribué aux superviseurs des structures sur le terrain.")); roles.add(new Role(UserRole.DELETE_USER, "peut supprimer un utilisation"));
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); roleRepository.saveAll(roles);
} }
public void loadUsers() { public void loadUsers() {
if (userRepository.existsByUsername(usernameFile) ) { if (!userRepository.existsByUsername(usernameFile) ) {
User admin = new User(); User admin = new User();
admin.setUsername(usernameFile); admin.setUsername(usernameFile);
admin.setEmail("administrateur@infocad.bj"); admin.setEmail("administrateur@infocad.bj");
@@ -64,9 +61,6 @@ public class DataLoadConfig {
admin.setPrenom("Principal"); admin.setPrenom("Principal");
admin.setPassword(passwordEncoder.encode(passwordFile)); admin.setPassword(passwordEncoder.encode(passwordFile));
admin.setActive(true); admin.setActive(true);
Set<Role> roles = new HashSet<>();
roles.add(roleRepository.findRoleByNom(UserRole.ROLE_ADMIN).get());
admin.setRoles(roles);
userRepository.save(admin); userRepository.save(admin);
} }
} }

View File

@@ -1,7 +1,7 @@
package io.gmss.fiscad.configuration; package io.gmss.fiscad.configuration;
import io.gmss.fiscad.repositories.user.UserRepository; import io.gmss.fiscad.persistence.repositories.user.UserRepository;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.data.domain.AuditorAware; import org.springframework.data.domain.AuditorAware;

View File

@@ -1,6 +1,6 @@
package io.gmss.fiscad.configuration; package io.gmss.fiscad.configuration;
import io.gmss.fiscad.repositories.user.UserRepository; import io.gmss.fiscad.persistence.repositories.user.UserRepository;
import io.gmss.fiscad.security.UserPrincipal; import io.gmss.fiscad.security.UserPrincipal;
import org.springframework.data.domain.AuditorAware; import org.springframework.data.domain.AuditorAware;
import org.springframework.security.authentication.AnonymousAuthenticationToken; import org.springframework.security.authentication.AnonymousAuthenticationToken;

View File

@@ -48,7 +48,7 @@ import io.swagger.v3.oas.annotations.servers.Server;
) )
@SecurityScheme( @SecurityScheme(
name = "bearer", name = "bearer",
description = "Authentification Json Web Token", description = "Authentification Json BatimentPaylaodWeb Token",
scheme = "Bearer", scheme = "Bearer",
type = SecuritySchemeType.HTTP, type = SecuritySchemeType.HTTP,
bearerFormat = "JWT", bearerFormat = "JWT",

View File

@@ -27,7 +27,7 @@ import org.springframework.web.client.HttpClientErrorException;
@SecurityRequirement(name = "bearer") @SecurityRequirement(name = "bearer")
@Tag(name = "Arrondissement") @Tag(name = "Arrondissement")
@CrossOrigin(origins = "*") @CrossOrigin(origins = "*")
@PreAuthorize("hasRole('ADMIN') or hasRole('ROLE_SUPERVISEUR')") //@PreAuthorize("hasRole('ADMIN') or hasRole('ROLE_SUPERVISEUR')")
public class ArrondissementController { public class ArrondissementController {
private final ArrondissementService arrondissementService; private final ArrondissementService arrondissementService;
@@ -175,7 +175,7 @@ public class ArrondissementController {
public ResponseEntity<?> getArrondissementById(@PathVariable Long id) { public ResponseEntity<?> getArrondissementById(@PathVariable Long id) {
try { try {
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, arrondissementService.getArrondissementById(id), "Arrondissement trouvé avec succès."), new ApiResponse<>(true, arrondissementService.getArrondissementById(id).orElse(null), "Arrondissement trouvé avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {
@@ -199,7 +199,31 @@ public class ArrondissementController {
public ResponseEntity<?> getArrondissementByCommune(@PathVariable Long communeId) { public ResponseEntity<?> getArrondissementByCommune(@PathVariable Long communeId) {
try { try {
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, arrondissementService.getArrondissementByComune(communeId), "Liste des arrondissements par commune chargée avec succès."), new ApiResponse<>(true, arrondissementService.getArrondissementListByCommuneId(communeId), "Liste des arrondissements par commune chargée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/page/commune/{communeId}")
public ResponseEntity<?> getArrondissementByCommune(@PathVariable Long communeId,@RequestParam int pageNo, @RequestParam int pageSize) {
try {
Pageable pageable = PageRequest.of(pageNo, pageSize);
return new ResponseEntity<>(
new ApiResponse<>(true, arrondissementService.getArrondissementListByCommuneId(communeId,pageable), "Liste des arrondissements par commune chargée avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {

View File

@@ -26,7 +26,7 @@ import org.springframework.web.client.HttpClientErrorException;
@SecurityRequirement(name = "bearer") @SecurityRequirement(name = "bearer")
@Tag(name = "Commune") @Tag(name = "Commune")
@CrossOrigin(origins = "*") @CrossOrigin(origins = "*")
@PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_SUPERVISEUR')") //@PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_SUPERVISEUR')")
public class CommuneController { public class CommuneController {
private final CommuneService communeService; private final CommuneService communeService;
@@ -185,7 +185,31 @@ public class CommuneController {
try { try {
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, communeService.getCommunesByDepartement(departementId), "Liste des communes par département chargée avec succès."), new ApiResponse<>(true, communeService.getCommunesByDepartementId(departementId), "Liste des communes par département chargée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/page/by-departement-id/{departementId}")
public ResponseEntity<?> getCommuneByDepartementIdPaged(@PathVariable Long departementId,@RequestParam int pageNo, @RequestParam int pageSize) {
try {
Pageable pageable = PageRequest.of(pageNo, pageSize);
return new ResponseEntity<>(
new ApiResponse<>(true, communeService.getCommunesByDepartementId(departementId,pageable), "Liste des communes par département chargée avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {

View File

@@ -26,7 +26,7 @@ import org.springframework.web.client.HttpClientErrorException;
@SecurityRequirement(name = "bearer") @SecurityRequirement(name = "bearer")
@Tag(name = "Département") @Tag(name = "Département")
@CrossOrigin(origins = "*") @CrossOrigin(origins = "*")
@PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_SUPERVISEUR')") //@PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_SUPERVISEUR')")
public class DepartementController { public class DepartementController {
private final DepartementService departementService; private final DepartementService departementService;

View File

@@ -26,7 +26,7 @@ import org.springframework.web.client.HttpClientErrorException;
@SecurityRequirement(name = "bearer") @SecurityRequirement(name = "bearer")
@Tag(name = "Nationalité") @Tag(name = "Nationalité")
@CrossOrigin(origins = "*") @CrossOrigin(origins = "*")
@PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_SUPERVISEUR')") //@PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_SUPERVISEUR')")
public class NationaliteController { public class NationaliteController {
private final NationaliteService nationaliteService; private final NationaliteService nationaliteService;

View File

@@ -26,7 +26,7 @@ import org.springframework.web.client.HttpClientErrorException;
@SecurityRequirement(name = "bearer") @SecurityRequirement(name = "bearer")
@Tag(name = "Quartier") @Tag(name = "Quartier")
@CrossOrigin(origins = "*") @CrossOrigin(origins = "*")
@PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_SUPERVISEUR')") //@PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_SUPERVISEUR')")
public class QuartierController { public class QuartierController {
private final QuartierService quartierService; private final QuartierService quartierService;
@@ -158,7 +158,7 @@ public class QuartierController {
public ResponseEntity<?> getQuartierById(@PathVariable Long id) { public ResponseEntity<?> getQuartierById(@PathVariable Long id) {
try { try {
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, quartierService.getQuartierById(id), "Quartier trouvé avec succès."), new ApiResponse<>(true, quartierService.getQuartierById(id).orElse(null), "Quartier trouvé avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {
@@ -182,7 +182,31 @@ public class QuartierController {
try { try {
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, quartierService.getQuartierByArrondissement(arrondissementId), "Liste des quartiers par commune chargée avec succès."), new ApiResponse<>(true, quartierService.getQuartierListByArrondissementId(arrondissementId), "Liste des quartiers par commune chargée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/page/arrondissement/{arrondissementId}")
public ResponseEntity<?> getQuartierByArrondissementPaged(@PathVariable Long arrondissementId,@RequestParam int pageNo, @RequestParam int pageSize) {
try {
Pageable pageable = PageRequest.of(pageNo, pageSize);
return new ResponseEntity<>(
new ApiResponse<>(true, quartierService.getQuartierListByArrondissementId(arrondissementId,pageable), "Liste des quartiers par commune chargée avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {

View File

@@ -4,7 +4,9 @@ import io.gmss.fiscad.entities.decoupage.Secteur;
import io.gmss.fiscad.exceptions.*; import io.gmss.fiscad.exceptions.*;
import io.gmss.fiscad.interfaces.decoupage.SecteurService; import io.gmss.fiscad.interfaces.decoupage.SecteurService;
import io.gmss.fiscad.paylaods.ApiResponse; import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.request.SecteurPayload; import io.gmss.fiscad.paylaods.request.crudweb.SecteurPaylaodWeb;
import io.gmss.fiscad.paylaods.request.synchronisation.SecteurPayload;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import org.slf4j.Logger; import org.slf4j.Logger;
@@ -24,7 +26,7 @@ import org.springframework.web.client.HttpClientErrorException;
@RequestMapping(value = "api/secteur", produces = MediaType.APPLICATION_JSON_VALUE) @RequestMapping(value = "api/secteur", produces = MediaType.APPLICATION_JSON_VALUE)
//@SecurityRequirement(name = "bearer") //@SecurityRequirement(name = "bearer")
@Tag(name = "Secteur") @Tag(name = "Secteur")
@PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_SUPERVISEUR')") //@PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_SUPERVISEUR')")
public class SecteurController { public class SecteurController {
private final SecteurService secteurService; private final SecteurService secteurService;
@@ -34,14 +36,16 @@ public class SecteurController {
this.secteurService = secteurService; this.secteurService = secteurService;
} }
@Operation(
summary = "Créer un secteur",
description = "Permet de Créer un secteur"
)
@PostMapping("/create") @PostMapping("/create")
public ResponseEntity<?> createSecteur(@RequestBody @Valid @Validated SecteurPayload secteurPayload) { public ResponseEntity<?> createSecteur(@RequestBody @Valid @Validated SecteurPaylaodWeb secteurPaylaodWeb) {
try { try {
// Secteur secteur=getSecteurFromPayload(secteurPayload); secteurPaylaodWeb = secteurService.createSecteur(secteurPaylaodWeb);
Secteur secteur = secteurService.createSecteur(secteurPayload);
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, secteur, "Secteur créé avec succès."), new ApiResponse<>(true, secteurPaylaodWeb, "Secteur créé avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {
@@ -60,12 +64,15 @@ public class SecteurController {
} }
} }
@Operation(
summary = "mettre à jour un secteur",
description = "Permet de modifier un secteur"
)
@PutMapping("/update/{id}") @PutMapping("/update/{id}")
public ResponseEntity<?> updateSecteur(@PathVariable Long id, @RequestBody SecteurPayload secteurPayload) { public ResponseEntity<?> updateSecteur(@PathVariable Long id, @RequestBody SecteurPaylaodWeb secteurPayloadWeb) {
try { try {
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, secteurService.updateSecteur(id, secteurPayload), "Secteur mis à jour avec succès."), new ApiResponse<>(true, secteurService.updateSecteur(id, secteurPayloadWeb), "Secteur mis à jour avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {
@@ -83,7 +90,10 @@ public class SecteurController {
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
} }
} }
@Operation(
summary = "supprimer un secteur",
description = "Permet de supprimer un secteur"
)
@DeleteMapping("/delete/{id}") @DeleteMapping("/delete/{id}")
public ResponseEntity<?> deleteSecteurr(@PathVariable Long id) { public ResponseEntity<?> deleteSecteurr(@PathVariable Long id) {
try { try {
@@ -107,7 +117,10 @@ public class SecteurController {
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
} }
} }
@Operation(
summary = "recuperer tous les secteurs",
description = "Permet de récuperer l'ensemble des secteurs"
)
@GetMapping("/all") @GetMapping("/all")
public ResponseEntity<?> getAllSecteurList() { public ResponseEntity<?> getAllSecteurList() {
try { try {
@@ -131,6 +144,10 @@ public class SecteurController {
} }
} }
@Operation(
summary = "recuperer tous les secteurs avec pagination",
description = "Permet de récuperer l'ensemble des secteurs avec pagination"
)
@GetMapping("/all-paged") @GetMapping("/all-paged")
public ResponseEntity<?> getAllSecteurPaged(@RequestParam int pageNo, @RequestParam int pageSize) { public ResponseEntity<?> getAllSecteurPaged(@RequestParam int pageNo, @RequestParam int pageSize) {
try { try {
@@ -155,6 +172,10 @@ public class SecteurController {
} }
} }
@Operation(
summary = "recuperer un secteurs par son ID ",
description = "Permet de récuperer le secteur ayant l'ID fournie en path"
)
@GetMapping("/id/{id}") @GetMapping("/id/{id}")
public ResponseEntity<?> getSecteurById(@PathVariable Long id) { public ResponseEntity<?> getSecteurById(@PathVariable Long id) {
try { try {
@@ -178,12 +199,15 @@ public class SecteurController {
} }
} }
@Operation(
summary = "recuperer tous les secteurs d'une structure",
description = "Permet de récuperer l'ensemble des secteurs de la structure dont l'ID est fourni en path"
)
@GetMapping("/by-structure-id/{structureId}") @GetMapping("/by-structure-id/{structureId}")
public ResponseEntity<?> getSecteurByStructureId(@PathVariable Long structureId) { public ResponseEntity<?> getSecteurByStructureId(@PathVariable Long structureId) {
try { try {
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, secteurService.getSecteurListUneStruture(structureId), "Secteur trouvée avec succès."), new ApiResponse<>(true, secteurService.getSecteurListByStructureId(structureId), "Secteur trouvée avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {
@@ -203,4 +227,92 @@ public class SecteurController {
} }
@Operation(
summary = "recuperer tous les secteurs d'une structure",
description = "Permet de récuperer l'ensemble des secteurs de la structure dont l'ID est fourni en path avec pagination"
)
@GetMapping("/page/by-structure-id/{structureId}")
public ResponseEntity<?> getSecteurByStructureIdPage(@PathVariable Long structureId, @RequestParam int pageNo, @RequestParam int pageSize) {
try {
Pageable pageable = PageRequest.of(pageNo, pageSize);
return new ResponseEntity<>(
new ApiResponse<>(true, secteurService.getSecteurListByStructureId(structureId,pageable), "Secteur trouvée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@Operation(
summary = "recuperer tous les secteurs d'une section",
description = "Permet de récuperer l'ensemble des secteurs de la section dont l'ID est fourni en path"
)
@GetMapping("/by-section-id/{sectionId}")
public ResponseEntity<?> getSecteurBySectionId(@PathVariable Long sectionId) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, secteurService.getSecteurListBySectionId(sectionId), "Secteur trouvée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@Operation(
summary = "recuperer tous les secteurs d'une section avec pagination",
description = "Permet de récuperer l'ensemble des secteurs de la section dont l'ID est fourni en path avec pagination"
)
@GetMapping("/page/by-section-id/{sectionId}")
public ResponseEntity<?> getSecteurBySectionIdPage(@PathVariable Long sectionId, @RequestParam int pageNo, @RequestParam int pageSize) {
try {
Pageable pageable = PageRequest.of(pageNo, pageSize);
return new ResponseEntity<>(
new ApiResponse<>(true, secteurService.getSecteurListBySectionId(sectionId,pageable), "Secteur trouvée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
} }

View File

@@ -3,10 +3,13 @@ package io.gmss.fiscad.controllers.decoupage;
import io.gmss.fiscad.entities.decoupage.SecteurDecoupage; import io.gmss.fiscad.entities.decoupage.SecteurDecoupage;
import io.gmss.fiscad.exceptions.*; import io.gmss.fiscad.exceptions.*;
import io.gmss.fiscad.interfaces.decoupage.SecteurDecoupageService; import io.gmss.fiscad.interfaces.decoupage.SecteurDecoupageService;
import io.gmss.fiscad.interfaces.decoupage.SecteurService;
import io.gmss.fiscad.paylaods.ApiResponse; import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.request.crudweb.SecteurDecoupagePaylaodWeb;
import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
@@ -18,29 +21,26 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.HttpClientErrorException;
@AllArgsConstructor
@RestController @RestController
@RequestMapping(value = "api/secteur-decoupage", produces = MediaType.APPLICATION_JSON_VALUE) @RequestMapping(value = "api/secteur-decoupage", produces = MediaType.APPLICATION_JSON_VALUE)
@SecurityRequirement(name = "bearer") @SecurityRequirement(name = "bearer")
@Tag(name = "SecteurDecoupage") @Tag(name = "SecteurDecoupage")
@PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_SUPERVISEUR')") //@PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_SUPERVISEUR')")
public class SecteurDecoupageController { public class SecteurDecoupageController {
private final SecteurDecoupageService secteurDecoupageService; private final SecteurDecoupageService secteurDecoupageService;
private final SecteurService secteurService;
private static final Logger logger = LoggerFactory.getLogger(SecteurDecoupageController.class); private static final Logger logger = LoggerFactory.getLogger(SecteurDecoupageController.class);
public SecteurDecoupageController(SecteurDecoupageService secteurDecoupageService) {
this.secteurDecoupageService = secteurDecoupageService;
}
@PostMapping("/create") @PostMapping("/create")
public ResponseEntity<?> createSecteurDecoupage(@RequestBody @Valid @Validated SecteurDecoupage secteurDecoupage) { public ResponseEntity<?> createSecteurDecoupage(@RequestBody @Valid @Validated SecteurDecoupagePaylaodWeb secteurDecoupagePaylaodWeb) {
try { try {
secteurDecoupage = secteurDecoupageService.createSecteurDecoupage(secteurDecoupage); secteurDecoupagePaylaodWeb = secteurDecoupageService.createSecteurDecoupage(secteurDecoupagePaylaodWeb);
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, secteurDecoupage, "SecteurDecoupage créé avec succès."), new ApiResponse<>(true, secteurDecoupagePaylaodWeb, "SecteurDecoupage créé avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {
@@ -60,10 +60,10 @@ public class SecteurDecoupageController {
} }
@PutMapping("/update/{id}") @PutMapping("/update/{id}")
public ResponseEntity<?> updateSecteurDecoupage(@PathVariable Long id, @RequestBody SecteurDecoupage secteurDecoupage) { public ResponseEntity<?> updateSecteurDecoupage(@PathVariable Long id, @RequestBody SecteurDecoupagePaylaodWeb secteurDecoupagePaylaodWeb) {
try { try {
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, secteurDecoupageService.updateSecteurDecoupage(id, secteurDecoupage), "SecteurDecoupage mis à jour avec succès."), new ApiResponse<>(true, secteurDecoupageService.updateSecteurDecoupage(id, secteurDecoupagePaylaodWeb), "SecteurDecoupage mis à jour avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {
@@ -153,11 +153,82 @@ public class SecteurDecoupageController {
} }
} }
@GetMapping("/by-secteur-id/{secteurId}")
public ResponseEntity<?> getAllSecteurDecoupageListBySecteurId(@PathVariable Long secteurId) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, secteurDecoupageService.getSecteurDecoupageListBySecteurId(secteurId), "Liste des secteurDecoupages chargée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/page/by-secteur-decoupage-id/{secteurId}")
public ResponseEntity<?> getAllSecteurDecoupageListBySecteurIdPaged(@PathVariable Long secteurId, @RequestParam int pageNo, @RequestParam int pageSize) {
try {
Pageable pageable = PageRequest.of(pageNo, pageSize);
return new ResponseEntity<>(
new ApiResponse<>(true, secteurDecoupageService.getSecteurDecoupageListBySecteurId(secteurId,pageable), "Liste des secteurDecoupages chargée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/id/{id}") @GetMapping("/id/{id}")
public ResponseEntity<?> getSecteurDecoupageById(@PathVariable Long id) { public ResponseEntity<?> getSecteurDecoupageById(@PathVariable Long id) {
try { try {
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, secteurDecoupageService.getSecteurDecoupageById(id), "SecteurDecoupage trouvée avec succès."), new ApiResponse<>(true, secteurDecoupageService.getSecteurDecoupageByIdToDto(id), "SecteurDecoupage trouvée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/arbre/user-id/{userId}")
public ResponseEntity<?> getArborescenceByUserId(@PathVariable Long userId) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, secteurDecoupageService.getStatParcelleDecoupageByUserId(userId), "SecteurDecoupage trouvée avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {

View File

@@ -0,0 +1,255 @@
package io.gmss.fiscad.controllers.decoupage;
import io.gmss.fiscad.exceptions.*;
import io.gmss.fiscad.interfaces.decoupage.SectionService;
import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.request.crudweb.SectionPaylaodWeb;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 org.springframework.web.client.HttpClientErrorException;
@RestController
@RequestMapping(value = "api/section", produces = MediaType.APPLICATION_JSON_VALUE)
//@SecurityRequirement(name = "bearer")
@Tag(name = "Section")
//@PreAuthorize("hasRole('ROLE_ADMIN') or hasRole('ROLE_SUPERVISEUR')")
public class SectionController {
private final SectionService sectionService;
private static final Logger logger = LoggerFactory.getLogger(SectionController.class);
public SectionController(SectionService sectionService) {
this.sectionService = sectionService;
}
@Operation(
summary = "Créer un section",
description = "Permet de Créer un section"
)
@PostMapping("/create")
public ResponseEntity<?> createSection(@RequestBody @Valid @Validated SectionPaylaodWeb sectionPaylaodWeb) {
try {
sectionPaylaodWeb = sectionService.createSection(sectionPaylaodWeb);
return new ResponseEntity<>(
new ApiResponse<>(true, sectionPaylaodWeb, "Section créé avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@Operation(
summary = "mettre à jour un section",
description = "Permet de modifier un section"
)
@PutMapping("/update/{id}")
public ResponseEntity<?> updateSection(@PathVariable Long id, @RequestBody SectionPaylaodWeb sectionPayloadWeb) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, sectionService.updateSection(id, sectionPayloadWeb), "Section mis à jour avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@Operation(
summary = "supprimer un section",
description = "Permet de supprimer un section"
)
@DeleteMapping("/delete/{id}")
public ResponseEntity<?> deleteSection(@PathVariable Long id) {
try {
sectionService.deleteSection(id);
return new ResponseEntity<>(
new ApiResponse<>(true, "Section supprimée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@Operation(
summary = "recuperer tous les sections",
description = "Permet de récuperer l'ensemble des sections"
)
@GetMapping("/all")
public ResponseEntity<?> getAllSectionList() {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, sectionService.getSectionList(), "Liste des sections chargée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@Operation(
summary = "recuperer tous les sections avec pagination",
description = "Permet de récuperer l'ensemble des sections avec pagination"
)
@GetMapping("/all-paged")
public ResponseEntity<?> getAllSectionPaged(@RequestParam int pageNo, @RequestParam int pageSize) {
try {
Pageable pageable = PageRequest.of(pageNo, pageSize);
return new ResponseEntity<>(
new ApiResponse<>(true, sectionService.getSectionList(pageable), "Liste des sections chargée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@Operation(
summary = "recuperer un sections par son ID ",
description = "Permet de récuperer le section ayant l'ID fournie en path"
)
@GetMapping("/id/{id}")
public ResponseEntity<?> getSectionById(@PathVariable Long id) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, sectionService.getSectionById(id).orElse(null), "Section trouvée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@Operation(
summary = "recuperer tous les sections d'une structure",
description = "Permet de récuperer l'ensemble des sections de la structure dont l'ID est fourni en path"
)
@GetMapping("/by-structure-id/{structureId}")
public ResponseEntity<?> getSectionByStructureId(@PathVariable Long structureId) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, sectionService.getSectionListByStructureId(structureId), "Section trouvée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@Operation(
summary = "recuperer tous les sections d'une structure",
description = "Permet de récuperer l'ensemble des sections de la structure dont l'ID est fourni en path avec pagination"
)
@GetMapping("/page/by-structure-id/{structureId}")
public ResponseEntity<?> getSectionByStructureIdPage(@PathVariable Long structureId, @RequestParam int pageNo, @RequestParam int pageSize) {
try {
Pageable pageable = PageRequest.of(pageNo, pageSize);
return new ResponseEntity<>(
new ApiResponse<>(true, sectionService.getSectionListByStructureId(structureId,pageable), "Section trouvée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
}

View File

@@ -5,7 +5,7 @@ import io.gmss.fiscad.entities.infocad.metier.Commentaire;
import io.gmss.fiscad.exceptions.*; import io.gmss.fiscad.exceptions.*;
import io.gmss.fiscad.interfaces.infocad.metier.CommentaireService; import io.gmss.fiscad.interfaces.infocad.metier.CommentaireService;
import io.gmss.fiscad.paylaods.ApiResponse; import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.request.CommentaireRequest; import io.gmss.fiscad.paylaods.request.synchronisation.CommentaireRequest;
import io.gmss.fiscad.paylaods.request.SyncCommentaireRequest; import io.gmss.fiscad.paylaods.request.SyncCommentaireRequest;
import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
@@ -229,7 +229,7 @@ public class CommentaireController {
} }
@PreAuthorize("hasRole('ADMIN') or hasRole('SUPERVISEUR') or hasRole('ENQUETEUR')") @PreAuthorize("hasRole('ADMIN') or hasRole('SUPERVISEUR') or hasRole('ENQUETEUR')")
@PostMapping("/all-by-params") @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") //@ApiOperation(value = "Cette ressource permet d'avoir 4 résultats différents. \n 1 - Liste des commentaires non lus provenant du BatimentPaylaodWeb. \n 2 - Liste des commentaires lus provenant du BatimentPaylaodWeb \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) { public ResponseEntity<?> getcommentaireByParams(@RequestBody CommentaireRequest commentaireRequest) {
try { try {
return new ResponseEntity<>( return new ResponseEntity<>(
@@ -277,7 +277,7 @@ public class CommentaireController {
} }
@PostMapping("synchronise/from-web") @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") //@ApiOperation(value = "Cette ressource permet d'avoir 4 résultats différents. \n 1 - Liste des commentaires non synchronisés provenant du BatimentPaylaodWeb. \n 2 - Liste des commentaires synchronisés provenant du BatimentPaylaodWeb \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) { public ResponseEntity<?> synchroniseCommentairesFromWeb(@RequestBody CommentaireRequest commentaireRequest) {
try { try {
return new ResponseEntity<>( return new ResponseEntity<>(

View File

@@ -1,11 +1,16 @@
package io.gmss.fiscad.controllers.infocad.metier; package io.gmss.fiscad.controllers.infocad.metier;
import io.gmss.fiscad.entities.infocad.metier.Enquete;
import io.gmss.fiscad.entities.rfu.metier.EnqueteBatiment;
import io.gmss.fiscad.exceptions.*; import io.gmss.fiscad.exceptions.*;
import io.gmss.fiscad.interfaces.infocad.metier.EnqueteService; import io.gmss.fiscad.interfaces.infocad.metier.EnqueteService;
import io.gmss.fiscad.paylaods.ApiResponse; import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.request.EnquetePayLoad; import io.gmss.fiscad.paylaods.request.crudweb.EnqueteBatimentPayloadWeb;
import io.gmss.fiscad.paylaods.request.crudweb.EnquetePayLoadWeb;
import io.gmss.fiscad.paylaods.request.synchronisation.EnquetePayLoad;
import io.gmss.fiscad.paylaods.request.EnqueteTraitementPayLoad; import io.gmss.fiscad.paylaods.request.EnqueteTraitementPayLoad;
import io.gmss.fiscad.paylaods.request.FiltreEnquetePayLoad; import io.gmss.fiscad.paylaods.request.FiltreEnquetePayLoad;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid; import jakarta.validation.Valid;
@@ -28,7 +33,7 @@ import java.util.List;
@SecurityRequirement(name = "bearer") @SecurityRequirement(name = "bearer")
@Tag(name = "Enquête") @Tag(name = "Enquête")
@CrossOrigin(origins = "*") @CrossOrigin(origins = "*")
@PreAuthorize("hasRole('ADMIN') or hasRole('SUPERVISEUR') or hasRole('ENQUETEUR')") //@PreAuthorize("hasRole('ADMIN') or hasRole('SUPERVISEUR') or hasRole('ENQUETEUR')")
public class EnqueteController { public class EnqueteController {
private final EnqueteService enqueteService; private final EnqueteService enqueteService;
@@ -41,20 +46,51 @@ public class EnqueteController {
@PostMapping("/create") @PostMapping("/create")
public ResponseEntity<?> createStructure(@RequestBody @Valid @Validated EnquetePayLoad enquetePayLoad) { public ResponseEntity<?> createEnquete(@RequestBody @Valid @Validated EnquetePayLoadWeb enquetePayLoadWeb) {
// try{ try {
// enquete = enqueteService.createEnquete(enquete); Enquete enquete = enqueteService.createEnquete(enquetePayLoadWeb);
// return new ResponseEntity<>( return new ResponseEntity<>(
// new ApiResponse<>(true, structure, "Structure créé avec succès."), new ApiResponse<>(true, enquete, "Enquete batiment créé avec succès."),
// HttpStatus.OK HttpStatus.OK
// ); );
// }catch (Exception e){ } catch (HttpClientErrorException.MethodNotAllowed e) {
// return new ResponseEntity<>( logger.error(e.getLocalizedMessage());
// new ApiResponse<>(false, e.getMessage()), return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
// HttpStatus.OK } catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
// ); FileStorageException e) {
// } logger.error(e.getLocalizedMessage());
return null; return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@PutMapping("/update/{id}")
public ResponseEntity<?> updateEnquete(@PathVariable Long id, @RequestBody EnquetePayLoadWeb enquetePayLoadWeb) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, enqueteService.updateEnquete(id,enquetePayLoadWeb), "Enquete batiment mise à jour avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
} }
@PutMapping("/validation") @PutMapping("/validation")
@@ -172,6 +208,35 @@ public class EnqueteController {
} }
} }
@Operation(
summary = "Récupérer les enquetes d'une parcelle",
description = "Permet de récuperer les enquêtes déjà réalisées sur une parcelles"
)
@GetMapping("/all/by-parcelle-id/{parcelleId}")
public ResponseEntity<?> getAllByEnqueteDecoupageAdmin(@PathVariable Long parcelleId) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, enqueteService.getEnqueteListByParcelle(parcelleId), "Liste des enquetes chargée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/all/dgi/decoupage-admin-for-enquete") @GetMapping("/all/dgi/decoupage-admin-for-enquete")
public ResponseEntity<?> getAllByEnqueteDecoupageAdminForDgi() { public ResponseEntity<?> getAllByEnqueteDecoupageAdminForDgi() {

View File

@@ -0,0 +1,248 @@
package io.gmss.fiscad.controllers.infocad.metier;
import io.gmss.fiscad.entities.infocad.metier.Enquete;
import io.gmss.fiscad.entities.infocad.metier.Parcelle;
import io.gmss.fiscad.exceptions.*;
import io.gmss.fiscad.interfaces.infocad.metier.EnqueteService;
import io.gmss.fiscad.interfaces.infocad.metier.ParcelleService;
import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.request.EnqueteTraitementPayLoad;
import io.gmss.fiscad.paylaods.request.FiltreEnquetePayLoad;
import io.gmss.fiscad.paylaods.request.crudweb.EnquetePayLoadWeb;
import io.gmss.fiscad.paylaods.request.crudweb.ParcellePayLoadWeb;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 org.springframework.web.client.HttpClientErrorException;
import java.util.List;
@RestController
@RequestMapping(value = "api/parcelle", produces = MediaType.APPLICATION_JSON_VALUE)
@SecurityRequirement(name = "bearer")
@Tag(name = "Parcelle")
@CrossOrigin(origins = "*")
//@PreAuthorize("hasRole('ADMIN') or hasRole('SUPERVISEUR') or hasRole('ENQUETEUR')")
public class ParcelleController {
private final EnqueteService enqueteService;
private final ParcelleService parcelleService;
private static final Logger logger = LoggerFactory.getLogger(ParcelleController.class);
public ParcelleController(EnqueteService enqueteService, ParcelleService parcelleService) {
this.enqueteService = enqueteService;
this.parcelleService = parcelleService;
}
@PostMapping("/create")
public ResponseEntity<?> createParcelle(@RequestBody @Valid @Validated ParcellePayLoadWeb parcellePayLoadWeb) {
try {
Parcelle parcelle = parcelleService.createParcelle(parcellePayLoadWeb);
return new ResponseEntity<>(
new ApiResponse<>(true, parcelle, "parcelle créée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@PutMapping("/update/{id}")
public ResponseEntity<?> updateEnquete(@PathVariable Long id, @RequestBody ParcellePayLoadWeb parcellePayLoadWeb) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, parcelleService.updateParcelle(id,parcellePayLoadWeb), "parcelle mise à jour avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@DeleteMapping("/delete/{id}")
public ResponseEntity<?> deleteStructurer(@PathVariable Long id) {
try {
parcelleService.deleteParcelle(id);
return new ResponseEntity<>(
new ApiResponse<>(true, "parcelle supprimée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/all")
public ResponseEntity<?> getAllParcelle() {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, parcelleService.getParcelleList(), "Liste des enquetes chargée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/all/by-decoupage")
public ResponseEntity<?> getAllByDecoupage() {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, enqueteService.getEnqueteCommuneArrondBloc(), "Liste des enquetes chargée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/all-paged")
public ResponseEntity<?> getAllEnquetePaged(@RequestParam int pageNo, @RequestParam int pageSize) {
try {
Pageable pageable = PageRequest.of(pageNo, pageSize);
return new ResponseEntity<>(
new ApiResponse<>(true, parcelleService.getParcelleList(pageable), "Liste des enquetes chargée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/id/{id}")
public ResponseEntity<?> getStructureById(@PathVariable Long id) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, parcelleService.getParcelleById(id), "enquete trouvé avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/user-id/{userId}")
public ResponseEntity<?> getParcellesByUserId(@PathVariable Long userId,@RequestParam int pageNo, @RequestParam int pageSize) {
try {
Pageable pageable = PageRequest.of(pageNo, pageSize);
return new ResponseEntity<>(
new ApiResponse<>(true, parcelleService.getParcelleDataTableListByUserId(userId,pageable), "enquete trouvé avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
}

View File

@@ -1,28 +1,85 @@
package io.gmss.fiscad.controllers.infocad.metier; package io.gmss.fiscad.controllers.infocad.metier;
import io.gmss.fiscad.entities.infocad.metier.Enquete;
import io.gmss.fiscad.entities.infocad.parametre.Personne;
import io.gmss.fiscad.exceptions.*;
import io.gmss.fiscad.interfaces.infocad.metier.PersonneService; import io.gmss.fiscad.interfaces.infocad.metier.PersonneService;
import io.gmss.fiscad.paylaods.ApiResponse; import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.dto.PersonneCompletDTO; import io.gmss.fiscad.paylaods.dto.PersonneCompletDTO;
import io.gmss.fiscad.paylaods.request.crudweb.EnquetePayLoadWeb;
import io.gmss.fiscad.paylaods.request.crudweb.PersonnePayLoadWeb;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.bind.annotation.RestController;
import java.util.Optional;
@RestController @RestController
@RequestMapping(value = "api/personne", produces = MediaType.APPLICATION_JSON_VALUE) @RequestMapping(value = "api/personne", produces = MediaType.APPLICATION_JSON_VALUE)
@RequiredArgsConstructor @RequiredArgsConstructor
@PreAuthorize("hasRole('ADMIN') or hasRole('SUPERVISEUR') or hasRole('ENQUETEUR')") //@PreAuthorize("hasRole('ADMIN') or hasRole('SUPERVISEUR') or hasRole('ENQUETEUR')")
public class PersonneController { public class PersonneController {
private static final Logger logger = LoggerFactory.getLogger(PersonneController.class);
private final PersonneService personneService; private final PersonneService personneService;
@PostMapping("/create")
public ResponseEntity<?> createPersonne(@RequestBody @Valid @Validated PersonnePayLoadWeb personnePayLoadWeb) {
try {
Personne personne = personneService.createPersonne(personnePayLoadWeb);
return new ResponseEntity<>(
new ApiResponse<>(true, personne, "Contribuable créé avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@PutMapping("/update/{id}")
public ResponseEntity<?> updatePersonne(@PathVariable Long id, @RequestBody PersonnePayLoadWeb personnePayLoadWeb) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, personneService.updatePersonne(id,personnePayLoadWeb), "Personne mise à jour avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/get-details/{id}") @GetMapping("/get-details/{id}")
public ResponseEntity<?> getDetails(@PathVariable Long id) { public ResponseEntity<?> getDetails(@PathVariable Long id) {
try{ try{
@@ -38,4 +95,20 @@ public class PersonneController {
); );
} }
} }
@GetMapping("/id/{id}")
public ResponseEntity<?> getPersonneById(@PathVariable Long id) {
try{
Optional<Personne> optionalPersonne= personneService.getPersonneById(id);
return new ResponseEntity<>(
new ApiResponse<>(true, optionalPersonne.orElse(null), "Personne retrouvée avec succès."),
HttpStatus.OK
);
}catch (Exception e){
return new ResponseEntity<>(
new ApiResponse<>(false, e.getMessage()),
HttpStatus.OK
);
}
}
} }

View File

@@ -4,7 +4,7 @@ import io.gmss.fiscad.entities.infocad.metier.Upload;
import io.gmss.fiscad.paylaods.ApiResponse; import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.JobModels; import io.gmss.fiscad.paylaods.JobModels;
import io.gmss.fiscad.proprietes.ZipStorageProperties; import io.gmss.fiscad.proprietes.ZipStorageProperties;
import io.gmss.fiscad.repositories.infocad.metier.UploadRepository; import io.gmss.fiscad.persistence.repositories.infocad.metier.UploadRepository;
import io.gmss.fiscad.service.FileStorageService; import io.gmss.fiscad.service.FileStorageService;
import io.gmss.fiscad.service.StringManager; import io.gmss.fiscad.service.StringManager;
import io.gmss.fiscad.service.ZipAsyncService; import io.gmss.fiscad.service.ZipAsyncService;

View File

@@ -6,6 +6,7 @@ import io.gmss.fiscad.exceptions.*;
import io.gmss.fiscad.interfaces.decoupage.ArrondissementService; import io.gmss.fiscad.interfaces.decoupage.ArrondissementService;
import io.gmss.fiscad.interfaces.infocad.parametre.StructureService; import io.gmss.fiscad.interfaces.infocad.parametre.StructureService;
import io.gmss.fiscad.paylaods.ApiResponse; import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.request.crudweb.StructurePaylaodWeb;
import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid; import jakarta.validation.Valid;
@@ -27,7 +28,7 @@ import org.springframework.web.client.HttpClientErrorException;
@SecurityRequirement(name = "bearer") @SecurityRequirement(name = "bearer")
@Tag(name = "Structure") @Tag(name = "Structure")
@CrossOrigin(origins = "*") @CrossOrigin(origins = "*")
@PreAuthorize("hasRole('ADMIN') or hasRole('SUPERVISEUR') or hasRole('ENQUETEUR')") //@PreAuthorize("hasRole('ADMIN') or hasRole('SUPERVISEUR') or hasRole('ENQUETEUR')")
public class StructureController { public class StructureController {
private final StructureService structureService; private final StructureService structureService;
@@ -40,11 +41,11 @@ public class StructureController {
} }
@PostMapping("/create") @PostMapping("/create")
public ResponseEntity<?> createStructure(@RequestBody @Valid @Validated Structure structure) { public ResponseEntity<?> createStructure(@RequestBody StructurePaylaodWeb structurePaylaodWeb) {
try { try {
structure = structureService.createStructure(structure); structurePaylaodWeb = structureService.createStructure(structurePaylaodWeb);
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, structure, "Structure créé avec succès."), new ApiResponse<>(true, structurePaylaodWeb, "Structure créé avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {
@@ -64,10 +65,10 @@ public class StructureController {
} }
@PutMapping("/update/{id}") @PutMapping("/update/{id}")
public ResponseEntity<?> updateStructure(@PathVariable Long id, @RequestBody Structure structure) { public ResponseEntity<?> updateStructure(@PathVariable Long id, @RequestBody StructurePaylaodWeb structurePaylaodWeb) {
try { try {
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, structureService.updateStructure(id, structure), "Structure mise à jour avec succès."), new ApiResponse<>(true, structureService.updateStructure(id, structurePaylaodWeb), "Structure mise à jour avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {
@@ -134,36 +135,6 @@ public class StructureController {
} }
@GetMapping("/all-by-arrondissement")
public ResponseEntity<?> getAllStructureListByArrondissement(@RequestParam Long arrondissementId) {
try {
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
);
}
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/all-paged") @GetMapping("/all-paged")
public ResponseEntity<?> getAllStructurePaged(@RequestParam int pageNo, @RequestParam int pageSize) { public ResponseEntity<?> getAllStructurePaged(@RequestParam int pageNo, @RequestParam int pageSize) {
try { try {
@@ -189,6 +160,53 @@ public class StructureController {
} }
@GetMapping("/by-commune/{communeId}")
public ResponseEntity<?> getAllStructureListByCommune(@PathVariable Long communeId) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, structureService.getStructureListByCommuneId(communeId), "Liste des structures chargée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/page/by-commune/{communeId}")
public ResponseEntity<?> getAllStructureListByCommunePageable(@PathVariable Long communeId, @RequestParam int pageNo, @RequestParam int pageSize) {
try {
Pageable pageable = PageRequest.of(pageNo, pageSize);
return new ResponseEntity<>(
new ApiResponse<>(true, structureService.getStructureListByCommuneId(communeId,pageable), "Liste des structures chargée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/id/{id}") @GetMapping("/id/{id}")
public ResponseEntity<?> getStructureById(@PathVariable Long id) { public ResponseEntity<?> getStructureById(@PathVariable Long id) {
try { try {

View File

@@ -7,8 +7,8 @@ package io.gmss.fiscad.controllers.report;
import io.gmss.fiscad.enums.FormatRapport; import io.gmss.fiscad.enums.FormatRapport;
import io.gmss.fiscad.paylaods.request.FiltreEnquetePayLoad; import io.gmss.fiscad.paylaods.request.FiltreEnquetePayLoad;
import io.gmss.fiscad.repositories.infocad.parametre.BlocRepository; import io.gmss.fiscad.persistence.repositories.infocad.parametre.BlocRepository;
import io.gmss.fiscad.repositories.infocad.parametre.StructureRepository; import io.gmss.fiscad.persistence.repositories.infocad.parametre.StructureRepository;
import io.gmss.fiscad.service.ReportService; import io.gmss.fiscad.service.ReportService;
import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;

View File

@@ -5,6 +5,7 @@ import io.gmss.fiscad.entities.rfu.metier.Batiment;
import io.gmss.fiscad.exceptions.*; import io.gmss.fiscad.exceptions.*;
import io.gmss.fiscad.interfaces.rfu.metier.BatimentService; import io.gmss.fiscad.interfaces.rfu.metier.BatimentService;
import io.gmss.fiscad.paylaods.ApiResponse; import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.request.crudweb.BatimentPaylaodWeb;
import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid; import jakarta.validation.Valid;
@@ -36,9 +37,9 @@ public class BatimentController {
} }
@PostMapping("/create") @PostMapping("/create")
public ResponseEntity<?> createBatiment(@RequestBody @Valid @Validated Batiment batiment) { public ResponseEntity<?> createBatiment(@RequestBody @Valid @Validated BatimentPaylaodWeb batimentPaylaodWeb) {
try { try {
batiment = batimentService.createBatiment(batiment); Batiment batiment = batimentService.createBatiment(batimentPaylaodWeb);
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, batiment, "Batiment créé avec succès."), new ApiResponse<>(true, batiment, "Batiment créé avec succès."),
HttpStatus.OK HttpStatus.OK
@@ -60,10 +61,10 @@ public class BatimentController {
} }
@PutMapping("/update/{id}") @PutMapping("/update/{id}")
public ResponseEntity<?> updateBatiment(@PathVariable Long id, @RequestBody Batiment batiment) { public ResponseEntity<?> updateBatiment(@PathVariable Long id, @RequestBody BatimentPaylaodWeb batimentPaylaodWeb) {
try { try {
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, batimentService.updateBatiment(id, batiment), "Batiment mise à jour avec succès."), new ApiResponse<>(true, batimentService.updateBatiment(id,batimentPaylaodWeb), "Batiment mise à jour avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {

View File

@@ -7,7 +7,7 @@ import io.gmss.fiscad.enums.StatusAvis;
import io.gmss.fiscad.exceptions.*; import io.gmss.fiscad.exceptions.*;
import io.gmss.fiscad.interfaces.rfu.metier.DonneesImpositionTfuService; import io.gmss.fiscad.interfaces.rfu.metier.DonneesImpositionTfuService;
import io.gmss.fiscad.paylaods.ApiResponse; import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.repositories.rfu.metier.ImpositionsTfuRepository; import io.gmss.fiscad.persistence.repositories.rfu.metier.ImpositionsTfuRepository;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;

View File

@@ -0,0 +1,179 @@
package io.gmss.fiscad.controllers.rfu.metier;
import io.gmss.fiscad.entities.rfu.metier.EnqueteActivite;
import io.gmss.fiscad.exceptions.*;
import io.gmss.fiscad.interfaces.rfu.metier.EnqueteActiviteService;
import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.request.crudweb.EnqueteActivitePayLoadWeb ;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 org.springframework.web.client.HttpClientErrorException;
@RestController
@RequestMapping(value = "api/enquete-activite", produces = MediaType.APPLICATION_JSON_VALUE)
@SecurityRequirement(name = "bearer")
@Tag(name = "EnqueteActivite")
@CrossOrigin(origins = "*")
public class EnqueteActiviteController {
private final EnqueteActiviteService enqueteActiviteService;
private static final Logger logger = LoggerFactory.getLogger(EnqueteActiviteController.class);
public EnqueteActiviteController(EnqueteActiviteService enqueteActiviteService) {
this.enqueteActiviteService = enqueteActiviteService;
}
@PostMapping("/create")
public ResponseEntity<?> createEnqueteActivite(@RequestBody @Valid @Validated EnqueteActivitePayLoadWeb enqueteActivitePayLoadWeb) {
try {
EnqueteActivite enqueteActivite = enqueteActiviteService.createEnqueteActivite(enqueteActivitePayLoadWeb);
return new ResponseEntity<>(
new ApiResponse<>(true, enqueteActivite, "Enquete Activite créé avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@PutMapping("/update/{id}")
public ResponseEntity<?> updateEnqueteActivite(@PathVariable Long id, @RequestBody EnqueteActivitePayLoadWeb enqueteActivitePayLoadWeb) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, enqueteActiviteService.updateEnqueteActivite(id,enqueteActivitePayLoadWeb), "EnqueteActivite mise à jour avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@DeleteMapping("/delete/{id}")
public ResponseEntity<?> deleteEnqueteActivite(@PathVariable Long id) {
try {
enqueteActiviteService.deleteEnqueteActivite(id);
return new ResponseEntity<>(
new ApiResponse<>(true, "Enquete Activite supprimée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/all")
public ResponseEntity<?> getAllEnqueteActiviteList() {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, enqueteActiviteService.getEnqueteActiviteList(), "Liste des caractéristiques chargée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/all-paged")
public ResponseEntity<?> getAllEnqueteActivitePaged(@RequestParam int pageNo, @RequestParam int pageSize) {
try {
Pageable pageable = PageRequest.of(pageNo, pageSize);
return new ResponseEntity<>(
new ApiResponse<>(true, enqueteActiviteService.getEnqueteActiviteList(pageable), "Liste des caractéristiques chargée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/id/{id}")
public ResponseEntity<?> getEnqueteActiviteById(@PathVariable Long id) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, enqueteActiviteService.getEnqueteActiviteById(id), "EnqueteActivite trouvée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
}

View File

@@ -5,6 +5,7 @@ import io.gmss.fiscad.entities.rfu.metier.EnqueteBatiment;
import io.gmss.fiscad.exceptions.*; import io.gmss.fiscad.exceptions.*;
import io.gmss.fiscad.interfaces.rfu.metier.EnqueteBatimentService; import io.gmss.fiscad.interfaces.rfu.metier.EnqueteBatimentService;
import io.gmss.fiscad.paylaods.ApiResponse; import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.request.crudweb.EnqueteBatimentPayloadWeb;
import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid; import jakarta.validation.Valid;
@@ -35,9 +36,9 @@ public class EnqueteBatimentController {
} }
@PostMapping("/create") @PostMapping("/create")
public ResponseEntity<?> createEnqueteBatiment(@RequestBody @Valid @Validated EnqueteBatiment enqueteBatiment) { public ResponseEntity<?> createEnqueteBatiment(@RequestBody @Valid @Validated EnqueteBatimentPayloadWeb enqueteBatimentPayloadWeb) {
try { try {
enqueteBatiment = enqueteBatimentService.createEnqueteBatiment(enqueteBatiment); EnqueteBatiment enqueteBatiment = enqueteBatimentService.createEnqueteBatiment(enqueteBatimentPayloadWeb);
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, enqueteBatiment, "Enquete batiment créé avec succès."), new ApiResponse<>(true, enqueteBatiment, "Enquete batiment créé avec succès."),
HttpStatus.OK HttpStatus.OK
@@ -59,10 +60,10 @@ public class EnqueteBatimentController {
} }
@PutMapping("/update/{id}") @PutMapping("/update/{id}")
public ResponseEntity<?> updateEnqueteBatiment(@PathVariable Long id, @RequestBody EnqueteBatiment enqueteBatiment) { public ResponseEntity<?> updateEnqueteBatiment(@PathVariable Long id, @RequestBody EnqueteBatimentPayloadWeb enqueteBatimentPayloadWeb) {
try { try {
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, enqueteBatimentService.updateEnqueteBatiment(id, enqueteBatiment), "Enquete batiment mise à jour avec succès."), new ApiResponse<>(true, enqueteBatimentService.updateEnqueteBatiment(id, enqueteBatimentPayloadWeb), "Enquete batiment mise à jour avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {

View File

@@ -5,6 +5,7 @@ import io.gmss.fiscad.entities.rfu.metier.EnqueteUniteLogement;
import io.gmss.fiscad.exceptions.*; import io.gmss.fiscad.exceptions.*;
import io.gmss.fiscad.interfaces.rfu.metier.EnqueteUniteLogementService; import io.gmss.fiscad.interfaces.rfu.metier.EnqueteUniteLogementService;
import io.gmss.fiscad.paylaods.ApiResponse; import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.request.crudweb.EnqueteUniteLogementPayloadWeb;
import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid; import jakarta.validation.Valid;
@@ -35,9 +36,9 @@ public class EnqueteUniteLogementController {
} }
@PostMapping("/create") @PostMapping("/create")
public ResponseEntity<?> createEnqueteUniteLogement(@RequestBody @Valid @Validated EnqueteUniteLogement enqueteUniteLogement) { public ResponseEntity<?> createEnqueteUniteLogement(@RequestBody @Valid @Validated EnqueteUniteLogementPayloadWeb enqueteUniteLogementPayloadWeb) {
try { try {
enqueteUniteLogement = enqueteUniteLogementService.createEnqueteUniteLogement(enqueteUniteLogement); EnqueteUniteLogement enqueteUniteLogement = enqueteUniteLogementService.createEnqueteUniteLogement(enqueteUniteLogementPayloadWeb);
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, enqueteUniteLogement, "Enquete unite logement créé avec succès."), new ApiResponse<>(true, enqueteUniteLogement, "Enquete unite logement créé avec succès."),
HttpStatus.OK HttpStatus.OK
@@ -59,10 +60,10 @@ public class EnqueteUniteLogementController {
} }
@PutMapping("/update/{id}") @PutMapping("/update/{id}")
public ResponseEntity<?> updateEnqueteUniteLogement(@PathVariable Long id, @RequestBody EnqueteUniteLogement enqueteUniteLogement) { public ResponseEntity<?> updateEnqueteUniteLogement(@PathVariable Long id, @RequestBody EnqueteUniteLogementPayloadWeb enqueteUniteLogementPayloadWeb) {
try { try {
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, enqueteUniteLogementService.updateEnqueteUniteLogement(id, enqueteUniteLogement), "Enquete unite logement mise à jour avec succès."), new ApiResponse<>(true, enqueteUniteLogementService.updateEnqueteUniteLogement(id, enqueteUniteLogementPayloadWeb), "Enquete unite logement mise à jour avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {

View File

@@ -4,7 +4,7 @@ import io.gmss.fiscad.entities.rfu.parametre.Equipe;
import io.gmss.fiscad.exceptions.*; import io.gmss.fiscad.exceptions.*;
import io.gmss.fiscad.interfaces.rfu.parametre.EquipeService; import io.gmss.fiscad.interfaces.rfu.parametre.EquipeService;
import io.gmss.fiscad.paylaods.ApiResponse; import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.request.EquipePayload; import io.gmss.fiscad.paylaods.request.synchronisation.EquipePayload;
import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid; import jakarta.validation.Valid;

View File

@@ -4,7 +4,8 @@ import io.gmss.fiscad.exceptions.*;
import io.gmss.fiscad.interfaces.infocad.metier.EnqueteService; import io.gmss.fiscad.interfaces.infocad.metier.EnqueteService;
import io.gmss.fiscad.interfaces.synchronisation.SynchronisationService; import io.gmss.fiscad.interfaces.synchronisation.SynchronisationService;
import io.gmss.fiscad.paylaods.ApiResponse; import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.request.*; import io.gmss.fiscad.paylaods.request.EnqueteAllDataPayload;
import io.gmss.fiscad.paylaods.request.synchronisation.*;
import io.gmss.fiscad.service.ZipService; import io.gmss.fiscad.service.ZipService;
import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
@@ -468,11 +469,11 @@ public class SynchronisationController {
@PostMapping(path = "/caracteristique-batiment") @PostMapping(path = "/caracteristique-batiment")
@PreAuthorize("hasRole('ADMIN') or hasRole('SUPERVISEUR') or hasRole('ENQUETEUR')") @PreAuthorize("hasRole('ADMIN') or hasRole('SUPERVISEUR') or hasRole('ENQUETEUR')")
public ResponseEntity<?> syncCaracteristiqueBatiment(@RequestBody List<CaracteristiqueBatimentPaylod> caracteristiqueBatimentPaylods) { public ResponseEntity<?> syncCaracteristiqueBatiment(@RequestBody List<CaracteristiqueBatimentPayload> CaracteristiqueBatimentPayloads) {
try { try {
return new ResponseEntity<>( return new ResponseEntity<>(
//new ApiResponse<>(true, null, "Liste des caractéristiques des bâtiments synchronisée avec succès."), //new ApiResponse<>(true, null, "Liste des caractéristiques des bâtiments synchronisée avec succès."),
new ApiResponse<>(true, synchronisationService.syncCaracteristiqueBatiment(caracteristiqueBatimentPaylods), "Liste des caractéristiques des bâtiments synchronisée avec succès."), new ApiResponse<>(true, synchronisationService.syncCaracteristiqueBatiment(CaracteristiqueBatimentPayloads), "Liste des caractéristiques des bâtiments synchronisée avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {
@@ -493,11 +494,11 @@ public class SynchronisationController {
@PostMapping(path = "/caracteristique-parcelle") @PostMapping(path = "/caracteristique-parcelle")
@PreAuthorize("hasRole('ADMIN') or hasRole('SUPERVISEUR') or hasRole('ENQUETEUR')") @PreAuthorize("hasRole('ADMIN') or hasRole('SUPERVISEUR') or hasRole('ENQUETEUR')")
public ResponseEntity<?> syncCaracteristiqueParcelle(@RequestBody List<CaracteristiqueParcellePaylod> caracteristiqueParcellePaylods) { public ResponseEntity<?> syncCaracteristiqueParcelle(@RequestBody List<CaracteristiqueParcellePayload> CaracteristiqueParcellePayloads) {
try { try {
return new ResponseEntity<>( return new ResponseEntity<>(
//new ApiResponse<>(true, null, "Liste des caractéristiques des parcelles synchronisée avec succès."), //new ApiResponse<>(true, null, "Liste des caractéristiques des parcelles synchronisée avec succès."),
new ApiResponse<>(true, synchronisationService.syncCaracteristiqueParcelle(caracteristiqueParcellePaylods), "Liste des caractéristiques des parcelles synchronisée avec succès."), new ApiResponse<>(true, synchronisationService.syncCaracteristiqueParcelle(CaracteristiqueParcellePayloads), "Liste des caractéristiques des parcelles synchronisée avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {
@@ -518,11 +519,11 @@ public class SynchronisationController {
@PostMapping(path = "/caracteristique-unite-logement") @PostMapping(path = "/caracteristique-unite-logement")
@PreAuthorize("hasRole('ADMIN') or hasRole('SUPERVISEUR') or hasRole('ENQUETEUR')") @PreAuthorize("hasRole('ADMIN') or hasRole('SUPERVISEUR') or hasRole('ENQUETEUR')")
public ResponseEntity<?> syncCaracteristiqueUniteLogement(@RequestBody List<CaracteristiqueUniteLogementPaylod> caracteristiqueUniteLogementPaylods) { public ResponseEntity<?> syncCaracteristiqueUniteLogement(@RequestBody List<CaracteristiqueUniteLogementPayload> CaracteristiqueUniteLogementPayloads) {
try { try {
return new ResponseEntity<>( return new ResponseEntity<>(
//new ApiResponse<>(true, null, "Liste des caractéristiques des unités de logement synchronisée avec succès."), //new ApiResponse<>(true, null, "Liste des caractéristiques des unités de logement synchronisée avec succès."),
new ApiResponse<>(true, synchronisationService.syncCaracteristiqueUniteLogement(caracteristiqueUniteLogementPaylods), "Liste des caractéristiques des unités de logement synchronisée avec succès."), new ApiResponse<>(true, synchronisationService.syncCaracteristiqueUniteLogement(CaracteristiqueUniteLogementPayloads), "Liste des caractéristiques des unités de logement synchronisée avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {

View File

@@ -11,6 +11,7 @@ import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.JwtAuthenticationResponse; import io.gmss.fiscad.paylaods.JwtAuthenticationResponse;
import io.gmss.fiscad.paylaods.Login; import io.gmss.fiscad.paylaods.Login;
import io.gmss.fiscad.paylaods.UserRequest; import io.gmss.fiscad.paylaods.UserRequest;
import io.gmss.fiscad.paylaods.request.crudweb.UserPaylaodWeb;
import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid; import jakarta.validation.Valid;
@@ -90,13 +91,13 @@ public class AuthController {
} }
@PostMapping("/signup") @PostMapping("/signup")
public ResponseEntity<?> createUser(@RequestBody @Valid @Validated UserRequest userRequest) { public ResponseEntity<?> createUser(@RequestBody @Valid @Validated UserPaylaodWeb userPaylaodWeb) {
try { try {
User user = getUser(userRequest); //User user = getUser(userRequest);
user.setUsername(userRequest.getEmail()); //user.setUsername(userRequest.getEmail());
user = userService.createUser(user, true); userPaylaodWeb = userService.createUser(userPaylaodWeb);
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, user, "Inscription effectué avec succès."), new ApiResponse<>(true, userPaylaodWeb, "Inscription effectué avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {
@@ -115,19 +116,5 @@ public class AuthController {
} }
} }
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<Role> roleSet = new HashSet<>();
roleSet.add(roleService.getRoleByRoleName(UserRole.ROLE_ANONYMOUS).get());
user.setRoles(roleSet);
user.setStructure(structureService.getStructureById(userRequest.getStructureId()).get());
return user;
}
} }

View File

@@ -0,0 +1,234 @@
package io.gmss.fiscad.controllers.user;
import io.gmss.fiscad.entities.user.AvoirFonction;
import io.gmss.fiscad.exceptions.*;
import io.gmss.fiscad.interfaces.user.AvoirFonctionService;
import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.request.crudweb.AvoirFonctionPaylaodWeb;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 org.springframework.web.client.HttpClientErrorException;
@RestController
@RequestMapping(value = "api/fonction-utilisateur", produces = MediaType.APPLICATION_JSON_VALUE)
@SecurityRequirement(name = "bearer")
@Tag(name = "Fonction Utilisateur")
@CrossOrigin(origins = "*")
public class AvoirFonctionController {
private final AvoirFonctionService avoirFonctionService;
private static final Logger logger = LoggerFactory.getLogger(AvoirFonctionController.class);
public AvoirFonctionController(AvoirFonctionService avoirFonctionService) {
this.avoirFonctionService = avoirFonctionService;
}
@PostMapping("/create")
public ResponseEntity<?> createAvoirFonction(@RequestBody @Valid @Validated AvoirFonctionPaylaodWeb avoirFonctionPaylaodWeb ) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, avoirFonctionService.createAvoirFonction(avoirFonctionPaylaodWeb), "Fonction utilisateur créée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@PutMapping("/update/{id}")
public ResponseEntity<?> updateAvoirFonction(@PathVariable Long id, @RequestBody AvoirFonctionPaylaodWeb avoirFonctionPaylaodWeb) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, avoirFonctionService.updateAvoirFonction(id, avoirFonctionPaylaodWeb), "Fonction utilisateur mise à jour avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@DeleteMapping("/delete/{id}")
public ResponseEntity<?> deleteAvoirFonction(@PathVariable Long id) {
try {
avoirFonctionService.deleteAvoirFonction(id);
return new ResponseEntity<>(
new ApiResponse<>(true, "Fonction Utilisateur supprimée avec succès"),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/all")
public ResponseEntity<?> getAll() {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, avoirFonctionService.getAvoirFonctionList(), "Liste des fonctions utilisateur."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/all-paged")
public ResponseEntity<?> getAllPaged(@RequestParam int pageNo, @RequestParam int pageSize) {
try {
Pageable pageable = PageRequest.of(pageNo, pageSize);
return new ResponseEntity<>(
new ApiResponse<>(true, avoirFonctionService.getAvoirFonctionList(pageable), "Liste des fonction utilisateurs."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/id/{id}")
public ResponseEntity<?> getById(@PathVariable Long id) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, avoirFonctionService.getAvoirFonctionById(id), "Fonction utilisateur trouvés avec succès"),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/by-utilisateur-id/{userId}")
public ResponseEntity<?> getByUserId(@PathVariable Long userId) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, avoirFonctionService.getAvoirFonctionByUserId(userId), "Fonctions de utilisateur trouvées avec succès"),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/page/by-utilisateur-id/{userId}")
public ResponseEntity<?> getByUserIdPageable(@PathVariable Long userId,@RequestParam int pageNo, @RequestParam int pageSize) {
try {
Pageable pageable = PageRequest.of(pageNo, pageSize);
return new ResponseEntity<>(
new ApiResponse<>(true, avoirFonctionService.getAvoirFonctionByUserId(userId,pageable), "Fonctions de utilisateur trouvées avec succès"),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
}

View File

@@ -113,31 +113,18 @@ public class DemandeReinitialisationMPController {
} }
} }
@GetMapping("/all") // @GetMapping("/all")
public ResponseEntity<?> getAllDemandeReinitialisationMPList(@CurrentUser UserPrincipal userPrincipal) { // public ResponseEntity<?> getAllDemandeReinitialisationMPList(@CurrentUser UserPrincipal userPrincipal) {
try { // try {
//
User user = userPrincipal.getUser(); // User user = userPrincipal.getUser();
//
if (user.getRoles().stream().anyMatch(r -> r.getNom().equals(UserRole.ROLE_ADMIN))) { // if (user.getRoles().stream().anyMatch(r -> r.getNom().equals(UserRole.ROLE_ADMIN))) {
return new ResponseEntity<>( // return new ResponseEntity<>(
new ApiResponse<>(true, demandeReinitialisationMPService.getDemandeReinitialisationMPList(), "Liste des demande de Reinitialisation chargée avec succès."), // new ApiResponse<>(true, demandeReinitialisationMPService.getDemandeReinitialisationMPList(), "Liste des demande de Reinitialisation chargée avec succès."),
HttpStatus.OK // HttpStatus.OK
); // );
} else { // } 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) { // if (user.getStructure() == null) {
// return new ResponseEntity<>( // 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."), // 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."),
@@ -150,22 +137,35 @@ public class DemandeReinitialisationMPController {
// ); // );
// } // }
// } // }
} catch (HttpClientErrorException.MethodNotAllowed e) { //// }else {
logger.error(e.getLocalizedMessage()); //// if (user.getStructure() == null) {
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK); //// return new ResponseEntity<>(
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException | //// 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."),
FileStorageException e) { //// HttpStatus.OK
logger.error(e.getLocalizedMessage()); //// );
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK); //// } else {
} catch (NullPointerException e) { //// return new ResponseEntity<>(
logger.error(e.getLocalizedMessage()); //// new ApiResponse<>(true, demandeReinitialisationMPService.getDemandeReinitialisationMPNonTraiteList(user.getStructure()), "Liste des demande de Reinitialisation chargée avec succès."),
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK); //// 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); //// }
} // } catch (HttpClientErrorException.MethodNotAllowed e) {
// logger.error(e.getLocalizedMessage());
} // return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
// } catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
// FileStorageException e) {
// logger.error(e.getLocalizedMessage());
// return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
// } catch (NullPointerException e) {
// logger.error(e.getLocalizedMessage());
// return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
// } catch (Exception e) {
// logger.error(e.getLocalizedMessage());
// return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
// }
//
// }
@GetMapping("/all-paged") @GetMapping("/all-paged")
public ResponseEntity<?> getAllDemandeReinitialisationMPPaged(@RequestParam int pageNo, @RequestParam int pageSize) { public ResponseEntity<?> getAllDemandeReinitialisationMPPaged(@RequestParam int pageNo, @RequestParam int pageSize) {

View File

@@ -0,0 +1,179 @@
package io.gmss.fiscad.controllers.user;
import io.gmss.fiscad.entities.user.Fonction;
import io.gmss.fiscad.exceptions.*;
import io.gmss.fiscad.interfaces.rfu.metier.FonctionService;
import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.request.crudweb.FonctionPaylaodWeb;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 org.springframework.web.client.HttpClientErrorException;
@RestController
@RequestMapping(value = "api/fonction", produces = MediaType.APPLICATION_JSON_VALUE)
@SecurityRequirement(name = "bearer")
@Tag(name = "Fonction")
@CrossOrigin(origins = "*")
public class FonctionController {
private final FonctionService fonctionService;
private static final Logger logger = LoggerFactory.getLogger(FonctionController.class);
public FonctionController(FonctionService fonctionService) {
this.fonctionService = fonctionService;
}
@PostMapping("/create")
public ResponseEntity<?> createFonction(@RequestBody @Valid @Validated FonctionPaylaodWeb fonctionPaylaodWeb) {
try {
Fonction fonction = fonctionService.createFonction(fonctionPaylaodWeb);
return new ResponseEntity<>(
new ApiResponse<>(true, fonction, "Secteur affecté avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@PutMapping("/update/{id}")
public ResponseEntity<?> updateFonction(@PathVariable Long id, @RequestBody FonctionPaylaodWeb fonctionPaylaodWeb) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, fonctionService.updateFonction(id, fonctionPaylaodWeb), "Affectation de Secteur mise à jour avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@DeleteMapping("/delete/{id}")
public ResponseEntity<?> deleteFonction(@PathVariable Long id) {
try {
fonctionService.deleteFonction(id);
return new ResponseEntity<>(
new ApiResponse<>(true, "Fonction supprimée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/all")
public ResponseEntity<?> getAllFonctionList() {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, fonctionService.getFonctionListToDto(), "Liste des caractéristiques chargée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/all-paged")
public ResponseEntity<?> getAllFonctionPaged(@RequestParam int pageNo, @RequestParam int pageSize) {
try {
Pageable pageable = PageRequest.of(pageNo, pageSize);
return new ResponseEntity<>(
new ApiResponse<>(true, fonctionService.getFonctionListToDtoPageable(pageable), "Liste des caractéristiques chargée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/id/{id}")
public ResponseEntity<?> getFonctionById(@PathVariable Long id) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, fonctionService.getFonctionById(id), "Fonction trouvée avec succès."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
}

View File

@@ -0,0 +1,182 @@
package io.gmss.fiscad.controllers.user;
import io.gmss.fiscad.entities.user.Profile;
import io.gmss.fiscad.exceptions.*;
import io.gmss.fiscad.interfaces.user.ProfileService;
import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.request.crudweb.ProfilePaylaodWeb;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 org.springframework.web.client.HttpClientErrorException;
@RestController
@RequestMapping(value = "api/profile", produces = MediaType.APPLICATION_JSON_VALUE)
@SecurityRequirement(name = "bearer")
@Tag(name = "Profile")
@CrossOrigin(origins = "*")
public class ProfileController {
private final ProfileService profileService;
private static final Logger logger = LoggerFactory.getLogger(ProfileController.class);
public ProfileController(ProfileService profileService) {
this.profileService = profileService;
}
@PostMapping("/create")
public ResponseEntity<?> createProfile(@RequestBody @Valid @Validated ProfilePaylaodWeb profilePaylaodWeb ) {
try {
Profile profile = profileService.createProfile(profilePaylaodWeb);
return new ResponseEntity<>(
new ApiResponse<>(true, profile, "Profile created successully."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@PutMapping("/update/{id}")
public ResponseEntity<?> updateProfile(@PathVariable Long id, @RequestBody ProfilePaylaodWeb profilePaylaodWeb) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, profileService.updateProfile(id, profilePaylaodWeb), "Profile updated successully."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@DeleteMapping("/delete/{id}")
public ResponseEntity<?> deleteProfile(@PathVariable Long id) {
try {
profileService.deleteProfile(id);
return new ResponseEntity<>(
new ApiResponse<>(true, "Profile deleted successully"),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/all")
public ResponseEntity<?> getAll() {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, profileService.getProfileList(), "Liste des profiles."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/id/{id}")
public ResponseEntity<?> getById(@PathVariable Long id) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, profileService.getProfileById(id), "Profile trouvé avec succès"),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/all-paged")
public ResponseEntity<?> getAllPaged(@RequestParam int pageNo, @RequestParam int pageSize) {
try {
Pageable pageable = PageRequest.of(pageNo, pageSize);
return new ResponseEntity<>(
new ApiResponse<>(true, profileService.getProfileList(pageable), "Liste des profiles."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
}

View File

@@ -8,12 +8,15 @@ import io.gmss.fiscad.exceptions.*;
import io.gmss.fiscad.interfaces.user.UserService; import io.gmss.fiscad.interfaces.user.UserService;
import io.gmss.fiscad.paylaods.ApiResponse; import io.gmss.fiscad.paylaods.ApiResponse;
import io.gmss.fiscad.paylaods.Login; import io.gmss.fiscad.paylaods.Login;
import io.gmss.fiscad.paylaods.request.crudweb.UserPaylaodWeb;
import io.gmss.fiscad.security.CurrentUser; import io.gmss.fiscad.security.CurrentUser;
import io.gmss.fiscad.security.UserPrincipal; import io.gmss.fiscad.security.UserPrincipal;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@@ -21,6 +24,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.HttpClientErrorException;
import java.util.Optional;
import java.util.Set; import java.util.Set;
@@ -40,12 +44,11 @@ public class UserController {
} }
@PostMapping("/create") @PostMapping("/create")
public ResponseEntity<?> createUser(@RequestBody @Valid @Validated User user) { public ResponseEntity<?> createUser(@RequestBody @Valid @Validated UserPaylaodWeb userPaylaodWeb) {
try { try {
user.setUsername(user.getEmail()); userPaylaodWeb = userService.createUser(userPaylaodWeb);
user = userService.createUser(user, true);
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, user, "Utilisateur créé avec succès"), new ApiResponse<>(true, userPaylaodWeb, "Utilisateur créé avec succès"),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {
@@ -91,9 +94,9 @@ public class UserController {
@PostMapping("/reset-password") @PostMapping("/reset-password")
public ResponseEntity<?> resetUserPassword(@RequestBody @Valid @Validated Login login) { public ResponseEntity<?> resetUserPassword(@RequestBody @Valid @Validated Login login) {
try { try {
User user = userService.resetPassword(login.getUsername(), login.getPassword()); UserPaylaodWeb userPaylaodWeb= userService.resetPassword(login.getUsername(), login.getPassword());
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, user, "Votre mot de passe à été réinitialisée avec succès."), new ApiResponse<>(true, userPaylaodWeb, "Votre mot de passe à été réinitialisée avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {
@@ -112,10 +115,10 @@ public class UserController {
} }
} }
@PostMapping("/validate-user-account") @PostMapping("/validate-user-account/{userName}")
public ResponseEntity<?> validateUserAccount(@RequestBody @Valid @Validated Login login) { public ResponseEntity<?> validateUserAccount(@PathVariable String userName) {
try { try {
User user = userService.validateUserAccount(login.getUsername(), login.getUserRole()); User user = userService.validateUserAccount(userName);
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, user, "Cet compte à été activé avec succès."), new ApiResponse<>(true, user, "Cet compte à été activé avec succès."),
HttpStatus.OK HttpStatus.OK
@@ -138,10 +141,10 @@ public class UserController {
@PutMapping("/update/{id}") @PutMapping("/update/{id}")
public ResponseEntity<?> updateUser(@PathVariable Long id, @RequestBody User user) { public ResponseEntity<?> updateUser(@PathVariable Long id, @RequestBody UserPaylaodWeb userPaylaodWeb) {
try { try {
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, userService.updateUser(id, user), "Utilisateur modifié avec succès."), new ApiResponse<>(true, userService.updateUser(id, userPaylaodWeb), "Utilisateur modifié avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {
@@ -165,12 +168,13 @@ public class UserController {
try { try {
User user = userService.getUserById(id); User user = userService.getUserById(id);
if(containsRoleAnonyme(user.getRoles())){ // if(user.getAvoirFonctions().isEmpty()){
return new ResponseEntity<>( // return new ResponseEntity<>(
new ApiResponse<>(false, user , "Ce compte n'est pas encore validé."), // new ApiResponse<>(false, user , "Ce compte n'est pas encore validé."),
HttpStatus.OK // HttpStatus.OK
); // );
} // }
if(user.isResetPassword()){ if(user.isResetPassword()){
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(false, user , "Ce compte n'est pas encore validé."), new ApiResponse<>(false, user , "Ce compte n'est pas encore validé."),
@@ -228,27 +232,12 @@ public class UserController {
@GetMapping("/all") @GetMapping("/all")
public ResponseEntity<?> getAll(@CurrentUser UserPrincipal userPrincipal) { public ResponseEntity<?> getAll() {
try { try {
if(userPrincipal==null){
return new ResponseEntity<>(
new ApiResponse<>(false, null, "Vous n'êtes pas authorisés à accéder à la liste des utilisateurs"),
HttpStatus.OK
);
}
User user = userPrincipal.getUser();
if (user.getRoles().stream().anyMatch(r -> r.getNom().equals(UserRole.ROLE_ADMIN))) { return new ResponseEntity<>(
return new ResponseEntity<>( new ApiResponse<>(true, userService.getListUserToDto(), "Liste des utilisateurs chargée avec succès."),
new ApiResponse<>(true, userService.getAllUserListResponse(), "Liste des utilisateurs chargée avec succès."), HttpStatus.OK);
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
);
}
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage()); logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK); return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
@@ -265,20 +254,65 @@ public class UserController {
} }
} }
@GetMapping("/all-by-structure") @GetMapping("/all-paged")
public ResponseEntity<?> getAllByStructure(@CurrentUser UserPrincipal userPrincipal) { public ResponseEntity<?> getAllPaged(@RequestParam int pageNo, @RequestParam int pageSize) {
try { try {
if (userPrincipal.getUser().getStructure() != null) { Pageable pageable = PageRequest.of(pageNo, pageSize);
return new ResponseEntity<>(
new ApiResponse<>(true, userService.getListUserToDto(pageable), "Liste des utilisateurs chargée avec succès."),
HttpStatus.OK);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/all-by-structure/{structureId}")
public ResponseEntity<?> getAllByStructure(@PathVariable Long structureId) {
try {
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(true, userService.getListUserByStructure(userPrincipal.getUser().getStructure().getId()), "Liste des utilisateurs chargée avec succès."), new ApiResponse<>(true, userService.getListUserByStructureToDto(structureId), "Liste des utilisateurs chargée avec succès."),
HttpStatus.OK HttpStatus.OK
); );
} else {
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
@GetMapping("/page/all-by-structure/{structureId}")
public ResponseEntity<?> getAllByStructurePaged(@PathVariable Long structureId, @RequestParam int pageNo, @RequestParam int pageSize) {
try {
Pageable pageable = PageRequest.of(pageNo, pageSize);
return new ResponseEntity<>( return new ResponseEntity<>(
new ApiResponse<>(false, "Impossible de trouver la structure indiquée."), new ApiResponse<>(true, userService.getListUserByStructureToDto(structureId,pageable), "Liste des utilisateurs chargée avec succès."),
HttpStatus.OK HttpStatus.OK
); );
}
} catch (HttpClientErrorException.MethodNotAllowed e) { } catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage()); logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK); return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
@@ -351,35 +385,5 @@ public class UserController {
} }
} }
@GetMapping("/all-by-role/{userrole}")
public ResponseEntity<?> getUserByUserRole(@PathVariable UserRole userrole) {
try {
return new ResponseEntity<>(
new ApiResponse<>(true, userService.getUserByProfil(userrole), "Users found."),
HttpStatus.OK
);
} catch (HttpClientErrorException.MethodNotAllowed e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK);
} catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException |
FileStorageException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK);
} catch (NullPointerException e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK);
}
}
public boolean containsRoleAnonyme(Set<Role> roles){
for(Role r: roles ){
if(r.getNom().equals(UserRole.ROLE_ANONYMOUS)){
return true;
}
}
return false;
}
} }

View File

@@ -23,7 +23,7 @@ public class BaseEntity implements Serializable {
@CreatedDate @CreatedDate
@JsonIgnore @JsonIgnore
private Instant createdAt; private Instant createdAt ;
@LastModifiedDate @LastModifiedDate
@JsonIgnore @JsonIgnore
private Instant updatedAt; private Instant updatedAt;
@@ -37,4 +37,6 @@ public class BaseEntity implements Serializable {
private boolean deleted; private boolean deleted;
private Long externalKey; private Long externalKey;
private Long enqueteExternalKey; private Long enqueteExternalKey;
@JsonIgnore
private String source ;
} }

View File

@@ -24,9 +24,11 @@ public class Quartier extends BaseEntity implements Serializable {
private Long id; private Long id;
private String code; private String code;
private String nom; private String nom;
private String codeExterne;
// @JsonIgnore // @JsonIgnore
@ManyToOne @ManyToOne
private Arrondissement arrondissement; private Arrondissement arrondissement;
// @JsonIgnore // @JsonIgnore
// @OneToOne(mappedBy = "quartier") // @OneToOne(mappedBy = "quartier")
// private Bloc bloc; // private Bloc bloc;

View File

@@ -1,5 +1,6 @@
package io.gmss.fiscad.entities.decoupage; package io.gmss.fiscad.entities.decoupage;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonManagedReference; import com.fasterxml.jackson.annotation.JsonManagedReference;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.entities.infocad.parametre.Structure; import io.gmss.fiscad.entities.infocad.parametre.Structure;
@@ -26,16 +27,16 @@ public class Secteur extends BaseEntity implements Serializable {
private Long id; private Long id;
private String code; private String code;
private String nom; private String nom;
@ManyToOne
private User chefSecteur;
@ManyToOne
private Structure structure;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) // @ManyToOne
@JoinColumn(name = "secteur_id") // private Structure structure;
@JsonManagedReference
private List<SecteurDecoupage> secteurDecoupages;
///Creer un payload pour la creation de secteur découpage //@JsonBackReference
/// ressource pour envoyer les découpage d'un secteur @ManyToOne
private Section section ;
//@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
// @JoinColumn(name = "secteur_id")
// @JsonManagedReference
// private List<SecteurDecoupage> secteurDecoupages;
} }

View File

@@ -25,7 +25,6 @@ import java.util.List;
@AllArgsConstructor @AllArgsConstructor
@Where(clause = " deleted = false") @Where(clause = " deleted = false")
public class SecteurDecoupage extends BaseEntity implements Serializable { public class SecteurDecoupage extends BaseEntity implements Serializable {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; private Long id;
@@ -36,16 +35,20 @@ public class SecteurDecoupage extends BaseEntity implements Serializable {
@JsonDeserialize(using = LocalDateDeserializer.class) @JsonDeserialize(using = LocalDateDeserializer.class)
private LocalDate dateFin; private LocalDate dateFin;
@JsonBackReference //@JsonBackReference
@ManyToOne @ManyToOne
private Secteur secteur; private Secteur secteur;
private String codeSecteur ;
@ManyToOne @ManyToOne
private Arrondissement arrondissement; private Arrondissement arrondissement;
@ManyToOne @ManyToOne
private Quartier quartier; private Quartier quartier;
private String codeQuartier ;
// @JsonIgnore // @JsonIgnore
// @OneToMany(mappedBy = "secteurDecoupage") // @OneToMany(mappedBy = "secteurDecoupage")
// private List<Bloc> blocs; // private List<Bloc> blocs;

View File

@@ -0,0 +1,37 @@
package io.gmss.fiscad.entities.decoupage;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.entities.infocad.parametre.Structure;
import io.gmss.fiscad.entities.user.Fonction;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.Where;
import java.io.Serializable;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Where(clause = " deleted = false")
public class Section extends BaseEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String code;
private String nom;
@ManyToOne
private Structure structure;
//@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
//@JoinColumn(name = "section_id")
//@JsonManagedReference
//private List<Secteur> secteurs;
}

View File

@@ -55,9 +55,9 @@ public class ActeurConcerne extends BaseEntity implements Serializable {
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
private RoleActeur roleActeur; private RoleActeur roleActeur;
@OneToMany(mappedBy = "acteurConcerne") // @OneToMany(mappedBy = "acteurConcerne")
@JsonManagedReference // @JsonManagedReference
private List<Piece> pieces; // private List<Piece> pieces;
@JsonIgnore @JsonIgnore
@ManyToOne @ManyToOne

View File

@@ -15,18 +15,16 @@ import io.gmss.fiscad.entities.rfu.metier.EnqueteBatiment;
import io.gmss.fiscad.entities.rfu.metier.EnqueteUniteLogement; import io.gmss.fiscad.entities.rfu.metier.EnqueteUniteLogement;
import io.gmss.fiscad.entities.rfu.parametre.Campagne; import io.gmss.fiscad.entities.rfu.parametre.Campagne;
import io.gmss.fiscad.entities.rfu.parametre.Equipe; import io.gmss.fiscad.entities.rfu.parametre.Equipe;
import io.gmss.fiscad.entities.rfu.parametre.Exercice;
import io.gmss.fiscad.entities.rfu.parametre.ZoneRfu; import io.gmss.fiscad.entities.rfu.parametre.ZoneRfu;
import io.gmss.fiscad.entities.user.User; import io.gmss.fiscad.entities.user.User;
import io.gmss.fiscad.enums.StatusEnquete; import io.gmss.fiscad.enums.StatutEnquete;
import io.gmss.fiscad.enums.StatutEnregistrement; import io.gmss.fiscad.enums.StatutEnregistrement;
import io.gmss.fiscad.repositories.infocad.parametre.PersonneRepository;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDate; import java.time.LocalDate;
@@ -58,17 +56,21 @@ public class Enquete extends BaseEntity implements Serializable {
private boolean litige; private boolean litige;
@JsonIgnore
@ManyToOne @ManyToOne
private User user; private User user;
@JsonIgnore
@ManyToOne
private Exercice exercice;
private Long mobileDataId; private Long mobileDataId;
@JsonIgnore @JsonIgnore
@OneToMany(mappedBy = "enquete") @OneToMany(mappedBy = "enquete")
private List<ActeurConcerne> acteurConcernes; private List<ActeurConcerne> acteurConcernes;
@JsonIgnore //@JsonIgnore
@ManyToOne @ManyToOne
private Parcelle parcelle; private Parcelle parcelle;
@@ -86,7 +88,7 @@ public class Enquete extends BaseEntity implements Serializable {
@ManyToOne @ManyToOne
private Equipe equipe; private Equipe equipe;
@JsonIgnore // @JsonIgnore
@ManyToOne @ManyToOne
@JoinColumn(name = "proprietaire_id") @JoinColumn(name = "proprietaire_id")
private Personne personne ; private Personne personne ;
@@ -97,7 +99,7 @@ public class Enquete extends BaseEntity implements Serializable {
private String autreNumeroTitreFoncier; private String autreNumeroTitreFoncier;
private Long personneId; private Long personneId;
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
private StatusEnquete statusEnquete; private StatutEnquete statutEnquete;
@JsonFormat(pattern = "dd-MM-yyyy") @JsonFormat(pattern = "dd-MM-yyyy")
@JsonDeserialize(using = LocalDateDeserializer.class) @JsonDeserialize(using = LocalDateDeserializer.class)
private LocalDate dateValidation; private LocalDate dateValidation;
@@ -155,18 +157,22 @@ public class Enquete extends BaseEntity implements Serializable {
private String numeroTitreFoncier; private String numeroTitreFoncier;
/// Nouveau champs ajoutés pour RFU Abomey /// Nouveau champs ajoutés pour RFU Abomey
private String numEnterParcelle; private String numEntreeParcelle;
private String numRue; private String numRue;
private String nomRue; private String nomRue;
private String emplacement; private String emplacement;
private float altitude; private Float altitude;
private float precision; private Float precision;
private int nbreCoProprietaire; private Integer nbreCoProprietaire;
private int nbreIndivisiaire; private Integer nbreIndivisiaire;
private String autreAdresse; private String autreAdresse;
private String surface; private Float superficie ;
private int nbreBatiment; private Integer nbreBatiment;
private int nbrePiscine; private Integer nbrePiscine;
private Long montantMensuelleLocation;
private Long montantAnnuelleLocation;
private Long valeurParcelleEstime;
private Long valeurParcelleReel;
@JsonFormat(pattern = "dd-MM-yyyy") @JsonFormat(pattern = "dd-MM-yyyy")
@JsonDeserialize(using = LocalDateDeserializer.class) @JsonDeserialize(using = LocalDateDeserializer.class)
@@ -178,9 +184,11 @@ public class Enquete extends BaseEntity implements Serializable {
@JsonIgnore @JsonIgnore
@OneToMany(mappedBy = "enquete") @OneToMany(mappedBy = "enquete")
@JsonManagedReference
private List<EnqueteUniteLogement> enqueteUniteLogements; private List<EnqueteUniteLogement> enqueteUniteLogements;
@JsonIgnore @JsonIgnore
@JsonManagedReference
@OneToMany(mappedBy = "enquete") @OneToMany(mappedBy = "enquete")
private List<EnqueteBatiment> enqueteBatiments; private List<EnqueteBatiment> enqueteBatiments;
@@ -188,8 +196,8 @@ public class Enquete extends BaseEntity implements Serializable {
@OneToMany(mappedBy = "enquete") @OneToMany(mappedBy = "enquete")
private List<CaracteristiqueParcelle> caracteristiqueParcelles; private List<CaracteristiqueParcelle> caracteristiqueParcelles;
@Enumerated(EnumType.STRING) //@Enumerated(EnumType.STRING)
private StatutEnregistrement statutEnregistrement; //private StatutEnregistrement statutEnregistrement;
public Long getTerminalId() { public Long getTerminalId() {
@@ -220,7 +228,7 @@ public class Enquete extends BaseEntity implements Serializable {
public String getDepartement() { public String getDepartement() {
if (this.bloc != null) { if (this.bloc != null) {
Arrondissement arrondissement = this.bloc.getArrondissement(); Arrondissement arrondissement = this.bloc.getArrondissement();
if (arrondissement != null) { if (arrondissement != null && arrondissement.getCommune()!=null && arrondissement.getCommune().getDepartement()!=null) {
return arrondissement.getCommune().getDepartement().getNom(); return arrondissement.getCommune().getDepartement().getNom();
} else return ""; } else return "";
} else return ""; } else return "";
@@ -229,7 +237,7 @@ public class Enquete extends BaseEntity implements Serializable {
public String getCommune() { public String getCommune() {
if (this.bloc != null) { if (this.bloc != null) {
Arrondissement arrondissement = this.bloc.getArrondissement(); Arrondissement arrondissement = this.bloc.getArrondissement();
if (arrondissement != null) { if (arrondissement != null && arrondissement.getCommune()!=null) {
return arrondissement.getCommune().getNom(); return arrondissement.getCommune().getNom();
} else return ""; } else return "";
} else return ""; } else return "";
@@ -247,7 +255,7 @@ public class Enquete extends BaseEntity implements Serializable {
public String getTypeDomaine() { public String getTypeDomaine() {
if (this.parcelle != null) { if (this.parcelle != null) {
NatureDomaine natureDomaine = this.parcelle.getNatureDomaine(); NatureDomaine natureDomaine = this.parcelle.getNatureDomaine();
if (natureDomaine != null) { if (natureDomaine != null && natureDomaine.getTypeDomaine()!=null ) {
return natureDomaine.getTypeDomaine().getLibelle(); return natureDomaine.getTypeDomaine().getLibelle();
} else return ""; } else return "";
} else return ""; } else return "";
@@ -260,7 +268,7 @@ public class Enquete extends BaseEntity implements Serializable {
} }
public String getStructureEnqueteur() { public String getStructureEnqueteur() {
if (this.user != null) { if (this.user != null && this.user.getStructure()!=null) {
return this.user.getStructure().getNom(); return this.user.getStructure().getNom();
} else return ""; } else return "";
} }

View File

@@ -25,7 +25,6 @@ import java.util.List;
// "WHERE id = ?") // "WHERE id = ?")
//@Where(clause = " deleted = false") //@Where(clause = " deleted = false")
public class Parcelle extends BaseEntity implements Serializable { public class Parcelle extends BaseEntity implements Serializable {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; private Long id;
@@ -36,9 +35,10 @@ public class Parcelle extends BaseEntity implements Serializable {
private String numeroParcelle; private String numeroParcelle;
private String longitude; private String longitude;
private String latitude; private String latitude;
private String altitude;
private String situationGeographique; private String situationGeographique;
@ColumnDefault("0") @ColumnDefault("0.0")
private int superficie; private float superficie;
@ManyToOne @ManyToOne
private NatureDomaine natureDomaine; private NatureDomaine natureDomaine;
@JsonIgnore @JsonIgnore
@@ -52,7 +52,6 @@ public class Parcelle extends BaseEntity implements Serializable {
@ManyToOne @ManyToOne
private Tpe terminal; private Tpe terminal;
private String autreNumeroTitreFoncier; private String autreNumeroTitreFoncier;
private Long typeDomaineId; private Long typeDomaineId;
private Long numeroProvisoire; private Long numeroProvisoire;
private Long blocId; private Long blocId;
@@ -60,6 +59,11 @@ public class Parcelle extends BaseEntity implements Serializable {
private boolean synchronise; private boolean synchronise;
private Long idDerniereEnquete; private Long idDerniereEnquete;
private Long mobileDataId; private Long mobileDataId;
private String numEntreeParcelle;
private String codeQuartier;
@ManyToOne
private Rue rue ;
private String numeroRue ;
// @JsonIgnore // @JsonIgnore
// @OneToMany(mappedBy = "parcelle") // @OneToMany(mappedBy = "parcelle")
// private List<Batiment> batiments; // private List<Batiment> batiments;

View File

@@ -1,6 +1,7 @@
package io.gmss.fiscad.entities.infocad.metier; package io.gmss.fiscad.entities.infocad.metier;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -62,14 +63,23 @@ public class ParcelleGeom extends BaseEntity implements Serializable {
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
private StatutParcelle statutParcelle; private StatutParcelle statutParcelle;
private Long uploadId; private Long uploadId;
@ManyToOne
@ManyToOne //(fetch = FetchType.LAZY)
// @JsonBackReference
private Departement departement; private Departement departement;
@ManyToOne
@ManyToOne //(fetch = FetchType.LAZY)
//@JsonBackReference
private Commune commune; private Commune commune;
@ManyToOne
@ManyToOne //(fetch = FetchType.LAZY)
// @JsonBackReference
private Arrondissement arrondissement; private Arrondissement arrondissement;
@ManyToOne
@ManyToOne //(fetch = FetchType.LAZY)
//@JsonBackReference
private Quartier quartier ; private Quartier quartier ;
@ColumnDefault("0") @ColumnDefault("0")
private int geomSrid; private int geomSrid;
@JsonSerialize(using = GeometrySerializer.class) @JsonSerialize(using = GeometrySerializer.class)

View File

@@ -44,6 +44,10 @@ public class Piece extends BaseEntity implements Serializable {
@JsonFormat(pattern = "dd-MM-yyyy") @JsonFormat(pattern = "dd-MM-yyyy")
@JsonDeserialize(using = LocalDateDeserializer.class) @JsonDeserialize(using = LocalDateDeserializer.class)
private LocalDate dateExpiration; private LocalDate dateExpiration;
@JsonFormat(pattern = "dd-MM-yyyy")
@JsonDeserialize(using = LocalDateDeserializer.class)
private LocalDate dateEtablissement;
@ManyToOne @ManyToOne
private TypePiece typePiece; private TypePiece typePiece;
private Long mobileDataId; private Long mobileDataId;
@@ -51,15 +55,22 @@ public class Piece extends BaseEntity implements Serializable {
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
private Personne personne; private Personne personne;
private Long personneExternalKey; private Long personneExternalKey;
@JsonIgnore
@JsonBackReference // @JsonIgnore
@ManyToOne(fetch = FetchType.LAZY) // @JsonBackReference
private ActeurConcerne acteurConcerne; // @ManyToOne(fetch = FetchType.LAZY)
private Long acteurConcerneExternalKey; // private ActeurConcerne acteurConcerne;
// private Long acteurConcerneExternalKey;
@ManyToOne @ManyToOne
private SourceDroit sourceDroit; private SourceDroit sourceDroit;
@JsonIgnore
@JsonBackReference
@ManyToOne(fetch = FetchType.LAZY)
private Enquete enquete ;
@ManyToOne @ManyToOne
private ModeAcquisition modeAcquisition; private ModeAcquisition modeAcquisition;
@@ -74,7 +85,7 @@ public class Piece extends BaseEntity implements Serializable {
private Long max_numero_piece_id; private Long max_numero_piece_id;
private Long max_numero_acteur_concerne_id; private Long max_numero_acteur_concerne_id;
private Long enqueteId; //private Long enqueteId;
private Long blocId; private Long blocId;
@ColumnDefault("false") @ColumnDefault("false")
private boolean synchronise; private boolean synchronise;

View File

@@ -0,0 +1,30 @@
package io.gmss.fiscad.entities.infocad.metier;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.entities.infocad.parametre.TypeRue;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;
import java.io.Serializable;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Rue extends BaseEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String numero ;
private String nom ;
@ManyToOne
private TypeRue typeRue ;
}

View File

@@ -34,7 +34,6 @@ import java.util.Set;
"WHERE id = ?") "WHERE id = ?")
@Where(clause = " deleted = false") @Where(clause = " deleted = false")
public class Bloc extends BaseEntity implements Serializable { public class Bloc extends BaseEntity implements Serializable {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; private Long id;

View File

@@ -20,6 +20,8 @@ import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where; import org.hibernate.annotations.Where;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@@ -38,11 +40,12 @@ public class Personne extends BaseEntity implements Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; private Long id;
private String ifu; private String ifu;
private String nomOuSigle; private String nom;
private String prenomOuRaisonSociale; private String prenom;
private String raisonSociale;
private String numRavip; private String numRavip;
private String npi; private String npi;
private String dateNaissanceOuConsti; private LocalDate dateNaissanceOuConsti;
private String lieuNaissance; private String lieuNaissance;
private String tel1; private String tel1;
private String tel2; private String tel2;
@@ -75,10 +78,12 @@ public class Personne extends BaseEntity implements Serializable {
@ColumnDefault("0") @ColumnDefault("0")
private int mustHaveRepresentant; private int mustHaveRepresentant;
private String filePath; private String filePath;
private String observation; private String observation;
@ColumnDefault("false") @ColumnDefault("false")
private boolean synchronise; private boolean synchronise;
@OneToMany(mappedBy = "personne") @OneToMany(mappedBy = "personne")
private List<Upload> uploads; private List<Upload> uploads;
@@ -87,10 +92,11 @@ public class Personne extends BaseEntity implements Serializable {
private Long mobileDataId; private Long mobileDataId;
public List<Upload> getUploads() { public List<Upload> getUploads() {
return uploads.stream().filter(upload -> upload.getPiece() == null && upload.getMembreGroupe() == null).toList();
return uploads==null ? new ArrayList<>():uploads.stream().filter(upload -> upload.getPiece() == null && upload.getMembreGroupe() == null).toList();
} }
public List<Piece> getPieces() { public List<Piece> getPieces() {
return pieces.stream().filter(piece -> piece.getActeurConcerne() == null).toList(); return pieces==null ? new ArrayList<>():pieces.stream().filter(piece -> piece.getPersonne() != null).toList();
} }
} }

View File

@@ -2,9 +2,11 @@ package io.gmss.fiscad.entities.infocad.parametre;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.entities.decoupage.Arrondissement; import io.gmss.fiscad.entities.decoupage.Arrondissement;
import io.gmss.fiscad.entities.decoupage.Commune; import io.gmss.fiscad.entities.decoupage.Commune;
import io.gmss.fiscad.entities.user.Fonction;
import io.gmss.fiscad.entities.user.User; import io.gmss.fiscad.entities.user.User;
import jakarta.persistence.*; import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
@@ -28,12 +30,12 @@ import java.util.Set;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@SQLDelete(sql = //@SQLDelete(sql =
"UPDATE structure " + // "UPDATE structure " +
"SET deleted = true " + // "SET deleted = true " +
"WHERE id = ?") // "WHERE id = ?")
@Where(clause = " deleted = false") //@Where(clause = " deleted = false")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) //@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class Structure extends BaseEntity implements Serializable { public class Structure extends BaseEntity implements Serializable {
@Id @Id
@@ -47,21 +49,29 @@ public class Structure extends BaseEntity implements Serializable {
private String tel; private String tel;
private String email; private String email;
private String adresse; private String adresse;
@NotNull //@NotNull(message = "Veuillez préciser la commune du centre d'impôts")
@ManyToOne @ManyToOne
private Commune commune; private Commune commune;
//@JsonIgnore
@JsonIgnore
@ManyToMany @ManyToMany
@JoinTable(name = "arrondissements_structures", @JoinTable(name = "arrondissements_structures",
joinColumns = @JoinColumn(name = "structure_id"), joinColumns = @JoinColumn(name = "structure_id"),
inverseJoinColumns = @JoinColumn(name = "arrondissement_id") inverseJoinColumns = @JoinColumn(name = "arrondissement_id")
) )
private Set<Arrondissement> arrondissements; private Set<Arrondissement> arrondissements;
// @JsonIgnore
// @OneToMany(mappedBy = "structure")
// private List<User> agents;
// @JsonIgnore
// @OneToMany(mappedBy = "structure")
// private List<Bloc> blocs;
@Override
public String toString() {
return "Structure{" +
"id=" + id +
", code='" + code + '\'' +
", nom='" + nom + '\'' +
", ifu='" + ifu + '\'' +
", rccm='" + rccm + '\'' +
", tel='" + tel + '\'' +
", email='" + email + '\'' +
", adresse='" + adresse + '\'' +
'}';
}
} }

View File

@@ -0,0 +1,37 @@
package io.gmss.fiscad.entities.infocad.parametre;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.entities.decoupage.Arrondissement;
import io.gmss.fiscad.entities.decoupage.Quartier;
import io.gmss.fiscad.entities.decoupage.Secteur;
import io.gmss.fiscad.entities.decoupage.SecteurDecoupage;
import io.gmss.fiscad.entities.infocad.metier.Enquete;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;
import java.io.Serializable;
import java.util.List;
import java.util.Set;
/**
* Un bloc représente un secteur de découpage admin dans le cadre d'une enquete fiscale
*/
@EqualsAndHashCode(callSuper = true)
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TypeRue extends BaseEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String code;
private String nom;
}

View File

@@ -2,7 +2,7 @@ package io.gmss.fiscad.entities.metadata;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.paylaods.request.ActeurConcernePayLoad; import io.gmss.fiscad.paylaods.request.synchronisation.ActeurConcernePayLoad;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;

View File

@@ -2,7 +2,7 @@ package io.gmss.fiscad.entities.metadata;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.paylaods.request.BatimentPaylaod; import io.gmss.fiscad.paylaods.request.synchronisation.BatimentPaylaod;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;

View File

@@ -2,7 +2,7 @@ package io.gmss.fiscad.entities.metadata;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.paylaods.request.CaracteristiqueBatimentPaylod; import io.gmss.fiscad.paylaods.request.synchronisation.CaracteristiqueBatimentPayload;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -26,7 +26,7 @@ public class MobileDataCaracteristiqueBatiment extends BaseEntity implements Ser
private Long externalKey; private Long externalKey;
@Type(JsonBinaryType.class) @Type(JsonBinaryType.class)
@Column(columnDefinition = "jsonb") @Column(columnDefinition = "jsonb")
private CaracteristiqueBatimentPaylod caracteristiqueBatimentPaylod ; private CaracteristiqueBatimentPayload CaracteristiqueBatimentPayload ;
@Column(columnDefinition = "boolean default false") @Column(columnDefinition = "boolean default false")
private boolean traiter; private boolean traiter;
} }

View File

@@ -2,7 +2,7 @@ package io.gmss.fiscad.entities.metadata;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.paylaods.request.CaracteristiqueParcellePaylod; import io.gmss.fiscad.paylaods.request.synchronisation.CaracteristiqueParcellePayload;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -26,7 +26,7 @@ public class MobileDataCaracteristiqueParcelle extends BaseEntity implements Ser
private Long externalKey; private Long externalKey;
@Type(JsonBinaryType.class) @Type(JsonBinaryType.class)
@Column(columnDefinition = "jsonb") @Column(columnDefinition = "jsonb")
private CaracteristiqueParcellePaylod caracteristiqueParcellePaylod ; private CaracteristiqueParcellePayload CaracteristiqueParcellePayload ;
@Column(columnDefinition = "boolean default false") @Column(columnDefinition = "boolean default false")
private boolean traiter; private boolean traiter;
} }

View File

@@ -2,7 +2,7 @@ package io.gmss.fiscad.entities.metadata;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.paylaods.request.CaracteristiqueUniteLogementPaylod; import io.gmss.fiscad.paylaods.request.synchronisation.CaracteristiqueUniteLogementPayload;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -26,7 +26,7 @@ public class MobileDataCaracteristiqueUniteLogement extends BaseEntity implement
private Long externalKey; private Long externalKey;
@Type(JsonBinaryType.class) @Type(JsonBinaryType.class)
@Column(columnDefinition = "jsonb") @Column(columnDefinition = "jsonb")
private CaracteristiqueUniteLogementPaylod caracteristiqueUniteLogementPaylod ; private CaracteristiqueUniteLogementPayload CaracteristiqueUniteLogementPayload ;
@Column(columnDefinition = "boolean default false") @Column(columnDefinition = "boolean default false")
private boolean traiter; private boolean traiter;
} }

View File

@@ -2,7 +2,7 @@ package io.gmss.fiscad.entities.metadata;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.paylaods.request.DeclarationNcPayload; import io.gmss.fiscad.paylaods.request.synchronisation.DeclarationNcPayload;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;

View File

@@ -2,7 +2,7 @@ package io.gmss.fiscad.entities.metadata;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.paylaods.request.EnquetePayLoad; import io.gmss.fiscad.paylaods.request.synchronisation.EnquetePayLoad;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;

View File

@@ -2,8 +2,8 @@ package io.gmss.fiscad.entities.metadata;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.paylaods.request.BatimentPaylaod; import io.gmss.fiscad.paylaods.request.synchronisation.BatimentPaylaod;
import io.gmss.fiscad.paylaods.request.EnqueteActivitePayload; import io.gmss.fiscad.paylaods.request.synchronisation.EnqueteActivitePayload;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;

View File

@@ -2,7 +2,7 @@ package io.gmss.fiscad.entities.metadata;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.paylaods.request.EnqueteBatimentPayload; import io.gmss.fiscad.paylaods.request.synchronisation.EnqueteBatimentPayload;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;

View File

@@ -2,7 +2,7 @@ package io.gmss.fiscad.entities.metadata;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.paylaods.request.EnqueteUniteLogementPayload; import io.gmss.fiscad.paylaods.request.synchronisation.EnqueteUniteLogementPayload;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;

View File

@@ -2,7 +2,7 @@ package io.gmss.fiscad.entities.metadata;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.paylaods.request.MembreGroupePayLoad; import io.gmss.fiscad.paylaods.request.synchronisation.MembreGroupePayLoad;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;

View File

@@ -2,7 +2,7 @@ package io.gmss.fiscad.entities.metadata;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.paylaods.request.ParcellePayLoad; import io.gmss.fiscad.paylaods.request.synchronisation.ParcellePayLoad;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;

View File

@@ -2,7 +2,7 @@ package io.gmss.fiscad.entities.metadata;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.paylaods.request.ParcellePayLoad; import io.gmss.fiscad.paylaods.request.synchronisation.ParcellePayLoad;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;

View File

@@ -2,7 +2,7 @@ package io.gmss.fiscad.entities.metadata;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.paylaods.request.PersonnePayLoad; import io.gmss.fiscad.paylaods.request.synchronisation.PersonnePayLoad;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;

View File

@@ -2,7 +2,7 @@ package io.gmss.fiscad.entities.metadata;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.paylaods.request.PiecePayLoad; import io.gmss.fiscad.paylaods.request.synchronisation.PiecePayLoad;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;

View File

@@ -2,8 +2,8 @@ package io.gmss.fiscad.entities.metadata;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.paylaods.request.ParcellePayLoad; import io.gmss.fiscad.paylaods.request.synchronisation.ParcellePayLoad;
import io.gmss.fiscad.paylaods.request.UniteLogementPaylaod; import io.gmss.fiscad.paylaods.request.synchronisation.UniteLogementPaylaod;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;

View File

@@ -2,7 +2,7 @@ package io.gmss.fiscad.entities.metadata;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.paylaods.request.UploadPayLoad; import io.gmss.fiscad.paylaods.request.synchronisation.UploadPayLoad;
import jakarta.persistence.*; import jakarta.persistence.*;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;

View File

@@ -25,7 +25,6 @@ import java.util.List;
@AllArgsConstructor @AllArgsConstructor
@Where(clause = " deleted = false") @Where(clause = " deleted = false")
public class Batiment extends BaseEntity implements Serializable { public class Batiment extends BaseEntity implements Serializable {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; private Long id;
@@ -35,10 +34,13 @@ public class Batiment extends BaseEntity implements Serializable {
@JsonDeserialize(using = LocalDateDeserializer.class) @JsonDeserialize(using = LocalDateDeserializer.class)
private LocalDate dateConstruction; private LocalDate dateConstruction;
private Long idDerniereEnquete; private Long idDerniereEnquete;
@JsonIgnore @JsonIgnore
@ManyToOne @ManyToOne
private Parcelle parcelle; private Parcelle parcelle;
private Long parcelleExternalKey; private Long parcelleExternalKey;
@JsonIgnore @JsonIgnore
@ManyToOne @ManyToOne
private Tpe terminal; private Tpe terminal;

View File

@@ -40,6 +40,7 @@ public class CaracteristiqueBatiment extends BaseEntity implements Serializable
@ManyToOne @ManyToOne
private Caracteristique caracteristique; private Caracteristique caracteristique;
private String valeur; private String valeur;
private String observation ;
@JsonIgnore @JsonIgnore
@ManyToOne @ManyToOne
private Tpe terminal ; private Tpe terminal ;

View File

@@ -30,13 +30,17 @@ public class CaracteristiqueUniteLogement extends BaseEntity implements Serializ
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; private Long id;
@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JsonBackReference @JsonBackReference
private EnqueteUniteLogement enqueteUniteLogement; private EnqueteUniteLogement enqueteUniteLogement;
private Long enqueteUniteLogementExternalKey; private Long enqueteUniteLogementExternalKey;
@ManyToOne @ManyToOne
private Caracteristique caracteristique; private Caracteristique caracteristique;
private String valeur; private String valeur;
private String observation;
@JsonIgnore @JsonIgnore
@ManyToOne @ManyToOne
private Tpe terminal; private Tpe terminal;

View File

@@ -57,6 +57,7 @@ public class EnqueteActivite extends BaseEntity implements Serializable {
private String NumeroRccm; private String NumeroRccm;
@OneToOne @OneToOne
private Personne personne; private Personne personne;
private Long personneExternalKey; private Long personneExternalKey;
@ManyToOne @ManyToOne

View File

@@ -11,6 +11,7 @@ import io.gmss.fiscad.entities.infocad.metier.Enquete;
import io.gmss.fiscad.entities.infocad.metier.Tpe; import io.gmss.fiscad.entities.infocad.metier.Tpe;
import io.gmss.fiscad.entities.infocad.metier.Upload; import io.gmss.fiscad.entities.infocad.metier.Upload;
import io.gmss.fiscad.entities.infocad.parametre.Personne; import io.gmss.fiscad.entities.infocad.parametre.Personne;
import io.gmss.fiscad.entities.rfu.parametre.Caracteristique;
import io.gmss.fiscad.entities.user.User; import io.gmss.fiscad.entities.user.User;
import io.gmss.fiscad.enums.StatutEnregistrement; import io.gmss.fiscad.enums.StatutEnregistrement;
import jakarta.persistence.*; import jakarta.persistence.*;
@@ -53,7 +54,10 @@ public class EnqueteBatiment extends BaseEntity implements Serializable {
private float surfaceLouee; private float surfaceLouee;
private int nbreMenage; private int nbreMenage;
private int nbreHabitant; private int nbreHabitant;
private float valeurMensuelleLocation; private Long montantMensuelLocation;
private Long montantLocatifAnnuelDeclare;
private Long valeurBatimentEstime;
private Long valeurBatimentReel;
private int nbreMoisLocation; private int nbreMoisLocation;
private String autreCaracteristiquePhysique; private String autreCaracteristiquePhysique;
@JsonFormat(pattern = "dd-MM-yyyy") @JsonFormat(pattern = "dd-MM-yyyy")
@@ -62,20 +66,34 @@ public class EnqueteBatiment extends BaseEntity implements Serializable {
@JsonFormat(pattern = "dd-MM-yyyy") @JsonFormat(pattern = "dd-MM-yyyy")
@JsonDeserialize(using = LocalDateDeserializer.class) @JsonDeserialize(using = LocalDateDeserializer.class)
private LocalDate dateFinExcemption; private LocalDate dateFinExcemption;
@OneToOne
private Personne personne; //@JsonIgnore
private Long personneExternalKey;
@ManyToOne @ManyToOne
private Batiment batiment; private Personne personne;
private Long batimentExternalKey;
@ManyToOne
@JoinColumn(name = "categorie_caracteristique_id")
private Caracteristique caracteristique;
private Long personneExternalKey;
@JsonIgnore @JsonIgnore
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@JsonBackReference
private Batiment batiment;
private Long batimentExternalKey;
private Long nbreEtage;
// @JsonIgnore
@ManyToOne(fetch = FetchType.LAZY)
@JsonBackReference
private Enquete enquete; private Enquete enquete;
@JsonManagedReference ///pour couper la récurcivité
@OneToMany(mappedBy = "enqueteBatiment") @OneToMany(mappedBy = "enqueteBatiment")
@JsonManagedReference ///pour couper la récurcivité
private List<CaracteristiqueBatiment> caracteristiqueBatiments; private List<CaracteristiqueBatiment> caracteristiqueBatiments;
@JsonIgnore @JsonIgnore
@@ -89,7 +107,7 @@ public class EnqueteBatiment extends BaseEntity implements Serializable {
@OneToMany(mappedBy = "enqueteBatiment") @OneToMany(mappedBy = "enqueteBatiment")
private List<Upload> uploads; private List<Upload> uploads;
@Enumerated(EnumType.STRING) //@Enumerated(EnumType.STRING)
@JsonIgnore //@JsonIgnore
private StatutEnregistrement statutEnregistrement; //private StatutEnregistrement statutEnregistrement;
} }

View File

@@ -1,5 +1,6 @@
package io.gmss.fiscad.entities.rfu.metier; package io.gmss.fiscad.entities.rfu.metier;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonManagedReference; import com.fasterxml.jackson.annotation.JsonManagedReference;
@@ -40,15 +41,17 @@ public class EnqueteUniteLogement extends BaseEntity implements Serializable {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; private Long id;
private float surface;
private int nbrePiece; private int nbrePiece;
private int nbreHabitant; private int nbreHabitant;
private int nbreMenage; private int nbreMenage;
private boolean enLocation; private boolean enLocation;
private float montantMensuelLoyer; private float montantMensuelLoyer;
private int nbreMoisEnLocation; private int nbreMoisLocation;
private float montantLocatifAnnuelDeclare; private float montantLocatifAnnuelDeclare;
private Long valeurUniteLogementEstime;
private Long valeurUniteLogementReel;
private float surfaceLouee; private float surfaceLouee;
private float SurfaceAuSol;
private boolean sbee; private boolean sbee;
private boolean soneb; private boolean soneb;
private String numCompteurSbee; private String numCompteurSbee;
@@ -59,16 +62,25 @@ public class EnqueteUniteLogement extends BaseEntity implements Serializable {
@JsonFormat(pattern = "dd-MM-yyyy") @JsonFormat(pattern = "dd-MM-yyyy")
@JsonDeserialize(using = LocalDateDeserializer.class) @JsonDeserialize(using = LocalDateDeserializer.class)
private LocalDate dateFinExcemption; private LocalDate dateFinExcemption;
@JsonIgnore @JsonIgnore
@ManyToOne @ManyToOne(fetch = FetchType.LAZY)
@JsonBackReference
private Enquete enquete; private Enquete enquete;
@ManyToOne @ManyToOne
private UniteLogement uniteLogement; private UniteLogement uniteLogement;
private Long uniteLogementExternalKey; private Long uniteLogementExternalKey;
@OneToOne @OneToOne
private Personne personne; private Personne personne;
private Long personneExternalKey; private Long personneExternalKey;
private Long mobileDataId; private Long mobileDataId;
@OneToMany(mappedBy = "enqueteUniteLogement") @OneToMany(mappedBy = "enqueteUniteLogement")
@JsonManagedReference @JsonManagedReference
private List<CaracteristiqueUniteLogement> caracteristiqueUniteLogements; private List<CaracteristiqueUniteLogement> caracteristiqueUniteLogements;

View File

@@ -1,6 +1,9 @@
package io.gmss.fiscad.entities.rfu.metier; package io.gmss.fiscad.entities.rfu.metier;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import io.gmss.fiscad.deserializer.LocalDateDeserializer;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.entities.infocad.metier.Tpe; import io.gmss.fiscad.entities.infocad.metier.Tpe;
import jakarta.persistence.*; import jakarta.persistence.*;
@@ -11,6 +14,7 @@ import lombok.NoArgsConstructor;
import org.hibernate.annotations.Where; import org.hibernate.annotations.Where;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDate;
import java.util.List; import java.util.List;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@@ -27,6 +31,9 @@ public class UniteLogement extends BaseEntity implements Serializable {
private String nul; private String nul;
private String numeroEtage; private String numeroEtage;
private String code; private String code;
@JsonFormat(pattern = "dd-MM-yyyy")
@JsonDeserialize(using = LocalDateDeserializer.class)
private LocalDate dateConstruction;
@JsonIgnore @JsonIgnore
@OneToMany(mappedBy = "uniteLogement") @OneToMany(mappedBy = "uniteLogement")
private List<EnqueteUniteLogement> enqueteUniteLogements; private List<EnqueteUniteLogement> enqueteUniteLogements;

View File

@@ -39,6 +39,7 @@ public class Caracteristique extends BaseEntity implements Serializable {
private Tpe terminal; private Tpe terminal;
@ManyToOne @ManyToOne
private CategorieBatiment categorieBatiment; private CategorieBatiment categorieBatiment;
@ManyToOne(fetch = FetchType.LAZY) @ManyToOne(fetch = FetchType.LAZY)
private Arrondissement arrondissement; private Arrondissement arrondissement;
} }

View File

@@ -0,0 +1,67 @@
package io.gmss.fiscad.entities.user;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import io.gmss.fiscad.deserializer.LocalDateDeserializer;
import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.entities.decoupage.Secteur;
import io.gmss.fiscad.entities.decoupage.Section;
import io.gmss.fiscad.entities.infocad.parametre.Structure;
import io.gmss.fiscad.enums.Titre;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.time.LocalDate;
@EqualsAndHashCode(callSuper = true)
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
//@SQLDelete(sql =
// "UPDATE parcelle " +
// "SET deleted = true " +
// "WHERE id = ?")
//@Where(clause = " deleted = false")
public class AvoirFonction extends BaseEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@JsonFormat(pattern = "dd-MM-yyyy")
@JsonDeserialize(using = LocalDateDeserializer.class)
private LocalDate dateDebut;
@JsonFormat(pattern = "dd-MM-yyyy")
@JsonDeserialize(using = LocalDateDeserializer.class)
private LocalDate dateFin;
@JsonIgnore
@ManyToOne //(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "user_id", nullable = false)
@NotNull
private User user;
@ManyToOne //(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "fonction_id", nullable = false)
@NotNull
private Fonction fonction;
@Enumerated(EnumType.STRING)
private Titre titre;
@JsonIgnore
public Long getExternalKey() {
return super.getExternalKey();
}
@JsonIgnore
public Long getEnqueteExternalKey() {
return super.getEnqueteExternalKey();
}
}

View File

@@ -0,0 +1,71 @@
package io.gmss.fiscad.entities.user;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import io.gmss.fiscad.deserializer.LocalDateDeserializer;
import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.entities.decoupage.Departement;
import io.gmss.fiscad.entities.decoupage.Secteur;
import io.gmss.fiscad.entities.decoupage.Section;
import io.gmss.fiscad.entities.infocad.parametre.Structure;
import io.gmss.fiscad.entities.user.User;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Service;
import java.io.Serializable;
import java.time.LocalDate;
@EqualsAndHashCode(callSuper = true)
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
//@SQLDelete(sql =
// "UPDATE parcelle " +
// "SET deleted = true " +
// "WHERE id = ?")
//@Where(clause = " deleted = false")
public class Fonction extends BaseEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String code ;
private String nom ;
@JsonBackReference
@ManyToOne
private Secteur secteur;
//@JsonBackReference
@ManyToOne
private Section section;
@ManyToOne
@JoinColumn(name = "structure_id")
private Structure structure;
@ManyToOne
private Departement departement;
//@JsonIgnore
@ManyToOne //(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "profile_id", nullable = false)
@NotNull
private Profile profile;
@JsonIgnore
public Long getExternalKey() {
return super.getExternalKey();
}
@JsonIgnore
public Long getEnqueteExternalKey() {
return super.getEnqueteExternalKey();
}
}

View File

@@ -0,0 +1,78 @@
package io.gmss.fiscad.entities.user;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.enums.UserProfile;
import io.gmss.fiscad.enums.UserRole;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
//@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class Profile extends BaseEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Enumerated(EnumType.STRING)
private UserProfile nom;
private String description;
public Profile(UserProfile name, String description) {
this.nom = name;
this.description = description;
}
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "profile_role",
joinColumns = @JoinColumn(name = "profile_id"),
inverseJoinColumns = @JoinColumn(name = "role_id")
)
private Set<Role> roles = new HashSet<>();
@Override
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 Profile)) {
return false;
}
// typecast o to Complex so that we can compare data members
Profile r = (Profile) o;
// Compare the data members and return accordingly
return r.getNom().equals(this.getNom());
}
@Override
public int hashCode() {
return Objects.hash(id, nom, description);
}
@JsonIgnore
public Long getExternalKey() {
return super.getExternalKey();
}
@JsonIgnore
public Long getEnqueteExternalKey() {
return super.getEnqueteExternalKey();
}
}

View File

@@ -1,5 +1,6 @@
package io.gmss.fiscad.entities.user; package io.gmss.fiscad.entities.user;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.BaseEntity;
import io.gmss.fiscad.enums.UserRole; import io.gmss.fiscad.enums.UserRole;
import jakarta.persistence.*; import jakarta.persistence.*;
@@ -54,4 +55,13 @@ public class Role extends BaseEntity implements Serializable {
public int hashCode() { public int hashCode() {
return Objects.hash(id, nom, description); return Objects.hash(id, nom, description);
} }
@JsonIgnore
public Long getExternalKey() {
return super.getExternalKey();
}
@JsonIgnore
public Long getEnqueteExternalKey() {
return super.getEnqueteExternalKey();
}
} }

View File

@@ -16,6 +16,7 @@ import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where; import org.hibernate.annotations.Where;
import java.io.Serializable; import java.io.Serializable;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@@ -39,6 +40,12 @@ public class User extends BaseEntity implements Serializable {
private String prenom; private String prenom;
private String tel; private String tel;
private String email; private String email;
@Column(
name = "username",
nullable = false,
unique = true,
length = 200
)
private String username; private String username;
@JsonIgnore @JsonIgnore
private String password; private String password;
@@ -46,41 +53,31 @@ public class User extends BaseEntity implements Serializable {
private boolean active; private boolean active;
@Column(columnDefinition = "boolean default false") @Column(columnDefinition = "boolean default false")
private boolean resetPassword; private boolean resetPassword;
@ManyToMany
@JoinTable(name = "users_roles", @OneToMany(mappedBy = "user")
joinColumns = @JoinColumn(name = "user_id"), private Set<AvoirFonction> avoirFonctions= new HashSet<>();
inverseJoinColumns = @JoinColumn(name = "roles_id")
)
private Set<Role> roles;
@ManyToOne @ManyToOne
private Structure structure; private Structure structure;
// @JsonIgnore
// @OneToMany(mappedBy = "user")
// private List<Enquete> enquetes;
@JsonIgnore @JsonIgnore
@OneToMany(mappedBy = "user") @OneToMany(mappedBy = "user")
private List<Participer> participers; private List<Participer> participers;
// @JsonIgnore
// @OneToMany(mappedBy = "chefSecteur")
// private List<Secteur> secteurs;
@Transient @Transient
private Long idCampagneCourant; private Long idCampagneCourant;
@Transient @Transient
private Long idSecteurCourant; private Long idSecteurCourant;
public void setUsername(String username) {
this.username = this.email;
}
public boolean isAdmin() { public boolean isAdmin() {
for (Role r : this.roles) { // for (Role r : this.roles) {
if (r.getNom().equals(UserRole.ROLE_ADMIN)) { // if (r.getNom().equals(UserRole.ROLE_ADMIN)) {
return true; // return true;
} // }
} // }
return false; return false;
} }

View File

@@ -1,10 +1,9 @@
package io.gmss.fiscad.enums; package io.gmss.fiscad.enums;
public enum StatusEnquete { public enum StatutEnquete {
EN_COURS, EN_COURS,
FINALISE, FINALISE,
REJETE, REJETE,
VALIDE, VALIDE,
//SYNCHRONISE
ECHEC ECHEC
} }

View File

@@ -1,6 +1,9 @@
package io.gmss.fiscad.enums; package io.gmss.fiscad.enums;
public enum StatutEnregistrement { public enum StatutEnregistrement {
NOUVELLE_INSERTION, SAISIE_EN_COURS,
MISE_A_JOUR SAISIE,
VALIDATION_EN_COURS,
VALIDE,
REJETE
} }

View File

@@ -0,0 +1,6 @@
package io.gmss.fiscad.enums;
public enum Titre {
TITULAIRE,
INTERIMAIRE
}

View File

@@ -0,0 +1,9 @@
package io.gmss.fiscad.enums;
public enum UserProfile {
INSPECTEUR_GESTIONNAIRE,
ADMIN_FONCTIONNEL,
INSPECTEUR_GESTIONNAIRE_CHEF_SECTEUR,
INSPECTEUR_GESTIONNAIRE_CHEF_SECTION,
INSPECTEUR_GESTIONNAIRE_CHEF_CENTRE
}

View File

@@ -2,11 +2,23 @@ package io.gmss.fiscad.enums;
public enum UserRole { public enum UserRole {
ROLE_ADMIN, ADMIN,
ROLE_USER, CREATE_USER,
ROLE_DIRECTEUR, UPDATE_USER,
ROLE_SUPERVISEUR, READ_USER,
ROLE_ENQUETEUR, DELETE_USER,
ROLE_ANONYMOUS, CREATE_PARCELLE,
ROLE_RESPONSABLE UPDATE_PARCELLE,
READ_PARCELLE,
DELETE_PARCELLE,
CREATE_ENQUETE,
UPDATE_ENQUETE,
READ_ENQUETE,
DELETE_ENQUETE,
CREATE_BATIMENT,
UPDATE_BATIMENT,
READ_BATIMENT,
DELETE_BATIMENT
} }

View File

@@ -0,0 +1,11 @@
package io.gmss.fiscad.exceptions;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(HttpStatus.NOT_ACCEPTABLE)
public class ApplicationException extends RuntimeException {
public ApplicationException(String message) {
super(message);
}
}

View File

@@ -6,7 +6,8 @@ import io.gmss.fiscad.exceptions.BadRequestException;
import io.gmss.fiscad.exceptions.NotFoundException; import io.gmss.fiscad.exceptions.NotFoundException;
import io.gmss.fiscad.interfaces.decoupage.ArrondissementService; import io.gmss.fiscad.interfaces.decoupage.ArrondissementService;
import io.gmss.fiscad.interfaces.decoupage.CommuneService; import io.gmss.fiscad.interfaces.decoupage.CommuneService;
import io.gmss.fiscad.repositories.decoupage.ArrondissementRepository; import io.gmss.fiscad.paylaods.request.crudweb.ArrondissementPaylaodWeb;
import io.gmss.fiscad.persistence.repositories.decoupage.ArrondissementRepository;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -55,27 +56,28 @@ public class ArrondissementServiceImpl implements ArrondissementService {
} }
@Override @Override
public Page<Arrondissement> getArrondissementList(Pageable pageable) { public Page<ArrondissementPaylaodWeb> getArrondissementList(Pageable pageable) {
return arrondissementRepository.findAll(pageable); return arrondissementRepository.findAllArrondissementToDtoPageable(pageable);
} }
@Override @Override
public List<Arrondissement> getArrondissementList() { public List<ArrondissementPaylaodWeb> getArrondissementList() {
return arrondissementRepository.findAll(); return arrondissementRepository.findAllArrondissementToDto();
} }
@Override @Override
public Optional<Arrondissement> getArrondissementById(Long id) { public List<ArrondissementPaylaodWeb> getArrondissementListByCommuneId(Long communeId) {
return arrondissementRepository.findById(id); return arrondissementRepository.findAllArrondissementByCommuneToDto(communeId);
} }
@Override @Override
public List<Arrondissement> getArrondissementByComune(Long communeId) { public Page<ArrondissementPaylaodWeb> getArrondissementListByCommuneId(Long communeId, Pageable pageable) {
Optional<Commune> communeOptional = communeService.getCommuneById(communeId); return arrondissementRepository.findAllArrondissementByCommuneToDtoPageable(communeId,pageable);
if (communeOptional.isEmpty()) { }
throw new NotFoundException("Impossible de trouver la commune spécifiée.");
} @Override
return arrondissementRepository.findAllByCommune(communeOptional.get()); public Optional<ArrondissementPaylaodWeb> getArrondissementById(Long id) {
return arrondissementRepository.findArrondissementToDtoById(id);
} }

View File

@@ -6,7 +6,9 @@ import io.gmss.fiscad.exceptions.BadRequestException;
import io.gmss.fiscad.exceptions.NotFoundException; import io.gmss.fiscad.exceptions.NotFoundException;
import io.gmss.fiscad.interfaces.decoupage.CommuneService; import io.gmss.fiscad.interfaces.decoupage.CommuneService;
import io.gmss.fiscad.interfaces.decoupage.DepartementService; import io.gmss.fiscad.interfaces.decoupage.DepartementService;
import io.gmss.fiscad.repositories.decoupage.CommuneRepository; import io.gmss.fiscad.paylaods.request.crudweb.CommunePaylaodWeb;
import io.gmss.fiscad.paylaods.request.crudweb.DepartementPaylaodWeb;
import io.gmss.fiscad.persistence.repositories.decoupage.CommuneRepository;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -55,27 +57,28 @@ public class CommuneServiceImpl implements CommuneService {
} }
@Override @Override
public Page<Commune> getCommuneList(Pageable pageable) { public Page<CommunePaylaodWeb> getCommuneList(Pageable pageable) {
return communeRepository.findAll(pageable); return communeRepository.findAllCommuneToDtoPageable(pageable);
}
@Override
public List<Commune> getCommuneList() {
return communeRepository.findAll();
} }
@Override @Override
public List<Commune> getCommunesByDepartement(Long departementId) { public List<CommunePaylaodWeb> getCommuneList() {
Optional<Departement> departementOptional = departementService.getDepartementById(departementId); return communeRepository.findAllCommuneToDto();
if (departementOptional.isEmpty()) {
throw new NotFoundException("Impossible de trouver le département spécifié.");
}
return communeRepository.findAllByDepartement(departementOptional.get());
} }
@Override @Override
public Optional<Commune> getCommuneById(Long id) { public List<CommunePaylaodWeb> getCommunesByDepartementId(Long departementId) {
return communeRepository.findById(id); return communeRepository.findAllCommuneByDepartementToDto(departementId);
}
@Override
public Page<CommunePaylaodWeb> getCommunesByDepartementId(Long departementId, Pageable pageable) {
return communeRepository.findAllCommuneByDepartementToDtoPageable(departementId,pageable);
}
@Override
public Optional<CommunePaylaodWeb> getCommuneById(Long id) {
return communeRepository.findCommuneToDtoById(id);
} }
} }

View File

@@ -4,7 +4,8 @@ import io.gmss.fiscad.entities.decoupage.Departement;
import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.BadRequestException;
import io.gmss.fiscad.exceptions.NotFoundException; import io.gmss.fiscad.exceptions.NotFoundException;
import io.gmss.fiscad.interfaces.decoupage.DepartementService; import io.gmss.fiscad.interfaces.decoupage.DepartementService;
import io.gmss.fiscad.repositories.decoupage.DepartementRepository; import io.gmss.fiscad.paylaods.request.crudweb.DepartementPaylaodWeb;
import io.gmss.fiscad.persistence.repositories.decoupage.DepartementRepository;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -51,20 +52,20 @@ public class DepartementServiceImpl implements DepartementService {
} }
@Override @Override
public Page<Departement> getDepartementList(Pageable pageable) { public Page<DepartementPaylaodWeb> getDepartementList(Pageable pageable) {
return departementRepository.findAll(pageable); return departementRepository.findAllDepartementToDtoPageable(pageable);
} }
@Override @Override
public List<Departement> getDepartementList() { public List<DepartementPaylaodWeb> getDepartementList() {
return departementRepository.findAll(); return departementRepository.findAllDepartementToDto();
} }
@Override @Override
public Optional<Departement> getDepartementById(Long id) { public Optional<DepartementPaylaodWeb> getDepartementById(Long id) {
if (departementRepository.existsById(id)) { if (departementRepository.existsById(id)) {
return departementRepository.findById(id); return departementRepository.findDepartementToDtoById(id);
} else { } else {
throw new NotFoundException("Impossible de trouver le département spécifié dans la base de données."); throw new NotFoundException("Impossible de trouver le département spécifié dans la base de données.");
} }

View File

@@ -4,7 +4,7 @@ import io.gmss.fiscad.entities.decoupage.Nationalite;
import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.BadRequestException;
import io.gmss.fiscad.exceptions.NotFoundException; import io.gmss.fiscad.exceptions.NotFoundException;
import io.gmss.fiscad.interfaces.decoupage.NationaliteService; import io.gmss.fiscad.interfaces.decoupage.NationaliteService;
import io.gmss.fiscad.repositories.decoupage.NationaliteRepository; import io.gmss.fiscad.persistence.repositories.decoupage.NationaliteRepository;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@@ -6,7 +6,8 @@ import io.gmss.fiscad.exceptions.BadRequestException;
import io.gmss.fiscad.exceptions.NotFoundException; import io.gmss.fiscad.exceptions.NotFoundException;
import io.gmss.fiscad.interfaces.decoupage.ArrondissementService; import io.gmss.fiscad.interfaces.decoupage.ArrondissementService;
import io.gmss.fiscad.interfaces.decoupage.QuartierService; import io.gmss.fiscad.interfaces.decoupage.QuartierService;
import io.gmss.fiscad.repositories.decoupage.QuartierRepository; import io.gmss.fiscad.paylaods.request.crudweb.QuartierPaylaodWeb;
import io.gmss.fiscad.persistence.repositories.decoupage.QuartierRepository;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -55,31 +56,28 @@ public class QuartierServiceImpl implements QuartierService {
} }
@Override @Override
public Page<Quartier> getQuartierList(Pageable pageable) { public Page<QuartierPaylaodWeb> getQuartierList(Pageable pageable) {
return quartierRepository.findAll(pageable); return quartierRepository.findAllQuartierToDtoPageable(pageable);
} }
@Override @Override
public List<Quartier> getQuartierList() { public List<QuartierPaylaodWeb> getQuartierList() {
return quartierRepository.findAll(); return quartierRepository.findAllQuartierToDto();
} }
@Override @Override
public Optional<Quartier> getQuartierById(Long id) { public List<QuartierPaylaodWeb> getQuartierListByArrondissementId(Long arrondissementId) {
if (quartierRepository.existsById(id)) { return quartierRepository.findAllQuartierByArrondissementToDto(arrondissementId);
return quartierRepository.findById(id);
} else {
throw new NotFoundException("Impossible de trouver le quartier spécifié dans la base de données.");
}
} }
@Override @Override
public List<Quartier> getQuartierByArrondissement(Long arrondissementId) { public Page<QuartierPaylaodWeb> getQuartierListByArrondissementId(Long arrondissementId, Pageable pageable) {
Optional<Arrondissement> arrondissementOptional = arrondissementService.getArrondissementById(arrondissementId); return quartierRepository.findAllQuartierByArrondissementToDtoPageable(arrondissementId,pageable);
if (arrondissementOptional.isEmpty()) {
throw new NotFoundException("Impossible de trouver l'arrondissement spécifié.");
}
return quartierRepository.getAllByArrondissement(arrondissementOptional.get());
} }
@Override
public Optional<QuartierPaylaodWeb> getQuartierById(Long id) {
return quartierRepository.findQuartierToDtoById(id);
}
} }

View File

@@ -1,42 +1,58 @@
package io.gmss.fiscad.implementations.decoupage; package io.gmss.fiscad.implementations.decoupage;
import io.gmss.fiscad.entities.decoupage.Secteur;
import io.gmss.fiscad.entities.decoupage.SecteurDecoupage; import io.gmss.fiscad.entities.decoupage.SecteurDecoupage;
import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.BadRequestException;
import io.gmss.fiscad.exceptions.NotFoundException; import io.gmss.fiscad.exceptions.NotFoundException;
import io.gmss.fiscad.interfaces.decoupage.SecteurDecoupageService; import io.gmss.fiscad.interfaces.decoupage.SecteurDecoupageService;
import io.gmss.fiscad.repositories.decoupage.SecteurDecoupageRepository; import io.gmss.fiscad.interfaces.decoupage.SecteurService;
import io.gmss.fiscad.paylaods.request.crudweb.SecteurDecoupagePaylaodWeb;
import io.gmss.fiscad.paylaods.request.crudweb.SecteurPaylaodWeb;
import io.gmss.fiscad.paylaods.response.restoration.ParcelleStatsProjectionUnSecteur;
import io.gmss.fiscad.persistence.repositories.decoupage.SecteurDecoupageRepository;
import io.gmss.fiscad.persistence.repositories.infocad.metier.ParcelleRepository;
import io.gmss.fiscad.service.EntityFromPayLoadService;
import lombok.AllArgsConstructor;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
@AllArgsConstructor
@Service @Service
public class SecteurDecoupageServiceImpl implements SecteurDecoupageService { public class SecteurDecoupageServiceImpl implements SecteurDecoupageService {
private final SecteurDecoupageRepository secteurDecoupageRepository; private final SecteurDecoupageRepository secteurDecoupageRepository;
private final SecteurService secteurService;
private final ParcelleRepository parcelleRepository;
private final EntityFromPayLoadService entityFromPayLoadService;
public SecteurDecoupageServiceImpl(SecteurDecoupageRepository secteurDecoupageRepository) {
this.secteurDecoupageRepository = secteurDecoupageRepository;
}
@Override @Override
public SecteurDecoupage createSecteurDecoupage(SecteurDecoupage secteurDecoupage) throws BadRequestException { public SecteurDecoupagePaylaodWeb createSecteurDecoupage(SecteurDecoupagePaylaodWeb secteurDecoupagePaylaodWeb) throws BadRequestException {
if (secteurDecoupage.getId() != null) { if (secteurDecoupagePaylaodWeb.getId() != null) {
throw new BadRequestException("Impossible de créer un nouveau secteur découpage ayant un id non null."); throw new BadRequestException("Impossible de créer un nouveau secteur découpage ayant un id non null.");
} }
return secteurDecoupageRepository.save(secteurDecoupage); SecteurDecoupage secteurDecoupage = entityFromPayLoadService.getSecteurDecoupageFromPayLoadWeb(secteurDecoupagePaylaodWeb);
secteurDecoupage = secteurDecoupageRepository.save(secteurDecoupage);
return secteurDecoupageRepository.findSecteurDecoupageToDtoById(secteurDecoupage.getId()).orElse(null);
} }
@Override @Override
public SecteurDecoupage updateSecteurDecoupage(Long id, SecteurDecoupage secteurDecoupage) throws NotFoundException { public SecteurDecoupagePaylaodWeb updateSecteurDecoupage(Long id, SecteurDecoupagePaylaodWeb secteurDecoupagePaylaodWeb) throws NotFoundException {
if (secteurDecoupage.getId() == null) { if (secteurDecoupagePaylaodWeb.getId() == null) {
throw new BadRequestException("Impossible de mettre à jour un nouveau secteur découpage ayant un id null."); throw new BadRequestException("Impossible de mettre à jour un nouveau secteur découpage ayant un id null.");
} }
if (!secteurDecoupageRepository.existsById(secteurDecoupage.getId())) { if (!secteurDecoupageRepository.existsById(secteurDecoupagePaylaodWeb.getId())) {
throw new NotFoundException("Impossible de trouver le secteur découpage spécifié."); throw new NotFoundException("Impossible de trouver le secteur découpage spécifié.");
} }
return secteurDecoupageRepository.save(secteurDecoupage);
SecteurDecoupage secteurDecoupage = entityFromPayLoadService.getSecteurDecoupageFromPayLoadWeb(secteurDecoupagePaylaodWeb);
secteurDecoupage = secteurDecoupageRepository.save(secteurDecoupage);
return secteurDecoupageRepository.findSecteurDecoupageToDtoById(secteurDecoupage.getId()).orElse(null);
} }
@Override @Override
@@ -50,13 +66,28 @@ public class SecteurDecoupageServiceImpl implements SecteurDecoupageService {
} }
@Override @Override
public Page<SecteurDecoupage> getSecteurDecoupageList(Pageable pageable) { public Page<SecteurDecoupagePaylaodWeb> getSecteurDecoupageList(Pageable pageable) {
return secteurDecoupageRepository.findAll(pageable); return secteurDecoupageRepository.findAllSecteurDecoupageToDtoPageable(pageable);
} }
@Override @Override
public List<SecteurDecoupage> getSecteurDecoupageList() { public List<SecteurDecoupagePaylaodWeb> getSecteurDecoupageList() {
return secteurDecoupageRepository.findAll(); return secteurDecoupageRepository.findAllSecteurDecoupageToDto();
}
@Override
public Page<SecteurDecoupagePaylaodWeb> getSecteurDecoupageListBySecteurId(Long secteurId, Pageable pageable) {
return secteurDecoupageRepository.findAllSecteurDecoupageBySecteurToDtoPageable(secteurId,pageable);
}
@Override
public List<SecteurDecoupagePaylaodWeb> getSecteurDecoupageListBySecteurId(Long sectionId) {
return secteurDecoupageRepository.findAllSecteurDecoupageBySecteurToDto(sectionId);
}
@Override
public Optional<SecteurDecoupagePaylaodWeb> getSecteurDecoupageByIdToDto(Long id) {
return secteurDecoupageRepository.findSecteurDecoupageToDtoById(id);
} }
@@ -64,4 +95,21 @@ public class SecteurDecoupageServiceImpl implements SecteurDecoupageService {
public Optional<SecteurDecoupage> getSecteurDecoupageById(Long id) { public Optional<SecteurDecoupage> getSecteurDecoupageById(Long id) {
return secteurDecoupageRepository.findById(id); return secteurDecoupageRepository.findById(id);
} }
@Override
public List<ParcelleStatsProjectionUnSecteur> getStatParcelleDecoupageUnSecteur(Long secteurId) {
return parcelleRepository.findStatsBySecteurs(List.of(secteurId));
}
@Override
public List<ParcelleStatsProjectionUnSecteur> getStatParcelleDecoupageByUserId(Long userId) {
List<ParcelleStatsProjectionUnSecteur> parcelleStatsProjectionUnSecteurs = new ArrayList<>();
List<Secteur> secteurs= secteurService.getListSecteurUserId(userId);
List<Long> secteurIds = secteurs.stream()
.map(Secteur::getId)
.toList();
parcelleStatsProjectionUnSecteurs = parcelleRepository.findStatsBySecteurs(secteurIds);
return parcelleStatsProjectionUnSecteurs ;
}
} }

View File

@@ -3,105 +3,103 @@ package io.gmss.fiscad.implementations.decoupage;
import io.gmss.fiscad.entities.decoupage.Secteur; import io.gmss.fiscad.entities.decoupage.Secteur;
import io.gmss.fiscad.entities.decoupage.SecteurDecoupage; import io.gmss.fiscad.entities.decoupage.SecteurDecoupage;
import io.gmss.fiscad.entities.infocad.parametre.Structure; import io.gmss.fiscad.entities.infocad.parametre.Structure;
import io.gmss.fiscad.entities.user.AvoirFonction;
import io.gmss.fiscad.entities.user.User; import io.gmss.fiscad.entities.user.User;
import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.BadRequestException;
import io.gmss.fiscad.exceptions.NotFoundException; import io.gmss.fiscad.exceptions.NotFoundException;
import io.gmss.fiscad.interfaces.decoupage.SecteurService; import io.gmss.fiscad.interfaces.decoupage.SecteurService;
import io.gmss.fiscad.paylaods.request.SecteurDecoupagePayload; import io.gmss.fiscad.paylaods.request.crudweb.SecteurPaylaodWeb;
import io.gmss.fiscad.paylaods.request.SecteurPayload; import io.gmss.fiscad.paylaods.request.synchronisation.SecteurDecoupagePayload;
import io.gmss.fiscad.repositories.decoupage.ArrondissementRepository; import io.gmss.fiscad.paylaods.request.synchronisation.SecteurPayload;
import io.gmss.fiscad.repositories.decoupage.QuartierRepository; import io.gmss.fiscad.persistence.repositories.decoupage.ArrondissementRepository;
import io.gmss.fiscad.repositories.decoupage.SecteurRepository; import io.gmss.fiscad.persistence.repositories.decoupage.QuartierRepository;
import io.gmss.fiscad.repositories.infocad.parametre.StructureRepository; import io.gmss.fiscad.persistence.repositories.decoupage.SecteurRepository;
import io.gmss.fiscad.repositories.user.UserRepository; import io.gmss.fiscad.persistence.repositories.infocad.metier.ParcelleRepository;
import io.gmss.fiscad.persistence.repositories.infocad.parametre.StructureRepository;
import io.gmss.fiscad.persistence.repositories.user.AvoirFonctionRepository;
import io.gmss.fiscad.persistence.repositories.user.UserRepository;
import io.gmss.fiscad.service.EntityFromPayLoadService;
import lombok.AllArgsConstructor;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
@AllArgsConstructor
@Service @Service
public class SecteurServiceImpl implements SecteurService { public class SecteurServiceImpl implements SecteurService {
private final SecteurRepository secteurRepository; private final SecteurRepository secteurRepository;
private final ParcelleRepository parcelleRepository;
private final UserRepository userRepository; private final UserRepository userRepository;
private final ArrondissementRepository arrondissementRepository; private final ArrondissementRepository arrondissementRepository;
private final QuartierRepository quartierRepository; private final QuartierRepository quartierRepository;
private final StructureRepository structureRepository; private final StructureRepository structureRepository;
private final AvoirFonctionRepository avoirFonctionRepository;
private final EntityFromPayLoadService entityFromPayLoadService;
public SecteurServiceImpl(SecteurRepository secteurRepository, UserRepository userRepository, ArrondissementRepository arrondissementRepository, QuartierRepository quartierRepository, StructureRepository structureRepository) {
this.secteurRepository = secteurRepository;
this.userRepository = userRepository;
this.arrondissementRepository = arrondissementRepository;
this.quartierRepository = quartierRepository;
this.structureRepository = structureRepository;
}
@Override @Override
public Secteur createSecteur(SecteurPayload secteurPayload) throws BadRequestException { public SecteurPaylaodWeb createSecteur(SecteurPaylaodWeb secteurPaylaodWeb) throws BadRequestException {
if (secteurPayload.getId() != null) { if (secteurPaylaodWeb.getId() != null) {
throw new BadRequestException("Impossible de créer un nouveau secteur ayant un id non null."); throw new BadRequestException("Impossible de créer un nouveau secteur ayant un id non null.");
} }
Secteur secteur = entityFromPayLoadService.getSecteurFromPayLoadWeb(secteurPaylaodWeb);
if (secteurPayload.getChefSecteurId() != null && userRepository.existsById(secteurPayload.getChefSecteurId())) { secteur = secteurRepository.save(secteur);
Secteur secteur = getSecteurFromPayload(secteurPayload); return secteurRepository.findSecteurToDtoById(secteur.getId()).orElse(null);
return secteurRepository.save(secteur);
} else {
throw new BadRequestException("Impossible de créer un nouveau secteur sans le chef le Chef Secteur.");
}
} }
private Secteur getSecteurFromPayload(SecteurPayload secteurPayload) { // private Secteur getSecteurFromPayload(SecteurPayload secteurPayload) {
Secteur secteur = new Secteur(); // Secteur secteur = new Secteur();
Optional<User> optionalUser = userRepository.findById(secteurPayload.getChefSecteurId()); //// Optional<User> optionalUser = userRepository.findById(secteurPayload.getChefSecteurId());
secteur.setChefSecteur(optionalUser.orElse(null)); // //secteur.setChefSecteur(optionalUser.orElse(null));
Optional<Structure> optionalStructure = structureRepository.findById(secteurPayload.getStructureId()); //// Optional<Structure> optionalStructure = structureRepository.findById(secteurPayload.getStructureId());
secteur.setStructure(optionalStructure.orElse(null)); //// secteur.setStructure(optionalStructure.orElse(null));
List<SecteurDecoupage> secteurDecoupageList = new ArrayList<>(); //// List<SecteurDecoupage> secteurDecoupageList = new ArrayList<>();
//
for (SecteurDecoupagePayload sdp : secteurPayload.getSecteurDecoupages()) { //// for (SecteurDecoupagePayload sdp : secteurPayload.getSecteurDecoupages()) {
SecteurDecoupage sd = new SecteurDecoupage(); //// SecteurDecoupage sd = new SecteurDecoupage();
if (sdp.getSecteurId() != null && secteurRepository.existsById(sdp.getSecteurId())) { //// if (sdp.getSecteurId() != null && secteurRepository.existsById(sdp.getSecteurId())) {
sd.setSecteur(secteurRepository.findById(sdp.getSecteurId()).orElse(null)); //// sd.setSecteur(secteurRepository.findById(sdp.getSecteurId()).orElse(null));
} //// }
////
if (sdp.getArrondissementId() != null && arrondissementRepository.existsById(sdp.getArrondissementId())) { //// if (sdp.getArrondissementId() != null && arrondissementRepository.existsById(sdp.getArrondissementId())) {
sd.setArrondissement(arrondissementRepository.findById(sdp.getArrondissementId()).orElse(null)); //// sd.setArrondissement(arrondissementRepository.findById(sdp.getArrondissementId()).orElse(null));
} //// }
////
if (sdp.getQuartierId() != null && quartierRepository.existsById(sdp.getQuartierId())) { //// if (sdp.getQuartierId() != null && quartierRepository.existsById(sdp.getQuartierId())) {
sd.setQuartier(quartierRepository.findById(sdp.getQuartierId()).orElse(null)); //// sd.setQuartier(quartierRepository.findById(sdp.getQuartierId()).orElse(null));
} //// }
sd.setDateDebut(sdp.getDateDebut()); //// sd.setDateDebut(sdp.getDateDebut());
sd.setDateFin(sdp.getDateFin()); //// sd.setDateFin(sdp.getDateFin());
sd.setId(sdp.getId()); //// sd.setId(sdp.getId());
secteurDecoupageList.add(sd); //// secteurDecoupageList.add(sd);
} //// }
secteur.setSecteurDecoupages(secteurDecoupageList); // //secteur.setSecteurDecoupages(secteurDecoupageList);
//TODO // //TODO
secteur.setId(secteurPayload.getId()); // secteur.setId(secteurPayload.getId());
secteur.setCode(secteurPayload.getCode()); // secteur.setCode(secteurPayload.getCode());
secteur.setNom(secteurPayload.getNom()); // secteur.setNom(secteurPayload.getNom());
return secteur; // return secteur;
} // }
@Override @Override
public Secteur updateSecteur(Long id, SecteurPayload secteurPayload) throws NotFoundException { public SecteurPaylaodWeb updateSecteur(Long id, SecteurPaylaodWeb secteurPaylaodWeb) throws NotFoundException {
if (secteurPayload.getId() == null) { if (secteurPaylaodWeb.getId() == null) {
throw new BadRequestException("Impossible de mettre à jour un nouveau secteur ayant un id null."); throw new BadRequestException("Impossible de mettre à jour un nouveau secteur ayant un id null.");
} }
if (!secteurRepository.existsById(secteurPayload.getId())) { if (!secteurRepository.existsById(secteurPaylaodWeb.getId())) {
throw new NotFoundException("Impossible de trouver le secteur spécifié."); throw new NotFoundException("Impossible de trouver le secteur spécifié.");
} }
if (secteurPayload.getChefSecteurId() != null && userRepository.existsById(secteurPayload.getChefSecteurId())) { Secteur secteur = entityFromPayLoadService.getSecteurFromPayLoadWeb(secteurPaylaodWeb);
Secteur secteur = getSecteurFromPayload(secteurPayload); secteur = secteurRepository.save(secteur);
return secteurRepository.save(secteur); return secteurRepository.findSecteurToDtoById(secteur.getId()).orElse(null);
} else {
throw new BadRequestException("Impossible de créer un nouveau secteur sans le chef le Chef Secteur.");
}
} }
@Override @Override
@@ -115,23 +113,58 @@ public class SecteurServiceImpl implements SecteurService {
} }
@Override @Override
public Page<Secteur> getSecteurList(Pageable pageable) { public Page<SecteurPaylaodWeb> getSecteurList(Pageable pageable) {
return secteurRepository.findAll(pageable); return secteurRepository.findAllSecteurToDtoPageable(pageable);
} }
@Override @Override
public List<Secteur> getSecteurList() { public List<SecteurPaylaodWeb> getSecteurList() {
return secteurRepository.findAll(); return secteurRepository.findAllSecteurToDto();
} }
@Override @Override
public List<Secteur> getSecteurListUneStruture(Long structureId) { public Page<SecteurPaylaodWeb> getSecteurListBySectionId(Long sectionId, Pageable pageable) {
return secteurRepository.findAllByStructure_Id(structureId); return secteurRepository.findAllSecteurBySectionIdToDtoPageable(sectionId,pageable);
}
@Override
public List<SecteurPaylaodWeb> getSecteurListBySectionId(Long sectionId) {
return secteurRepository.findAllSecteurBySectionIdToDto(sectionId);
}
@Override
public List<SecteurPaylaodWeb> getSecteurListByStructureId(Long structureId) {
return secteurRepository.findAllSecteurByStructureIdToDto(structureId);
}
@Override
public Page<SecteurPaylaodWeb> getSecteurListByStructureId(Long structureId, Pageable pageable) {
return secteurRepository.findAllSecteurByStructureIdToDtoPageable(structureId,pageable);
} }
@Override @Override
public Optional<Secteur> getSecteurById(Long id) { public Optional<SecteurPaylaodWeb> getSecteurById(Long id) {
return secteurRepository.findById(id); return secteurRepository.findSecteurToDtoById(id);
}
@Override
public List<Secteur> getListSecteurUserId(Long userId) {
List<AvoirFonction> avoirFonctions= avoirFonctionRepository.findAvoirFonctionByUser_Id(userId);
List<Secteur> secteurs = new ArrayList<>();
avoirFonctions.stream()
.filter(af -> af.getDateFin() == null || af.getDateFin().isAfter(LocalDate.now()))
.forEach(avoirFonction -> {
if(avoirFonction.getFonction().getSecteur()!=null){
secteurs.addAll(List.of(avoirFonction.getFonction().getSecteur()));
}else
if (avoirFonction.getFonction().getSection()!=null){
secteurs.addAll(secteurRepository.findDistinctBySection_Id(avoirFonction.getFonction().getSection().getId()));
}else if(avoirFonction.getFonction().getStructure()!=null){
secteurs.addAll(secteurRepository.findDistinctBySection_Structure_Id(avoirFonction.getFonction().getStructure().getId()));
}
});
return secteurs;
} }
} }

View File

@@ -0,0 +1,90 @@
package io.gmss.fiscad.implementations.decoupage;
import io.gmss.fiscad.entities.decoupage.Secteur;
import io.gmss.fiscad.entities.decoupage.Section;
import io.gmss.fiscad.entities.rfu.metier.Batiment;
import io.gmss.fiscad.exceptions.BadRequestException;
import io.gmss.fiscad.exceptions.NotFoundException;
import io.gmss.fiscad.interfaces.decoupage.SectionService;
import io.gmss.fiscad.paylaods.request.crudweb.SectionPaylaodWeb;
import io.gmss.fiscad.persistence.repositories.decoupage.SectionRepository;
import io.gmss.fiscad.persistence.repositories.infocad.parametre.StructureRepository;
import io.gmss.fiscad.persistence.repositories.rfu.metier.BatimentRepository;
import io.gmss.fiscad.service.EntityFromPayLoadService;
import lombok.AllArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@AllArgsConstructor
@Service
public class SectionServiceImpl implements SectionService {
private final StructureRepository structureRepository;
private final SectionRepository sectionRepository;
private final EntityFromPayLoadService entityFromPayLoadService;
@Override
public SectionPaylaodWeb createSection(SectionPaylaodWeb sectionPaylaodWeb) throws BadRequestException {
if (sectionPaylaodWeb.getId() != null) {
throw new BadRequestException("Impossible de créer une nouvelle section ayant un id non null.");
}
Section section= entityFromPayLoadService.getSectionFromPayLoadWeb(sectionPaylaodWeb);
section=sectionRepository.save(section);
return sectionRepository.findSectionToDtoById(section.getId()).orElse(null);
}
@Override
public SectionPaylaodWeb updateSection(Long id, SectionPaylaodWeb sectionPaylaodWeb) throws NotFoundException {
if (sectionPaylaodWeb.getId() == null) {
throw new BadRequestException("Impossible de mettre à jour un nouveau section ayant un id null.");
}
if (!sectionRepository.existsById(sectionPaylaodWeb.getId())) {
throw new NotFoundException("Impossible de trouver le section spécifié.");
}
Section section= entityFromPayLoadService.getSectionFromPayLoadWeb(sectionPaylaodWeb);
section=sectionRepository.save(section);
return sectionRepository.findSectionToDtoById(section.getId()).orElse(null);
}
@Override
public void deleteSection(Long id) throws NotFoundException {
Optional<Section> optionalSection = sectionRepository.findById(id);
if (optionalSection.isPresent()) {
sectionRepository.deleteById(optionalSection.get().getId());
} else {
throw new NotFoundException("Impossible de trouver la section spécifié.");
}
}
@Override
public Page<SectionPaylaodWeb> getSectionList(Pageable pageable) {
return sectionRepository.findAllSectionToDtoPageable(pageable);
}
@Override
public List<SectionPaylaodWeb> getSectionList() {
return sectionRepository.findAllSectionToDto();
}
@Override
public List<SectionPaylaodWeb> getSectionListByStructureId(Long structureId) {
return sectionRepository.findAllSectionByStructureToDto(structureId);
}
@Override
public Page<SectionPaylaodWeb> getSectionListByStructureId(Long structureId, Pageable pageable) {
return sectionRepository.findAllSectionByStructureToDtoPageable(structureId,pageable);
}
@Override
public Optional<SectionPaylaodWeb> getSectionById(Long id) {
return sectionRepository.findSectionToDtoById(id);
}
}

View File

@@ -4,7 +4,7 @@ import io.gmss.fiscad.entities.infocad.metier.ActeurConcerne;
import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.BadRequestException;
import io.gmss.fiscad.exceptions.NotFoundException; import io.gmss.fiscad.exceptions.NotFoundException;
import io.gmss.fiscad.interfaces.infocad.metier.ActeurConcerneService; import io.gmss.fiscad.interfaces.infocad.metier.ActeurConcerneService;
import io.gmss.fiscad.repositories.infocad.metier.ActeurConcerneRepository; import io.gmss.fiscad.persistence.repositories.infocad.metier.ActeurConcerneRepository;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;

View File

@@ -7,7 +7,7 @@ import io.gmss.fiscad.exceptions.NotFoundException;
import io.gmss.fiscad.interfaces.infocad.metier.CommentaireService; import io.gmss.fiscad.interfaces.infocad.metier.CommentaireService;
import io.gmss.fiscad.paylaods.request.SyncCommentaireRequest; import io.gmss.fiscad.paylaods.request.SyncCommentaireRequest;
import io.gmss.fiscad.paylaods.response.CommentaireResponse; import io.gmss.fiscad.paylaods.response.CommentaireResponse;
import io.gmss.fiscad.repositories.infocad.metier.CommentaireRepository; import io.gmss.fiscad.persistence.repositories.infocad.metier.CommentaireRepository;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;

View File

@@ -1,36 +1,45 @@
package io.gmss.fiscad.implementations.infocad.metier; package io.gmss.fiscad.implementations.infocad.metier;
import io.gmss.fiscad.entities.infocad.metier.ActeurConcerne; import io.gmss.fiscad.entities.infocad.metier.*;
import io.gmss.fiscad.entities.infocad.metier.Enquete; import io.gmss.fiscad.entities.infocad.parametre.Personne;
import io.gmss.fiscad.entities.infocad.metier.EnqueteFiltreResponse;
import io.gmss.fiscad.entities.infocad.metier.Parcelle;
import io.gmss.fiscad.entities.infocad.parametre.Bloc;
import io.gmss.fiscad.entities.rfu.metier.CaracteristiqueParcelle; import io.gmss.fiscad.entities.rfu.metier.CaracteristiqueParcelle;
import io.gmss.fiscad.entities.rfu.metier.DeclarationNc;
import io.gmss.fiscad.entities.rfu.metier.EnqueteBatiment; import io.gmss.fiscad.entities.rfu.metier.EnqueteBatiment;
import io.gmss.fiscad.entities.rfu.metier.EnqueteUniteLogement; import io.gmss.fiscad.entities.rfu.metier.EnqueteUniteLogement;
import io.gmss.fiscad.entities.rfu.parametre.Equipe;
import io.gmss.fiscad.entities.rfu.parametre.ZoneRfu;
import io.gmss.fiscad.entities.user.User; import io.gmss.fiscad.entities.user.User;
import io.gmss.fiscad.enums.StatusEnquete; import io.gmss.fiscad.enums.StatutEnquete;
import io.gmss.fiscad.exceptions.ApplicationException;
import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.BadRequestException;
import io.gmss.fiscad.exceptions.NotFoundException; import io.gmss.fiscad.exceptions.NotFoundException;
import io.gmss.fiscad.interfaces.infocad.metier.EnqueteService; import io.gmss.fiscad.interfaces.infocad.metier.EnqueteService;
import io.gmss.fiscad.interfaces.infocad.metier.PieceService;
import io.gmss.fiscad.interfaces.rfu.metier.CaracteristiqueParcelleService;
import io.gmss.fiscad.interfaces.rfu.metier.DeclarationNcService;
import io.gmss.fiscad.interfaces.user.UserService; import io.gmss.fiscad.interfaces.user.UserService;
import io.gmss.fiscad.paylaods.request.EnquetePayLoad; //import io.gmss.fiscad.paylaods.request.synchronisation.EnquetePayLoad ;
//import io.gmss.fiscad.paylaods.request.crudweb.EnquetePayLoadWeb ;
import io.gmss.fiscad.paylaods.request.EnqueteTraitementPayLoad; import io.gmss.fiscad.paylaods.request.EnqueteTraitementPayLoad;
import io.gmss.fiscad.paylaods.request.FiltreEnquetePayLoad; import io.gmss.fiscad.paylaods.request.FiltreEnquetePayLoad;
import io.gmss.fiscad.paylaods.response.*; import io.gmss.fiscad.paylaods.request.crudweb.EnquetePayLoadWeb;
import io.gmss.fiscad.paylaods.response.FicheResponse.*; import io.gmss.fiscad.paylaods.response.* ;
import io.gmss.fiscad.repositories.decoupage.ArrondissementRepository; import io.gmss.fiscad.paylaods.response.FicheResponse.* ;
import io.gmss.fiscad.repositories.decoupage.CommuneRepository; import io.gmss.fiscad.paylaods.response.synchronisation.EnqueteNonSyncResponse;
import io.gmss.fiscad.repositories.decoupage.SecteurRepository; import io.gmss.fiscad.persistence.repositories.decoupage.ArrondissementRepository;
import io.gmss.fiscad.repositories.infocad.metier.ActeurConcerneRepository; import io.gmss.fiscad.persistence.repositories.decoupage.CommuneRepository;
import io.gmss.fiscad.repositories.infocad.metier.EnqueteRepository; import io.gmss.fiscad.persistence.repositories.decoupage.SecteurRepository;
import io.gmss.fiscad.repositories.infocad.metier.ParcelleRepository; import io.gmss.fiscad.persistence.repositories.infocad.metier.*;
import io.gmss.fiscad.repositories.infocad.parametre.BlocRepository; import io.gmss.fiscad.persistence.repositories.infocad.parametre.BlocRepository;
import io.gmss.fiscad.repositories.infocad.parametre.StructureRepository; import io.gmss.fiscad.persistence.repositories.infocad.parametre.PersonneRepository;
import io.gmss.fiscad.repositories.rfu.metier.CaracteristiqueParcelleRepository; import io.gmss.fiscad.persistence.repositories.infocad.parametre.StructureRepository;
import io.gmss.fiscad.repositories.rfu.metier.EnqueteBatimentRepository; import io.gmss.fiscad.persistence.repositories.rfu.metier.CaracteristiqueParcelleRepository;
import io.gmss.fiscad.repositories.rfu.metier.EnqueteUniteLogementRepository; import io.gmss.fiscad.persistence.repositories.rfu.metier.EnqueteBatimentRepository;
import io.gmss.fiscad.repositories.user.UserRepository; import io.gmss.fiscad.persistence.repositories.rfu.metier.EnqueteUniteLogementRepository;
import io.gmss.fiscad.persistence.repositories.rfu.parametre.EquipeRepository;
import io.gmss.fiscad.persistence.repositories.rfu.parametre.ZoneRfuRepository;
import io.gmss.fiscad.persistence.repositories.user.UserRepository;
import io.gmss.fiscad.service.EntityFromPayLoadService;
import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext; import jakarta.persistence.PersistenceContext;
import jakarta.persistence.Query; import jakarta.persistence.Query;
@@ -65,36 +74,209 @@ public class EnqueteServiceImpl implements EnqueteService {
private final EnqueteUniteLogementRepository enqueteUniteLogementRepository; private final EnqueteUniteLogementRepository enqueteUniteLogementRepository;
private final SecteurRepository secteurRepository; private final SecteurRepository secteurRepository;
private final StructureRepository structureRepository; private final StructureRepository structureRepository;
private final ParcelleServiceImpl parcelleService;
private final PersonneRepository personneRepository;
private final ZoneRfuRepository zoneRfuRepository ;
private final EquipeRepository equipeRepository ;
private final RueRepository rueRepository ;
private final CaracteristiqueParcelleService caracteristiqueParcelleService ;
private final PieceService pieceService ;
private final UploadRepository uploadRepository ;
private final DeclarationNcService declarationNcService ;
private final EntityFromPayLoadService entityFromPayLoadService ;
@PersistenceContext @PersistenceContext
private final EntityManager em; private final EntityManager em;
@Override @Override
public Enquete createEnquete(EnquetePayLoad enquetePayLoad) throws BadRequestException { public Enquete createEnquete(EnquetePayLoadWeb enquetePayLoadWeb) throws BadRequestException {
Optional<User> optionalUser = userRepository.findById(enquetePayLoad.getUserId()); Parcelle parcelle=new Parcelle();
Long rueId;
Optional<User> optionalUser = userRepository.findById(enquetePayLoadWeb.getEnqueteurId());
if (!optionalUser.isPresent()) { if (!optionalUser.isPresent()) {
throw new BadRequestException("Impossible d'enregistrer une enquête avec un enquêteur inexistant"); throw new BadRequestException("Echec de l'enregistrement : Enquêteur inexistant");
} }
Optional<Bloc> optionalBloc = blocRepository.findById(enquetePayLoad.getBlocId()); Optional<Personne> optionalProprietaire = personneRepository.findById(enquetePayLoadWeb.getProprietaireId());
if (!optionalBloc.isPresent()) { if (!optionalProprietaire.isPresent()) {
throw new BadRequestException("Impossible d'enregistrer une enquête avec un bloc inexistant"); throw new BadRequestException("Echec de l'enregistrement : Propriétaire inexistant");
} }
Optional<Parcelle> optionalParcelle = parcelleRepository.findById(enquetePayLoad.getParcelleId());
if (!optionalParcelle.isPresent()) { Optional<ZoneRfu> optionalZoneRfu = zoneRfuRepository.findById(enquetePayLoadWeb.getZoneRfuId());
throw new BadRequestException("Impossible d'enregistrer une enquête avec une parcelle inexistante"); if (!optionalZoneRfu.isPresent()) {
throw new BadRequestException("Echec de l'enregistrement : zone inexistante");
} }
if(enquetePayLoadWeb.getZoneRfuId()!=null) {
Optional<Rue> optionalRue = rueRepository.findById(enquetePayLoadWeb.getZoneRfuId());
if (optionalRue.isPresent()) {
rueId = optionalRue.get().getId();
enquetePayLoadWeb.getParcellePayLoadWeb().setRueId(rueId);
}
}
Optional<Equipe> optionalEquipe = equipeRepository.findById(enquetePayLoadWeb.getEquipeId());
///enregistrement de la pacelle
try {
if (enquetePayLoadWeb.getParcellePayLoadWeb().getId() == null) {
parcelle = parcelleService.createParcelle(enquetePayLoadWeb.getParcellePayLoadWeb());
} else {
parcelle = parcelleService.updateParcelle(enquetePayLoadWeb.getParcellePayLoadWeb().getId(),enquetePayLoadWeb.getParcellePayLoadWeb());
}
}catch (Exception e){
e.printStackTrace();
throw new ApplicationException("Echec de l'enregistrement : La parcelle non enregistrée.");
}
////enregistrement de l'enquete
Enquete enquete = new Enquete(); Enquete enquete = new Enquete();
enquete.setDateEnquete(LocalDate.now()); enquete.setDateEnquete(LocalDate.now());
enquete.setBloc(optionalBloc.get()); //enquete.setBloc(optionalBloc.get());
enquete.setUser(optionalUser.get()); enquete.setUser(optionalUser.get());
enquete.setParcelle(optionalParcelle.get()); enquete.setParcelle(parcelle);
enquete.setLitige(enquetePayLoad.isLitige()); enquete.setLitige(enquetePayLoadWeb.isLitige());
enquete.setStatusEnquete(StatusEnquete.EN_COURS); enquete.setStatutEnquete(StatutEnquete.EN_COURS);
enquete.setObservationParticuliere(enquetePayLoad.getObservationParticuliere()); enquete.setObservationParticuliere(enquetePayLoadWeb.getObservation());
enquete.setPersonne(optionalProprietaire.orElse(null));
enquete.setZoneRfu(optionalZoneRfu.orElse(null));
enquete.setAutreAdresse(enquetePayLoadWeb.getAutreAdresse());
enquete.setAutreNumeroTitreFoncier(enquetePayLoadWeb.getAutreNumeroTitreFoncier());
enquete.setNumeroTitreFoncier(enquetePayLoadWeb.getNumeroTitreFoncier());
enquete.setEquipe(optionalEquipe.orElse(null));
enquete.setDateDebutExcemption(enquetePayLoadWeb.getDateDebutExemption());
enquete.setDateFinExcemption(enquetePayLoadWeb.getDateFinExemption());
enquete.setNbreBatiment(enquetePayLoadWeb.getNbreBatiment());
enquete.setNbrePiscine(enquetePayLoadWeb.getNbrePiscine());
enquete.setNbreIndivisiaire(enquetePayLoadWeb.getNbreIndivisiaire());
enquete.setNbreCoProprietaire(enquetePayLoadWeb.getNbreCoProprietaire());
enquete.setNumEntreeParcelle(enquetePayLoadWeb.getNumEntreeParcelle());
enquete.setNomRue(enquetePayLoadWeb.getNomRue());
enquete.setNumRue(enquetePayLoadWeb.getNumRue());
enquete.setSuperficie(enquetePayLoadWeb.getSuperficie());
enquete.setMontantMensuelleLocation(enquetePayLoadWeb.getMontantMensuelleLocation());
enquete.setMontantAnnuelleLocation(enquetePayLoadWeb.getMontantAnnuelleLocation());
enquete.setValeurParcelleEstime(enquetePayLoadWeb.getValeurParcelleEstime());
enquete.setValeurParcelleReel(enquetePayLoadWeb.getValeurParcelleReel());
Enquete finalEnquete=enqueteRepository.save(enquete);
//////Enregistrement des caractéristiques parcelle
enquetePayLoadWeb.getCaracteristiqueParcellePayloadWebs().forEach(caracteristiqueParcellePayloadWeb -> {
caracteristiqueParcellePayloadWeb.setEnqueteId(finalEnquete.getId());
CaracteristiqueParcelle caracteristiqueParcelle=entityFromPayLoadService.getCaracteristiqueParcelleFromPayLoadWeb(caracteristiqueParcellePayloadWeb);
caracteristiqueParcelleService.createCaracteristiqueParcelle(caracteristiqueParcelle);
});
/////Enregistrement des pièce de parcelles
enquetePayLoadWeb.getPiecePayLoadWebs().forEach(piecePayLoadWeb -> {
piecePayLoadWeb.setEnqueteId(finalEnquete.getId());
//Piece piece=entityFromPayLoadService.getPieceFromPayLoadWeb(piecePayLoadWeb);
Piece piecefinal = pieceService.createPiece(entityFromPayLoadService.getPieceFromPayLoadWeb(piecePayLoadWeb));
piecePayLoadWeb.getUploadPayLoadWebs().forEach(uploadPayLoadWeb -> {
uploadPayLoadWeb.setEnqueteId(finalEnquete.getId());
Upload upload=entityFromPayLoadService.getUploadFromPayLoadWeb(uploadPayLoadWeb);
upload.setPiece(piecefinal);
uploadRepository.save(upload);
});
});
/////Enregistrement des pièce de parcelles
enquetePayLoadWeb.getDeclarationNcPayloadWebs().forEach(declarationNcPayloadWeb -> {
declarationNcPayloadWeb.setEnqueteId(finalEnquete.getId());
DeclarationNc declarationNcfinal=declarationNcService.createDeclarationNc(entityFromPayLoadService.getDeclarationNcFromPayLoadWeb(declarationNcPayloadWeb));
declarationNcPayloadWeb.getUploadPayLoadWebs().forEach(uploadPayLoadWeb -> {
uploadPayLoadWeb.setEnqueteId(finalEnquete.getId());
Upload upload=entityFromPayLoadService.getUploadFromPayLoadWeb(uploadPayLoadWeb);
upload.setDeclarationNc(declarationNcfinal);
uploadRepository.save(upload);
});
});
return enquete;
}
@Override
public Enquete updateEnquete(Long id,EnquetePayLoadWeb enquetePayLoadWeb) throws NotFoundException {
if (enquetePayLoadWeb.getId() == null) {
throw new BadRequestException("Impossible de mettre à jour une enquête ayant un id null.");
}
if (!enqueteRepository.existsById(enquetePayLoadWeb.getId())) {
throw new NotFoundException("Impossible de trouver l'enquête que vous désirez modifier.");
}
if (enquetePayLoadWeb.getParcellePayLoadWeb()==null) {
throw new BadRequestException("Impossible d'enregistrer une enquête avec une parcelle inexistante");
}
Parcelle parcelle=new Parcelle();
Long rueId;
Optional<User> optionalUser = userRepository.findById(enquetePayLoadWeb.getEnqueteurId());
if (!optionalUser.isPresent()) {
throw new BadRequestException("Echec de l'enregistrement : Enquêteur inexistant");
}
Optional<Personne> optionalProprietaire = personneRepository.findById(enquetePayLoadWeb.getProprietaireId());
if (!optionalProprietaire.isPresent()) {
throw new BadRequestException("Echec de l'enregistrement : Propriétaire inexistant");
}
Optional<ZoneRfu> optionalZoneRfu = zoneRfuRepository.findById(enquetePayLoadWeb.getZoneRfuId());
if (!optionalZoneRfu.isPresent()) {
throw new BadRequestException("Echec de l'enregistrement : zone inexistante");
}
Optional<Rue> optionalRue = rueRepository.findById(enquetePayLoadWeb.getZoneRfuId());
if (optionalRue.isPresent()) {
rueId=optionalRue.get().getId();
enquetePayLoadWeb.getParcellePayLoadWeb().setRueId(rueId);
}
Optional<Equipe> optionalEquipe = equipeRepository.findById(enquetePayLoadWeb.getEquipeId());
///enregistrement de la pacelle
try {
if (enquetePayLoadWeb.getParcellePayLoadWeb().getId() == null) {
parcelle = parcelleService.createParcelle(enquetePayLoadWeb.getParcellePayLoadWeb());
} else {
parcelle = parcelleService.updateParcelle(enquetePayLoadWeb.getParcellePayLoadWeb().getId(),enquetePayLoadWeb.getParcellePayLoadWeb());
}
}catch (Exception e){
throw new ApplicationException("Echec de l'enregistrement : La parcelle non enregistrée.");
}
////enregistrement de l'enquete
Enquete enquete = new Enquete();
enquete.setDateEnquete(LocalDate.now());
//enquete.setBloc(optionalBloc.get());
enquete.setUser(optionalUser.get());
enquete.setParcelle(parcelle);
enquete.setLitige(enquetePayLoadWeb.isLitige());
enquete.setStatutEnquete(StatutEnquete.EN_COURS);
enquete.setObservationParticuliere(enquetePayLoadWeb.getObservation());
enquete.setPersonne(optionalProprietaire.orElse(null));
enquete.setZoneRfu(optionalZoneRfu.orElse(null));
enquete.setAutreAdresse(enquetePayLoadWeb.getAutreAdresse());
enquete.setAutreNumeroTitreFoncier(enquetePayLoadWeb.getAutreNumeroTitreFoncier());
enquete.setNumeroTitreFoncier(enquetePayLoadWeb.getNumeroTitreFoncier());
enquete.setEquipe(optionalEquipe.orElse(null));
enquete.setDateDebutExcemption(enquetePayLoadWeb.getDateDebutExemption());
enquete.setDateFinExcemption(enquetePayLoadWeb.getDateFinExemption());
enquete.setNbreBatiment(enquetePayLoadWeb.getNbreBatiment());
enquete.setNbrePiscine(enquetePayLoadWeb.getNbrePiscine());
enquete.setNbreIndivisiaire(enquetePayLoadWeb.getNbreIndivisiaire());
enquete.setNbreCoProprietaire(enquetePayLoadWeb.getNbreCoProprietaire());
enquete.setNumEntreeParcelle(enquetePayLoadWeb.getNumEntreeParcelle());
enquete.setNomRue(enquetePayLoadWeb.getNomRue());
enquete.setNumRue(enquetePayLoadWeb.getNumRue());
enquete.setSuperficie(enquetePayLoadWeb.getSuperficie());
enquete.setMontantMensuelleLocation(enquetePayLoadWeb.getMontantMensuelleLocation());
enquete.setMontantAnnuelleLocation(enquetePayLoadWeb.getMontantAnnuelleLocation());
enquete.setValeurParcelleEstime(enquetePayLoadWeb.getValeurParcelleEstime());
enquete.setValeurParcelleReel(enquetePayLoadWeb.getValeurParcelleReel());
return enqueteRepository.save(enquete); return enqueteRepository.save(enquete);
} }
@Override @Override
public List<EnqueteResponse> getEnqueteCommuneArrondBloc() { public List<EnqueteResponse> getEnqueteCommuneArrondBloc() {
return enqueteRepository.getEnqueteComArrondBloc(); return enqueteRepository.getEnqueteComArrondBloc();
@@ -196,36 +378,6 @@ public class EnqueteServiceImpl implements EnqueteService {
return enqueteFiltreResponses; 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<User> optionalUser = userRepository.findById(enquetePayLoad.getUserId());
if (!optionalUser.isPresent()) {
throw new BadRequestException("Impossible d'enregistrer une enquête avec un enquêteur inexistant");
}
Optional<Bloc> optionalBloc = blocRepository.findById(enquetePayLoad.getBlocId());
if (!optionalBloc.isPresent()) {
throw new BadRequestException("Impossible d'enregistrer une enquête avec un bloc inexistant");
}
Optional<Parcelle> 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 @Override
public void deleteEnquete(Long id) throws NotFoundException { public void deleteEnquete(Long id) throws NotFoundException {
@@ -247,6 +399,11 @@ public class EnqueteServiceImpl implements EnqueteService {
return enqueteRepository.findAll(); return enqueteRepository.findAll();
} }
@Override
public List<Enquete> getEnqueteListByParcelle(Long parcelleId) {
return enqueteRepository.findAllByParcelle_Id(parcelleId);
}
@Override @Override
public Optional<Enquete> getEnqueteById(Long id) { public Optional<Enquete> getEnqueteById(Long id) {
if (enqueteRepository.existsById(id)) { if (enqueteRepository.existsById(id)) {
@@ -267,7 +424,7 @@ public class EnqueteServiceImpl implements EnqueteService {
} }
Enquete enquete = optionalEnquete.get(); Enquete enquete = optionalEnquete.get();
enquete.setDateValidation(LocalDate.now()); enquete.setDateValidation(LocalDate.now());
enquete.setStatusEnquete(StatusEnquete.VALIDE); enquete.setStatutEnquete(StatutEnquete.VALIDE);
enquete.setSynchronise(false); enquete.setSynchronise(false);
return enqueteRepository.save(enquete); return enqueteRepository.save(enquete);
} }
@@ -284,7 +441,7 @@ public class EnqueteServiceImpl implements EnqueteService {
Enquete enquete = optionalEnquete.get(); Enquete enquete = optionalEnquete.get();
enquete.setDateRejet(LocalDate.now()); enquete.setDateRejet(LocalDate.now());
enquete.setDescriptionMotifRejet(enqueteTraitementPayLoad.getMotifRejet()); enquete.setDescriptionMotifRejet(enqueteTraitementPayLoad.getMotifRejet());
enquete.setStatusEnquete(StatusEnquete.REJETE); enquete.setStatutEnquete(StatutEnquete.REJETE);
enquete.setSynchronise(false); enquete.setSynchronise(false);
return enqueteRepository.save(enquete); return enqueteRepository.save(enquete);
} }
@@ -325,7 +482,7 @@ public class EnqueteServiceImpl implements EnqueteService {
throw new NotFoundException("Impossible de trouver l'enquête que vous désirez finaliser."); throw new NotFoundException("Impossible de trouver l'enquête que vous désirez finaliser.");
} }
optionalEnquete.get().setDateFinalisation(LocalDate.now()); optionalEnquete.get().setDateFinalisation(LocalDate.now());
optionalEnquete.get().setStatusEnquete(StatusEnquete.FINALISE); optionalEnquete.get().setStatutEnquete(StatutEnquete.FINALISE);
return enqueteRepository.save(optionalEnquete.get()); return enqueteRepository.save(optionalEnquete.get());
} }
@@ -340,7 +497,7 @@ public class EnqueteServiceImpl implements EnqueteService {
} }
optionalEnquete.get().setDateLitigeResolu(LocalDate.now()); optionalEnquete.get().setDateLitigeResolu(LocalDate.now());
optionalEnquete.get().setLitige(false); optionalEnquete.get().setLitige(false);
optionalEnquete.get().setStatusEnquete(StatusEnquete.EN_COURS); optionalEnquete.get().setStatutEnquete(StatutEnquete.EN_COURS);
return enqueteRepository.save(optionalEnquete.get()); return enqueteRepository.save(optionalEnquete.get());
} }

Some files were not shown because too many files have changed in this diff Show More