diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisService.java index 7b18c51f6..da097e7fc 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisService.java @@ -270,13 +270,31 @@ public class ReanalysisService { public void reanalyzeTemplate(String dossierTemplateId, ReanalysisSettings reanalysisSettings) { requestValidator.validateRequestOrThrow404(dossierTemplateId, reanalysisSettings.dossierIds(), reanalysisSettings.fileIds()); - fileStatusService.getDossierTemplateStatus(dossierTemplateId) + + var files = fileStatusService.getDossierTemplateStatus(dossierTemplateId) .stream() .filter(file -> isInList(file, reanalysisSettings)) - .filter(reanalysisSettings.fileStatusFilter().fileStatusPredicate()) + .filter(reanalysisSettings.fileStatusFilter().asPredicate()) .peek(file -> log.info("Reanalyzing file {}", file.getId())) - .forEach(file -> fileStatusService.setStatusFullReprocess(file.getDossierId(), file.getId(), false, reanalysisSettings.repeatStructureAnalysis())); + .toList(); + validateFilesForReanalysis(files); + + files.forEach(file -> fileStatusService.setStatusFullReprocess(file.getDossierId(), file.getId(), false, reanalysisSettings.repeatStructureAnalysis())); + + } + + + private void validateFilesForReanalysis(List files) { + + for (var file : files) { + if (file.isSoftOrHardDeleted()) { + throw new BadRequestException("Cannot reanalyse deleted file!"); + } + if (file.getWorkflowStatus() == WorkflowStatus.APPROVED) { + throw new BadRequestException("Cannot reanalyse approved file!"); + } + } } diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/FileStatusFilter.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/FileStatusFilter.java index 0e8b705c9..7c2d24589 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/FileStatusFilter.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/FileStatusFilter.java @@ -32,7 +32,7 @@ public class FileStatusFilter { } - public Predicate fileStatusPredicate() { + public Predicate asPredicate() { if (this.getProcessingStatusList() == null) { this.setProcessingStatusList(new ArrayList<>());