From 3db3a6a1c4b972888fa8441dc63c729662dc8426 Mon Sep 17 00:00:00 2001 From: Valentin Date: Sun, 6 Feb 2022 18:39:05 +0200 Subject: [PATCH] updated edit dossier modal to be in read-only mode when there is not owner set --- ...edit-dossier-download-package.component.ts | 2 +- .../edit-dossier-dialog.component.ts | 16 +++--- .../edit-dossier-team.component.html | 52 ++++++++++--------- .../edit-dossier-team.component.ts | 9 ++-- .../edit-dossier-general-info.component.html | 2 +- .../edit-dossier-general-info.component.ts | 2 +- .../src/app/services/permissions.service.ts | 4 +- 7 files changed, 49 insertions(+), 38 deletions(-) diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts index 7338c9590..6df62c19a 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts @@ -74,7 +74,7 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS (await firstValueFrom(this._reportTemplateController.getAvailableReportTemplates(this.dossier.dossierTemplateId))) || []; this.form = this._getForm(); - if (!this._permissionsService.canEditDossier()) { + if (!this._permissionsService.canEditDossier(this.dossier)) { this.form.disable(); } } diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts index 486375e34..367f3e9a1 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts @@ -15,6 +15,7 @@ import { Observable } from 'rxjs'; import { tap } from 'rxjs/operators'; import { EditDossierTeamComponent } from './edit-dossier-team/edit-dossier-team.component'; import { PermissionsService } from '@services/permissions.service'; +import { UserService } from '@services/user.service'; type Section = 'dossierInfo' | 'downloadPackage' | 'dossierDictionary' | 'members' | 'dossierAttributes' | 'deletedDocuments'; @@ -34,7 +35,8 @@ export class EditDossierDialogComponent extends BaseDialogComponent { @ViewChild(EditDossierTeamComponent) membersComponent: EditDossierTeamComponent; @ViewChild(EditDossierAttributesComponent) attributesComponent: EditDossierAttributesComponent; @ViewChild(EditDossierDeletedDocumentsComponent) deletedDocumentsComponent: EditDossierDeletedDocumentsComponent; - private _dossierName: string; + + private _dossier: Dossier; constructor( private readonly _toaster: Toaster, @@ -42,6 +44,7 @@ export class EditDossierDialogComponent extends BaseDialogComponent { private readonly _changeRef: ChangeDetectorRef, private readonly _loadingService: LoadingService, private readonly _permissionsService: PermissionsService, + private readonly _userService: UserService, protected readonly _injector: Injector, protected readonly _dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) @@ -82,9 +85,7 @@ export class EditDossierDialogComponent extends BaseDialogComponent { }, ]; - this.dossier$ = this._dossiersService - .getEntityChanged$(_data.dossierId) - .pipe(tap(dossier => (this._dossierName = dossier.dossierName))); + this.dossier$ = this._dossiersService.getEntityChanged$(_data.dossierId).pipe(tap(dossier => (this._dossier = dossier))); this.activeNav = _data.section || 'dossierInfo'; } @@ -112,7 +113,10 @@ export class EditDossierDialogComponent extends BaseDialogComponent { } get showActionButtons(): boolean { - return !['deletedDocuments'].includes(this.activeNav) && this._permissionsService.canEditDossier(); + return ( + (['members'].includes(this.activeNav) && this._userService.currentUser.isManager) || + (!['deletedDocuments'].includes(this.activeNav) && this._permissionsService.canEditDossier(this._dossier)) + ); } get changed(): boolean { @@ -133,7 +137,7 @@ export class EditDossierDialogComponent extends BaseDialogComponent { this._loadingService.stop(); if (result.success) { - this._toaster.success(_('edit-dossier-dialog.change-successful'), { params: { dossierName: this._dossierName } }); + this._toaster.success(_('edit-dossier-dialog.change-successful'), { params: { dossierName: this._dossier.dossierName } }); } if (result.success && options?.closeAfterSave) { diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.html b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.html index 5d2809aec..5d2053801 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.html +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.html @@ -9,33 +9,37 @@ -
- -
- + +
+ +
- + +
+ +
+ +
{{ 'assign-dossier-owner.dialog.no-reviewers' | translate }}
-
{{ 'assign-dossier-owner.dialog.select-below' | translate }}
diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.ts index 9f92db656..3b9acd23b 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-team/edit-dossier-team.component.ts @@ -6,6 +6,7 @@ import { Dossier, IDossierRequest } from '@red/domain'; import { AutoUnsubscribe } from '@iqser/common-ui'; import { EditDossierSaveResult, EditDossierSectionInterface } from '../edit-dossier-section.interface'; import { BehaviorSubject, firstValueFrom } from 'rxjs'; +import { PermissionsService } from '@services/permissions.service'; @Component({ selector: 'redaction-edit-dossier-team', @@ -19,14 +20,16 @@ export class EditDossierTeamComponent extends AutoUnsubscribe implements EditDos @Input() dossier: Dossier; - readonly ownersSelectOptions = this.userService.managerUsers.map(m => m.id); membersSelectOptions: string[] = []; + + readonly ownersSelectOptions = this.userService.managerUsers.map(m => m.id); readonly selectedReviewers$ = new BehaviorSubject([]); constructor( readonly userService: UserService, private readonly _formBuilder: FormBuilder, private readonly _dossiersService: DossiersService, + private readonly _permissionsService: PermissionsService, ) { super(); } @@ -48,7 +51,7 @@ export class EditDossierTeamComponent extends AutoUnsubscribe implements EditDos } get disabled() { - return !this.userService.currentUser.isManager; + return !this.userService.currentUser.isManager || !this.form.get('owner').value; } get changed() { @@ -149,7 +152,7 @@ export class EditDossierTeamComponent extends AutoUnsubscribe implements EditDos owner: [ { value: this.dossier?.ownerId, - disabled: this.disabled, + disabled: !this.userService.currentUser.isManager, }, Validators.required, ], diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.html b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.html index aebea6535..0af613641 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.html +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.html @@ -53,7 +53,7 @@ diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts index 4925acddb..55bc3065e 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts @@ -69,7 +69,7 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti ngOnInit() { this._filterInvalidDossierTemplates(); this.form = this._getForm(); - if (!this.permissionsService.canEditDossier()) { + if (!this.permissionsService.canEditDossier(this.dossier)) { this.form.disable(); } this.hasDueDate = !!this.dossier.dueDate; diff --git a/apps/red-ui/src/app/services/permissions.service.ts b/apps/red-ui/src/app/services/permissions.service.ts index a69c5e6a7..4ad6f6d6b 100644 --- a/apps/red-ui/src/app/services/permissions.service.ts +++ b/apps/red-ui/src/app/services/permissions.service.ts @@ -123,8 +123,8 @@ export class PermissionsService { return dossier.ownerId === this._userService.currentUser.id; } - canEditDossier(user = this._userService.currentUser) { - return user.isManager; + canEditDossier(dossier: Dossier, user = this._userService.currentUser): boolean { + return user.isManager && !!dossier?.ownerId; } isAdmin(user = this._userService.currentUser): boolean {