From 7f7556c36a60289ea6227a3e97a4abf9cdba0597 Mon Sep 17 00:00:00 2001 From: Philipp Schramm Date: Thu, 19 Jan 2023 08:15:26 +0100 Subject: [PATCH] RED-4904: Added method to remove not existing users --- .../service/v1/api/resources/StatusResource.java | 6 ++++++ .../persistence/FileStatusPersistenceService.java | 8 ++++++++ .../service/persistence/repository/FileRepository.java | 10 ++++++++++ .../v1/server/controller/FileStatusController.java | 9 ++++++++- .../v1/server/service/FileStatusService.java | 6 ++++++ 5 files changed, 38 insertions(+), 1 deletion(-) diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/StatusResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/StatusResource.java index 04a75e1f0..60b72404e 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/StatusResource.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/StatusResource.java @@ -50,11 +50,13 @@ public interface StatusResource { @GetMapping(value = STATUS_PATH + DOSSIER_ID_PATH_PARAM, produces = MediaType.APPLICATION_JSON_VALUE) List getDossierStatus(@PathVariable(DOSSIER_ID_PARAM) String dossierId); + @ResponseBody @ResponseStatus(value = HttpStatus.OK) @GetMapping(value = STATUS_PATH + DOSSIER_ID_PATH_PARAM + ALL_PATH, produces = MediaType.APPLICATION_JSON_VALUE) List getAllDossierStatus(@PathVariable(DOSSIER_ID_PARAM) String dossierId); + @ResponseBody @ResponseStatus(value = HttpStatus.OK) @GetMapping(value = STATUS_PATH + DELETED_PATH + DOSSIER_ID_PATH_PARAM, produces = MediaType.APPLICATION_JSON_VALUE) @@ -124,4 +126,8 @@ public interface StatusResource { @PostMapping(value = STATUS_PATH + "/include-pages" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE) void includePages(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestBody Set pages); + + @PostMapping(value = STATUS_PATH + "/remove-not-existing-users", consumes = MediaType.APPLICATION_JSON_VALUE) + void removeNotExistingUsers(@RequestBody Set deletedUsers); + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java index 247dcf26e..8729b2e4f 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java @@ -527,4 +527,12 @@ public class FileStatusPersistenceService { OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); } + + @Transactional + public void removeNotExistingUsers(Set users) { + + fileRepository.deleteLastReviewers(users, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); + fileRepository.deleteLastApprovers(users, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); + } + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java index addcf88d3..f47a53873 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java @@ -127,6 +127,16 @@ public interface FileRepository extends JpaRepository { int setAssignee(String fileId, String assignee, String lastReviewer, String lastApprover, OffsetDateTime lastUpdated); + @Modifying + @Query("update FileEntity f set f.lastReviewer = null, f.lastUpdated = :lastUpdated where f.lastReviewer IN :users") + int deleteLastReviewers(Set users, OffsetDateTime lastUpdated); + + + @Modifying + @Query("update FileEntity f set f.lastApprover = null, f.lastUpdated = :lastUpdated where f.lastApprover IN :users") + int deleteLastApprovers(Set users, OffsetDateTime lastUpdated); + + @Modifying(clearAutomatically = true) @Query("update FileEntity f set f.excluded = :excluded, f.lastUpdated = :lastUpdated where f.id = :fileId") int toggleExclusion(String fileId, boolean excluded, OffsetDateTime lastUpdated); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileStatusController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileStatusController.java index fcede7f15..fceb7a255 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileStatusController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/FileStatusController.java @@ -1,7 +1,6 @@ package com.iqser.red.service.peristence.v1.server.controller; import java.time.OffsetDateTime; -import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -47,6 +46,7 @@ public class FileStatusController implements StatusResource { return fileStatusService.getDossierStatus(dossierId).stream().filter(f -> !f.isSoftOrHardDeleted()).collect(Collectors.toList()); } + @Override public List getAllDossierStatus(@PathVariable(DOSSIER_ID_PARAM) String dossierId) { @@ -95,6 +95,13 @@ public class FileStatusController implements StatusResource { } + @Override + public void removeNotExistingUsers(@RequestBody Set notExistingUsers) { + + fileStatusService.removeNotExistingUsers(notExistingUsers); + } + + public void setStatusUnderReview(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestParam(value = USER_ID_REQUEST_PARAM, required = false) String userId) { diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileStatusService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileStatusService.java index f6558fcf2..43e7bde1e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileStatusService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileStatusService.java @@ -747,4 +747,10 @@ public class FileStatusService { fileStatusPersistenceService.updateOCRStatus(response); } + + public void removeNotExistingUsers(Set notExistingUsers) { + + fileStatusPersistenceService.removeNotExistingUsers(notExistingUsers); + } + }