RED-7421 - Unassigned file cannot be moved back from "under approval" to "under review."

This commit is contained in:
Valentin Mihai 2023-09-26 13:20:05 +03:00
parent 1b99ce9dfa
commit 953d9253eb
2 changed files with 27 additions and 5 deletions

View File

@ -1,17 +1,19 @@
import { Injectable } from '@angular/core';
import { Dossier, File, WorkflowFileStatus, WorkflowFileStatuses } from '@red/domain';
import { Dossier, File, User, WorkflowFileStatus, WorkflowFileStatuses } from '@red/domain';
import { DossiersDialogService } from '../../shared-dossiers/services/dossiers-dialog.service';
import { ConfirmationDialogInput, LoadingService } from '@iqser/common-ui';
import { ConfirmationDialogInput, getCurrentUser, LoadingService } from '@iqser/common-ui';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
import { FilesService } from '@services/files/files.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { ReanalysisService } from '@services/reanalysis.service';
import { FileManagementService } from '@services/files/file-management.service';
import { firstValueFrom } from 'rxjs';
import { firstValueFrom, forkJoin } from 'rxjs';
import { FileAssignService } from '../../shared-dossiers/services/file-assign.service';
@Injectable()
export class BulkActionsService {
readonly currentUser = getCurrentUser<User>();
constructor(
private readonly _dialogService: DossiersDialogService,
private readonly _loadingService: LoadingService,
@ -82,7 +84,22 @@ export class BulkActionsService {
async backToUnderReview(files: File[]): Promise<void> {
this._loadingService.start();
await this._filesService.setUnderReviewFor(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.setUnderReviewFor(assignedFiles));
}
await firstValueFrom(forkJoin(requests$));
this._loadingService.stop();
}

View File

@ -64,7 +64,12 @@ export class FileAssignService {
if (file.isNew) {
await this._makeAssignFileRequest(currentUserId, targetStatus, [file]);
} else if (file.assignee === currentUserId) {
} else if (
file.assignee === currentUserId ||
(!file.assignee &&
targetStatus === WorkflowFileStatuses.UNDER_REVIEW &&
file.workflowStatus === WorkflowFileStatuses.UNDER_APPROVAL)
) {
if (eligibleUsersIds.includes(currentUserId)) {
await this._makeAssignFileRequest(currentUserId, targetStatus, [file]);
} else if (eligibleUsersIds.length === 1) {