From d18359aa6ce268da8f4cdfcfe642d403867d93a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Mon, 9 Aug 2021 20:36:38 +0300 Subject: [PATCH] Refactor dossiers dialog service: assign file to user --- ...dossier-overview-bulk-actions.component.ts | 17 +++----- .../file-actions/file-actions.component.ts | 20 +++++---- ...sign-reviewer-approver-dialog.component.ts | 2 +- .../services/dossiers-dialog.service.ts | 24 ++--------- .../dossier/services/file-action.service.ts | 42 ++----------------- 5 files changed, 27 insertions(+), 78 deletions(-) diff --git a/apps/red-ui/src/app/modules/dossier/components/bulk-actions/dossier-overview-bulk-actions.component.ts b/apps/red-ui/src/app/modules/dossier/components/bulk-actions/dossier-overview-bulk-actions.component.ts index 95c6f8616..bb42177ab 100644 --- a/apps/red-ui/src/app/modules/dossier/components/bulk-actions/dossier-overview-bulk-actions.component.ts +++ b/apps/red-ui/src/app/modules/dossier/components/bulk-actions/dossier-overview-bulk-actions.component.ts @@ -154,16 +154,7 @@ export class DossierOverviewBulkActionsComponent { setToUnderApproval() { // If more than 1 approver - show dialog and ask who to assign if (this._appStateService.activeDossier.approverIds.length > 1) { - this._dialogService.openAssignFileToUserDialog( - this.selectedFiles, - 'approver', - () => { - this._loadingService.start(); - this.reload.emit(); - this._loadingService.stop(); - }, - true - ); + this._assignFiles('approver', true); } else { this._performBulkAction( this._fileActionService.setFileUnderApproval(this.selectedFiles, this._appStateService.activeDossier.approverIds[0]) @@ -196,8 +187,12 @@ export class DossierOverviewBulkActionsComponent { assign() { const mode = this.selectedFiles[0].isUnderApproval ? 'approver' : 'reviewer'; + this._assignFiles(mode); + } - this._dialogService.openAssignFileToUserDialog(this.selectedFiles, mode, () => { + private _assignFiles(mode: 'reviewer' | 'approver', ignoreChanged = false) { + const data = { mode, files: this.selectedFiles, ignoreChanged }; + this._dialogService.openDialog('assignFile', null, data, () => { this._loadingService.start(); this.reload.emit(); this._loadingService.stop(); diff --git a/apps/red-ui/src/app/modules/dossier/components/file-actions/file-actions.component.ts b/apps/red-ui/src/app/modules/dossier/components/file-actions/file-actions.component.ts index e8396a9fa..7e1657a6b 100644 --- a/apps/red-ui/src/app/modules/dossier/components/file-actions/file-actions.component.ts +++ b/apps/red-ui/src/app/modules/dossier/components/file-actions/file-actions.component.ts @@ -139,11 +139,9 @@ export class FileActionsComponent implements OnInit { } assign($event: MouseEvent) { - $event.stopPropagation(); - const mode = this.fileStatus.isUnderApproval ? 'approver' : 'reviewer'; - - this._dialogService.openAssignFileToUserDialog([this.fileStatus], mode, () => { + const files = [this.fileStatus]; + this._dialogService.openDialog('assignFile', $event, { mode, files }, () => { this.actionPerformed.emit('assign-reviewer'); }); } @@ -164,9 +162,14 @@ export class FileActionsComponent implements OnInit { } setFileUnderApproval($event: MouseEvent) { - $event.stopPropagation(); if (this.appStateService.activeDossier.approverIds.length > 1) { - this._fileActionService.assignDossierApprover(this.fileStatus, () => this.actionPerformed.emit('assign-reviewer'), true); + this._fileActionService.assignFile( + 'approver', + $event, + this.fileStatus, + () => this.actionPerformed.emit('assign-reviewer'), + true + ); } else { this._fileActionService.setFileUnderApproval(this.fileStatus).subscribe(() => { this.reloadDossiers('set-under-approval'); @@ -189,8 +192,9 @@ export class FileActionsComponent implements OnInit { } setFileUnderReview($event: MouseEvent, ignoreDialogChanges = false) { - $event.stopPropagation(); - this._fileActionService.assignDossierReviewer( + this._fileActionService.assignFile( + 'reviewer', + $event, this.fileStatus, () => this.actionPerformed.emit('assign-reviewer'), ignoreDialogChanges diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts index 22a8c241b..3eeb90183 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts @@ -93,7 +93,7 @@ export class AssignReviewerApproverDialogComponent { this._toaster.error('Failed: ' + error.error ? error.error.message : error); } - this._dialogRef.close(); + this._dialogRef.close(true); } private _loadData() { diff --git a/apps/red-ui/src/app/modules/dossier/services/dossiers-dialog.service.ts b/apps/red-ui/src/app/modules/dossier/services/dossiers-dialog.service.ts index b4968e016..0a52aaf22 100644 --- a/apps/red-ui/src/app/modules/dossier/services/dossiers-dialog.service.ts +++ b/apps/red-ui/src/app/modules/dossier/services/dossiers-dialog.service.ts @@ -13,7 +13,6 @@ import { ManualAnnotationService } from './manual-annotation.service'; import { ManualAnnotationDialogComponent } from '../dialogs/manual-redaction-dialog/manual-annotation-dialog.component'; import { DossierDictionaryDialogComponent } from '../dialogs/dossier-dictionary-dialog/dossier-dictionary-dialog.component'; import { EditDossierDialogComponent } from '../dialogs/edit-dossier-dialog/edit-dossier-dialog.component'; -import { FileStatusWrapper } from '@models/file/file-status.wrapper'; import { AssignReviewerApproverDialogComponent } from '../dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component'; import { AppConfigService } from '@app-config/app-config.service'; import { ChangeLegalBasisDialogComponent } from '../dialogs/change-legal-basis-dialog/change-legal-basis-dialog.component'; @@ -29,7 +28,7 @@ const dialogConfig = { // TODO: Continue refactor -type DialogType = 'confirm' | 'documentInfo' | 'editDossier' | 'addDossier'; +type DialogType = 'confirm' | 'documentInfo' | 'editDossier' | 'addDossier' | 'assignFile'; type DossiersDialogConfig = { [key in DialogType]: { @@ -59,6 +58,9 @@ export class DossiersDialogService extends DialogService { width: '900px', autoFocus: true } + }, + assignFile: { + component: AssignReviewerApproverDialogComponent } }; @@ -175,22 +177,4 @@ export class DossiersDialogService extends DialogService { }); return ref; } - - openAssignFileToUserDialog( - files: FileStatusWrapper[], - mode: 'reviewer' | 'approver', - cb?: Function, - ignoreDialogChanges = false - ): MatDialogRef { - const ref = this._dialog.open(AssignReviewerApproverDialogComponent, { - ...dialogConfig, - data: { mode: mode, files: files, ignoreChanged: ignoreDialogChanges } - }); - - ref.afterClosed().subscribe(() => { - if (cb) cb(); - }); - - return ref; - } } diff --git a/apps/red-ui/src/app/modules/dossier/services/file-action.service.ts b/apps/red-ui/src/app/modules/dossier/services/file-action.service.ts index c1d1f6272..cde315c4a 100644 --- a/apps/red-ui/src/app/modules/dossier/services/file-action.service.ts +++ b/apps/red-ui/src/app/modules/dossier/services/file-action.service.ts @@ -42,42 +42,6 @@ export class FileActionService { ); } - async assignDossierReviewerFromOverview(file?: FileStatusWrapper, callback?: Function) { - if (this._permissionsService.isOwner()) { - this._openAssignReviewerDialog(file, callback); - } else { - await this.assignToMe(file, callback); - } - } - - assignDossierApprover(file?: FileStatusWrapper, callback?: Function, ignoreDialogChanges = false) { - this._dialogService.openAssignFileToUserDialog( - file ? [file] : [this._appStateService.activeFile], - 'approver', - async () => { - await this._appStateService.reloadActiveDossierFiles(); - if (callback) { - callback(); - } - }, - ignoreDialogChanges - ); - } - - assignDossierReviewer(file?: FileStatusWrapper, callback?: Function, ignoreDialogChanges = false) { - this._dialogService.openAssignFileToUserDialog( - file ? [file] : [this._appStateService.activeFile], - 'reviewer', - async () => { - await this._appStateService.reloadActiveDossierFiles(); - if (callback) { - callback(); - } - }, - ignoreDialogChanges - ); - } - async assignToMe(fileStatus?: FileStatusWrapper | FileStatusWrapper[], callback?: Function) { if (!isArray(fileStatus)) { fileStatus = [fileStatus]; @@ -143,8 +107,10 @@ export class FileActionService { ); } - private _openAssignReviewerDialog(file?: FileStatusWrapper, callback?: Function) { - this._dialogService.openAssignFileToUserDialog(file ? [file] : [this._appStateService.activeFile], 'reviewer', async () => { + assignFile(mode: 'reviewer' | 'approver', $event: MouseEvent, file?: FileStatusWrapper, callback?: Function, ignoreChanged = false) { + const files = file ? [file] : [this._appStateService.activeFile]; + const data = { mode, files, ignoreChanged }; + this._dialogService.openDialog('assignFile', $event, data, async () => { await this._appStateService.reloadActiveDossierFiles(); if (callback) { callback();