From 774611f0b8af6f5475123170c73c08132370bc2a Mon Sep 17 00:00:00 2001 From: Aurince AKAKPO Date: Sun, 2 Aug 2026 18:57:14 +0100 Subject: [PATCH] reajustement workflow --- .../rfu/parametre/CampagneController.java | 57 +++++++++++++- .../entities/rfu/parametre/Campagne.java | 4 + .../rfu/parametre/CampagneServiceImpl.java | 13 ++++ .../rfu/parametre/CampagneService.java | 2 + .../request/crudweb/CampagnePayloadWeb.java | 9 ++- .../rfu/parametre/CampagneRepository.java | 77 +++++++++++++++++-- .../service/EntityFromPayLoadService.java | 6 ++ 7 files changed, 160 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/gmss/fiscad/controllers/rfu/parametre/CampagneController.java b/src/main/java/io/gmss/fiscad/controllers/rfu/parametre/CampagneController.java index 0e07476..de5f857 100644 --- a/src/main/java/io/gmss/fiscad/controllers/rfu/parametre/CampagneController.java +++ b/src/main/java/io/gmss/fiscad/controllers/rfu/parametre/CampagneController.java @@ -212,7 +212,7 @@ public class CampagneController { @GetMapping("/by-exercice-id/{exerciceId}") @PreAuthorize("hasAuthority('READ_CAMPAGNE')") - public ResponseEntity getCampagneByType(@PathVariable Long exerciceId) { + public ResponseEntity getCampagneByExercice(@PathVariable Long exerciceId) { try { return new ResponseEntity<>( @@ -238,7 +238,7 @@ public class CampagneController { @GetMapping("/page/by-exercice-id/{exerciceId}") @PreAuthorize("hasAuthority('READ_CAMPAGNE')") - public ResponseEntity getCampagneByType(@PathVariable Long exerciceId,@RequestParam int pageNo, @RequestParam int pageSize) { + public ResponseEntity getCampagneByExercice(@PathVariable Long exerciceId,@RequestParam int pageNo, @RequestParam int pageSize) { try { Pageable pageable = PageRequest.of(pageNo, pageSize); @@ -261,5 +261,58 @@ public class CampagneController { return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); } } + + + @GetMapping("/by-structure-id/{structureId}") + @PreAuthorize("hasAuthority('READ_CAMPAGNE')") + public ResponseEntity getCampagneByStructure(@PathVariable Long structureId) { + + try { + return new ResponseEntity<>( + new ApiResponse<>(true, campagneService.getCampagneByStructureId(structureId), "Liste des campagne par type 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-structure-id/{structureId}") + @PreAuthorize("hasAuthority('READ_CAMPAGNE')") + public ResponseEntity getCampagneByStructure(@PathVariable Long structureId,@RequestParam int pageNo, @RequestParam int pageSize) { + + try { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, campagneService.getCampagneByStructureId(structureId,pageable), "Liste des campagne par type chargée avec succès."), + HttpStatus.OK + ); + } catch (HttpClientErrorException.MethodNotAllowed e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK); + } catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException | + FileStorageException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK); + } catch (NullPointerException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK); + } catch (Exception e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); + } + } } diff --git a/src/main/java/io/gmss/fiscad/entities/rfu/parametre/Campagne.java b/src/main/java/io/gmss/fiscad/entities/rfu/parametre/Campagne.java index aaa3840..d5dcdc5 100644 --- a/src/main/java/io/gmss/fiscad/entities/rfu/parametre/Campagne.java +++ b/src/main/java/io/gmss/fiscad/entities/rfu/parametre/Campagne.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.gmss.fiscad.deserializer.LocalDateDeserializer; import io.gmss.fiscad.entities.BaseEntity; import io.gmss.fiscad.entities.infocad.metier.Enquete; +import io.gmss.fiscad.entities.infocad.parametre.Structure; import io.gmss.fiscad.enums.TypeCampagne; import jakarta.persistence.*; import lombok.AllArgsConstructor; @@ -42,6 +43,9 @@ public class Campagne extends BaseEntity implements Serializable { @ManyToOne private Exercice exercice ; + @ManyToOne + private Structure structure ; + } diff --git a/src/main/java/io/gmss/fiscad/implementations/rfu/parametre/CampagneServiceImpl.java b/src/main/java/io/gmss/fiscad/implementations/rfu/parametre/CampagneServiceImpl.java index 5781e8a..d06f984 100644 --- a/src/main/java/io/gmss/fiscad/implementations/rfu/parametre/CampagneServiceImpl.java +++ b/src/main/java/io/gmss/fiscad/implementations/rfu/parametre/CampagneServiceImpl.java @@ -30,6 +30,9 @@ public class CampagneServiceImpl implements CampagneService { if (campagnePayloadWeb.getId() != null) { throw new BadRequestException("Impossible de créer une nouvelle campgne ayant un id non null."); } + + + Campagne campagne= entityFromPayLoadService.getCampagneFromPayLoadWeb(campagnePayloadWeb); campagne= campagneRepository.save(campagne); @@ -88,5 +91,15 @@ public class CampagneServiceImpl implements CampagneService { public Page getCampagneByExerciceId(Long exerciceId, Pageable pageable) { return campagneRepository.findAllPayloadByExerciceId(exerciceId,pageable); } + + @Override + public List getCampagneByStructureId(Long structureId) { + return campagneRepository.findAllPayloadByStructureId(structureId); + } + + @Override + public Page getCampagneByStructureId(Long structureId, Pageable pageable) { + return campagneRepository.findAllPayloadByStructureId(structureId,pageable); + } } diff --git a/src/main/java/io/gmss/fiscad/interfaces/rfu/parametre/CampagneService.java b/src/main/java/io/gmss/fiscad/interfaces/rfu/parametre/CampagneService.java index c61e91a..6e103b2 100644 --- a/src/main/java/io/gmss/fiscad/interfaces/rfu/parametre/CampagneService.java +++ b/src/main/java/io/gmss/fiscad/interfaces/rfu/parametre/CampagneService.java @@ -28,6 +28,8 @@ public interface CampagneService { Optional getCampagneById(Long id); List getCampagneByExerciceId(Long exerciceId); Page getCampagneByExerciceId(Long exerciceId,Pageable pageable); + List getCampagneByStructureId(Long structureId); + Page getCampagneByStructureId(Long structureId, Pageable pageable); } diff --git a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/CampagnePayloadWeb.java b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/CampagnePayloadWeb.java index 9d11e2d..8229ee7 100644 --- a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/CampagnePayloadWeb.java +++ b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/CampagnePayloadWeb.java @@ -29,7 +29,11 @@ public class CampagnePayloadWeb { private Long exerciceId ; private Integer exerciceAnnee ; - public CampagnePayloadWeb(Long id, String refAdministrative, String nom, LocalDate dateDebut, LocalDate dateFin, TypeCampagne typeCampagne, Long exerciceId, Integer exerciceAnnee) { + private Long structureId ; + private String structureCode ; + private String structureNom ; + + public CampagnePayloadWeb(Long id, String refAdministrative, String nom, LocalDate dateDebut, LocalDate dateFin, TypeCampagne typeCampagne, Long exerciceId, Integer exerciceAnnee, Long structureId, String structureCode, String structureNom) { this.id = id; this.refAdministrative = refAdministrative; this.nom = nom; @@ -38,5 +42,8 @@ public class CampagnePayloadWeb { this.typeCampagne = typeCampagne; this.exerciceId = exerciceId; this.exerciceAnnee = exerciceAnnee; + this.structureId = structureId; + this.structureCode = structureCode; + this.structureNom = structureNom; } } diff --git a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/parametre/CampagneRepository.java b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/parametre/CampagneRepository.java index a34c038..39ccbd2 100644 --- a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/parametre/CampagneRepository.java +++ b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/parametre/CampagneRepository.java @@ -24,7 +24,10 @@ public interface CampagneRepository extends JpaRepository { c.dateFin, c.typeCampagne, e.id, - e.annee + e.annee, + c.structure.id, + c.structure.code, + c.structure.nom ) FROM Campagne c LEFT JOIN c.exercice e @@ -41,7 +44,10 @@ public interface CampagneRepository extends JpaRepository { c.dateFin, c.typeCampagne, e.id, - e.annee + e.annee, + c.structure.id, + c.structure.code, + c.structure.nom ) FROM Campagne c LEFT JOIN c.exercice e @@ -58,7 +64,10 @@ public interface CampagneRepository extends JpaRepository { c.dateFin, c.typeCampagne, e.id, - e.annee + e.annee, + c.structure.id, + c.structure.code, + c.structure.nom ) FROM Campagne c LEFT JOIN c.exercice e @@ -78,7 +87,10 @@ public interface CampagneRepository extends JpaRepository { c.dateFin, c.typeCampagne, e.id, - e.annee + e.annee, + c.structure.id, + c.structure.code, + c.structure.nom ) FROM Campagne c LEFT JOIN c.exercice e @@ -97,7 +109,10 @@ public interface CampagneRepository extends JpaRepository { c.dateFin, c.typeCampagne, e.id, - e.annee + e.annee, + c.structure.id, + c.structure.code, + c.structure.nom ) FROM Campagne c LEFT JOIN c.exercice e @@ -111,5 +126,57 @@ public interface CampagneRepository extends JpaRepository { Page findAllPayloadByExerciceId( @Param("exerciceId") Long exerciceId, Pageable pageable); + + + @Query(""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.CampagnePayloadWeb( + c.id, + c.refAdministrative, + c.nom, + c.dateDebut, + c.dateFin, + c.typeCampagne, + e.id, + e.annee, + c.structure.id, + c.structure.code, + c.structure.nom + ) + FROM Campagne c + LEFT JOIN c.exercice e + LEFT JOIN c.structure s + WHERE s.id = :structureId + ORDER BY c.dateDebut DESC + """) + List findAllPayloadByStructureId(@Param("structureId") Long structureId); + + + @Query(value = """ + SELECT new io.gmss.fiscad.paylaods.request.crudweb.CampagnePayloadWeb( + c.id, + c.refAdministrative, + c.nom, + c.dateDebut, + c.dateFin, + c.typeCampagne, + e.id, + e.annee, + c.structure.id, + c.structure.code, + c.structure.nom + ) + FROM Campagne c + LEFT JOIN c.exercice e + LEFT JOIN c.structure s + WHERE s.id = :structureId + """, + countQuery = """ + SELECT COUNT(c) + FROM Campagne c + WHERE c.structure.id = :structureId + """) + Page findAllPayloadByStructureId( + @Param("exerciceId") Long structureId, + 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 cf52784..cbb7517 100644 --- a/src/main/java/io/gmss/fiscad/service/EntityFromPayLoadService.java +++ b/src/main/java/io/gmss/fiscad/service/EntityFromPayLoadService.java @@ -1243,6 +1243,12 @@ public class EntityFromPayLoadService { campagne.setExercice(exercice); } + if (campagnePayloadWeb.getStructureId() != null) { + Structure structure = new Structure(); + structure.setId(campagnePayloadWeb.getStructureId()); + campagne.setStructure(structure); + } + campagne.setId(campagnePayloadWeb.getId()); campagne.setDateDebut(campagnePayloadWeb.getDateDebut()); campagne.setDateFin(campagnePayloadWeb.getDateFin()); -- 2.49.1