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
This commit is contained in:
devplant 2022-05-05 17:22:17 +03:00
parent 9cd4c0dd19
commit f1dc3b1035
6 changed files with 56 additions and 6 deletions

View File

@ -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<Dossier> 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<Dossier> 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<String> filteredDossierIds);
@ -72,6 +80,9 @@ public interface DossierResource {
@GetMapping(value = ARCHIVE_DOSSIERS_PATH, produces = MediaType.APPLICATION_JSON_VALUE)
List<Dossier> getArchivedDossiers();
@GetMapping(value = ARCHIVE_DOSSIERS_PATH + DOSSIER_TEMPLATE_PATH + DOSSIER_TEMPLATE_ID_PATH_PARAM, produces = MediaType.APPLICATION_JSON_VALUE)
List<Dossier> getArchivedDossiersForDossierTemplateId(@PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId);
@GetMapping(value = DELETED_DOSSIERS_PATH, produces = MediaType.APPLICATION_JSON_VALUE)
List<Dossier> getSoftDeletedDossiers();

View File

@ -125,6 +125,10 @@ public class DossierPersistenceService {
return dossierRepository.findAll();
}
public List<DossierEntity> findAllDossiersForDossierTemplateId(String dossierTemplateId) {
return dossierRepository.findByDossierTemplateId(dossierTemplateId);
}
@Transactional
public void hardDelete(String dossierId) {

View File

@ -55,4 +55,7 @@ public interface DossierRepository extends JpaRepository<DossierEntity, String>
@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<String> findActiveDossierIdsForTemplate(String dossierTemplateId);
@Query("select d from DossierEntity d where d.dossierTemplateId = :dossierTemplateId")
List<DossierEntity> findByDossierTemplateId(String dossierTemplateId);
}

View File

@ -96,12 +96,25 @@ public class DossierController implements DossierResource {
public List<Dossier> 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<Dossier> 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<Dossier> getConvertedAllDossiers(List<DossierEntity> 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<Dossier> getArchivedDossiers() {
var archivedDossiers = convert(dossierService.getAllDossiers()
.stream()
return getArchivedDossiersList(dossierService.getAllDossiers());
}
@Override
@Transactional
public List<Dossier> getArchivedDossiersForDossierTemplateId(@PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId) {
return getArchivedDossiersList(dossierService.getAllDossiersForDossierTemplateId(dossierTemplateId));
}
private List<Dossier> getArchivedDossiersList(List<DossierEntity> 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<Dossier> getSoftDeletedDossiers() {

View File

@ -120,6 +120,11 @@ public class DossierService {
return dossierPersistenceService.findAllDossiers();
}
public List<DossierEntity> getAllDossiersForDossierTemplateId(String dossierTemplateId) {
return dossierPersistenceService.findAllDossiersForDossierTemplateId(dossierTemplateId);
}
public Set<DossierChange> changesSince(OffsetDateTime since) {

View File

@ -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);