From f1dc3b103580a71bafcb8e5ffc3d2cf83988f81a Mon Sep 17 00:00:00 2001 From: devplant Date: Thu, 5 May 2022 17:22:17 +0300 Subject: [PATCH] RED-3990-GET endpoints for list of dossiers of a specific dossier template - add implementation for getting the list of dossiers for a certain dossier template - add junit test --- .../v1/api/resources/DossierResource.java | 11 ++++++ .../DossierPersistenceService.java | 4 +++ .../repository/DossierRepository.java | 3 ++ .../server/controller/DossierController.java | 35 +++++++++++++++---- .../v1/server/service/DossierService.java | 5 +++ .../server/integration/tests/DossierTest.java | 4 +++ 6 files changed, 56 insertions(+), 6 deletions(-) diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierResource.java index 18ff855a2..3590b74a9 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierResource.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierResource.java @@ -25,6 +25,7 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.do public interface DossierResource { String REST_PATH = "/dossier"; + String DOSSIER_TEMPLATE_PATH = "/dossier-template"; String INFO_PATH = "/info"; String DELETED_DOSSIERS_PATH = "/deletedDossiers"; String HARD_DELETE_PATH = "/hardDelete"; @@ -36,6 +37,8 @@ public interface DossierResource { String DOSSIER_ID_PARAM = "dossierId"; String DOSSIER_ID_PATH_PARAM = "/{" + DOSSIER_ID_PARAM + "}"; + String DOSSIER_TEMPLATE_ID_PARAM = "dossierTemplateId"; + String DOSSIER_TEMPLATE_ID_PATH_PARAM = "/{" + DOSSIER_TEMPLATE_ID_PARAM + "}"; String INCLUDE_DELETED_PARAM = "includeDeleted"; String INCLUDE_ARCHIVED_PARAM = "includeArchived"; @@ -60,6 +63,11 @@ public interface DossierResource { List getAllDossiers(@RequestParam(name = INCLUDE_ARCHIVED_PARAM, defaultValue = "false", required = false) boolean includeArchived, @RequestParam(name = INCLUDE_DELETED_PARAM, defaultValue = "false", required = false) boolean includeDeleted); + @GetMapping(value = REST_PATH + DOSSIER_TEMPLATE_PATH + DOSSIER_TEMPLATE_ID_PATH_PARAM, produces = MediaType.APPLICATION_JSON_VALUE) + List getAllDossiersForDossierTemplateId(@PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId, + @RequestParam(name = INCLUDE_ARCHIVED_PARAM, defaultValue = "false", required = false) boolean includeArchived, + @RequestParam(name = INCLUDE_DELETED_PARAM, defaultValue = "false", required = false) boolean includeDeleted); + @GetMapping(value = REST_PATH + INFO_PATH, produces = MediaType.APPLICATION_JSON_VALUE) DossierInformation getDossierInformation(@RequestBody List filteredDossierIds); @@ -72,6 +80,9 @@ public interface DossierResource { @GetMapping(value = ARCHIVE_DOSSIERS_PATH, produces = MediaType.APPLICATION_JSON_VALUE) List getArchivedDossiers(); + @GetMapping(value = ARCHIVE_DOSSIERS_PATH + DOSSIER_TEMPLATE_PATH + DOSSIER_TEMPLATE_ID_PATH_PARAM, produces = MediaType.APPLICATION_JSON_VALUE) + List getArchivedDossiersForDossierTemplateId(@PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId); + @GetMapping(value = DELETED_DOSSIERS_PATH, produces = MediaType.APPLICATION_JSON_VALUE) List getSoftDeletedDossiers(); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java index 752c00503..8a1422bef 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java @@ -125,6 +125,10 @@ public class DossierPersistenceService { return dossierRepository.findAll(); } + public List findAllDossiersForDossierTemplateId(String dossierTemplateId) { + return dossierRepository.findByDossierTemplateId(dossierTemplateId); + } + @Transactional public void hardDelete(String dossierId) { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierRepository.java index 25ffc7f5e..73c8bef68 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierRepository.java @@ -55,4 +55,7 @@ public interface DossierRepository extends JpaRepository @Query("select d.id from DossierEntity d where d.dossierTemplateId = :dossierTemplateId and d.archivedTime is null and d.softDeletedTime is null and d.hardDeletedTime is null") List findActiveDossierIdsForTemplate(String dossierTemplateId); + + @Query("select d from DossierEntity d where d.dossierTemplateId = :dossierTemplateId") + List findByDossierTemplateId(String dossierTemplateId); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierController.java index b9d40337f..0f19d4310 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierController.java @@ -96,12 +96,25 @@ public class DossierController implements DossierResource { public List getAllDossiers(@RequestParam(name = INCLUDE_ARCHIVED_PARAM, defaultValue = "false", required = false) boolean includeArchived, @RequestParam(name = INCLUDE_DELETED_PARAM, defaultValue = "false", required = false) boolean includeDeleted) { + return getConvertedAllDossiers(dossierService.getAllDossiers(), includeArchived, includeDeleted); + } + + @Override + @Transactional + public List getAllDossiersForDossierTemplateId(@PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId, + @RequestParam(name = INCLUDE_ARCHIVED_PARAM, defaultValue = "false", required = false) boolean includeArchived, + @RequestParam(name = INCLUDE_DELETED_PARAM, defaultValue = "false", required = false) boolean includeDeleted) { + + return getConvertedAllDossiers(dossierService.getAllDossiersForDossierTemplateId(dossierTemplateId), includeArchived, includeDeleted); + + } + + private List getConvertedAllDossiers(List dossierEntityList, boolean includeArchived, boolean includeDeleted) { if (includeDeleted && includeArchived) { - return convert(dossierService.getAllDossiers(), Dossier.class, new DossierMapper()); + return convert(dossierEntityList, Dossier.class, new DossierMapper()); } - return convert(dossierService.getAllDossiers() - .stream() + return convert(dossierEntityList.stream() .filter(p -> p.getSoftDeletedTime() == null && p.getArchivedTime() == null || includeDeleted && p.getSoftDeletedTime() != null || includeArchived && p.getArchivedTime() != null) .collect(Collectors.toList()), Dossier.class, new DossierMapper()); } @@ -152,8 +165,19 @@ public class DossierController implements DossierResource { @Transactional public List getArchivedDossiers() { - var archivedDossiers = convert(dossierService.getAllDossiers() - .stream() + return getArchivedDossiersList(dossierService.getAllDossiers()); + } + + @Override + @Transactional + public List getArchivedDossiersForDossierTemplateId(@PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId) { + + return getArchivedDossiersList(dossierService.getAllDossiersForDossierTemplateId(dossierTemplateId)); + } + + private List getArchivedDossiersList(List dossierEntityList) { + + var archivedDossiers = convert(dossierEntityList.stream() .filter(p -> p.getArchivedTime() != null && p.getHardDeletedTime() == null && p.getSoftDeletedTime() == null) .collect(Collectors.toList()), Dossier.class, new DossierMapper()); archivedDossiers.sort((dossier1, dossier2) -> dossier2.getArchivedTime().compareTo(dossier1.getArchivedTime())); @@ -161,7 +185,6 @@ public class DossierController implements DossierResource { return archivedDossiers; } - @Override @Transactional public List getSoftDeletedDossiers() { diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierService.java index ea812acc5..7af8c655d 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierService.java @@ -120,6 +120,11 @@ public class DossierService { return dossierPersistenceService.findAllDossiers(); } + public List getAllDossiersForDossierTemplateId(String dossierTemplateId) { + + return dossierPersistenceService.findAllDossiersForDossierTemplateId(dossierTemplateId); + } + public Set changesSince(OffsetDateTime since) { diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java index 81a5e897a..d8a9c89f5 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java @@ -136,6 +136,8 @@ public class DossierTest extends AbstractPersistenceServerServiceTest { assertThat(dossierClient.getAllDossiers(false, true)).hasSize(2); assertThat(dossierClient.getAllDossiers(true, true)).hasSize(2); assertThat(dossierClient.getArchivedDossiers()).hasSize(0); + assertThat(dossierClient.getArchivedDossiersForDossierTemplateId(dossier1.getDossierTemplateId())).hasSize(0); + assertThat(dossierClient.getAllDossiersForDossierTemplateId(dossier1.getDossierTemplateId(), true, true)).hasSize(2); assertThat(dossierClient.getSoftDeletedDossiers()).hasSize(0); // Act & Assert 2 @@ -146,6 +148,8 @@ public class DossierTest extends AbstractPersistenceServerServiceTest { assertThat(dossierClient.getAllDossiers(true, true)).hasSize(2); assertThat(dossierClient.getArchivedDossiers()).hasSize(1); assertThat(dossierClient.getSoftDeletedDossiers()).hasSize(0); + assertThat(dossierClient.getArchivedDossiersForDossierTemplateId(dossier1.getDossierTemplateId())).hasSize(1); + assertThat(dossierClient.getAllDossiersForDossierTemplateId(dossier1.getDossierTemplateId(), true, true)).hasSize(2); var dossierInformation = dossierClient.getDossierInformation(List.of()); assertThat(dossierInformation.getNumberOfActiveDossiers()).isEqualTo(1);