diff --git a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/DonneesImpositionTfuController.java b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/DonneesImpositionTfuController.java index 74a184d..114324d 100644 --- a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/DonneesImpositionTfuController.java +++ b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/DonneesImpositionTfuController.java @@ -7,6 +7,7 @@ import io.gmss.fiscad.enums.StatusAvis; import io.gmss.fiscad.exceptions.*; import io.gmss.fiscad.interfaces.rfu.metier.DonneesImpositionTfuService; import io.gmss.fiscad.paylaods.ApiResponse; +import io.gmss.fiscad.paylaods.request.crudweb.DonneesImpositionPaylaodWeb; import io.gmss.fiscad.paylaods.request.crudweb.ImpositionsTfuPaylaodWeb; import io.gmss.fiscad.persistence.repositories.rfu.metier.ImpositionsTfuRepository; import io.gmss.fiscad.security.CurrentUser; @@ -28,6 +29,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.HttpClientErrorException; +import java.util.List; import java.util.Optional; @@ -95,6 +97,83 @@ public class DonneesImpositionTfuController { } } + + + @PostMapping("/maj-non-homologable") + @PreAuthorize("hasAuthority('HOMOLOGUE_AVIS')") + public ResponseEntity majNonHomologableDonneesImpositionTfu(@RequestBody List donneesImpositionTfuWebs) { + try { + return new ResponseEntity<>( + new ApiResponse<>(true, donneesImpositionTfuService.setDonneesFiscalesNonHomologable(donneesImpositionTfuWebs), "DonneesImpositionTfu 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); + } + } + + + @PostMapping("/maj-homologable") + @PreAuthorize("hasAuthority('HOMOLOGUE_AVIS')") + public ResponseEntity majHomologableDonneesImpositionTfu(@RequestBody List donneesImpositionTfuWebs) { + try { + return new ResponseEntity<>( + new ApiResponse<>(true, donneesImpositionTfuService.setDonneesFiscalesHomologable(donneesImpositionTfuWebs), "DonneesImpositionTfu mise à jour avec succès."), + HttpStatus.OK + ); + } catch (HttpClientErrorException.MethodNotAllowed e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK); + } catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException | + FileStorageException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK); + } catch (NullPointerException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK); + } catch (Exception e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); + } + } + + + @GetMapping("/donnees-non-homologable/{idImpositionTfu}") + @PreAuthorize("hasAuthority('HOMOLOGUE_AVIS') or hasAuthority('READ_DONNEESIMPOSITIONTFU')") + public ResponseEntity getHomologableDonneesImpositionTfu(@PathVariable Long idImpositionTfu,@RequestParam int pageNo, @RequestParam int pageSize) { + try { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, donneesImpositionTfuService.getDonneesFiscalesNonHomologable(idImpositionTfu,pageable), "Donnees Imposition Tfu récupérées avec succès."), + HttpStatus.OK + ); + } catch (HttpClientErrorException.MethodNotAllowed e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK); + } catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException | + FileStorageException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK); + } catch (NullPointerException e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK); + } catch (Exception e) { + logger.error(e.getLocalizedMessage()); + return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); + } + } + @DeleteMapping("/delete/{id}") @PreAuthorize("hasAuthority('DELETE_DONNEESIMPOSITIONTFU')") public ResponseEntity deleteDonneesImpositionTfu(@PathVariable Long id) { @@ -120,54 +199,6 @@ public class DonneesImpositionTfuController { } } -// @GetMapping("/all") -// public ResponseEntity getAllDonneesImpositionTfuList() { -// try { -// return new ResponseEntity<>( -// new ApiResponse<>(true, donneesImpositionTfuService.getDonneesImpositionTfuList(), "Liste des impositions chargée avec succès."), -// HttpStatus.OK -// ); -// } catch (HttpClientErrorException.MethodNotAllowed e) { -// logger.error(e.getLocalizedMessage()); -// return new ResponseEntity<>(new ApiResponse(false, null, "Method POST/GET is required."), HttpStatus.OK); -// } catch (NotFoundException | BadRequestException | MyFileNotFoundException | ResourceNotFoundException | -// FileStorageException e) { -// logger.error(e.getLocalizedMessage()); -// return new ResponseEntity<>(new ApiResponse(false, null, e.getMessage()), HttpStatus.OK); -// } catch (NullPointerException e) { -// logger.error(e.getLocalizedMessage()); -// return new ResponseEntity<>(new ApiResponse(false, null, "Null value has been detected {" + e.getMessage() + "}."), HttpStatus.OK); -// } catch (Exception e) { -// logger.error(e.getLocalizedMessage()); -// return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); -// } -// } - -// @GetMapping("/all-paged") -// public ResponseEntity getAllDonneesImpositionTfuPaged(@RequestParam int pageNo, @RequestParam int pageSize) { -// try { -// Pageable pageable = PageRequest.of(pageNo, pageSize); -// return new ResponseEntity<>( -// new ApiResponse<>(true, donneesImpositionTfuService.getDonneesImpositionTfuList(pageable), "Liste des impositions 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-page/by-imposition-id/{impositionId}") @PreAuthorize("hasAuthority('READ_DONNEESIMPOSITIONTFU')") public ResponseEntity getAllDonneesImpositionTfuByImpositionIdPaged(@PathVariable Long impositionId, @RequestParam int pageNo, @RequestParam int pageSize) { @@ -359,14 +390,6 @@ public class DonneesImpositionTfuController { HttpStatus.OK ); } - -// if(!optionalImpositionsTfu.get().getStatusAvis().equals(StatusAvis.TFU_FNB_GENERE)){ -// return new ResponseEntity<>( -// new ApiResponse<>(false, null, "l'état actuel : "+optionalImpositionsTfu.get().getStatusAvis()+" ne permet pas cette opération."), -// HttpStatus.OK -// ); -// } - if(userPrincipal==null){ return new ResponseEntity<>( new ApiResponse<>(false, null, "Vous n'êtes pas autorisé à accéder à cette ressource"), diff --git a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/ImpositionsTfuController.java b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/ImpositionsTfuController.java index 5fea2b9..8589574 100644 --- a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/ImpositionsTfuController.java +++ b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/ImpositionsTfuController.java @@ -177,12 +177,12 @@ public class ImpositionsTfuController { } } - @PutMapping("/homologue") + @PutMapping("/homologuer") @PreAuthorize("hasAuthority('HOMOLOGUE_AVIS')") public ResponseEntity HomologueImpositionsTfu(@RequestBody ImpositionsTfuPaylaodWeb impositionsTfuPaylaodWeb) { try { return new ResponseEntity<>( - new ApiResponse<>(true, impositionsTfuService.autoriserGenerationImpositionsTfu(impositionsTfuPaylaodWeb), "Unite de logement mise à jour avec succès."), + new ApiResponse<>(true, impositionsTfuService.homologuerImpositionsTfu(impositionsTfuPaylaodWeb), "Unite de logement mise à jour avec succès."), HttpStatus.OK ); } catch (HttpClientErrorException.MethodNotAllowed e) { diff --git a/src/main/java/io/gmss/fiscad/entities/rfu/metier/DonneesImpositionTfu.java b/src/main/java/io/gmss/fiscad/entities/rfu/metier/DonneesImpositionTfu.java index b47af6e..2737bae 100644 --- a/src/main/java/io/gmss/fiscad/entities/rfu/metier/DonneesImpositionTfu.java +++ b/src/main/java/io/gmss/fiscad/entities/rfu/metier/DonneesImpositionTfu.java @@ -94,6 +94,8 @@ public class DonneesImpositionTfu extends BaseEntity implements Serializable { private Long nombrePiscine; private Long nombreUlog; private Long nombreBat; + // @Column(nullable = true, columnDefinition = "boolean default true") + private Boolean homologable ; @JsonFormat(pattern = "dd-MM-yyyy") @JsonDeserialize(using = LocalDateDeserializer.class) private LocalDate dateEnquete; diff --git a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/DonneesImpositionTfuServiceImpl.java b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/DonneesImpositionTfuServiceImpl.java index fca7c01..932f87c 100644 --- a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/DonneesImpositionTfuServiceImpl.java +++ b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/DonneesImpositionTfuServiceImpl.java @@ -223,6 +223,8 @@ public class DonneesImpositionTfuServiceImpl implements DonneesImpositionTfuServ return impositionsTfuRepository.findByIdToDto(impositionsTfu.getId()).orElse(null); } + + @Override public List getDonneesFiscalesByImposition(Long impositionsId) { return donneesImpositionTfuRepository.findAllByImpositionTfuId(impositionsId); @@ -292,4 +294,52 @@ public class DonneesImpositionTfuServiceImpl implements DonneesImpositionTfuServ public List getDonneesFiscalesByPersonneId(Long personneId) { return donneesImpositionTfuRepository.findAllByPersonneId(personneId); } + + + @Override + public Integer setDonneesFiscalesNonHomologable(List donneesImpositionPaylaodWebs) { + int nb=0; + if(donneesImpositionPaylaodWebs!=null){ + for(DonneesImpositionPaylaodWeb donneesImpositionPaylaodWeb:donneesImpositionPaylaodWebs){ + Optional optionalDonneesImpositionTfu = donneesImpositionTfuRepository.findById(donneesImpositionPaylaodWeb.getId()); + if(optionalDonneesImpositionTfu.isPresent()){ + DonneesImpositionTfu donneesImpositionTfu=optionalDonneesImpositionTfu.get(); + donneesImpositionTfu.setHomologable(false); + donneesImpositionTfuRepository.save(donneesImpositionTfu); + nb++ ; + } + } + } + + return nb ; + } + + @Override + public Integer setDonneesFiscalesHomologable(List donneesImpositionPaylaodWebs) { + int nb=0; + if(donneesImpositionPaylaodWebs!=null){ + for(DonneesImpositionPaylaodWeb donneesImpositionPaylaodWeb:donneesImpositionPaylaodWebs){ + Optional optionalDonneesImpositionTfu = donneesImpositionTfuRepository.findById(donneesImpositionPaylaodWeb.getId()); + if(optionalDonneesImpositionTfu.isPresent()){ + DonneesImpositionTfu donneesImpositionTfu=optionalDonneesImpositionTfu.get(); + donneesImpositionTfu.setHomologable(null); + donneesImpositionTfuRepository.save(donneesImpositionTfu); + nb++ ; + } + } + } + + return nb ; + } + + + @Override + public Integer homologuer(Long impositionTfuId) { + return donneesImpositionTfuRepository.homologuerDonneesImposition(impositionTfuId); + } + + @Override + public Page getDonneesFiscalesNonHomologable(Long impositionTfuId,Pageable pageable) { + return donneesImpositionTfuRepository.findAllByImpositionTfuIdNonHomologablePageable(impositionTfuId,pageable); + } } diff --git a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/ImpositionsTfuServiceImpl.java b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/ImpositionsTfuServiceImpl.java index b1013e7..15b699c 100644 --- a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/ImpositionsTfuServiceImpl.java +++ b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/ImpositionsTfuServiceImpl.java @@ -7,6 +7,7 @@ import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.NotFoundException; import io.gmss.fiscad.interfaces.infocad.metier.EnqueteService; import io.gmss.fiscad.interfaces.infocad.parametre.StructureService; +import io.gmss.fiscad.interfaces.rfu.metier.DonneesImpositionTfuService; import io.gmss.fiscad.interfaces.rfu.metier.ImpositionsTfuService; import io.gmss.fiscad.paylaods.request.crudweb.ImpositionsTfuPaylaodWeb; import io.gmss.fiscad.persistence.repositories.rfu.metier.ImpositionsTfuRepository; @@ -28,6 +29,7 @@ public class ImpositionsTfuServiceImpl implements ImpositionsTfuService { private final ImpositionsTfuRepository impositionsTfuRepository; private final StructureService structureService; + private final DonneesImpositionTfuService donneesImpositionTfuService; private final EntityFromPayLoadService entityFromPayLoadService; private final EnqueteService enqueteService; @@ -133,8 +135,9 @@ public class ImpositionsTfuServiceImpl implements ImpositionsTfuService { return null; } + @Transactional @Override - public ImpositionsTfuPaylaodWeb homologueImpositionsTfu(ImpositionsTfuPaylaodWeb impositionsTfuPaylaodWeb) throws BadRequestException { + public ImpositionsTfuPaylaodWeb homologuerImpositionsTfu(ImpositionsTfuPaylaodWeb impositionsTfuPaylaodWeb) throws BadRequestException { if (impositionsTfuPaylaodWeb.getId() == null) { throw new BadRequestException("Impossible de valider une imposition ayant un id null."); } @@ -150,6 +153,7 @@ public class ImpositionsTfuServiceImpl implements ImpositionsTfuService { impositionsTfu.setDateGeneration(LocalDate.now()); impositionsTfu.setStatusAvis(StatusAvis.HOMOLOGUE); impositionsTfu =impositionsTfuRepository.save(impositionsTfu); + donneesImpositionTfuService.homologuer(impositionsTfu.getId()); return impositionsTfuRepository.findByIdToDto(impositionsTfu.getId()).orElse(null); } diff --git a/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/DonneesImpositionTfuService.java b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/DonneesImpositionTfuService.java index 537a183..1a413f5 100755 --- a/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/DonneesImpositionTfuService.java +++ b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/DonneesImpositionTfuService.java @@ -52,5 +52,9 @@ public interface DonneesImpositionTfuService { //List getDonneesFiscalesByParcelleIdAndExercice(Long parcelleId, Long exerciceId); + Integer setDonneesFiscalesNonHomologable(List donneesImpositionPaylaodWebs); + Integer setDonneesFiscalesHomologable(List donneesImpositionPaylaodWebs); + Page getDonneesFiscalesNonHomologable(Long impositionTfuId,Pageable pageable); + public Integer homologuer(Long impositionTfuId); } diff --git a/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/ImpositionsTfuService.java b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/ImpositionsTfuService.java index ca17ef2..d7ff8d1 100755 --- a/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/ImpositionsTfuService.java +++ b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/ImpositionsTfuService.java @@ -16,7 +16,7 @@ public interface ImpositionsTfuService { ImpositionsTfuPaylaodWeb rejeterImpositionsTfu(ImpositionsTfuPaylaodWeb impositionsTfuPaylaodWeb) throws BadRequestException; ImpositionsTfuPaylaodWeb cloturerImpositionsTfu(ImpositionsTfuPaylaodWeb impositionsTfuPaylaodWeb) throws BadRequestException; ImpositionsTfuPaylaodWeb autoriserGenerationImpositionsTfu(ImpositionsTfuPaylaodWeb impositionsTfuPaylaodWeb) throws BadRequestException; - ImpositionsTfuPaylaodWeb homologueImpositionsTfu(ImpositionsTfuPaylaodWeb impositionsTfuPaylaodWeb) throws BadRequestException; + ImpositionsTfuPaylaodWeb homologuerImpositionsTfu(ImpositionsTfuPaylaodWeb impositionsTfuPaylaodWeb) throws BadRequestException; ImpositionsTfuPaylaodWeb updateImpositionsTfu(Long id, ImpositionsTfuPaylaodWeb impositionsTfuPaylaodWeb) throws NotFoundException; diff --git a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/DonneesImpositionTfuRepository.java b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/DonneesImpositionTfuRepository.java index 170e274..51a79c2 100755 --- a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/DonneesImpositionTfuRepository.java +++ b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/DonneesImpositionTfuRepository.java @@ -4,9 +4,11 @@ import io.gmss.fiscad.entities.infocad.parametre.Personne; import io.gmss.fiscad.entities.rfu.metier.DonneesImpositionTfu; import io.gmss.fiscad.paylaods.request.crudweb.DonneesImpositionPaylaodWeb; import io.gmss.fiscad.paylaods.response.DonneesImpositionTfuResponse; +import jakarta.transaction.Transactional; 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.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -77,7 +79,7 @@ public interface DonneesImpositionTfuRepository extends JpaRepository findAllByImpositionTfuIdNonHomologablePageable( + Long impositionTfuId, + Pageable pageable + ); + + + @Modifying + @Transactional + @Query(""" + UPDATE DonneesImpositionTfu d + SET d.homologable = true + WHERE d.impositionsTfu.id = :impositionsTfuId + AND (d.homologable IS NULL OR d.homologable = true) + """) + int homologuerDonneesImposition( + @Param("impositionsTfuId") Long impositionsTfuId + ); + @Query(value = "SELECT generer_donnees_imposition_tfu_batie(:impositionId, :userId)", nativeQuery = true) Integer genererDonneesTfuBatie( @Param("impositionId") Long impositionId,