diff --git a/src/main/java/io/gmss/infocad/controllers/infocad/metier/BlocController.java b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/BlocController.java similarity index 95% rename from src/main/java/io/gmss/infocad/controllers/infocad/metier/BlocController.java rename to src/main/java/io/gmss/infocad/controllers/infocad/parametre/BlocController.java index b665fc8..0f0147c 100644 --- a/src/main/java/io/gmss/infocad/controllers/infocad/metier/BlocController.java +++ b/src/main/java/io/gmss/infocad/controllers/infocad/parametre/BlocController.java @@ -1,8 +1,8 @@ -package io.gmss.infocad.controllers.infocad.metier; +package io.gmss.infocad.controllers.infocad.parametre; -import io.gmss.infocad.entities.infocad.metier.Bloc; -import io.gmss.infocad.interfaces.infocad.metier.BlocService; +import io.gmss.infocad.entities.infocad.parametre.Bloc; +import io.gmss.infocad.interfaces.infocad.parametre.BlocService; import io.gmss.infocad.paylaods.ApiResponse; import io.gmss.infocad.security.CurrentUser; import io.gmss.infocad.security.UserPrincipal; diff --git a/src/main/java/io/gmss/infocad/controllers/report/ReportingController.java b/src/main/java/io/gmss/infocad/controllers/report/ReportingController.java index d90ca7b..76ae612 100644 --- a/src/main/java/io/gmss/infocad/controllers/report/ReportingController.java +++ b/src/main/java/io/gmss/infocad/controllers/report/ReportingController.java @@ -7,7 +7,7 @@ package io.gmss.infocad.controllers.report; import io.gmss.infocad.enums.FormatRapport; import io.gmss.infocad.paylaods.request.FiltreEnquetePayLoad; -import io.gmss.infocad.repositories.infocad.metier.BlocRepository; +import io.gmss.infocad.repositories.infocad.parametre.BlocRepository; import io.gmss.infocad.repositories.infocad.parametre.StructureRepository; import io.gmss.infocad.service.ReportService; import io.swagger.annotations.Api; diff --git a/src/main/java/io/gmss/infocad/controllers/rfu/parametre/CampagneController.java b/src/main/java/io/gmss/infocad/controllers/rfu/parametre/CampagneController.java new file mode 100644 index 0000000..e5c87f6 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/rfu/parametre/CampagneController.java @@ -0,0 +1,116 @@ +package io.gmss.infocad.controllers.rfu.parametre; + +import io.gmss.infocad.entities.rfu.parametre.Campagne; +import io.gmss.infocad.enums.TypeCampagne; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.rfu.parametre.CampagneService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping("api/campagne") +public class CampagneController { + + private final CampagneService campagneService; + + public CampagneController(CampagneService campagneService) { + this.campagneService = campagneService; + } + + + @PostMapping("/create") + public ResponseEntity createCampagne(@RequestBody @Valid @Validated Campagne campagne) { + try{ + campagne = campagneService.createCampagne(campagne); + return new ResponseEntity<>( + new ApiResponse<>(true, campagne, "Campagne créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateCampagne(@PathVariable Long id, @RequestBody Campagne campagne) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, campagneService.updateCampagne(id, campagne), "Campagne mis à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteCampagner(@PathVariable Long id) { + try{ + campagneService.deleteCampagne(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Campagne supprimée avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllCampagneList() { + return new ResponseEntity<>( + new ApiResponse<>(true, campagneService.getCampagneList(), "Liste des campagnes chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllCampagnePaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, campagneService.getCampagneList(pageable), "Liste des campagnes chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getCampagneById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, campagneService.getCampagneById(id), "Campagne trouvée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/type-campagne/{typeCampagne}") + public ResponseEntity getCampagneByType(@PathVariable TypeCampagne typeCampagne) { + + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, campagneService.getCampagnesByType(typeCampagne), "Liste des campagne par type chargée avec succès."), + HttpStatus.OK + ); + }catch (NotFoundException e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } +} + diff --git a/src/main/java/io/gmss/infocad/controllers/rfu/parametre/EquipeController.java b/src/main/java/io/gmss/infocad/controllers/rfu/parametre/EquipeController.java new file mode 100644 index 0000000..2ed5188 --- /dev/null +++ b/src/main/java/io/gmss/infocad/controllers/rfu/parametre/EquipeController.java @@ -0,0 +1,99 @@ +package io.gmss.infocad.controllers.rfu.parametre; + +import io.gmss.infocad.entities.rfu.parametre.Equipe; +import io.gmss.infocad.interfaces.rfu.parametre.EquipeService; +import io.gmss.infocad.paylaods.ApiResponse; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@RestController +@RequestMapping("api/equipe") +public class EquipeController { + + private final EquipeService equipeService; + + public EquipeController(EquipeService equipeService) { + this.equipeService = equipeService; + } + + + @PostMapping("/create") + public ResponseEntity createEquipe(@RequestBody @Valid @Validated Equipe equipe) { + try{ + equipe = equipeService.createEquipe(equipe); + return new ResponseEntity<>( + new ApiResponse<>(true, equipe, "Equipe créé avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @PutMapping("/update/{id}") + public ResponseEntity updateEquipe(@PathVariable Long id, @RequestBody Equipe equipe) { + try{ + return new ResponseEntity<>( + new ApiResponse<>(true, equipeService.updateEquipe(id, equipe), "Equipe mis à jour avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteEquiper(@PathVariable Long id) { + try{ + equipeService.deleteEquipe(id); + return new ResponseEntity<>( + new ApiResponse<>(true,"Equipe supprimée avec succès."), + HttpStatus.OK + ); + }catch (Exception e){ + return new ResponseEntity<>( + new ApiResponse<>(false, e.getMessage()), + HttpStatus.OK + ); + } + } + + @GetMapping("/all") + public ResponseEntity getAllEquipeList() { + return new ResponseEntity<>( + new ApiResponse<>(true, equipeService.getEquipeList(), "Liste des equipes chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/all-paged") + public ResponseEntity getAllEquipePaged(@RequestParam int pageNo, @RequestParam int pageSize) { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, equipeService.getEquipeList(pageable), "Liste des equipes chargée avec succès."), + HttpStatus.OK + ); + } + + @GetMapping("/id/{id}") + public ResponseEntity getEquipeById(@PathVariable Long id) { + return new ResponseEntity<>( + new ApiResponse<>(true, equipeService.getEquipeById(id), "Equipe trouvée avec succès."), + HttpStatus.OK + ); + } + + +} diff --git a/src/main/java/io/gmss/infocad/entities/decoupage/Arrondissement.java b/src/main/java/io/gmss/infocad/entities/decoupage/Arrondissement.java index a116f9e..e70fa70 100644 --- a/src/main/java/io/gmss/infocad/entities/decoupage/Arrondissement.java +++ b/src/main/java/io/gmss/infocad/entities/decoupage/Arrondissement.java @@ -2,7 +2,7 @@ package io.gmss.infocad.entities.decoupage; import com.fasterxml.jackson.annotation.JsonIgnore; import io.gmss.infocad.entities.BaseEntity; -import io.gmss.infocad.entities.infocad.metier.Bloc; +import io.gmss.infocad.entities.infocad.parametre.Bloc; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/src/main/java/io/gmss/infocad/entities/infocad/metier/Enquete.java b/src/main/java/io/gmss/infocad/entities/infocad/metier/Enquete.java index ecbdbdb..ce50c45 100644 --- a/src/main/java/io/gmss/infocad/entities/infocad/metier/Enquete.java +++ b/src/main/java/io/gmss/infocad/entities/infocad/metier/Enquete.java @@ -6,10 +6,13 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.gmss.infocad.deserializer.LocalDateDeserializer; import io.gmss.infocad.entities.BaseEntity; import io.gmss.infocad.entities.decoupage.Arrondissement; +import io.gmss.infocad.entities.infocad.parametre.Bloc; import io.gmss.infocad.entities.infocad.parametre.NatureDomaine; import io.gmss.infocad.entities.rfu.metier.CaracteristiqueParcelle; import io.gmss.infocad.entities.rfu.metier.EnqueteBatiment; import io.gmss.infocad.entities.rfu.metier.EnqueteUniteLogement; +import io.gmss.infocad.entities.rfu.parametre.Campagne; +import io.gmss.infocad.entities.rfu.parametre.Equipe; import io.gmss.infocad.entities.user.User; import io.gmss.infocad.enums.StatusEnquete; import io.gmss.infocad.enums.StatutEnregistrement; @@ -58,7 +61,12 @@ public class Enquete extends BaseEntity implements Serializable { private Parcelle parcelle; @JsonIgnore @ManyToOne - private Bloc bloc; + private Bloc bloc; //représente un secteur d'enquetes + @ManyToOne + private Campagne campagne; + @ManyToOne + private Equipe equipe; + @Enumerated(EnumType.STRING) private StatusEnquete statusEnquete; diff --git a/src/main/java/io/gmss/infocad/entities/infocad/metier/Bloc.java b/src/main/java/io/gmss/infocad/entities/infocad/parametre/Bloc.java similarity index 84% rename from src/main/java/io/gmss/infocad/entities/infocad/metier/Bloc.java rename to src/main/java/io/gmss/infocad/entities/infocad/parametre/Bloc.java index a32281e..56aa602 100644 --- a/src/main/java/io/gmss/infocad/entities/infocad/metier/Bloc.java +++ b/src/main/java/io/gmss/infocad/entities/infocad/parametre/Bloc.java @@ -1,10 +1,11 @@ -package io.gmss.infocad.entities.infocad.metier; +package io.gmss.infocad.entities.infocad.parametre; import com.fasterxml.jackson.annotation.JsonIgnore; import io.gmss.infocad.entities.BaseEntity; import io.gmss.infocad.entities.decoupage.Arrondissement; import io.gmss.infocad.entities.decoupage.Quartier; -import io.gmss.infocad.entities.infocad.parametre.Structure; +import io.gmss.infocad.entities.infocad.metier.Enquete; +import io.gmss.infocad.entities.user.User; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -17,6 +18,9 @@ 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 @@ -53,6 +57,9 @@ public class Bloc extends BaseEntity implements Serializable { @JsonIgnore @OneToMany(mappedBy = "bloc") private List enquetes; + @ManyToOne + private User chefSecteur; + public String getNomArrondissement() { return arrondissement.getNom(); } diff --git a/src/main/java/io/gmss/infocad/entities/infocad/parametre/Structure.java b/src/main/java/io/gmss/infocad/entities/infocad/parametre/Structure.java index 6b7b8a8..5420f13 100644 --- a/src/main/java/io/gmss/infocad/entities/infocad/parametre/Structure.java +++ b/src/main/java/io/gmss/infocad/entities/infocad/parametre/Structure.java @@ -3,7 +3,6 @@ package io.gmss.infocad.entities.infocad.parametre; import com.fasterxml.jackson.annotation.JsonIgnore; import io.gmss.infocad.entities.BaseEntity; import io.gmss.infocad.entities.decoupage.Arrondissement; -import io.gmss.infocad.entities.infocad.metier.Bloc; import io.gmss.infocad.entities.user.User; import lombok.AllArgsConstructor; import lombok.Data; @@ -17,6 +16,10 @@ import java.io.Serializable; import java.util.List; import java.util.Set; + +/** + * représente un centre d'impôt dans le cadre d'une enquête fiscale + */ @EqualsAndHashCode(callSuper = true) @Entity @Data diff --git a/src/main/java/io/gmss/infocad/entities/rfu/parametre/Campagne.java b/src/main/java/io/gmss/infocad/entities/rfu/parametre/Campagne.java new file mode 100644 index 0000000..227f35e --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/rfu/parametre/Campagne.java @@ -0,0 +1,50 @@ +package io.gmss.infocad.entities.rfu.parametre; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import io.gmss.infocad.deserializer.LocalDateDeserializer; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.infocad.metier.Enquete; +import io.gmss.infocad.enums.TypeCampagne; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.time.LocalDate; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@Where(clause = " deleted = false") +public class Campagne extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String refAdministrative; + private String nom; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateDebut; + @JsonFormat(pattern = "dd-MM-yyyy") + @JsonDeserialize(using = LocalDateDeserializer.class) + private LocalDate dateFin; + @Enumerated(EnumType.STRING) + private TypeCampagne typeCampagne; + @JsonIgnore + @OneToMany(mappedBy = "campagne") + private List equipes; + @JsonIgnore + @OneToMany(mappedBy = "campagne") + private List enquetes; + +} + diff --git a/src/main/java/io/gmss/infocad/entities/rfu/parametre/Equipe.java b/src/main/java/io/gmss/infocad/entities/rfu/parametre/Equipe.java new file mode 100644 index 0000000..00c7568 --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/rfu/parametre/Equipe.java @@ -0,0 +1,41 @@ +package io.gmss.infocad.entities.rfu.parametre; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.infocad.metier.Enquete; +import io.gmss.infocad.entities.infocad.parametre.Bloc; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@Where(clause = " deleted = false") +public class Equipe extends BaseEntity implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String code; + private String nom; + @ManyToOne + private Bloc bloc; + @ManyToOne + private Campagne campagne; + @JsonIgnore + @OneToMany(mappedBy = "equipe") + private List participers; + + @JsonIgnore + @OneToMany(mappedBy = "equipe") + private List enquetes; +} diff --git a/src/main/java/io/gmss/infocad/entities/rfu/parametre/Participer.java b/src/main/java/io/gmss/infocad/entities/rfu/parametre/Participer.java new file mode 100644 index 0000000..b47d79e --- /dev/null +++ b/src/main/java/io/gmss/infocad/entities/rfu/parametre/Participer.java @@ -0,0 +1,38 @@ +package io.gmss.infocad.entities.rfu.parametre; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import io.gmss.infocad.deserializer.LocalDateDeserializer; +import io.gmss.infocad.entities.BaseEntity; +import io.gmss.infocad.entities.user.User; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Where; + +import javax.persistence.*; +import java.io.Serializable; +import java.time.LocalDate; + +@EqualsAndHashCode(callSuper = true) +@Entity +@Data +@NoArgsConstructor +@AllArgsConstructor +@Where(clause = " deleted = false") +public class Participer 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; + @ManyToOne + private Equipe equipe; + @ManyToOne + private User user; +} diff --git a/src/main/java/io/gmss/infocad/entities/user/User.java b/src/main/java/io/gmss/infocad/entities/user/User.java index 33ca3ee..d7e3aeb 100755 --- a/src/main/java/io/gmss/infocad/entities/user/User.java +++ b/src/main/java/io/gmss/infocad/entities/user/User.java @@ -3,7 +3,9 @@ package io.gmss.infocad.entities.user; import com.fasterxml.jackson.annotation.JsonIgnore; import io.gmss.infocad.entities.BaseEntity; import io.gmss.infocad.entities.infocad.metier.Enquete; +import io.gmss.infocad.entities.infocad.parametre.Bloc; import io.gmss.infocad.entities.infocad.parametre.Structure; +import io.gmss.infocad.entities.rfu.parametre.Participer; import io.gmss.infocad.enums.UserRole; import lombok.AllArgsConstructor; import lombok.Getter; @@ -55,6 +57,12 @@ public class User extends BaseEntity implements Serializable { @JsonIgnore @OneToMany(mappedBy = "user") private List enquetes; + @JsonIgnore + @OneToMany(mappedBy = "user") + private List participers; + @JsonIgnore + @OneToMany(mappedBy = "chefSecteur") + private List blocs ; public void setUsername(String username) { this.username = this.email; diff --git a/src/main/java/io/gmss/infocad/enums/TypeCampagne.java b/src/main/java/io/gmss/infocad/enums/TypeCampagne.java new file mode 100644 index 0000000..f2c3d72 --- /dev/null +++ b/src/main/java/io/gmss/infocad/enums/TypeCampagne.java @@ -0,0 +1,8 @@ +package io.gmss.infocad.enums; + +public enum TypeCampagne { + + ANNUELLE, + PERMANANTE +} + diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/metier/EnqueteServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/metier/EnqueteServiceImpl.java index b563266..4d40c1f 100644 --- a/src/main/java/io/gmss/infocad/implementations/infocad/metier/EnqueteServiceImpl.java +++ b/src/main/java/io/gmss/infocad/implementations/infocad/metier/EnqueteServiceImpl.java @@ -1,6 +1,10 @@ package io.gmss.infocad.implementations.infocad.metier; -import io.gmss.infocad.entities.infocad.metier.*; +import io.gmss.infocad.entities.infocad.metier.ActeurConcerne; +import io.gmss.infocad.entities.infocad.metier.Enquete; +import io.gmss.infocad.entities.infocad.metier.EnqueteFiltreResponse; +import io.gmss.infocad.entities.infocad.metier.Parcelle; +import io.gmss.infocad.entities.infocad.parametre.Bloc; import io.gmss.infocad.entities.user.User; import io.gmss.infocad.enums.StatusEnquete; import io.gmss.infocad.exceptions.BadRequestException; @@ -14,9 +18,9 @@ import io.gmss.infocad.paylaods.response.*; import io.gmss.infocad.repositories.decoupage.ArrondissementRepository; import io.gmss.infocad.repositories.decoupage.CommuneRepository; import io.gmss.infocad.repositories.infocad.metier.ActeurConcerneRepository; -import io.gmss.infocad.repositories.infocad.metier.BlocRepository; import io.gmss.infocad.repositories.infocad.metier.EnqueteRepository; import io.gmss.infocad.repositories.infocad.metier.ParcelleRepository; +import io.gmss.infocad.repositories.infocad.parametre.BlocRepository; import io.gmss.infocad.repositories.user.UserRepository; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/io/gmss/infocad/implementations/infocad/metier/BlocServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/BlocServiceImpl.java similarity index 95% rename from src/main/java/io/gmss/infocad/implementations/infocad/metier/BlocServiceImpl.java rename to src/main/java/io/gmss/infocad/implementations/infocad/parametre/BlocServiceImpl.java index 63fd646..bfd615a 100644 --- a/src/main/java/io/gmss/infocad/implementations/infocad/metier/BlocServiceImpl.java +++ b/src/main/java/io/gmss/infocad/implementations/infocad/parametre/BlocServiceImpl.java @@ -1,14 +1,14 @@ -package io.gmss.infocad.implementations.infocad.metier; +package io.gmss.infocad.implementations.infocad.parametre; import io.gmss.infocad.entities.decoupage.Arrondissement; -import io.gmss.infocad.entities.infocad.metier.Bloc; +import io.gmss.infocad.entities.infocad.parametre.Bloc; import io.gmss.infocad.entities.infocad.parametre.Structure; import io.gmss.infocad.exceptions.BadRequestException; import io.gmss.infocad.exceptions.NotFoundException; import io.gmss.infocad.interfaces.decoupage.ArrondissementService; -import io.gmss.infocad.interfaces.infocad.metier.BlocService; +import io.gmss.infocad.interfaces.infocad.parametre.BlocService; import io.gmss.infocad.interfaces.infocad.parametre.StructureService; -import io.gmss.infocad.repositories.infocad.metier.BlocRepository; +import io.gmss.infocad.repositories.infocad.parametre.BlocRepository; import io.gmss.infocad.service.StringService; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/io/gmss/infocad/implementations/rfu/parametre/CampagneServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/rfu/parametre/CampagneServiceImpl.java new file mode 100644 index 0000000..539386a --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/rfu/parametre/CampagneServiceImpl.java @@ -0,0 +1,72 @@ +package io.gmss.infocad.implementations.rfu.parametre; + +import io.gmss.infocad.entities.rfu.parametre.Campagne; +import io.gmss.infocad.enums.TypeCampagne; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.rfu.parametre.CampagneService; +import io.gmss.infocad.repositories.rfu.parametre.CampagneRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +@Service +public class CampagneServiceImpl implements CampagneService { + private final CampagneRepository campagneRepository; + + public CampagneServiceImpl(CampagneRepository campagneRepository) { + this.campagneRepository = campagneRepository; + } + + @Override + public Campagne createCampagne(Campagne campagne) throws BadRequestException { + if(campagne.getId() != null ){ + throw new BadRequestException("Impossible de créer une nouvelle campgne ayant un id non null."); + } + return campagneRepository.save(campagne); + } + + @Override + public Campagne updateCampagne(Long id, Campagne campagne) throws NotFoundException { + if(campagne.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour une nouvelle campagne ayant un id null."); + } + if(!campagneRepository.existsById(campagne.getId())){ + throw new NotFoundException("Impossible de trouver la campagne spécifiée dans notre base de données."); + } + return campagneRepository.save(campagne); + } + + @Override + public void deleteCampagne(Long id) throws NotFoundException { + Optional campagneOptional = campagneRepository.findById(id); + if(campagneOptional.isPresent()){ + campagneRepository.deleteById(campagneOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la campagne spécifiée dans notre base de données."); + } + } + + @Override + public Page getCampagneList(Pageable pageable) { + return campagneRepository.findAll(pageable); + } + + @Override + public List getCampagneList() { + return campagneRepository.findAll(); + } + + @Override + public List getCampagnesByType(TypeCampagne typeCampagne) { + return campagneRepository.findAllByTypeCampagne(typeCampagne); + } + + @Override + public Optional getCampagneById(Long id) { + return campagneRepository.findById(id); + } +} + diff --git a/src/main/java/io/gmss/infocad/implementations/rfu/parametre/EquipeServiceImpl.java b/src/main/java/io/gmss/infocad/implementations/rfu/parametre/EquipeServiceImpl.java new file mode 100644 index 0000000..cb3c978 --- /dev/null +++ b/src/main/java/io/gmss/infocad/implementations/rfu/parametre/EquipeServiceImpl.java @@ -0,0 +1,67 @@ +package io.gmss.infocad.implementations.rfu.parametre; + +import io.gmss.infocad.entities.rfu.parametre.Equipe; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import io.gmss.infocad.interfaces.rfu.parametre.EquipeService; +import io.gmss.infocad.repositories.rfu.parametre.EquipeRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class EquipeServiceImpl implements EquipeService { + private final EquipeRepository equipeRepository; + + public EquipeServiceImpl(EquipeRepository equipeRepository) { + this.equipeRepository = equipeRepository; + } + + @Override + public Equipe createEquipe(Equipe equipe) throws BadRequestException { + if(equipe.getId() != null ){ + throw new BadRequestException("Impossible de créer une nouvelle equipe ayant un id non null."); + } + return equipeRepository.save(equipe); + } + + @Override + public Equipe updateEquipe(Long id, Equipe equipe) throws NotFoundException { + if(equipe.getId() == null ){ + throw new BadRequestException("Impossible de mettre à jour une nouvelle equipe ayant un id null."); + } + if(!equipeRepository.existsById(equipe.getId())){ + throw new NotFoundException("Impossible de trouver la equipe spécifiée dans notre base de données."); + } + return equipeRepository.save(equipe); + } + + @Override + public void deleteEquipe(Long id) throws NotFoundException { + Optional equipeOptional = equipeRepository.findById(id); + if(equipeOptional.isPresent()){ + equipeRepository.deleteById(equipeOptional.get().getId()); + }else{ + throw new NotFoundException("Impossible de trouver la equipe spécifiée dans notre base de données."); + } + } + + @Override + public Page getEquipeList(Pageable pageable) { + return equipeRepository.findAll(pageable); + } + + @Override + public List getEquipeList() { + return equipeRepository.findAll(); + } + + + @Override + public Optional getEquipeById(Long id) { + return equipeRepository.findById(id); + } +} diff --git a/src/main/java/io/gmss/infocad/interfaces/infocad/metier/BlocService.java b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/BlocService.java similarity index 87% rename from src/main/java/io/gmss/infocad/interfaces/infocad/metier/BlocService.java rename to src/main/java/io/gmss/infocad/interfaces/infocad/parametre/BlocService.java index 851cd82..5e865ea 100755 --- a/src/main/java/io/gmss/infocad/interfaces/infocad/metier/BlocService.java +++ b/src/main/java/io/gmss/infocad/interfaces/infocad/parametre/BlocService.java @@ -1,6 +1,6 @@ -package io.gmss.infocad.interfaces.infocad.metier; +package io.gmss.infocad.interfaces.infocad.parametre; -import io.gmss.infocad.entities.infocad.metier.Bloc; +import io.gmss.infocad.entities.infocad.parametre.Bloc; import io.gmss.infocad.exceptions.BadRequestException; import io.gmss.infocad.exceptions.NotFoundException; import org.springframework.data.domain.Page; diff --git a/src/main/java/io/gmss/infocad/interfaces/rfu/parametre/CampagneService.java b/src/main/java/io/gmss/infocad/interfaces/rfu/parametre/CampagneService.java new file mode 100644 index 0000000..1e393b7 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/rfu/parametre/CampagneService.java @@ -0,0 +1,23 @@ +package io.gmss.infocad.interfaces.rfu.parametre; + +import io.gmss.infocad.entities.rfu.parametre.Campagne; +import io.gmss.infocad.enums.TypeCampagne; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface CampagneService { + + Campagne createCampagne(Campagne campagne) throws BadRequestException; + Campagne updateCampagne(Long id, Campagne campagne) throws NotFoundException; + void deleteCampagne(Long id) throws NotFoundException; + Page getCampagneList(Pageable pageable); + List getCampagneList(); + List getCampagnesByType(TypeCampagne typeCampagne); + Optional getCampagneById(Long id); +} + diff --git a/src/main/java/io/gmss/infocad/interfaces/rfu/parametre/EquipeService.java b/src/main/java/io/gmss/infocad/interfaces/rfu/parametre/EquipeService.java new file mode 100644 index 0000000..16a3093 --- /dev/null +++ b/src/main/java/io/gmss/infocad/interfaces/rfu/parametre/EquipeService.java @@ -0,0 +1,21 @@ +package io.gmss.infocad.interfaces.rfu.parametre; + +import io.gmss.infocad.entities.rfu.parametre.Equipe; +import io.gmss.infocad.exceptions.BadRequestException; +import io.gmss.infocad.exceptions.NotFoundException; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Optional; + +public interface EquipeService { + + Equipe createEquipe(Equipe campagne) throws BadRequestException; + Equipe updateEquipe(Long id, Equipe campagne) throws NotFoundException; + void deleteEquipe(Long id) throws NotFoundException; + Page getEquipeList(Pageable pageable); + List getEquipeList(); + Optional getEquipeById(Long id); +} + diff --git a/src/main/java/io/gmss/infocad/repositories/infocad/metier/BlocRepository.java b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/BlocRepository.java similarity index 97% rename from src/main/java/io/gmss/infocad/repositories/infocad/metier/BlocRepository.java rename to src/main/java/io/gmss/infocad/repositories/infocad/parametre/BlocRepository.java index 1cabdb2..27c6cea 100755 --- a/src/main/java/io/gmss/infocad/repositories/infocad/metier/BlocRepository.java +++ b/src/main/java/io/gmss/infocad/repositories/infocad/parametre/BlocRepository.java @@ -1,7 +1,7 @@ -package io.gmss.infocad.repositories.infocad.metier; +package io.gmss.infocad.repositories.infocad.parametre; import io.gmss.infocad.entities.decoupage.Arrondissement; -import io.gmss.infocad.entities.infocad.metier.Bloc; +import io.gmss.infocad.entities.infocad.parametre.Bloc; import io.gmss.infocad.paylaods.response.BlocEnqResponse; import io.gmss.infocad.paylaods.response.BlocSyncResponse; import io.gmss.infocad.paylaods.response.report.BlocsParStructureResponse; diff --git a/src/main/java/io/gmss/infocad/repositories/rfu/parametre/CampagneRepository.java b/src/main/java/io/gmss/infocad/repositories/rfu/parametre/CampagneRepository.java new file mode 100644 index 0000000..10a9dc8 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/rfu/parametre/CampagneRepository.java @@ -0,0 +1,12 @@ +package io.gmss.infocad.repositories.rfu.parametre; + +import io.gmss.infocad.entities.rfu.parametre.Campagne; +import io.gmss.infocad.enums.TypeCampagne; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface CampagneRepository extends JpaRepository { + List findAllByTypeCampagne(TypeCampagne typeCampagne); +} + diff --git a/src/main/java/io/gmss/infocad/repositories/rfu/parametre/EquipeRepository.java b/src/main/java/io/gmss/infocad/repositories/rfu/parametre/EquipeRepository.java new file mode 100644 index 0000000..54f2388 --- /dev/null +++ b/src/main/java/io/gmss/infocad/repositories/rfu/parametre/EquipeRepository.java @@ -0,0 +1,9 @@ +package io.gmss.infocad.repositories.rfu.parametre; + +import io.gmss.infocad.entities.rfu.parametre.Equipe; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface EquipeRepository extends JpaRepository { + +} + diff --git a/src/main/java/io/gmss/infocad/service/ReportService.java b/src/main/java/io/gmss/infocad/service/ReportService.java index 9723a07..3e11f69 100644 --- a/src/main/java/io/gmss/infocad/service/ReportService.java +++ b/src/main/java/io/gmss/infocad/service/ReportService.java @@ -2,8 +2,8 @@ package io.gmss.infocad.service; import io.gmss.infocad.entities.decoupage.Arrondissement; import io.gmss.infocad.entities.decoupage.Commune; -import io.gmss.infocad.entities.infocad.metier.Bloc; import io.gmss.infocad.entities.infocad.metier.EnqueteFiltreResponse; +import io.gmss.infocad.entities.infocad.parametre.Bloc; import io.gmss.infocad.entities.infocad.parametre.Structure; import io.gmss.infocad.enums.FormatRapport; import io.gmss.infocad.enums.RoleActeur; @@ -13,8 +13,8 @@ import io.gmss.infocad.paylaods.response.report.BlocsParStructureResponse; import io.gmss.infocad.paylaods.response.report.EnqueteParBlocResponse; import io.gmss.infocad.repositories.decoupage.ArrondissementRepository; import io.gmss.infocad.repositories.decoupage.CommuneRepository; -import io.gmss.infocad.repositories.infocad.metier.BlocRepository; import io.gmss.infocad.repositories.infocad.metier.EnqueteRepository; +import io.gmss.infocad.repositories.infocad.parametre.BlocRepository; import io.gmss.infocad.repositories.infocad.parametre.StructureRepository; import net.sf.jasperreports.engine.*; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;