From f49e8157e258d6812904079e14628cae301bd2f6 Mon Sep 17 00:00:00 2001 From: Aurince AKAKPO Date: Thu, 12 Feb 2026 22:30:42 +0100 Subject: [PATCH] gestion revu de code en utilisant uniquement les DTO --- .../CaracteristiqueBatimentController.java | 73 ++++++++++++++---- ...aracteristiqueUniteLogementController.java | 58 ++++++++++++-- .../entities/infocad/metier/Enquete.java | 1 + .../infocad/metier/EnqueteServiceImpl.java | 5 ++ .../CaracteristiqueBatimentServiceImpl.java | 60 ++++++++++----- ...racteristiqueUniteLogementServiceImpl.java | 57 ++++++++++---- .../CaracteristiqueBatimentService.java | 15 ++-- .../CaracteristiqueUniteLogementService.java | 14 ++-- .../crudweb/EnqueteBatimentPayloadWeb.java | 9 ++- .../CaracteristiqueBatimentRepository.java | 68 ++++++++++++++++ ...aracteristiqueUniteLogementRepository.java | 77 +++++++++++++++---- .../rfu/metier/EnqueteBatimentRepository.java | 25 ++++-- .../service/EntityFromPayLoadService.java | 28 ++++++- 13 files changed, 398 insertions(+), 92 deletions(-) diff --git a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/CaracteristiqueBatimentController.java b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/CaracteristiqueBatimentController.java index 16900af..991484e 100644 --- a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/CaracteristiqueBatimentController.java +++ b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/CaracteristiqueBatimentController.java @@ -5,6 +5,7 @@ import io.gmss.fiscad.entities.rfu.metier.CaracteristiqueBatiment; import io.gmss.fiscad.exceptions.*; import io.gmss.fiscad.interfaces.rfu.metier.CaracteristiqueBatimentService; import io.gmss.fiscad.paylaods.ApiResponse; +import io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueBatimentPayloadWeb; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; @@ -21,7 +22,7 @@ import org.springframework.web.client.HttpClientErrorException; @RestController -@RequestMapping(value = "api/caracteristique-caracteristiqueBatiment", produces = MediaType.APPLICATION_JSON_VALUE) +@RequestMapping(value = "api/caracteristique-batiment", produces = MediaType.APPLICATION_JSON_VALUE) @SecurityRequirement(name = "bearer") @Tag(name = "Caractéristique batiment") @CrossOrigin(origins = "*") @@ -35,34 +36,25 @@ public class CaracteristiqueBatimentController { } @PostMapping("/create") - public ResponseEntity createCaracteristiqueBatiment(@RequestBody @Valid @Validated CaracteristiqueBatiment caracteristiqueBatiment) { + public ResponseEntity createCaracteristiqueBatiment(@RequestBody @Valid @Validated CaracteristiqueBatimentPayloadWeb caracteristiqueBatimentPayloadWeb) { try { - caracteristiqueBatiment = caracteristiqueBatimentService.createCaracteristiqueBatiment(caracteristiqueBatiment); + caracteristiqueBatimentPayloadWeb = caracteristiqueBatimentService.createCaracteristiqueBatiment(caracteristiqueBatimentPayloadWeb); return new ResponseEntity<>( - new ApiResponse<>(true, caracteristiqueBatiment, "Caracteristique du batiment créé avec succès."), + new ApiResponse<>(true, caracteristiqueBatimentPayloadWeb, "Caracteristique du batiment 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) { + 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}") - public ResponseEntity updateCaracteristiqueBatiment(@PathVariable Long id, @RequestBody CaracteristiqueBatiment caracteristiqueBatiment) { + public ResponseEntity updateCaracteristiqueBatiment(@PathVariable Long id, @RequestBody CaracteristiqueBatimentPayloadWeb caracteristiqueBatimentPayloadWeb) { try { return new ResponseEntity<>( - new ApiResponse<>(true, caracteristiqueBatimentService.updateCaracteristiqueBatiment(id, caracteristiqueBatiment), "Caracteristique du batiment mise à jour avec succès."), + new ApiResponse<>(true, caracteristiqueBatimentService.updateCaracteristiqueBatiment(id, caracteristiqueBatimentPayloadWeb), "Caracteristique du batiment mise à jour avec succès."), HttpStatus.OK ); } catch (HttpClientErrorException.MethodNotAllowed e) { @@ -156,7 +148,7 @@ public class CaracteristiqueBatimentController { public ResponseEntity getCaracteristiqueBatimentById(@PathVariable Long id) { try { return new ResponseEntity<>( - new ApiResponse<>(true, caracteristiqueBatimentService.getCaracteristiqueBatimentById(id), "Caracteristique du batiment trouvée avec succès."), + new ApiResponse<>(true, caracteristiqueBatimentService.getCaracteristiqueBatimentToDto(id), "Caracteristique du batiment trouvée avec succès."), HttpStatus.OK ); } catch (HttpClientErrorException.MethodNotAllowed e) { @@ -174,4 +166,51 @@ public class CaracteristiqueBatimentController { return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); } } + + @GetMapping("/by-enquete-batiment-id/{batimentId}") + public ResponseEntity getCaracteristiqueBatimentByBatimentId(@PathVariable Long enquteBatimentId) { + try { + return new ResponseEntity<>( + new ApiResponse<>(true, caracteristiqueBatimentService.getCaracteristiqueBatimentListByEnqueteBatiment(enquteBatimentId), "Caracteristique du batiment 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("/page/by-enquete-batiment-id/{batimentId}") + public ResponseEntity getCaracteristiqueBatimentByEnqueteBatimentIdPaged(@PathVariable Long enquteBatimentId,@RequestParam int pageNo, @RequestParam int pageSize) { + try { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, caracteristiqueBatimentService.getCaracteristiqueBatimentListByEnqueteBatimentPageable(enquteBatimentId,pageable), "Caracteristique du batiment 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/metier/CaracteristiqueUniteLogementController.java b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/CaracteristiqueUniteLogementController.java index e167708..fcaa2b9 100644 --- a/src/main/java/io/gmss/fiscad/controllers/rfu/metier/CaracteristiqueUniteLogementController.java +++ b/src/main/java/io/gmss/fiscad/controllers/rfu/metier/CaracteristiqueUniteLogementController.java @@ -5,6 +5,7 @@ import io.gmss.fiscad.entities.rfu.metier.CaracteristiqueUniteLogement; import io.gmss.fiscad.exceptions.*; import io.gmss.fiscad.interfaces.rfu.metier.CaracteristiqueUniteLogementService; import io.gmss.fiscad.paylaods.ApiResponse; +import io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueUniteLogementPayloadWeb; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; @@ -35,11 +36,11 @@ public class CaracteristiqueUniteLogementController { } @PostMapping("/create") - public ResponseEntity createCaracteristiqueUniteLogement(@RequestBody @Valid @Validated CaracteristiqueUniteLogement caracteristiqueUniteLogement) { + public ResponseEntity createCaracteristiqueUniteLogement(@RequestBody @Valid @Validated CaracteristiqueUniteLogementPayloadWeb caracteristiqueUniteLogementPayloadWeb) { try { - caracteristiqueUniteLogement = caracteristiqueUniteLogementService.createCaracteristiqueUniteLogement(caracteristiqueUniteLogement); + caracteristiqueUniteLogementPayloadWeb = caracteristiqueUniteLogementService.createCaracteristiqueUniteLogement(caracteristiqueUniteLogementPayloadWeb); return new ResponseEntity<>( - new ApiResponse<>(true, caracteristiqueUniteLogement, "Caracteristique Unite Logement créé avec succès."), + new ApiResponse<>(true, caracteristiqueUniteLogementPayloadWeb, "Caracteristique Unite Logement créé avec succès."), HttpStatus.OK ); } catch (HttpClientErrorException.MethodNotAllowed e) { @@ -59,10 +60,10 @@ public class CaracteristiqueUniteLogementController { } @PutMapping("/update/{id}") - public ResponseEntity updateCaracteristiqueUniteLogement(@PathVariable Long id, @RequestBody CaracteristiqueUniteLogement caracteristiqueUniteLogement) { + public ResponseEntity updateCaracteristiqueUniteLogement(@PathVariable Long id, @RequestBody CaracteristiqueUniteLogementPayloadWeb caracteristiqueUniteLogementPayloadWeb) { try { return new ResponseEntity<>( - new ApiResponse<>(true, caracteristiqueUniteLogementService.updateCaracteristiqueUniteLogement(id, caracteristiqueUniteLogement), "Caracteristique Unite Logement mise à jour avec succès."), + new ApiResponse<>(true, caracteristiqueUniteLogementService.updateCaracteristiqueUniteLogement(id, caracteristiqueUniteLogementPayloadWeb), "Caracteristique Unite Logement mise à jour avec succès."), HttpStatus.OK ); } catch (HttpClientErrorException.MethodNotAllowed e) { @@ -174,4 +175,51 @@ public class CaracteristiqueUniteLogementController { return new ResponseEntity<>(new ApiResponse(false, null, "An error has been occur and the content is {" + e.getMessage() + "}."), HttpStatus.OK); } } + + @GetMapping("/by-enquete-ulo-id/{enqueteUloId}") + public ResponseEntity getAllCaracteristiqueUniteLogementListByEul(@PathVariable Long enqueteUloId) { + try { + return new ResponseEntity<>( + new ApiResponse<>(true, caracteristiqueUniteLogementService.getCaracteristiqueUniteLogementListbyEul(enqueteUloId), "Liste des Caracteristiques Unite Logement 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-enquete-ulo-id/{enqueteUloId}") + public ResponseEntity getAllCaracteristiqueUniteLogementByEulPaged(@PathVariable Long enqueteUloId,@RequestParam int pageNo, @RequestParam int pageSize) { + try { + Pageable pageable = PageRequest.of(pageNo, pageSize); + return new ResponseEntity<>( + new ApiResponse<>(true, caracteristiqueUniteLogementService.getCaracteristiqueUniteLogementListByEul(enqueteUloId,pageable), "Liste des Caracteristiques Unite Logement 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/infocad/metier/Enquete.java b/src/main/java/io/gmss/fiscad/entities/infocad/metier/Enquete.java index c8db7e5..6fdebdf 100644 --- a/src/main/java/io/gmss/fiscad/entities/infocad/metier/Enquete.java +++ b/src/main/java/io/gmss/fiscad/entities/infocad/metier/Enquete.java @@ -183,6 +183,7 @@ public class Enquete extends BaseEntity implements Serializable { private Long montantAnnuelleLocation; private Long valeurParcelleEstime; private Long valeurParcelleReel; + private String ncProprietaire; @JsonFormat(pattern = "dd-MM-yyyy") @JsonDeserialize(using = LocalDateDeserializer.class) diff --git a/src/main/java/io/gmss/fiscad/implementations/infocad/metier/EnqueteServiceImpl.java b/src/main/java/io/gmss/fiscad/implementations/infocad/metier/EnqueteServiceImpl.java index 9322e02..366e3e0 100644 --- a/src/main/java/io/gmss/fiscad/implementations/infocad/metier/EnqueteServiceImpl.java +++ b/src/main/java/io/gmss/fiscad/implementations/infocad/metier/EnqueteServiceImpl.java @@ -101,6 +101,11 @@ public class EnqueteServiceImpl implements EnqueteService { throw new BadRequestException("Echec de l'enregistrement : Propriétaire inexistant"); } + Optional optionalParcelle = parcelleRepository.findById(enquetePayLoadWeb.getParcelleId()); + if (!optionalParcelle.isPresent()) { + throw new BadRequestException("Echec de l'enregistrement : Parcelle inexistante"); + } + Optional optionalZoneRfu = zoneRfuRepository.findById(enquetePayLoadWeb.getZoneRfuId()); if (!optionalZoneRfu.isPresent()) { throw new BadRequestException("Echec de l'enregistrement : zone inexistante"); diff --git a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/CaracteristiqueBatimentServiceImpl.java b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/CaracteristiqueBatimentServiceImpl.java index a1486d5..5a9f3e2 100644 --- a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/CaracteristiqueBatimentServiceImpl.java +++ b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/CaracteristiqueBatimentServiceImpl.java @@ -1,43 +1,56 @@ package io.gmss.fiscad.implementations.rfu.metier; import io.gmss.fiscad.entities.rfu.metier.CaracteristiqueBatiment; +import io.gmss.fiscad.entities.rfu.metier.CaracteristiqueParcelle; import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.NotFoundException; import io.gmss.fiscad.interfaces.rfu.metier.CaracteristiqueBatimentService; +import io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueBatimentPayloadWeb; import io.gmss.fiscad.persistence.repositories.rfu.metier.CaracteristiqueBatimentRepository; +import io.gmss.fiscad.persistence.repositories.rfu.metier.EnqueteBatimentRepository; +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 CaracteristiqueBatimentServiceImpl implements CaracteristiqueBatimentService { private final CaracteristiqueBatimentRepository caracteristiqueBatimentRepository; + private final EntityFromPayLoadService entityFromPayLoadService; + private final EnqueteBatimentRepository enqueteBatimentRepository; - public CaracteristiqueBatimentServiceImpl(CaracteristiqueBatimentRepository caracteristiqueBatimentRepository) { - this.caracteristiqueBatimentRepository = caracteristiqueBatimentRepository; - } @Override - public CaracteristiqueBatiment createCaracteristiqueBatiment(CaracteristiqueBatiment caracteristiqueBatiment) throws BadRequestException { - if (caracteristiqueBatiment.getId() != null) { + public CaracteristiqueBatimentPayloadWeb createCaracteristiqueBatiment(CaracteristiqueBatimentPayloadWeb caracteristiqueBatimentPayloadWeb) throws BadRequestException { + if (caracteristiqueBatimentPayloadWeb.getId() != null) { throw new BadRequestException("Impossible de créer une nouvelle caracteristique de batiment ayant un id non null."); } - return caracteristiqueBatimentRepository.save(caracteristiqueBatiment); + if (!enqueteBatimentRepository.existsById(caracteristiqueBatimentPayloadWeb.getEnqueteBatimentId())) { + throw new BadRequestException("Veuillez préciser l'enquete"); + } + + CaracteristiqueBatiment caracteristiqueBatiment= entityFromPayLoadService.getCaracteristiqueBatimentFromPayLoadWeb(caracteristiqueBatimentPayloadWeb); + caracteristiqueBatiment =caracteristiqueBatimentRepository.save(caracteristiqueBatiment); + return caracteristiqueBatimentRepository.findCaracteristiqueBatimentToDto(caracteristiqueBatiment.getId()).orElse(null); + } @Override - public CaracteristiqueBatiment updateCaracteristiqueBatiment(Long id, CaracteristiqueBatiment caracteristiqueBatiment) throws NotFoundException { - if (caracteristiqueBatiment.getId() == null) { + public CaracteristiqueBatimentPayloadWeb updateCaracteristiqueBatiment(Long id, CaracteristiqueBatimentPayloadWeb caracteristiqueBatimentPayloadWeb) throws NotFoundException { + if (caracteristiqueBatimentPayloadWeb.getId() == null) { throw new BadRequestException("Impossible de mettre à jour une nouvelle caracteristique de batiment ayant un id null."); } - if (!caracteristiqueBatimentRepository.existsById(caracteristiqueBatiment.getId())) { + if (!caracteristiqueBatimentRepository.existsById(caracteristiqueBatimentPayloadWeb.getId())) { throw new NotFoundException("Impossible de trouver la nouvelle caracteristique de batiment spécifié dans notre base de données."); } - return caracteristiqueBatimentRepository.save(caracteristiqueBatiment); + CaracteristiqueBatiment caracteristiqueBatiment= entityFromPayLoadService.getCaracteristiqueBatimentFromPayLoadWeb(caracteristiqueBatimentPayloadWeb); + caracteristiqueBatiment =caracteristiqueBatimentRepository.save(caracteristiqueBatiment); + return caracteristiqueBatimentRepository.findCaracteristiqueBatimentToDto(caracteristiqueBatiment.getId()).orElse(null); } @Override @@ -51,23 +64,34 @@ public class CaracteristiqueBatimentServiceImpl implements CaracteristiqueBatime } @Override - public Page getCaracteristiqueBatimentList(Pageable pageable) { - return caracteristiqueBatimentRepository.findAll(pageable); + public Page getCaracteristiqueBatimentList(Pageable pageable) { + return caracteristiqueBatimentRepository.findAllCaracteristiqueBatimentToDtoPageable(pageable); } @Override - public List getCaracteristiqueBatimentList() { - return caracteristiqueBatimentRepository.findAll(); + public List getCaracteristiqueBatimentList() { + return caracteristiqueBatimentRepository.findAllCaracteristiqueBatimentToDto(); } @Override - public Optional getCaracteristiqueBatimentById(Long id) { + public Optional getCaracteristiqueBatimentToDto(Long id) { if (caracteristiqueBatimentRepository.existsById(id)) { - return caracteristiqueBatimentRepository.findById(id); + return caracteristiqueBatimentRepository.findCaracteristiqueBatimentToDto(id); } else { throw new NotFoundException("Impossible de trouver la caractéristique spécifiée dans la base de données."); } - } + + @Override + public Page getCaracteristiqueBatimentListByEnqueteBatimentPageable(Long enqueteBatimentId, Pageable pageable) { + return caracteristiqueBatimentRepository.findAllCaracteristiqueBatimentByEnqueteBatimentToDtoPageable(enqueteBatimentId,pageable); + } + + @Override + public List getCaracteristiqueBatimentListByEnqueteBatiment(Long enqueteBatimentId) { + return caracteristiqueBatimentRepository.findAllCaracteristiqueBatimentByEnqueteBatimentToDto(enqueteBatimentId); + } + + } diff --git a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/CaracteristiqueUniteLogementServiceImpl.java b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/CaracteristiqueUniteLogementServiceImpl.java index 23c45d0..88f7189 100644 --- a/src/main/java/io/gmss/fiscad/implementations/rfu/metier/CaracteristiqueUniteLogementServiceImpl.java +++ b/src/main/java/io/gmss/fiscad/implementations/rfu/metier/CaracteristiqueUniteLogementServiceImpl.java @@ -1,43 +1,56 @@ package io.gmss.fiscad.implementations.rfu.metier; +import io.gmss.fiscad.entities.rfu.metier.CaracteristiqueBatiment; import io.gmss.fiscad.entities.rfu.metier.CaracteristiqueUniteLogement; import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.NotFoundException; import io.gmss.fiscad.interfaces.rfu.metier.CaracteristiqueUniteLogementService; +import io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueUniteLogementPayloadWeb; import io.gmss.fiscad.persistence.repositories.rfu.metier.CaracteristiqueUniteLogementRepository; +import io.gmss.fiscad.persistence.repositories.rfu.metier.EnqueteUniteLogementRepository; +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 CaracteristiqueUniteLogementServiceImpl implements CaracteristiqueUniteLogementService { private final CaracteristiqueUniteLogementRepository caracteristiqueUniteLogementRepository; + private final EntityFromPayLoadService entityFromPayLoadService; + private final EnqueteUniteLogementRepository enqueteUniteLogementRepository; + - public CaracteristiqueUniteLogementServiceImpl(CaracteristiqueUniteLogementRepository caracteristiqueUniteLogementRepository) { - this.caracteristiqueUniteLogementRepository = caracteristiqueUniteLogementRepository; - } @Override - public CaracteristiqueUniteLogement createCaracteristiqueUniteLogement(CaracteristiqueUniteLogement caracteristiqueUniteLogement) throws BadRequestException { - if (caracteristiqueUniteLogement.getId() != null) { + public CaracteristiqueUniteLogementPayloadWeb createCaracteristiqueUniteLogement(CaracteristiqueUniteLogementPayloadWeb caracteristiqueUniteLogementPayloadWeb) throws BadRequestException { + if (caracteristiqueUniteLogementPayloadWeb.getId() != null) { throw new BadRequestException("Impossible de créer une nouvelle caracteristique d'unité de logement ayant un id non null."); } - return caracteristiqueUniteLogementRepository.save(caracteristiqueUniteLogement); + if (!enqueteUniteLogementRepository.existsById(caracteristiqueUniteLogementPayloadWeb.getEnqueteUniteLogementId())) { + throw new BadRequestException("Veuillez préciser l'enquete."); + } + + CaracteristiqueUniteLogement caracteristiqueUniteLogement= entityFromPayLoadService.getCaracteristiqueUniteLogementFromPayLoadWeb(caracteristiqueUniteLogementPayloadWeb); + caracteristiqueUniteLogement =caracteristiqueUniteLogementRepository.save(caracteristiqueUniteLogement); + return caracteristiqueUniteLogementRepository.findCaracteristiqueUniteLogementToDto(caracteristiqueUniteLogement.getId()).orElse(null); } @Override - public CaracteristiqueUniteLogement updateCaracteristiqueUniteLogement(Long id, CaracteristiqueUniteLogement caracteristiqueUniteLogement) throws NotFoundException { - if (caracteristiqueUniteLogement.getId() == null) { + public CaracteristiqueUniteLogementPayloadWeb updateCaracteristiqueUniteLogement(Long id, CaracteristiqueUniteLogementPayloadWeb caracteristiqueUniteLogementPayloadWeb) throws NotFoundException { + if (caracteristiqueUniteLogementPayloadWeb.getId() == null) { throw new BadRequestException("Impossible de mettre à jour une nouvelle caracteristique d'unité de logement ayant un id null."); } - if (!caracteristiqueUniteLogementRepository.existsById(caracteristiqueUniteLogement.getId())) { + if (!caracteristiqueUniteLogementRepository.existsById(caracteristiqueUniteLogementPayloadWeb.getId())) { throw new NotFoundException("Impossible de trouver la nouvelle caracteristique d'unité de logement spécifiée dans notre base de données."); } - return caracteristiqueUniteLogementRepository.save(caracteristiqueUniteLogement); + CaracteristiqueUniteLogement caracteristiqueUniteLogement= entityFromPayLoadService.getCaracteristiqueUniteLogementFromPayLoadWeb(caracteristiqueUniteLogementPayloadWeb); + caracteristiqueUniteLogement =caracteristiqueUniteLogementRepository.save(caracteristiqueUniteLogement); + return caracteristiqueUniteLogementRepository.findCaracteristiqueUniteLogementToDto(caracteristiqueUniteLogement.getId()).orElse(null); } @Override @@ -51,23 +64,33 @@ public class CaracteristiqueUniteLogementServiceImpl implements CaracteristiqueU } @Override - public Page getCaracteristiqueUniteLogementList(Pageable pageable) { - return caracteristiqueUniteLogementRepository.findAll(pageable); + public Page getCaracteristiqueUniteLogementList(Pageable pageable) { + return caracteristiqueUniteLogementRepository.findAllCaracteristiqueUniteLogementToDtoPageable(pageable); } @Override - public List getCaracteristiqueUniteLogementList() { - return caracteristiqueUniteLogementRepository.findAll(); + public List getCaracteristiqueUniteLogementList() { + return caracteristiqueUniteLogementRepository.findAllCaracteristiqueUniteLogementToDto(); } @Override - public Optional getCaracteristiqueUniteLogementById(Long id) { + public Optional getCaracteristiqueUniteLogementById(Long id) { if (caracteristiqueUniteLogementRepository.existsById(id)) { - return caracteristiqueUniteLogementRepository.findById(id); + return caracteristiqueUniteLogementRepository.findCaracteristiqueUniteLogementToDto(id); } else { throw new NotFoundException("Impossible de trouver la caracteristique d'unité de logement spécifiée dans la base de données."); } } + + @Override + public Page getCaracteristiqueUniteLogementListByEul(Long eul, Pageable pageable) { + return caracteristiqueUniteLogementRepository.findAllCaracteristiqueUniteLogementByEnqueteUloToDtoPageable(eul,pageable); + } + + @Override + public List getCaracteristiqueUniteLogementListbyEul(Long eul) { + return caracteristiqueUniteLogementRepository.findAllCaracteristiqueUniteLogementByEnqueteUloToDto(eul); + } } diff --git a/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/CaracteristiqueBatimentService.java b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/CaracteristiqueBatimentService.java index 1b008f0..dc3dc57 100755 --- a/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/CaracteristiqueBatimentService.java +++ b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/CaracteristiqueBatimentService.java @@ -3,6 +3,7 @@ package io.gmss.fiscad.interfaces.rfu.metier; import io.gmss.fiscad.entities.rfu.metier.CaracteristiqueBatiment; import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.NotFoundException; +import io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueBatimentPayloadWeb; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -11,15 +12,19 @@ import java.util.Optional; public interface CaracteristiqueBatimentService { - CaracteristiqueBatiment createCaracteristiqueBatiment(CaracteristiqueBatiment caracteristiqueBatiment) throws BadRequestException; + CaracteristiqueBatimentPayloadWeb createCaracteristiqueBatiment(CaracteristiqueBatimentPayloadWeb caracteristiqueBatimentPayloadWeb) throws BadRequestException; - CaracteristiqueBatiment updateCaracteristiqueBatiment(Long id, CaracteristiqueBatiment caracteristiqueBatiment) throws NotFoundException; + CaracteristiqueBatimentPayloadWeb updateCaracteristiqueBatiment(Long id, CaracteristiqueBatimentPayloadWeb caracteristiqueBatimentPayloadWeb) throws NotFoundException; void deleteCaracteristiqueBatiment(Long id) throws NotFoundException; - Page getCaracteristiqueBatimentList(Pageable pageable); + Page getCaracteristiqueBatimentList(Pageable pageable); - List getCaracteristiqueBatimentList(); + List getCaracteristiqueBatimentList(); - Optional getCaracteristiqueBatimentById(Long id); + Optional getCaracteristiqueBatimentToDto(Long id); + + Page getCaracteristiqueBatimentListByEnqueteBatimentPageable(Long enqueteBatimentId, Pageable pageable); + + List getCaracteristiqueBatimentListByEnqueteBatiment(Long enqueteBatimentId); } diff --git a/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/CaracteristiqueUniteLogementService.java b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/CaracteristiqueUniteLogementService.java index 10e9994..1b1cb86 100755 --- a/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/CaracteristiqueUniteLogementService.java +++ b/src/main/java/io/gmss/fiscad/interfaces/rfu/metier/CaracteristiqueUniteLogementService.java @@ -3,6 +3,7 @@ package io.gmss.fiscad.interfaces.rfu.metier; import io.gmss.fiscad.entities.rfu.metier.CaracteristiqueUniteLogement; import io.gmss.fiscad.exceptions.BadRequestException; import io.gmss.fiscad.exceptions.NotFoundException; +import io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueUniteLogementPayloadWeb; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -11,15 +12,18 @@ import java.util.Optional; public interface CaracteristiqueUniteLogementService { - CaracteristiqueUniteLogement createCaracteristiqueUniteLogement(CaracteristiqueUniteLogement caracteristiqueUniteLogement) throws BadRequestException; + CaracteristiqueUniteLogementPayloadWeb createCaracteristiqueUniteLogement(CaracteristiqueUniteLogementPayloadWeb caracteristiqueUniteLogementPayloadWeb) throws BadRequestException; - CaracteristiqueUniteLogement updateCaracteristiqueUniteLogement(Long id, CaracteristiqueUniteLogement caracteristiqueUniteLogement) throws NotFoundException; + CaracteristiqueUniteLogementPayloadWeb updateCaracteristiqueUniteLogement(Long id, CaracteristiqueUniteLogementPayloadWeb caracteristiqueUniteLogementPayloadWeb) throws NotFoundException; void deleteCaracteristiqueUniteLogement(Long id) throws NotFoundException; - Page getCaracteristiqueUniteLogementList(Pageable pageable); + Page getCaracteristiqueUniteLogementList(Pageable pageable); - List getCaracteristiqueUniteLogementList(); + List getCaracteristiqueUniteLogementList(); - Optional getCaracteristiqueUniteLogementById(Long id); + Optional getCaracteristiqueUniteLogementById(Long id); + Page getCaracteristiqueUniteLogementListByEul(Long id,Pageable pageable); + + List getCaracteristiqueUniteLogementListbyEul(Long id); } diff --git a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/EnqueteBatimentPayloadWeb.java b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/EnqueteBatimentPayloadWeb.java index 2878cc5..fdaf694 100644 --- a/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/EnqueteBatimentPayloadWeb.java +++ b/src/main/java/io/gmss/fiscad/paylaods/request/crudweb/EnqueteBatimentPayloadWeb.java @@ -2,6 +2,7 @@ package io.gmss.fiscad.paylaods.request.crudweb; import com.fasterxml.jackson.annotation.JsonIgnore; import io.gmss.fiscad.entities.rfu.metier.CaracteristiqueBatiment; +import io.gmss.fiscad.entities.rfu.parametre.Exercice; import io.gmss.fiscad.enums.StatutEnquete; import jakarta.persistence.EnumType; import jakarta.persistence.Enumerated; @@ -52,9 +53,13 @@ public class EnqueteBatimentPayloadWeb { @Enumerated(EnumType.STRING) @JsonIgnore private StatutEnquete statutEnquete; + private Long exerciceId; + private Integer exerciceAnnee; public EnqueteBatimentPayloadWeb(Long id, String observation, String autreMenuisierie, String autreMur, boolean sbee, String numCompteurSbee, boolean soneb, String numCompteurSoneb, int nbreLotUnite, int nbreUniteLocation, Float superficieLouee, Float superficieAuSol, LocalDate dateEnquete, int nbreMenage, int nbreHabitant, Long montantMensuelLocation, Long montantLocatifAnnuelDeclare, Long nbreEtage, Long valeurBatimentEstime, Long valeurBatimentReel, int nbreMoisLocation, String autreCaracteristiquePhysique, LocalDate dateDebutExcemption, LocalDate dateFinExcemption, Long batimentId, String batimentNub, Long personneId, String personneNom, String personnePrenom, String personneRaisonSociale, Long enqueteurId, String enqueteurNom, String enqueteurPrenom, - StatutEnquete statutEnquete) { + StatutEnquete statutEnquete, + Long exerciceId, + Integer exerciceAnnee) { this.id = id; this.observation = observation; this.autreMenuisierie = autreMenuisierie; @@ -89,5 +94,7 @@ public class EnqueteBatimentPayloadWeb { this.enqueteurNom = enqueteurNom; this.enqueteurPrenom = enqueteurPrenom; this.statutEnquete = statutEnquete; + this.exerciceId = exerciceId; + this.exerciceAnnee = exerciceAnnee; } } diff --git a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueBatimentRepository.java b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueBatimentRepository.java index 5be6261..33ea7fa 100755 --- a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueBatimentRepository.java +++ b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueBatimentRepository.java @@ -65,6 +65,74 @@ public interface CaracteristiqueBatimentRepository extends JpaRepository findCaracteristiqueBatimentToDto(@Param("caracteristiqueBatimentId") Long caracteristiqueBatimentId); +// @Query(""" +// SELECT new io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueBatimentPayloadWeb( +// cb.id, +// eb.id, +// eb.dateEnquete, +// ex.annee, +// ca.id, +// ca.code, +// ca.libelle, +// cb.valeur, +// cb.observation +// ) +// FROM CaracteristiqueBatiment cb +// JOIN cb.caracteristique ca +// JOIN cb.enqueteBatiment eb +// JOIN eb.exercice ex +// WHERE cb.id = :caracteristiqueBatimentId +// """) +// Optional findCaracteristiqueBatimentToDto(@Param("caracteristiqueBatimentId") Long caracteristiqueBatimentId); + + @Query(""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueBatimentPayloadWeb( + cb.id, + eb.id, + eb.dateEnquete, + ex.annee, + ca.id, + ca.code, + ca.libelle, + cb.valeur, + cb.observation + ) + FROM CaracteristiqueBatiment cb + JOIN cb.caracteristique ca + JOIN cb.enqueteBatiment eb + JOIN eb.exercice ex + """) + List findAllCaracteristiqueBatimentToDto(); + + @Query(value = """ + SELECT new io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueBatimentPayloadWeb( + cb.id, + eb.id, + eb.dateEnquete, + ex.annee, + ca.id, + ca.code, + ca.libelle, + cb.valeur, + cb.observation + ) + FROM CaracteristiqueBatiment cb + JOIN cb.caracteristique ca + JOIN cb.enqueteBatiment eb + JOIN eb.exercice ex + WHERE eb.id = :enqueteBatimentId + """, + countQuery = """ + SELECT COUNT(distinct cb) + FROM CaracteristiqueBatiment cb + JOIN cb.caracteristique ca + JOIN cb.enqueteBatiment eb + JOIN eb.exercice ex + """ + ) + Page findAllCaracteristiqueBatimentToDtoPageable(Pageable pageable); + + @Query(""" SELECT new io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueBatimentPayloadWeb( cb.id, diff --git a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueUniteLogementRepository.java b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueUniteLogementRepository.java index c6f8f77..ffdd09f 100755 --- a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueUniteLogementRepository.java +++ b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/CaracteristiqueUniteLogementRepository.java @@ -56,12 +56,12 @@ public interface CaracteristiqueUniteLogementRepository extends JpaRepository findCaracteristiqueUniteLogementToDto(@Param("caracteristiqueBatimentId") Long caracteristiqueBatimentId); + Optional findCaracteristiqueUniteLogementToDto(@Param("caracteristiqueUniteLogementId") Long caracteristiqueUniteLogementId); @Query(""" SELECT new io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueUniteLogementPayloadWeb( @@ -76,12 +76,31 @@ public interface CaracteristiqueUniteLogementRepository extends JpaRepository findAllCaracteristiqueUniteLogementByEnqueteUniteLogementToDto(@Param("enqueteUniteLogementId") Long enqueteUniteLogementId); + List findAllCaracteristiqueUniteLogementByEnqueteUloToDto(@Param("enqueteUniteLogementId") Long enqueteUniteLogementId); + + @Query(""" + SELECT new io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueUniteLogementPayloadWeb( + cul.id, + eul.id, + eul.dateEnquete, + ex.annee, + ca.id, + ca.code, + ca.libelle, + cul.valeur, + cul.observation + ) + FROM CaracteristiqueUniteLogement cul + LEFT JOIN cul.caracteristique ca + LEFT JOIN cul.enqueteUniteLogement eul + LEFT JOIN eul.exercice ex + """) + List findAllCaracteristiqueUniteLogementToDto(); @Query(value = """ SELECT new io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueUniteLogementPayloadWeb( @@ -96,20 +115,48 @@ public interface CaracteristiqueUniteLogementRepository extends JpaRepository findAllCaracteristiqueUniteLogementToDtoPageable(Pageable pageable); + + @Query(value = """ + SELECT new io.gmss.fiscad.paylaods.request.crudweb.CaracteristiqueUniteLogementPayloadWeb( + cul.id, + eul.id, + eul.dateEnquete, + ex.annee, + ca.id, + ca.code, + ca.libelle, + cul.valeur, + cul.observation + ) + FROM CaracteristiqueUniteLogement cul + LEFT JOIN cul.caracteristique ca + LEFT JOIN cul.enqueteUniteLogement eul + LEFT JOIN eul.exercice ex + WHERE cul.id = :enqueteUniteLogementId + """, + countQuery = """ + SELECT COUNT(distinct cul) + FROM CaracteristiqueUniteLogement cul + LEFT JOIN cul.caracteristique ca + LEFT JOIN cul.enqueteUniteLogement eul + LEFT JOIN eul.exercice ex WHERE cul.id = :enqueteUniteLogementId """ ) - Page findAllCaracteristiqueUniteLogementByEnqueteBatimentToDtoPageable(@Param("enqueteUniteLogementId") Long enqueteUniteLogementId, Pageable pageable); + Page findAllCaracteristiqueUniteLogementByEnqueteUloToDtoPageable(@Param("enqueteUniteLogementId") Long enqueteUniteLogementId, Pageable pageable); } diff --git a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/EnqueteBatimentRepository.java b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/EnqueteBatimentRepository.java index 241e896..8fffffc 100755 --- a/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/EnqueteBatimentRepository.java +++ b/src/main/java/io/gmss/fiscad/persistence/repositories/rfu/metier/EnqueteBatimentRepository.java @@ -94,12 +94,15 @@ public interface EnqueteBatimentRepository extends JpaRepository findEnqueteBatimentByIdToDto(@Param("enqueteBatimentId") Long enqueteBatimentId); @@ -142,12 +145,15 @@ public interface EnqueteBatimentRepository extends JpaRepository findAllEnqueteBatimentToDto(); @@ -190,12 +196,15 @@ public interface EnqueteBatimentRepository extends JpaRepository findAllByBatimentToDto( @@ -295,12 +307,15 @@ public interface EnqueteBatimentRepository extends JpaRepository optionalUniteLogement = Optional.empty(); Optional optionalUser = Optional.empty(); - if(enqueteUniteLogementPayloadWeb.getExerciceId()!=null) - optionalExercice= exerciceRepository.findById(enqueteUniteLogementPayloadWeb.getExerciceId()); - eul.setExercice(optionalExercice.orElse(null)); +// if(enqueteUniteLogementPayloadWeb.getExerciceId()!=null) +// optionalExercice= exerciceRepository.findById(enqueteUniteLogementPayloadWeb.getExerciceId()); +// eul.setExercice(optionalExercice.orElse(null)); if(enqueteUniteLogementPayloadWeb.getUniteLogementId()!=null) optionalUniteLogement= uniteLogementRepository.findById(enqueteUniteLogementPayloadWeb.getUniteLogementId()); @@ -586,7 +586,14 @@ public class EntityFromPayLoadService { if(enqueteUniteLogementPayloadWeb.getEnqueteurId()!=null) optionalUser= userRepository.findById(enqueteUniteLogementPayloadWeb.getEnqueteurId()); - eul.setUser(optionalUser.orElse(null)); + eul.setUser(optionalUser.orElse(null)); + + + if (enqueteUniteLogementPayloadWeb.getExerciceId() != null) { + Exercice exercice = new Exercice(); + exercice.setId(enqueteUniteLogementPayloadWeb.getExerciceId()); + eul.setExercice(exercice); + } eul.setId(enqueteUniteLogementPayloadWeb.getId()); @@ -640,6 +647,11 @@ public class EntityFromPayLoadService { user.setId(enqueteBatimentPayloadWeb.getEnqueteurId()); enqueteBatiment.setUser(user); } + if (enqueteBatimentPayloadWeb.getExerciceId() != null) { + Exercice exercice = new Exercice(); + exercice.setId(enqueteBatimentPayloadWeb.getExerciceId()); + enqueteBatiment.setExercice(exercice); + } // ====================== // Champs simples @@ -714,6 +726,13 @@ public class EntityFromPayLoadService { enquete.setZoneRfu(zoneRfu); } + if (enquetePayLoadWeb.getExerviceId() != null) { + Exercice exercice = new Exercice(); + exercice.setId(enquetePayLoadWeb.getExerviceId()); + enquete.setExercice(exercice); + } + + // ====================== // Champs simples @@ -739,6 +758,7 @@ public class EntityFromPayLoadService { enquete.setMontantAnnuelleLocation(enquetePayLoadWeb.getMontantAnnuelleLocation()); enquete.setValeurParcelleEstime(enquetePayLoadWeb.getValeurParcelleEstime()); enquete.setValeurParcelleReel(enquetePayLoadWeb.getValeurParcelleReel()); + enquete.setSynchronise(true); return enquete; }