From 70f7d6ba58f402e667531c89b5abbf29f6194357 Mon Sep 17 00:00:00 2001 From: Aurince AKAKPO Date: Sun, 2 Aug 2026 12:38:52 +0100 Subject: [PATCH] reajustement workflow --- .../rfu/metier/ParticiperController.java | 236 +++++++++++++++ .../rfu/parametre/EquipeController.java | 101 ++++++- .../entities/rfu/metier/ImpositionsTfu.java | 3 - .../rfu/{parametre => metier}/Participer.java | 3 +- .../fiscad/entities/rfu/parametre/Equipe.java | 20 +- .../io/gmss/fiscad/entities/user/User.java | 9 +- .../rfu/metier/ParticiperServiceImpl.java | 125 ++++++++ .../rfu/parametre/EquipeServiceImpl.java | 172 ++++++----- .../rfu/metier/ParticiperService.java | 30 ++ .../rfu/parametre/EquipeService.java | 39 ++- .../request/crudweb/EquipePayloadWeb.java | 58 ++++ .../request/crudweb/ParticiperPayloadWeb.java | 50 ++++ .../rfu/metier/ParticiperRepository.java | 174 +++++++++++ .../rfu/parametre/EquipeRepository.java | 283 ++++++++++++++++++ .../service/EntityFromPayLoadService.java | 69 +++++ 15 files changed, 1259 insertions(+), 113 deletions(-) create mode 100644 src/main/java/io/gmss/fiscad/controllers/rfu/metier/ParticiperController.java rename src/main/java/io/gmss/fiscad/entities/rfu/{parametre => metier}/Participer.java (92%) create mode 100644 src/main/java/io/gmss/fiscad/implementations/rfu/metier/ParticiperServiceImpl.java create mode 100755 src/main/java/io/gmss/fiscad/interfaces/rfu/metier/ParticiperService.java create mode 100644 src/main/java/io/gmss/fiscad/paylaods/request/crudweb/EquipePayloadWeb.java create mode 100644 src/main/java/io/gmss/fiscad/paylaods/request/crudweb/ParticiperPayloadWeb.java create mode 100644 src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/ParticiperRepository.java diff --git a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/ParticiperController.java b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/ParticiperController.java new file mode 100644 index 0000000..bc522c1 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/ParticiperController.java @@ -0,0 +1,236 @@ +package io.gmss.fiscad.controllers.rfu.metier; + + +import io.gmss.fiscad.exceptions.*; +import io.gmss.fiscad.interfaces.rfu.metier.ParticiperService; +import io.gmss.fiscad.paylaods.ApiResponse; +import io.gmss.fiscad.paylaods.request.crudweb.ParticiperPayloadWeb; +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.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.HttpClientErrorException; + + +@RestController +@RequestMapping(value = "api/participer", produces = MediaType.APPLICATION_JSON_VALUE) +@SecurityRequirement(name = "bearer") +@Tag(name = "Participer") +@CrossOrigin(origins = "*") +public class ParticiperController { + + private final ParticiperService participerService; + + private static final Logger logger = LoggerFactory.getLogger(ParticiperController.class); + + public ParticiperController(ParticiperService participerService) { + this.participerService = participerService; + } + + @PostMapping("/create") + @PreAuthorize("hasAuthority('CREATE_PARTICIPER')") + public ResponseEntity createParticiper(@RequestBody @Valid @Validated ParticiperPayloadWeb participerPaylaodWeb) { + try { + participerPaylaodWeb = participerService.createParticiper(participerPaylaodWeb); + return new ResponseEntity<>( + new ApiResponse<>(true, participerPaylaodWeb, "Participer 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}") + @PreAuthorize("hasAuthority('UPDATE_PARTICIPER')") + public ResponseEntity updateParticiper(@PathVariable Long id, @RequestBody ParticiperPayloadWeb participerPaylaodWeb) { + try { + return new ResponseEntity<>( + new ApiResponse<>(true, participerService.updateParticiper(id,participerPaylaodWeb), "Participer 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}") + @PreAuthorize("hasAuthority('DELETE_PARTICIPER')") + public ResponseEntity deleteParticiper(@PathVariable Long id) { + try { + participerService.deleteParticiper(id); + return new ResponseEntity<>( + new ApiResponse<>(true, "Participer 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") + @PreAuthorize("hasAuthority('READ_PARTICIPER')") + public ResponseEntity getAllParticiperList() { + try { + return new ResponseEntity<>( + new ApiResponse<>(true, participerService.getParticiperList(), "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") + @PreAuthorize("hasAuthority('READ_PARTICIPER')") + public ResponseEntity getAllParticiperPaged(@RequestParam int pageNo, @RequestParam int pageSize) { + try { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, participerService.getParticiperList(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("/all/by-equipe-id/{equipeId}") + @PreAuthorize("hasAuthority('READ_PARTICIPER')") + public ResponseEntity getAllParticiperByParcelleList(@PathVariable Long equipeId) { + try { + return new ResponseEntity<>( + new ApiResponse<>(true, participerService.getParticiperListByEquipe(equipeId), "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/by-equipe-id/{equipeId}") + @PreAuthorize("hasAuthority('READ_PARTICIPER')") + public ResponseEntity getAllParticiperByParcellePaged(@PathVariable Long equipeId, @RequestParam int pageNo, @RequestParam int pageSize) { + try { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, participerService.getParticiperListByEquipePageable(equipeId,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}") + @PreAuthorize("hasAuthority('READ_PARTICIPER')") + public ResponseEntity getParticiperById(@PathVariable Long id) { + try { + return new ResponseEntity<>( + new ApiResponse<>(true, participerService.getParticiperById(id), "Participer 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); + } + } + + +} diff --git a/src/main/java/io/gmss/fiscad/controllers/rfu/parametre/EquipeController.java b/src/main/java/io/gmss/fiscad/controllers/rfu/parametre/EquipeController.java index 1acefb1..6369560 100644 --- a/src/main/java/io/gmss/fiscad/controllers/rfu/parametre/EquipeController.java +++ b/src/main/java/io/gmss/fiscad/controllers/rfu/parametre/EquipeController.java @@ -4,6 +4,7 @@ import io.gmss.fiscad.entities.rfu.parametre.Equipe; import io.gmss.fiscad.exceptions.*; import io.gmss.fiscad.interfaces.rfu.parametre.EquipeService; import io.gmss.fiscad.paylaods.ApiResponse; +import io.gmss.fiscad.paylaods.request.crudweb.EquipePayloadWeb; import io.gmss.fiscad.paylaods.request.synchronisation.EquipePayload; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; @@ -36,12 +37,12 @@ public class EquipeController { @PostMapping("/create") - @PreAuthorize("hasAuthority('CREATE_EQUIPE')") - public ResponseEntity createEquipe(@RequestBody @Valid @Validated EquipePayload equipePayload) { + // @PreAuthorize("hasAuthority('CREATE_EQUIPE')") + public ResponseEntity createEquipe(@RequestBody @Valid @Validated EquipePayloadWeb equipePayloadWeb) { try { - Equipe equipe = equipeService.createEquipe(equipePayload); + equipePayloadWeb = equipeService.create(equipePayloadWeb); return new ResponseEntity<>( - new ApiResponse<>(true, equipe, "Equipe créé avec succès."), + new ApiResponse<>(true, equipePayloadWeb, "Equipe créé avec succès."), HttpStatus.OK ); } catch (HttpClientErrorException.MethodNotAllowed e) { @@ -55,17 +56,18 @@ public class EquipeController { logger.error(e.getLocalizedMessage()); return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK); } catch (Exception e) { + e.printStackTrace(); 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}") - @PreAuthorize("hasAuthority('UPDATE_EQUIPE')") - public ResponseEntity updateEquipe(@PathVariable Long id, @RequestBody EquipePayload equipePayload) { + // @PreAuthorize("hasAuthority('UPDATE_EQUIPE')") + public ResponseEntity updateEquipe(@PathVariable Long id, @RequestBody EquipePayloadWeb equipePayloadWeb) { try { return new ResponseEntity<>( - new ApiResponse<>(true, equipeService.updateEquipe(id, equipePayload), "Equipe mis à jour avec succès."), + new ApiResponse<>(true, equipeService.update(id, equipePayloadWeb), "Equipe mis à jour avec succès."), HttpStatus.OK ); } catch (HttpClientErrorException.MethodNotAllowed e) { @@ -88,7 +90,7 @@ public class EquipeController { @PreAuthorize("hasAuthority('DELETE_EQUIPE')") public ResponseEntity deleteEquiper(@PathVariable Long id) { try { - equipeService.deleteEquipe(id); + equipeService.delete(id); return new ResponseEntity<>( new ApiResponse<>(true, "Equipe supprimée avec succès."), HttpStatus.OK @@ -104,17 +106,18 @@ public class EquipeController { 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") - @PreAuthorize("hasAuthority('READ_EQUIPE')") + //@PreAuthorize("hasAuthority('READ_EQUIPE')") public ResponseEntity getAllEquipeList() { try { return new ResponseEntity<>( - new ApiResponse<>(true, equipeService.getEquipeList(), "Liste des equipes chargée avec succès."), + new ApiResponse<>(true, equipeService.findAll(), "Liste des equipes chargée avec succès."), HttpStatus.OK ); } catch (HttpClientErrorException.MethodNotAllowed e) { @@ -140,7 +143,7 @@ public class EquipeController { Pageable pageable = PageRequest.of(pageNo, pageSize); return new ResponseEntity<>( - new ApiResponse<>(true, equipeService.getEquipeList(pageable), "Liste des equipes chargée avec succès."), + new ApiResponse<>(true, equipeService.findAll(pageable), "Liste des equipes chargée avec succès."), HttpStatus.OK ); } catch (HttpClientErrorException.MethodNotAllowed e) { @@ -164,7 +167,81 @@ public class EquipeController { public ResponseEntity getEquipeById(@PathVariable Long id) { try { return new ResponseEntity<>( - new ApiResponse<>(true, equipeService.getEquipeById(id), "Equipe trouvée avec succès."), + new ApiResponse<>(true, equipeService.findById(id), "Equipe 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("/by-compagne-id/{campagneId}") + @PreAuthorize("hasAuthority('READ_EQUIPE')") + public ResponseEntity getEquipeByCompagneId(@PathVariable Long campagneId) { + try { + return new ResponseEntity<>( + new ApiResponse<>(true, equipeService.findByCampagneId(campagneId), "Equipe 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("/by-secteur-id/{secteurId}") + @PreAuthorize("hasAuthority('READ_EQUIPE')") + public ResponseEntity getEquipeBySecteurId(@PathVariable Long secteurId) { + try { + return new ResponseEntity<>( + new ApiResponse<>(true, equipeService.findBySecteurId(secteurId), "Equipe 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("/by-quartier-id/{quartierId}") + @PreAuthorize("hasAuthority('READ_EQUIPE')") + public ResponseEntity getEquipeByQuartierId(@PathVariable Long quartierId) { + try { + return new ResponseEntity<>( + new ApiResponse<>(true, equipeService.findByQuartierId(quartierId), "Equipe trouvée avec succès."), HttpStatus.OK ); } catch (HttpClientErrorException.MethodNotAllowed e) { diff --git a/src/main/java/io/gmss/fiscad/entities/rfu/metier/ImpositionsTfu.java b/src/main/java/io/gmss/fiscad/entities/rfu/metier/ImpositionsTfu.java index bca29be..1ecd4ac 100644 --- a/src/main/java/io/gmss/fiscad/entities/rfu/metier/ImpositionsTfu.java +++ b/src/main/java/io/gmss/fiscad/entities/rfu/metier/ImpositionsTfu.java @@ -8,7 +8,6 @@ import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.decoupage.Commune; import io.gmss.fiscad.entities.infocad.parametre.Structure; import io.gmss.fiscad.entities.rfu.parametre.Exercice; -import io.gmss.fiscad.entities.rfu.parametre.Participer; import io.gmss.fiscad.enums.StatusAvis; import jakarta.persistence.*; import lombok.AllArgsConstructor; @@ -16,8 +15,6 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import org.hibernate.annotations.Formula; -import org.hibernate.annotations.SQLDelete; -import org.hibernate.annotations.Where; import java.io.Serializable; import java.time.LocalDate; diff --git a/src/main/java/io/gmss/fiscad/entities/rfu/parametre/Participer.java b/src/main/java/io/gmss/fiscad/entities/rfu/metier/Participer.java similarity index 92% rename from src/main/java/io/gmss/fiscad/entities/rfu/parametre/Participer.java rename to src/main/java/io/gmss/fiscad/entities/rfu/metier/Participer.java index 41abab6..d121a29 100644 --- a/src/main/java/io/gmss/fiscad/entities/rfu/parametre/Participer.java +++ b/src/main/java/io/gmss/fiscad/entities/rfu/metier/Participer.java @@ -1,10 +1,11 @@ -package io.gmss.fiscad.entities.rfu.parametre; +package io.gmss.fiscad.entities.rfu.metier; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.gmss.fiscad.deserializer.LocalDateDeserializer; import io.gmss.fiscad.entities.BaseEntity; +import io.gmss.fiscad.entities.rfu.parametre.Equipe; import io.gmss.fiscad.entities.user.User; import jakarta.persistence.*; import lombok.AllArgsConstructor; diff --git a/src/main/java/io/gmss/fiscad/entities/rfu/parametre/Equipe.java b/src/main/java/io/gmss/fiscad/entities/rfu/parametre/Equipe.java index 3c36109..5ac0f01 100644 --- a/src/main/java/io/gmss/fiscad/entities/rfu/parametre/Equipe.java +++ b/src/main/java/io/gmss/fiscad/entities/rfu/parametre/Equipe.java @@ -1,10 +1,13 @@ package io.gmss.fiscad.entities.rfu.parametre; -import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonFormat; +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.Quartier; import io.gmss.fiscad.entities.decoupage.Secteur; -import io.gmss.fiscad.entities.infocad.metier.Enquete; import io.gmss.fiscad.entities.infocad.parametre.Bloc; +import io.gmss.fiscad.entities.rfu.metier.Participer; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Data; @@ -13,6 +16,7 @@ import lombok.NoArgsConstructor; import org.hibernate.annotations.Where; import java.io.Serializable; +import java.time.LocalDate; import java.util.List; @EqualsAndHashCode(callSuper = true) @@ -32,6 +36,10 @@ public class Equipe extends BaseEntity implements Serializable { private Bloc bloc; @ManyToOne private Secteur secteur; + + @ManyToOne + private Quartier quartier; + @ManyToOne private Campagne campagne; @@ -39,6 +47,14 @@ public class Equipe extends BaseEntity implements Serializable { @JoinColumn(name = "equipe_id") private List participers; + @JsonFormat(pattern = "yyyy-MM-dd") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateDebut; + + @JsonFormat(pattern = "yyyy-MM-dd") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateFin; + // @JsonIgnore // @OneToMany(mappedBy = "equipe") // private List enquetes; diff --git a/src/main/java/io/gmss/fiscad/entities/user/User.java b/src/main/java/io/gmss/fiscad/entities/user/User.java index 72520c6..e1dae34 100755 --- a/src/main/java/io/gmss/fiscad/entities/user/User.java +++ b/src/main/java/io/gmss/fiscad/entities/user/User.java @@ -1,15 +1,9 @@ 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.infocad.metier.Enquete; import io.gmss.fiscad.entities.infocad.parametre.Structure; -import io.gmss.fiscad.entities.rfu.parametre.Participer; -import io.gmss.fiscad.enums.UserRole; +import io.gmss.fiscad.entities.rfu.metier.Participer; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Getter; @@ -19,7 +13,6 @@ import org.hibernate.annotations.SQLDelete; import org.hibernate.annotations.Where; import java.io.Serializable; -import java.time.LocalDate; import java.time.LocalDateTime; import java.util.HashSet; import java.util.List; diff --git a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/ParticiperServiceImpl.java b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/ParticiperServiceImpl.java new file mode 100644 index 0000000..05ee022 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/ParticiperServiceImpl.java @@ -0,0 +1,125 @@ +package io.gmss.fiscad.implementations.rfu.metier; + +import io.gmss.fiscad.entities.infocad.metier.Parcelle; +import io.gmss.fiscad.entities.rfu.metier.Participer; +import io.gmss.fiscad.exceptions.BadRequestException; +import io.gmss.fiscad.exceptions.NotFoundException; +import io.gmss.fiscad.interfaces.rfu.metier.ParticiperService; +import io.gmss.fiscad.paylaods.request.crudweb.ParticiperPayloadWeb; +import io.gmss.fiscad.persistence.repositories.infocad.metier.ParcelleRepository; +import io.gmss.fiscad.persistence.repositories.rfu.metier.ParticiperRepository; +import io.gmss.fiscad.persistence.repositories.rfu.parametre.EquipeRepository; +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.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@AllArgsConstructor +@Service +public class ParticiperServiceImpl implements ParticiperService { + + private final ParticiperRepository participerRepository; + private final EquipeRepository equipeRepository; + private final UserRepository userRepository; + private final EntityFromPayLoadService entityFromPayLoadService; + + + @Override + public ParticiperPayloadWeb createParticiper(ParticiperPayloadWeb participerPaylaodWeb) throws BadRequestException { + if (participerPaylaodWeb.getId() != null) { + throw new BadRequestException("Impossible de créer un nouveau participer ayant un id non null."); + } + if (participerPaylaodWeb.getEquipeId() == null) { + throw new BadRequestException("Impossible de créer un nouveau participer: L'équipe doit être précisée."); + }else { + if(!equipeRepository.existsById(participerPaylaodWeb.getEquipeId())) + throw new BadRequestException("Impossible de créer la participation: L'équipe doit être précisée."); + } + + if (participerPaylaodWeb.getUserId() == null) { + throw new BadRequestException("Impossible de créer la participation : Le participant doit être précisé."); + }else { + if(!userRepository.existsById(participerPaylaodWeb.getUserId())) + throw new BadRequestException("Impossible de créer un nouveau participer: Le participant doit être précisé."); + } + Participer participer= entityFromPayLoadService.getParticiperFromPayLoadWeb(participerPaylaodWeb); + participer= participerRepository.save(participer); + + return participerRepository.findPayloadById(participer.getId()).orElse(null); + } + + @Override + public ParticiperPayloadWeb updateParticiper(Long id,ParticiperPayloadWeb participerPaylaodWeb) throws NotFoundException { + if (participerPaylaodWeb.getId() == null) { + throw new BadRequestException("Participation non spécifiée"); + } + if (!participerRepository.existsById(participerPaylaodWeb.getId())) { + throw new NotFoundException("Impossible de trouver la participation."); + } + + if (participerPaylaodWeb.getEquipeId() == null) { + throw new BadRequestException("Impossible de créer un nouveau participer: L'équipe doit être précisée."); + }else { + if(!equipeRepository.existsById(participerPaylaodWeb.getEquipeId())) + throw new BadRequestException("Impossible de créer un nouveau participer: L'équipe doit être précisée."); + } + + if (participerPaylaodWeb.getUserId() == null) { + throw new BadRequestException("Impossible de créer un nouveau participer: Le participant doit être précisé."); + }else { + if(!userRepository.existsById(participerPaylaodWeb.getUserId())) + throw new BadRequestException("Impossible de créer un nouveau participer: Le participant doit être précisé."); + } + Participer participer= entityFromPayLoadService.getParticiperFromPayLoadWeb(participerPaylaodWeb); + participer= participerRepository.save(participer); + + return participerRepository.findPayloadById(participer.getId()).orElse(null); + } + + @Override + public void deleteParticiper(Long id) throws NotFoundException { + Optional participerOptional = participerRepository.findById(id); + if (participerOptional.isPresent()) { + participerRepository.deleteById(participerOptional.get().getId()); + } else { + throw new NotFoundException("Impossible de trouver le participer spécifié dans notre base de données."); + } + + } + + @Override + public Page getParticiperList(Pageable pageable) { + return participerRepository.findAllPayload(pageable); + } + + @Override + public List getParticiperList() { + return participerRepository.findAllPayload(); + } + + @Override + public Page getParticiperListByEquipePageable(Long equipeId, Pageable pageable) { + return participerRepository.findAllPayloadByEquipeId(equipeId,pageable); + } + + @Override + public List getParticiperListByEquipe(Long equipeId) { + return participerRepository.findAllPayloadByEquipeId(equipeId); + } + + + @Override + public Optional getParticiperById(Long id) { + if (participerRepository.existsById(id)) { + return participerRepository.findPayloadById(id); + } else { + throw new NotFoundException("Impossible de trouver la participation spécifiée dans la base de données."); + } + } + +} diff --git a/src/main/java/io/gmss/fiscad/implementations/rfu/parametre/EquipeServiceImpl.java b/src/main/java/io/gmss/fiscad/implementations/rfu/parametre/EquipeServiceImpl.java index 968435b..6bbfaeb 100644 --- a/src/main/java/io/gmss/fiscad/implementations/rfu/parametre/EquipeServiceImpl.java +++ b/src/main/java/io/gmss/fiscad/implementations/rfu/parametre/EquipeServiceImpl.java @@ -1,121 +1,131 @@ package io.gmss.fiscad.implementations.rfu.parametre; -import io.gmss.fiscad.entities.decoupage.Secteur; -import io.gmss.fiscad.entities.infocad.parametre.Bloc; -import io.gmss.fiscad.entities.rfu.parametre.Campagne; import io.gmss.fiscad.entities.rfu.parametre.Equipe; -import io.gmss.fiscad.entities.rfu.parametre.Participer; import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.NotFoundException; import io.gmss.fiscad.interfaces.rfu.parametre.EquipeService; -import io.gmss.fiscad.paylaods.request.synchronisation.EquipePayload; -import io.gmss.fiscad.paylaods.request.synchronisation.ParticiperPayload; -import io.gmss.fiscad.persistence.repositories.decoupage.SecteurRepository; -import io.gmss.fiscad.persistence.repositories.infocad.parametre.BlocRepository; -import io.gmss.fiscad.persistence.repositories.rfu.parametre.CampagneRepository; +import io.gmss.fiscad.paylaods.request.crudweb.EquipePayloadWeb; import io.gmss.fiscad.persistence.repositories.rfu.parametre.EquipeRepository; -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.Pageable; import org.springframework.stereotype.Service; -import java.util.ArrayList; import java.util.List; import java.util.Optional; +@AllArgsConstructor @Service public class EquipeServiceImpl implements EquipeService { - private final EquipeRepository equipeRepository; - private final UserRepository userRepository; - private final BlocRepository blocRepository; - private final SecteurRepository secteurRepository; - private final CampagneRepository campagneRepository; - - public EquipeServiceImpl(EquipeRepository equipeRepository, UserRepository userRepository, BlocRepository blocRepository, SecteurRepository secteurRepository, CampagneRepository campagneRepository) { - this.equipeRepository = equipeRepository; - this.userRepository = userRepository; - this.blocRepository = blocRepository; - this.secteurRepository = secteurRepository; - this.campagneRepository = campagneRepository; - } - - + private final EntityFromPayLoadService entityFromPayLoadService; + private final EquipeRepository equipeRepository; @Override - public Equipe createEquipe(EquipePayload equipePayload) throws BadRequestException { - if (equipePayload.getId() != null) { - throw new BadRequestException("Impossible de créer une nouvelle equipe ayant un id non null."); + public EquipePayloadWeb create(EquipePayloadWeb equipePayloadWeb) { + if (equipePayloadWeb.getId() != null) { + throw new BadRequestException("Impossible de créer une nouvelle caracteristique ayant un id non null."); } - Equipe equipe = getEquipeFromPayload(equipePayload); - return equipeRepository.save(equipe); - } - - private Equipe getEquipeFromPayload(EquipePayload equipePayload) { - Equipe equipe = new Equipe(); - Optional optionalBloc = blocRepository.findById(equipePayload.getBlocId()); - equipe.setBloc(optionalBloc.orElse(null)); - equipe.setId(equipePayload.getId()); - equipe.setCode(equipePayload.getCode()); - equipe.setNom(equipePayload.getNom()); - Optional optionalSecteur = secteurRepository.findById(equipePayload.getSecteurId()); - equipe.setSecteur(optionalSecteur.orElse(null)); - Optional optionalCampagne = campagneRepository.findById(equipePayload.getCampagneId()); - equipe.setCampagne(optionalCampagne.orElse(null)); - - List participerList = new ArrayList<>(); - - for (ParticiperPayload pp : equipePayload.getParticiperPayloads()) { - Participer part = new Participer(); - part.setId(pp.getId()); - if (pp.getEquipeId() != null && equipeRepository.existsById(equipe.getId())) { - part.setEquipe(equipeRepository.findById(equipe.getId()).orElse(null)); - } - if (pp.getUserId() != null && userRepository.existsById(pp.getUserId())) { - part.setUser(userRepository.findById(pp.getUserId()).orElse(null)); - } - part.setDateDebut(pp.getDateDebut()); - part.setDateFin(pp.getDateFin()); - participerList.add(part); - } - equipe.setParticipers(participerList); - - return equipe; + Equipe equipe = entityFromPayLoadService.getEquipeFromPayLoadWeb(equipePayloadWeb); + equipe = equipeRepository.save(equipe); + return equipeRepository.findPayloadById(equipe.getId()).orElse(null); } @Override - public Equipe updateEquipe(Long id, EquipePayload equipePayload) throws NotFoundException { - if (equipePayload.getId() == null) { - throw new BadRequestException("Impossible de mettre à jour une nouvelle equipe ayant un id null."); + public EquipePayloadWeb update(Long id, EquipePayloadWeb equipePayloadWeb) { + if (equipePayloadWeb.getId() == null) { + throw new BadRequestException("Impossible de faire la mise à jour: Equipe non fournie"); } - if (!equipeRepository.existsById(equipePayload.getId())) { - throw new NotFoundException("Impossible de trouver la equipe spécifiée dans notre base de données."); + Optional optionalEquipe=Optional.empty(); + if(!equipeRepository.existsById(equipePayloadWeb.getId())){ + throw new BadRequestException("Impossible de faire la mise à jour: Equipe non fournie"); } - Equipe equipe = getEquipeFromPayload(equipePayload); - return equipeRepository.save(equipe); + + Equipe equipe = entityFromPayLoadService.getEquipeFromPayLoadWeb(equipePayloadWeb); + equipe = equipeRepository.save(equipe); + return equipeRepository.findPayloadById(equipe.getId()).orElse(null); } @Override - public void deleteEquipe(Long id) throws NotFoundException { - Optional equipeOptional = equipeRepository.findById(id); - if (equipeOptional.isPresent()) { - equipeRepository.deleteById(equipeOptional.get().getId()); + public void delete(Long id) { + Optional optionalEquipe = equipeRepository.findById(id); + if (optionalEquipe.isPresent()) { + equipeRepository.deleteById(optionalEquipe.get().getId()); } else { - throw new NotFoundException("Impossible de trouver la equipe spécifiée dans notre base de données."); + throw new NotFoundException("Impossible de trouver l'équipe spécifiée."); } } @Override - public Page getEquipeList(Pageable pageable) { - return equipeRepository.findAll(pageable); + public EquipePayloadWeb findById(Long id) { + if (equipeRepository.existsById(id)) { + return equipeRepository.findPayloadById(id).orElse(null); + } else { + throw new NotFoundException("Impossible de trouver la caractéristique spécifiée dans la base de données."); + } } @Override - public List getEquipeList() { - return equipeRepository.findAll(); + public List findAll() { + return equipeRepository.findAllPayload(); } + @Override + public Page findAll(Pageable pageable) { + return equipeRepository.findAllPayload(pageable); + } @Override - public Optional getEquipeById(Long id) { - return equipeRepository.findById(id); + public List findByCampagneId(Long campagneId) { + return equipeRepository.findAllPayloadByCampagneId(campagneId); + } + + @Override + public Page findByCampagneId(Long campagneId, Pageable pageable) { + return equipeRepository.findAllPayloadByCampagneId(campagneId,pageable); + } + + @Override + public List findBySecteurId(Long secteurId) { + return equipeRepository.findAllPayloadBySecteurId(secteurId); + } + + @Override + public Page findBySecteurId(Long secteurId, Pageable pageable) { + return null; + } + + @Override + public List findByQuartierId(Long quartierId) { + return equipeRepository.findAllPayloadByQuartierId(quartierId); + } + + @Override + public Page findByQuartierId(Long quartierId, Pageable pageable) { + return null; + } + + @Override + public List findByBlocId(Long blocId) { + return null; + } + + @Override + public Page findByBlocId(Long blocId, Pageable pageable) { + return null; + } + + @Override + public boolean existsById(Long id) { + return false; + } + + @Override + public boolean existsByCode(String code) { + return false; + } + + @Override + public Optional findEntityById(Long id) { + return Optional.empty(); } } diff --git a/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/ParticiperService.java b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/ParticiperService.java new file mode 100755 index 0000000..c440e77 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/ParticiperService.java @@ -0,0 +1,30 @@ +package io.gmss.fiscad.interfaces.rfu.metier; + +import io.gmss.fiscad.exceptions.BadRequestException; +import io.gmss.fiscad.exceptions.NotFoundException; +import io.gmss.fiscad.paylaods.request.crudweb.ParticiperPayloadWeb; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface ParticiperService { + + ParticiperPayloadWeb createParticiper(ParticiperPayloadWeb participerPayloadWeb) throws BadRequestException; + + ParticiperPayloadWeb updateParticiper(Long id,ParticiperPayloadWeb participerPayloadWeb) throws NotFoundException; + + void deleteParticiper(Long id) throws NotFoundException; + + Page getParticiperList(Pageable pageable); + + List getParticiperList(); + + Page getParticiperListByEquipePageable(Long equipeId, Pageable pageable); + + List getParticiperListByEquipe(Long equipeId); + + Optional getParticiperById(Long id); + +} diff --git a/src/main/java/io/gmss/fiscad/interfaces/rfu/parametre/EquipeService.java b/src/main/java/io/gmss/fiscad/interfaces/rfu/parametre/EquipeService.java index 43b9d6e..aa2ae77 100644 --- a/src/main/java/io/gmss/fiscad/interfaces/rfu/parametre/EquipeService.java +++ b/src/main/java/io/gmss/fiscad/interfaces/rfu/parametre/EquipeService.java @@ -3,6 +3,7 @@ package io.gmss.fiscad.interfaces.rfu.parametre; import io.gmss.fiscad.entities.rfu.parametre.Equipe; import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.NotFoundException; +import io.gmss.fiscad.paylaods.request.crudweb.EquipePayloadWeb; import io.gmss.fiscad.paylaods.request.synchronisation.EquipePayload; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -12,16 +13,42 @@ import java.util.Optional; public interface EquipeService { - Equipe createEquipe(EquipePayload equipePayload) throws BadRequestException; + // CRUD + EquipePayloadWeb create(EquipePayloadWeb payload); - Equipe updateEquipe(Long id, EquipePayload equipePayload) throws NotFoundException; + EquipePayloadWeb update(Long id, EquipePayloadWeb payload); - void deleteEquipe(Long id) throws NotFoundException; + void delete(Long id); - Page getEquipeList(Pageable pageable); + // Recherche + EquipePayloadWeb findById(Long id); - List getEquipeList(); + List findAll(); - Optional getEquipeById(Long id); + Page findAll(Pageable pageable); + + // Filtres + List findByCampagneId(Long campagneId); + + Page findByCampagneId(Long campagneId, Pageable pageable); + + List findBySecteurId(Long secteurId); + + Page findBySecteurId(Long secteurId, Pageable pageable); + + List findByQuartierId(Long quartierId); + + Page findByQuartierId(Long quartierId, Pageable pageable); + + List findByBlocId(Long blocId); + + Page findByBlocId(Long blocId, Pageable pageable); + + // Vérifications + boolean existsById(Long id); + + boolean existsByCode(String code); + + Optional findEntityById(Long id); } diff --git a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/EquipePayloadWeb.java b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/EquipePayloadWeb.java new file mode 100644 index 0000000..4a065b7 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/EquipePayloadWeb.java @@ -0,0 +1,58 @@ +package io.gmss.fiscad.paylaods.request.crudweb; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import io.gmss.fiscad.deserializer.LocalDateDeserializer; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; + +@NoArgsConstructor +@Data +public class EquipePayloadWeb { + private Long id; + private String code; + private String nom; + + private Long blocId; + private String blocCode; + + private Long secteurId; + private String secteurCode; + private String secteurNom; + + private Long campagneId; + private String campagneNom; + + @JsonFormat(pattern = "yyyy-MM-dd") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateDebut; + + @JsonFormat(pattern = "yyyy-MM-dd") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateFin; + + private Long quartierId; + private String quartierCode; + private String quartierNom; + + + public EquipePayloadWeb(Long id, String code, String nom, Long blocId, String blocCode, Long secteurId, String secteurCode, String secteurNom, Long campagneId, String campagneNom, LocalDate dateDebut, LocalDate dateFin, Long quartierId, String quartierCode, String quartierNom) { + this.id = id; + this.code = code; + this.nom = nom; + this.blocId = blocId; + this.blocCode = blocCode; + this.secteurId = secteurId; + this.secteurCode = secteurCode; + this.secteurNom = secteurNom; + this.campagneId = campagneId; + this.campagneNom = campagneNom; + this.dateDebut = dateDebut; + this.dateFin = dateFin; + this.quartierId = quartierId; + this.quartierCode = quartierCode; + this.quartierNom = quartierNom; + } +} diff --git a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/ParticiperPayloadWeb.java b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/ParticiperPayloadWeb.java new file mode 100644 index 0000000..64d2d60 --- /dev/null +++ b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/ParticiperPayloadWeb.java @@ -0,0 +1,50 @@ +package io.gmss.fiscad.paylaods.request.crudweb; + +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.rfu.parametre.Equipe; +import io.gmss.fiscad.entities.user.User; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToOne; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; + +@NoArgsConstructor +@Data +public class ParticiperPayloadWeb { + private Long id; + + @JsonFormat(pattern = "yyyy-MM-dd") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateDebut; + + @JsonFormat(pattern = "yyyy-MM-dd") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateFin; + + private Long equipeId; + private String equipeCode; + private String equipeNom; + + private Long userId; + private String userNom; + private String userPrenom; + + public ParticiperPayloadWeb(Long id, LocalDate dateDebut, LocalDate dateFin, Long equipeId, String equipeCode, String equipeNom, Long userId, String userNom, String userPrenom) { + this.id = id; + this.dateDebut = dateDebut; + this.dateFin = dateFin; + this.equipeId = equipeId; + this.equipeCode = equipeCode; + this.equipeNom = equipeNom; + this.userId = userId; + this.userNom = userNom; + this.userPrenom = userPrenom; + } +} diff --git a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/ParticiperRepository.java b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/ParticiperRepository.java new file mode 100644 index 0000000..465939d --- /dev/null +++ b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/ParticiperRepository.java @@ -0,0 +1,174 @@ +package io.gmss.fiscad.persistence.repositories.rfu.metier; + +import io.gmss.fiscad.entities.rfu.metier.Participer; +import io.gmss.fiscad.paylaods.request.crudweb.ParticiperPayloadWeb; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; +import java.util.Optional; + +public interface ParticiperRepository extends JpaRepository { + @Query(""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.ParticiperPayloadWeb( + p.id, + p.dateDebut, + p.dateFin, + e.id, + e.code, + e.nom, + u.id, + u.nom, + u.prenom + ) + FROM Participer p + LEFT JOIN p.equipe e + LEFT JOIN p.user u + WHERE p.id = :id + """) + Optional findPayloadById(@Param("id") Long id); + + + @Query(""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.ParticiperPayloadWeb( + p.id, + p.dateDebut, + p.dateFin, + e.id, + e.code, + e.nom, + u.id, + u.nom, + u.prenom + ) + FROM Participer p + LEFT JOIN p.equipe e + LEFT JOIN p.user u + ORDER BY e.nom, u.nom, u.prenom + """) + List findAllPayload(); + + + @Query(value = """ + SELECT new io.gmss.fiscad.paylaods.request.crudweb.ParticiperPayloadWeb( + p.id, + p.dateDebut, + p.dateFin, + e.id, + e.code, + e.nom, + u.id, + u.nom, + u.prenom + ) + FROM Participer p + LEFT JOIN p.equipe e + LEFT JOIN p.user u + """, + countQuery = """ + SELECT COUNT(p) + FROM Participer p + """) + Page findAllPayload(Pageable pageable); + + + + @Query(value = """ + SELECT new io.gmss.fiscad.paylaods.request.crudweb.ParticiperPayloadWeb( + p.id, + p.dateDebut, + p.dateFin, + e.id, + e.code, + e.nom, + u.id, + u.nom, + u.prenom + ) + FROM Participer p + LEFT JOIN p.equipe e + LEFT JOIN p.user u + WHERE e.id = :equipeId + """, + countQuery = """ + SELECT COUNT(p) + FROM Participer p + WHERE p.equipe.id = :equipeId + """) + Page findAllPayloadByEquipeId( + @Param("equipeId") Long equipeId, + Pageable pageable); + + + + @Query(value = """ + SELECT new io.gmss.fiscad.paylaods.request.crudweb.ParticiperPayloadWeb( + p.id, + p.dateDebut, + p.dateFin, + e.id, + e.code, + e.nom, + u.id, + u.nom, + u.prenom + ) + FROM Participer p + LEFT JOIN p.equipe e + LEFT JOIN p.user u + WHERE u.id = :userId + """, + countQuery = """ + SELECT COUNT(p) + FROM Participer p + WHERE p.user.id = :userId + """) + Page findAllPayloadByUserId( + @Param("userId") Long userId, + Pageable pageable); + + @Query(""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.ParticiperPayloadWeb( + p.id, + p.dateDebut, + p.dateFin, + e.id, + e.code, + e.nom, + u.id, + u.nom, + u.prenom + ) + FROM Participer p + LEFT JOIN p.equipe e + LEFT JOIN p.user u + WHERE e.id = :equipeId + ORDER BY u.nom, u.prenom + """) + List findAllPayloadByEquipeId(@Param("equipeId") Long equipeId); + + + @Query(""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.ParticiperPayloadWeb( + p.id, + p.dateDebut, + p.dateFin, + e.id, + e.code, + e.nom, + u.id, + u.nom, + u.prenom + ) + FROM Participer p + LEFT JOIN p.equipe e + LEFT JOIN p.user u + WHERE u.id = :userId + ORDER BY e.nom + """) + List findAllPayloadByUserId(@Param("userId") Long userId); +} + diff --git a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/parametre/EquipeRepository.java b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/parametre/EquipeRepository.java index 826ec29..ccb4ffb 100644 --- a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/parametre/EquipeRepository.java +++ b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/parametre/EquipeRepository.java @@ -1,9 +1,292 @@ package io.gmss.fiscad.persistence.repositories.rfu.parametre; import io.gmss.fiscad.entities.rfu.parametre.Equipe; +import io.gmss.fiscad.paylaods.request.crudweb.EquipePayloadWeb; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.List; +import java.util.Optional; public interface EquipeRepository extends JpaRepository { + @Query(""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.EquipePayloadWeb( + e.id, + e.code, + e.nom, + b.id, + b.cote, + s.id, + s.code, + s.nom, + c.id, + c.nom, + e.dateDebut, + e.dateFin, + q.id, + q.code, + q.nom + ) + FROM Equipe e + LEFT JOIN e.bloc b + LEFT JOIN e.secteur s + LEFT JOIN e.campagne c + LEFT JOIN e.quartier q + WHERE e.id = :id + """) + Optional findPayloadById(@Param("id") Long id); + + @Query(""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.EquipePayloadWeb( + e.id, + e.code, + e.nom, + b.id, + b.cote, + s.id, + s.code, + s.nom, + c.id, + c.nom, + e.dateDebut, + e.dateFin, + q.id, + q.code, + q.nom + ) + FROM Equipe e + LEFT JOIN e.bloc b + LEFT JOIN e.secteur s + LEFT JOIN e.campagne c + LEFT JOIN e.quartier q + ORDER BY e.nom + """) + List findAllPayload(); + + + @Query(value = """ + SELECT new io.gmss.fiscad.paylaods.request.crudweb.EquipePayloadWeb( + e.id, + e.code, + e.nom, + b.id, + b.cote, + s.id, + s.code, + s.nom, + c.id, + c.nom, + e.dateDebut, + e.dateFin, + q.id, + q.code, + q.nom + ) + FROM Equipe e + LEFT JOIN e.bloc b + LEFT JOIN e.secteur s + LEFT JOIN e.campagne c + LEFT JOIN e.quartier q + """, + countQuery = """ + SELECT COUNT(e) + FROM Equipe e + """) + Page findAllPayload(Pageable pageable); + + + @Query(""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.EquipePayloadWeb( + e.id, + e.code, + e.nom, + b.id, + b.cote, + s.id, + s.code, + s.nom, + c.id, + c.nom, + e.dateDebut, + e.dateFin, + q.id, + q.code, + q.nom + ) + FROM Equipe e + LEFT JOIN e.bloc b + LEFT JOIN e.secteur s + LEFT JOIN e.campagne c + LEFT JOIN e.quartier q + WHERE c.id = :campagneId + ORDER BY e.nom + """) + List findAllPayloadByCampagneId(@Param("campagneId") Long campagneId); + + + @Query(value =""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.EquipePayloadWeb( + e.id, + e.code, + e.nom, + b.id, + b.cote, + s.id, + s.code, + s.nom, + c.id, + c.nom, + e.dateDebut, + e.dateFin, + q.id, + q.code, + q.nom + ) + FROM Equipe e + LEFT JOIN e.bloc b + LEFT JOIN e.secteur s + LEFT JOIN e.campagne c + LEFT JOIN e.quartier q + WHERE c.id = :campagneId + ORDER BY e.nom + """, + countQuery = """ + SELECT COUNT(e) + FROM Equipe e + where e.campagne.id= :campagneId + """) + Page findAllPayloadByCampagneId(@Param("campagneId") Long campagneId,Pageable pageable); + + + @Query(""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.EquipePayloadWeb( + e.id, + e.code, + e.nom, + b.id, + b.cote, + s.id, + s.code, + s.nom, + c.id, + c.nom, + e.dateDebut, + e.dateFin, + q.id, + q.code, + q.nom + ) + FROM Equipe e + LEFT JOIN e.bloc b + LEFT JOIN e.secteur s + LEFT JOIN e.campagne c + LEFT JOIN e.quartier q + WHERE s.id = :secteurId + ORDER BY e.nom + """) + List findAllPayloadBySecteurId(@Param("secteurId") Long secteurId); + + + @Query(""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.EquipePayloadWeb( + e.id, + e.code, + e.nom, + b.id, + b.cote, + s.id, + s.code, + s.nom, + c.id, + c.nom, + e.dateDebut, + e.dateFin, + q.id, + q.code, + q.nom + ) + FROM Equipe e + LEFT JOIN e.bloc b + LEFT JOIN e.secteur s + LEFT JOIN e.campagne c + LEFT JOIN e.quartier q + WHERE e.quartier.id = :quartierId + ORDER BY e.nom + """) + List findAllPayloadByQuartierId(@Param("quartierId") Long quartierId); + + + @Query(value = """ + SELECT new io.gmss.fiscad.paylaods.request.crudweb.EquipePayloadWeb( + e.id, + e.code, + e.nom, + b.id, + b.cote, + s.id, + s.code, + s.nom, + c.id, + c.nom, + e.dateDebut, + e.dateFin, + q.id, + q.code, + q.nom + ) + FROM Equipe e + LEFT JOIN e.bloc b + LEFT JOIN e.secteur s + LEFT JOIN e.campagne c + LEFT JOIN e.quartier q + WHERE e.quartier.id = :quartierId + """, + countQuery = """ + SELECT COUNT(e) + FROM Equipe e + WHERE e.quartier.id = :quartierId + """) + Page findAllPayloadByQuartierId( + @Param("quartierId") Long quartierId, + Pageable pageable); + + + @Query(value = """ + SELECT new io.gmss.fiscad.paylaods.request.crudweb.EquipePayloadWeb( + e.id, + e.code, + e.nom, + b.id, + b.cote, + s.id, + s.code, + s.nom, + c.id, + c.nom, + e.dateDebut, + e.dateFin, + q.id, + q.code, + q.nom + ) + FROM Equipe e + LEFT JOIN e.bloc b + LEFT JOIN e.secteur s + LEFT JOIN e.campagne c + LEFT JOIN e.quartier q + WHERE e.secteur.id = :secteurId + """, + countQuery = """ + SELECT COUNT(e) + FROM Equipe e + WHERE e.secteur.id = :secteurId + """) + Page findAllPayloadBySecteurId( + @Param("secteurId") Long secteurId, + Pageable pageable); } diff --git a/src/main/java/io/gmss/fiscad/service/EntityFromPayLoadService.java b/src/main/java/io/gmss/fiscad/service/EntityFromPayLoadService.java index ab301b3..9fb801f 100644 --- a/src/main/java/io/gmss/fiscad/service/EntityFromPayLoadService.java +++ b/src/main/java/io/gmss/fiscad/service/EntityFromPayLoadService.java @@ -38,6 +38,9 @@ public class EntityFromPayLoadService { private final TypePieceRepository typePieceRepository; private final PieceRepository pieceRepository; private final CaracteristiqueRepository caracteristiqueRepository; + private final EquipeRepository equipeRepository; + private final BlocRepository blocRepository; + private final CampagneRepository campagneRepository; private final ModeAcquisitionRepository modeAcquisitionRepository; private final PersonneRepository personneRepository; private final SourceDroitRepository sourceDroitRepository; @@ -78,6 +81,7 @@ public class EntityFromPayLoadService { private final CommuneCentreAssignationRepository communeCentreAssignationRepository ; private final ModuleRepository moduleRepository ; private final FonctionnaliteRepository fonctionnaliteRepository ; + private final ParticiperRepository participerRepository ; private final ProfileModuleFonctionnaliteRepository profileModuleFonctionnaliteRepository ; private final TypeCaracteristiqueRepository typeCaracteristiqueRepository ; @@ -139,6 +143,46 @@ public class EntityFromPayLoadService { } + public Equipe getEquipeFromPayLoadWeb(EquipePayloadWeb equipePayloadWeb){ + Equipe equipe=new Equipe(); + if(equipePayloadWeb.getId()!=null) + equipe = equipeRepository.findById(equipePayloadWeb.getId()).orElse(new Equipe()); + + Optional optionalCampagne=Optional.empty(); + Optional optionalSecteur=Optional.empty(); + Optional optionalQuartier=Optional.empty(); + Optional optionalBloc=Optional.empty(); + + if(equipePayloadWeb.getBlocId()!=null) + optionalBloc=blocRepository.findById(equipePayloadWeb.getBlocId()); + + + if(equipePayloadWeb.getCampagneId()!=null) + optionalCampagne=campagneRepository.findById(equipePayloadWeb.getCampagneId()); + if(equipePayloadWeb.getSecteurId()!=null) + optionalSecteur=secteurRepository.findById(equipePayloadWeb.getSecteurId()); + if(equipePayloadWeb.getQuartierId()!=null) + optionalQuartier=quartierRepository.findById(equipePayloadWeb.getQuartierId()); + + if(optionalBloc.isPresent()) + equipe.setBloc(optionalBloc.get()); + + if(optionalCampagne.isPresent()) + equipe.setCampagne(optionalCampagne.get()); + if(optionalSecteur.isPresent()) + equipe.setSecteur(optionalSecteur.get()); + if(optionalQuartier.isPresent()) + equipe.setQuartier(optionalQuartier.get()); + + equipe.setId(equipePayloadWeb.getId()); + equipe.setNom(equipePayloadWeb.getNom()); + equipe.setCode(equipePayloadWeb.getCode()); + equipe.setDateDebut(equipePayloadWeb.getDateDebut()); + equipe.setDateFin(equipePayloadWeb.getDateFin()); + return equipe; + } + + public ModeAcquisition getModeAcquisitionFromPayLoadWeb(ModeAcquisitionPayloadWeb modeAcquisitionPayloadWeb){ ModeAcquisition modeAcquisition=new ModeAcquisition(); if(modeAcquisitionPayloadWeb.getId()!=null) @@ -1162,4 +1206,29 @@ public class EntityFromPayLoadService { return profileModuleFonctionnalite ; } + + public Participer getParticiperFromPayLoadWeb(ParticiperPayloadWeb participerPayloadWeb) { + Participer participer =new Participer(); + if(participerPayloadWeb.getId()!=null) + participer = participerRepository.findById(participerPayloadWeb.getId()).orElse(new Participer()); + + if (participerPayloadWeb.getEquipeId() != null) { + Equipe equipe = new Equipe(); + equipe.setId(participerPayloadWeb.getEquipeId()); + participer.setEquipe(equipe); + } + + + if (participerPayloadWeb.getUserId() != null) { + User user = new User(); + user.setId(participerPayloadWeb.getUserId()); + participer.setUser(user); + } + + participer.setId(participerPayloadWeb.getId()); + participer.setDateDebut(participerPayloadWeb.getDateDebut()); + participer.setDateFin(participerPayloadWeb.getDateFin()); + return participer ; + + } }