diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/file/FileModel.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/file/FileModel.java index 3642c1f62..90d53658b 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/file/FileModel.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/file/FileModel.java @@ -30,8 +30,9 @@ public class FileModel { private OffsetDateTime lastProcessed; private OffsetDateTime lastIndexed; private int numberOfAnalyses; - private String currentReviewer; + private String assignee; private String lastReviewer; + private String lastApprover; private OffsetDateTime lastManualRedaction; private boolean hasRedactions; private boolean hasHints; diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/file/WorkflowStatus.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/file/WorkflowStatus.java index 9fa433590..5d5f325d8 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/file/WorkflowStatus.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/file/WorkflowStatus.java @@ -1,5 +1,5 @@ package com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file; public enum WorkflowStatus { - UNASSIGNED, UNDER_REVIEW, UNDER_APPROVAL, APPROVED + NEW, UNDER_REVIEW, UNDER_APPROVAL, APPROVED } 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 22196e87a..8bd2c646b 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 @@ -25,7 +25,8 @@ public interface StatusResource { String EXCLUDED_STATUS_PARAM = "excluded"; String APPROVER_ID_REQUEST_PARAM = "approverId"; - String REVIEWER_ID_REQUEST_PARAM = "reviewerId"; + String ASSIGNEE_ID_REQUEST_PARAM = "assigneeId"; + String USER_ID_REQUEST_PARAM = "userId"; @ResponseBody @@ -55,20 +56,20 @@ public interface StatusResource { FileModel getFileStatus(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId); - @PostMapping(value = STATUS_PATH + "/reviewer" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE) - void setCurrentFileReviewer(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, - @RequestParam(value = REVIEWER_ID_REQUEST_PARAM, required =false) String reviewerId); + @PostMapping(value = STATUS_PATH + "/assignee" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE) + void setCurrentFileAssignee(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, + @RequestParam(value = ASSIGNEE_ID_REQUEST_PARAM, required =false) String assigneeId); @PostMapping(value = STATUS_PATH + "/underreview" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE) - void setStatusUnderReview(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId); + void setStatusUnderReview(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestParam(value = USER_ID_REQUEST_PARAM, required = false) String userId); @PostMapping(value = STATUS_PATH + "/underapproval" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE) void setStatusUnderApproval(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestParam(value = APPROVER_ID_REQUEST_PARAM, required = false) String approverId); @PostMapping(value = STATUS_PATH + "/approved" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE) - void setStatusApproved(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId); + void setStatusApproved(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestParam(value = APPROVER_ID_REQUEST_PARAM, required = false) String approverId); @PostMapping(value = STATUS_PATH + "/toggle-analysis" + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE) void toggleExclusion(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestParam(EXCLUDED_STATUS_PARAM) boolean excluded); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileEntity.java index 4507935c9..e375f6672 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/dossier/FileEntity.java @@ -60,11 +60,14 @@ public class FileEntity { private int numberOfAnalyses; @Column - private String currentReviewer; + private String assignee; @Column private String lastReviewer; + @Column + private String lastApprover; + @Column private OffsetDateTime lastManualRedaction; 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 5e4281b14..f6d9a114e 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 @@ -41,7 +41,7 @@ public class FileStatusPersistenceService { file.setDossier(dossierRepository.getOne(dossierId)); file.setFilename(filename); file.setProcessingStatus(ProcessingStatus.UNPROCESSED); - file.setWorkflowStatus(WorkflowStatus.UNASSIGNED); + file.setWorkflowStatus(WorkflowStatus.NEW); file.setNumberOfPages(0); file.setAdded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); file.setUploader(uploader); @@ -254,14 +254,13 @@ public class FileStatusPersistenceService { @Transactional - public void setCurrentReviewer(String fileId, String currentReviewer, String lastReviewer) { + public void setAssignee(String fileId, String currentReviewer, String lastReviewer, String lastApprover) { if (isFileDeleted(fileId)) { return; } - int updateCount = fileRepository.setCurrentReviewer(fileId, currentReviewer, lastReviewer, - OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS), - currentReviewer == null ? WorkflowStatus.UNASSIGNED : WorkflowStatus.UNDER_REVIEW); + int updateCount = fileRepository.setAssignee(fileId, currentReviewer, lastReviewer, lastApprover, + OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); if (updateCount == 0) { throw new NotFoundException("Unknown file=" + fileId); } @@ -288,7 +287,7 @@ public class FileStatusPersistenceService { }); int countUpdate = fileRepository.overwriteFile(fileId, filename, uploader, ProcessingStatus.FULLREPROCESS, - WorkflowStatus.UNASSIGNED, + WorkflowStatus.NEW, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS), OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); if (countUpdate == 0) { 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 2d2a68941..843d800f4 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 @@ -97,10 +97,9 @@ public interface FileRepository extends JpaRepository { OffsetDateTime hardDeletedTime, OffsetDateTime deleted); @Modifying - @Query("update FileEntity f set f.currentReviewer = :currentReviewer, f.lastReviewer = :lastReviewer," + - "f.lastUpdated = :lastUpdated, f.workflowStatus = :workflowStatus where f.id = :fileId") - int setCurrentReviewer(String fileId, String currentReviewer, String lastReviewer, OffsetDateTime lastUpdated, - WorkflowStatus workflowStatus); + @Query("update FileEntity f set f.assignee = :assignee, f.lastReviewer = :lastReviewer, f.lastApprover = :lastApprover, " + + "f.lastUpdated = :lastUpdated where f.id = :fileId") + int setAssignee(String fileId, String assignee, String lastReviewer, String lastApprover, OffsetDateTime lastUpdated); @Modifying(clearAutomatically = true) @Query("update FileEntity f set f.excluded = :excluded, f.lastUpdated = :lastUpdated where f.id = :fileId") @@ -109,8 +108,8 @@ public interface FileRepository extends JpaRepository { @Modifying @Query("update FileEntity f set f.filename = :filename, f.uploader = :uploader, f.processingStatus = :processingStatus, " + "f.workflowStatus = :workflowStatus, f.lastUploaded = :lastUploaded, f.lastUpdated = :lastUpdated, " + - "f.lastOCRTime = null, f.excluded = false, f.lastProcessed = null, f.lastReviewer = null, " + - "f.currentReviewer = null, f.approvalDate = null, f.lastManualRedaction = null, " + + "f.lastOCRTime = null, f.excluded = false, f.lastProcessed = null, f.lastReviewer = null, f.lastApprover = null, " + + "f.assignee = null, f.approvalDate = null, f.lastManualRedaction = null, " + "f.dictionaryVersion = 0, f.dossierDictionaryVersion = 0, f.rulesVersion = 0, f.hasImages = false, " + "f.hasHints = false, f.hasRedactions = false, f.hasSuggestions = false, f.hasUpdates = false, " + "f.deleted = null, f.hardDeletedTime = null " + 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 86ca89def..455cf8f98 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 @@ -3,6 +3,7 @@ package com.iqser.red.service.peristence.v1.server.controller; import com.iqser.red.service.peristence.v1.server.service.*; import com.iqser.red.service.peristence.v1.server.utils.FileModelMapper; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; +import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus; @@ -77,42 +78,58 @@ public class FileStatusController implements StatusResource { @Override - public void setCurrentFileReviewer(@PathVariable(DOSSIER_ID_PARAM) String dossierId, + public void setCurrentFileAssignee(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, - @RequestParam(value = REVIEWER_ID_REQUEST_PARAM, required = false) String reviewerId) { - - fileStatusService.setCurrentReviewer(dossierId, fileId, reviewerId); - fileStatusService.setStatusSuccessful(fileId, reviewerId != null ? WorkflowStatus.UNDER_REVIEW : WorkflowStatus.UNASSIGNED); - analysisFlagsCalculationService.calculateFlags(dossierId, fileId); + @RequestParam(value = ASSIGNEE_ID_REQUEST_PARAM, required = false) String assigneeId) { + fileStatusService.setAssignee(dossierId, fileId, assigneeId); } public void setStatusUnderReview(@PathVariable(DOSSIER_ID_PARAM) String dossierId, - @PathVariable(FILE_ID) String fileId) { + @PathVariable(FILE_ID) String fileId, + @RequestParam(value = USER_ID_REQUEST_PARAM, required = false) String userId) { FileEntity fileStatus = fileStatusService.getStatus(fileId); - String lastReviewer = fileStatus.getLastReviewer(); - fileStatusService.setCurrentReviewer(dossierId, fileId, lastReviewer); - fileStatusService.setStatusSuccessful(fileId, lastReviewer != null ? WorkflowStatus.UNDER_REVIEW : WorkflowStatus.UNASSIGNED); + String assignee = fileStatus.getAssignee(); + if (userId != null) { + assignee = userId; + fileStatusService.setAssignee(dossierId, fileId, assignee); + } + fileStatusService.setStatusSuccessful(fileId, assignee != null ? WorkflowStatus.UNDER_REVIEW : WorkflowStatus.NEW); analysisFlagsCalculationService.calculateFlags(dossierId, fileId); } - public void setStatusUnderApproval(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestParam(value = APPROVER_ID_REQUEST_PARAM, required = false) String approverId) { - fileStatusService.setCurrentReviewer(dossierId, fileId, approverId); - fileStatusService.setStatusSuccessful(fileId, approverId != null ? WorkflowStatus.UNDER_APPROVAL : WorkflowStatus.UNASSIGNED); + FileEntity fileStatus = fileStatusService.getStatus(fileId); + String assignee = fileStatus.getAssignee(); + if (approverId != null) { + assignee = approverId; + + } + fileStatusService.setAssignee(dossierId, fileId, approverId); + fileStatusService.setStatusSuccessful(fileId, assignee != null ? WorkflowStatus.UNDER_APPROVAL : WorkflowStatus.NEW); analysisFlagsCalculationService.calculateFlags(dossierId, fileId); } - public void setStatusApproved(@PathVariable(DOSSIER_ID_PARAM) String dossierId, - @PathVariable(FILE_ID) String fileId) { + @PathVariable(FILE_ID) String fileId, + @RequestParam(value = APPROVER_ID_REQUEST_PARAM, required = false) String approverId) { + FileEntity fileStatus = fileStatusService.getStatus(fileId); + String assignee = fileStatus.getAssignee(); + if (assignee == null && approverId == null) { + throw new BadRequestException("No user assigned for the approval"); + } + if (approverId != null) { + assignee = approverId; + } + fileStatusService.setAssignee(dossierId, fileId, assignee); fileStatusService.setApprovalStatusSuccessful(fileId, WorkflowStatus.APPROVED); + } public void toggleExclusion(@PathVariable(DOSSIER_ID_PARAM) String dossierId, diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java index 311fbf9e0..e78fcecd3 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java @@ -33,7 +33,7 @@ public class AnalysisFlagsCalculationService { var file = fileStatusPersistenceService.getStatus(fileId); var redactionLog = redactionLogService.getRedactionLog(dossierId, fileId, true); - var viewedPagesForCurrentReviewer = viewedPagesPersistenceService.findViewedPages(fileId, file.getCurrentReviewer()); + var viewedPagesForCurrentReviewer = viewedPagesPersistenceService.findViewedPages(fileId, file.getAssignee()); Map viewedPages = viewedPagesForCurrentReviewer.stream().collect(Collectors.toMap(ViewedPageEntity::getPage, ViewedPageEntity::getViewedTime)); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileService.java index a970d6619..9c2a41493 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileService.java @@ -60,8 +60,8 @@ public class FileService { throw new ConflictException("File already exists in status APPROVED"); } - if (existingStatus.getCurrentReviewer() != null && !request.getUploader() - .equalsIgnoreCase(existingStatus.getCurrentReviewer())) { + if (existingStatus.getAssignee() != null && !request.getUploader() + .equalsIgnoreCase(existingStatus.getAssignee())) { throw new ConflictException("Only the reviewer can overwrite a file"); } } 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 ae9e764b4..6fe36ebb7 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 @@ -10,7 +10,6 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.dossier. import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.UserNotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.*; -import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus; @@ -195,17 +194,24 @@ public class FileStatusService { } - public void setCurrentReviewer(String dossierId, String fileId, String currentReviewer) { + public void setAssignee(String dossierId, String fileId, String currentReviewer) { if (StringUtils.isNotEmpty(currentReviewer) && !dossierPersistenceService.getAndValidateDossier(dossierId) .getMemberIds() .contains(currentReviewer)) { throw new UserNotFoundException("User=" + currentReviewer + " must be member or owner of dossier=" + dossierId); } - FileEntity fileStatus = fileStatusPersistenceService.getStatus(fileId); + String lastReviewer = fileStatus.getLastReviewer(); + String lastApprover = fileStatus.getLastApprover(); + if(WorkflowStatus.UNDER_REVIEW.equals(fileStatus.getWorkflowStatus())) { + lastReviewer = currentReviewer; + } + if(WorkflowStatus.UNDER_APPROVAL.equals(fileStatus.getWorkflowStatus())) { + lastApprover = currentReviewer; + } - fileStatusPersistenceService.setCurrentReviewer(fileId, currentReviewer, fileStatus.getCurrentReviewer()); + fileStatusPersistenceService.setAssignee(fileId, currentReviewer, lastReviewer, lastApprover); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/ReanalysisRequiredStatusService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/ReanalysisRequiredStatusService.java index 94d20daa3..403151ac7 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/ReanalysisRequiredStatusService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/ReanalysisRequiredStatusService.java @@ -61,7 +61,7 @@ public class ReanalysisRequiredStatusService { if (ProcessingStatus.PROCESSED.equals(fileStatus.getProcessingStatus()) || ProcessingStatus.UNPROCESSED.equals(fileStatus.getProcessingStatus())) { switch (fileStatus.getWorkflowStatus()) { - case UNASSIGNED: + case NEW: case UNDER_REVIEW: case UNDER_APPROVAL: if (fileStatus.getLastProcessed() == null) { diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatsTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatsTest.java index a5e24ec20..9ddcb8fd1 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatsTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierStatsTest.java @@ -114,7 +114,7 @@ public class DossierStatsTest extends AbstractPersistenceServerServiceTest { assertThat(dossierStats.isHasSuggestionsFilePresent()).isFalse(); assertThat(dossierStats.isHasUpdatesFilePresent()).isFalse(); assertThat(dossierStats.isHasNoFlagsFilePresent()).isTrue(); - assertThat(dossierStats.getFileCountPerWorkflowStatus().get(WorkflowStatus.UNASSIGNED)).isEqualTo(1); + assertThat(dossierStats.getFileCountPerWorkflowStatus().get(WorkflowStatus.NEW)).isEqualTo(1); assertThat(dossierStats.getFileCountPerWorkflowStatus().get(WorkflowStatus.APPROVED)).isEqualTo(1); } } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileProcessingTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileProcessingTest.java index 2af3fd469..780f266c4 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileProcessingTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileProcessingTest.java @@ -52,7 +52,7 @@ public class FileProcessingTest extends AbstractPersistenceServerServiceTest { .dossierId(dossier.getId()) .build()); loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); - assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNASSIGNED); + assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.NEW); assertThat(loadedFile.getAnalysisVersion()).isEqualTo(100); fileProcessingClient.ocrFailed(dossier.getId(), file.getId()); @@ -75,7 +75,7 @@ public class FileProcessingTest extends AbstractPersistenceServerServiceTest { fileProcessingClient.indexingSuccessful(dossier.getId(), file.getId()); loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); - assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNASSIGNED); + assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.NEW); assertThat(loadedFile.getLastIndexed()).isNotNull(); } @@ -100,7 +100,7 @@ public class FileProcessingTest extends AbstractPersistenceServerServiceTest { .dossierId(dossier.getId()) .build()); loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); - assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNASSIGNED); + assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.NEW); assertThat(loadedFile.getAnalysisVersion()).isEqualTo(100); // Delete file diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java index dbaff073b..a26ade59d 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java @@ -5,7 +5,10 @@ import static org.assertj.core.api.Assertions.assertThat; import java.nio.charset.StandardCharsets; import java.util.Collections; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest; import org.junit.Test; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import com.google.common.collect.Sets; @@ -52,6 +55,9 @@ public class FileTest extends AbstractPersistenceServerServiceTest { @Autowired private ManualRedactionClient manualRedactionClient; + @Autowired + private DossierClient dossierClient; + @Test public void testEmptyFile() { @@ -97,6 +103,11 @@ public class FileTest extends AbstractPersistenceServerServiceTest { public void testFile() { var dossier = dossierTesterAndProvider.provideTestDossier(); + // update + CreateOrUpdateDossierRequest cru = new CreateOrUpdateDossierRequest(); + BeanUtils.copyProperties(dossier, cru); + cru.getMemberIds().add("2"); + var updated = dossierClient.updateDossier(cru, dossier.getId()); var file = fileTesterAndProvider.testAndProvideFile(dossier); @@ -104,10 +115,12 @@ public class FileTest extends AbstractPersistenceServerServiceTest { var loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); - fileClient.setCurrentFileReviewer(dossier.getId(), file.getId(), "1"); + fileClient.setCurrentFileAssignee(dossier.getId(), file.getId(), "1"); loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); - assertThat(loadedFile.getCurrentReviewer()).isEqualTo("1"); - assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNDER_REVIEW); + assertThat(loadedFile.getAssignee()).isEqualTo("1"); + assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.NEW); + assertThat(loadedFile.getLastReviewer()).isNull(); + assertThat(loadedFile.getLastApprover()).isNull(); fileClient.excludePages(dossier.getId(), file.getId(), Sets.newHashSet(1)); @@ -120,30 +133,58 @@ public class FileTest extends AbstractPersistenceServerServiceTest { assertThat(loadedFile.getExcludedPages()).isEmpty(); - fileClient.setCurrentFileReviewer(dossier.getId(), file.getId(), "1"); + fileClient.setCurrentFileAssignee(dossier.getId(), file.getId(), "1"); loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); - assertThat(loadedFile.getCurrentReviewer()).isEqualTo("1"); - assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNDER_REVIEW); + assertThat(loadedFile.getAssignee()).isEqualTo("1"); + assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.NEW); + assertThat(loadedFile.getLastReviewer()).isNull(); + assertThat(loadedFile.getLastApprover()).isNull(); + fileClient.setStatusUnderReview(dossier.getId(), file.getId(), null); + loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNDER_REVIEW); + assertThat(loadedFile.getAssignee()).isEqualTo("1"); + assertThat(loadedFile.getLastReviewer()).isNull(); + assertThat(loadedFile.getLastApprover()).isNull(); + fileClient.setStatusUnderApproval(dossier.getId(), file.getId(), "1"); loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNDER_APPROVAL); + assertThat(loadedFile.getAssignee()).isEqualTo("1"); + assertThat(loadedFile.getLastReviewer()).isEqualTo("1"); + assertThat(loadedFile.getLastApprover()).isNull(); - - fileClient.setStatusUnderReview(dossier.getId(), file.getId()); - loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); - assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNDER_REVIEW); - - - fileClient.setStatusUnderApproval(dossier.getId(), file.getId(), "1"); - loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); - assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNDER_APPROVAL); - - - fileClient.setStatusApproved(dossier.getId(), file.getId()); + fileClient.setStatusApproved(dossier.getId(), file.getId(), null); loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.APPROVED); + assertThat(loadedFile.getAssignee()).isEqualTo("1"); + assertThat(loadedFile.getLastReviewer()).isEqualTo("1"); + assertThat(loadedFile.getLastApprover()).isEqualTo("1"); + + + fileClient.setStatusUnderReview(dossier.getId(), file.getId(), "2"); + loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNDER_REVIEW); + assertThat(loadedFile.getAssignee()).isEqualTo("2"); + assertThat(loadedFile.getLastReviewer()).isEqualTo("1"); + assertThat(loadedFile.getLastApprover()).isEqualTo("1"); + + + fileClient.setStatusUnderApproval(dossier.getId(), file.getId(), "2"); + loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.UNDER_APPROVAL); + assertThat(loadedFile.getAssignee()).isEqualTo("2"); + assertThat(loadedFile.getLastReviewer()).isEqualTo("2"); + assertThat(loadedFile.getLastApprover()).isEqualTo("1"); + + + fileClient.setStatusApproved(dossier.getId(), file.getId(), "2"); + loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); + assertThat(loadedFile.getWorkflowStatus()).isEqualTo(WorkflowStatus.APPROVED); + assertThat(loadedFile.getAssignee()).isEqualTo("2"); + assertThat(loadedFile.getLastReviewer()).isEqualTo("2"); + assertThat(loadedFile.getLastApprover()).isEqualTo("2"); assertThat(uploadClient.getOriginal(dossier.getId(), file.getId())).isNotNull(); @@ -153,7 +194,7 @@ public class FileTest extends AbstractPersistenceServerServiceTest { assertThat(uploadClient.getAnnotated(dossier.getId(), file.getId())).isNotNull(); - fileClient.setStatusUnderReview(dossier.getId(), file.getId()); + fileClient.setStatusUnderReview(dossier.getId(), file.getId(), null); fileClient.toggleExclusion(dossier.getId(), file.getId(), true);