From 2b56f710230fa8adc2c3209a2aa16b498c4cbb3c Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Mon, 25 Sep 2023 22:38:03 +0300 Subject: [PATCH] RED-7421 - Unassigned file cannot be moved back from "under approval" to "under review." --- .../services/bulk-actions.service.ts | 24 ++++++++++++++++--- .../services/file-assign.service.ts | 7 +++++- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/apps/red-ui/src/app/modules/dossier-overview/services/bulk-actions.service.ts b/apps/red-ui/src/app/modules/dossier-overview/services/bulk-actions.service.ts index c099a721d..db0cb5e29 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/services/bulk-actions.service.ts +++ b/apps/red-ui/src/app/modules/dossier-overview/services/bulk-actions.service.ts @@ -1,18 +1,21 @@ import { Injectable } from '@angular/core'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { IConfirmationDialogData, IqserDialog, LoadingService } from '@iqser/common-ui'; -import { Dossier, File, WorkflowFileStatus, WorkflowFileStatuses } from '@red/domain'; +import { Dossier, File, User, WorkflowFileStatus, WorkflowFileStatuses } from '@red/domain'; import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service'; import { FileManagementService } from '@services/files/file-management.service'; import { FilesService } from '@services/files/files.service'; import { ReanalysisService } from '@services/reanalysis.service'; -import { firstValueFrom } from 'rxjs'; +import { firstValueFrom, forkJoin } from 'rxjs'; import { AssignReviewerApproverDialogComponent } from '../../shared-dossiers/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component'; import { DossiersDialogService } from '../../shared-dossiers/services/dossiers-dialog.service'; import { FileAssignService } from '../../shared-dossiers/services/file-assign.service'; +import { getCurrentUser } from '@common-ui/users'; @Injectable() export class BulkActionsService { + readonly currentUser = getCurrentUser(); + constructor( private readonly _dialogService: DossiersDialogService, private readonly _iqserDialog: IqserDialog, @@ -81,7 +84,22 @@ export class BulkActionsService { async backToUnderReview(files: File[]): Promise { this._loadingService.start(); - await this._filesService.setUnderReview(files); + const [unassignedFiles, assignedFiles] = files.reduce( + (result, element) => { + result[!element.assignee ? 0 : 1].push(element); + return result; + }, + [[], []], + ); + + const requests$ = []; + if (unassignedFiles.length) { + requests$.push(this._filesService.setReviewer(unassignedFiles, this.currentUser.id)); + } + if (assignedFiles.length) { + requests$.push(this._filesService.setUnderReview(assignedFiles)); + } + await firstValueFrom(forkJoin(requests$)); this._loadingService.stop(); } diff --git a/apps/red-ui/src/app/modules/shared-dossiers/services/file-assign.service.ts b/apps/red-ui/src/app/modules/shared-dossiers/services/file-assign.service.ts index d0c506b9a..54abd1f54 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/services/file-assign.service.ts +++ b/apps/red-ui/src/app/modules/shared-dossiers/services/file-assign.service.ts @@ -68,7 +68,12 @@ export class FileAssignService { userId = currentUserId; } - if (file.assignee === currentUserId) { + if ( + file.assignee === currentUserId || + (!file.assignee && + targetStatus === WorkflowFileStatuses.UNDER_REVIEW && + file.workflowStatus === WorkflowFileStatuses.UNDER_APPROVAL) + ) { if (eligibleUsersIds.includes(currentUserId)) { userId = currentUserId; }