updated edit dossier modal to be in read-only mode when there is not owner set
This commit is contained in:
parent
f23779350a
commit
3db3a6a1c4
@ -74,7 +74,7 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS
|
|||||||
(await firstValueFrom(this._reportTemplateController.getAvailableReportTemplates(this.dossier.dossierTemplateId))) || [];
|
(await firstValueFrom(this._reportTemplateController.getAvailableReportTemplates(this.dossier.dossierTemplateId))) || [];
|
||||||
|
|
||||||
this.form = this._getForm();
|
this.form = this._getForm();
|
||||||
if (!this._permissionsService.canEditDossier()) {
|
if (!this._permissionsService.canEditDossier(this.dossier)) {
|
||||||
this.form.disable();
|
this.form.disable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,6 +15,7 @@ import { Observable } from 'rxjs';
|
|||||||
import { tap } from 'rxjs/operators';
|
import { tap } from 'rxjs/operators';
|
||||||
import { EditDossierTeamComponent } from './edit-dossier-team/edit-dossier-team.component';
|
import { EditDossierTeamComponent } from './edit-dossier-team/edit-dossier-team.component';
|
||||||
import { PermissionsService } from '@services/permissions.service';
|
import { PermissionsService } from '@services/permissions.service';
|
||||||
|
import { UserService } from '@services/user.service';
|
||||||
|
|
||||||
type Section = 'dossierInfo' | 'downloadPackage' | 'dossierDictionary' | 'members' | 'dossierAttributes' | 'deletedDocuments';
|
type Section = 'dossierInfo' | 'downloadPackage' | 'dossierDictionary' | 'members' | 'dossierAttributes' | 'deletedDocuments';
|
||||||
|
|
||||||
@ -34,7 +35,8 @@ export class EditDossierDialogComponent extends BaseDialogComponent {
|
|||||||
@ViewChild(EditDossierTeamComponent) membersComponent: EditDossierTeamComponent;
|
@ViewChild(EditDossierTeamComponent) membersComponent: EditDossierTeamComponent;
|
||||||
@ViewChild(EditDossierAttributesComponent) attributesComponent: EditDossierAttributesComponent;
|
@ViewChild(EditDossierAttributesComponent) attributesComponent: EditDossierAttributesComponent;
|
||||||
@ViewChild(EditDossierDeletedDocumentsComponent) deletedDocumentsComponent: EditDossierDeletedDocumentsComponent;
|
@ViewChild(EditDossierDeletedDocumentsComponent) deletedDocumentsComponent: EditDossierDeletedDocumentsComponent;
|
||||||
private _dossierName: string;
|
|
||||||
|
private _dossier: Dossier;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private readonly _toaster: Toaster,
|
private readonly _toaster: Toaster,
|
||||||
@ -42,6 +44,7 @@ export class EditDossierDialogComponent extends BaseDialogComponent {
|
|||||||
private readonly _changeRef: ChangeDetectorRef,
|
private readonly _changeRef: ChangeDetectorRef,
|
||||||
private readonly _loadingService: LoadingService,
|
private readonly _loadingService: LoadingService,
|
||||||
private readonly _permissionsService: PermissionsService,
|
private readonly _permissionsService: PermissionsService,
|
||||||
|
private readonly _userService: UserService,
|
||||||
protected readonly _injector: Injector,
|
protected readonly _injector: Injector,
|
||||||
protected readonly _dialogRef: MatDialogRef<EditDossierDialogComponent>,
|
protected readonly _dialogRef: MatDialogRef<EditDossierDialogComponent>,
|
||||||
@Inject(MAT_DIALOG_DATA)
|
@Inject(MAT_DIALOG_DATA)
|
||||||
@ -82,9 +85,7 @@ export class EditDossierDialogComponent extends BaseDialogComponent {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
this.dossier$ = this._dossiersService
|
this.dossier$ = this._dossiersService.getEntityChanged$(_data.dossierId).pipe(tap(dossier => (this._dossier = dossier)));
|
||||||
.getEntityChanged$(_data.dossierId)
|
|
||||||
.pipe(tap(dossier => (this._dossierName = dossier.dossierName)));
|
|
||||||
this.activeNav = _data.section || 'dossierInfo';
|
this.activeNav = _data.section || 'dossierInfo';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,7 +113,10 @@ export class EditDossierDialogComponent extends BaseDialogComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get showActionButtons(): boolean {
|
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 {
|
get changed(): boolean {
|
||||||
@ -133,7 +137,7 @@ export class EditDossierDialogComponent extends BaseDialogComponent {
|
|||||||
this._loadingService.stop();
|
this._loadingService.stop();
|
||||||
|
|
||||||
if (result.success) {
|
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) {
|
if (result.success && options?.closeAfterSave) {
|
||||||
|
|||||||
@ -9,33 +9,37 @@
|
|||||||
</mat-select>
|
</mat-select>
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
</div>
|
</div>
|
||||||
<div class="all-caps-label mt-16" translate="assign-dossier-owner.dialog.approvers"></div>
|
|
||||||
<redaction-team-members
|
|
||||||
(remove)="toggleSelected($event)"
|
|
||||||
[canAdd]="false"
|
|
||||||
[canRemove]="!disabled"
|
|
||||||
[dossierId]="dossier.dossierId"
|
|
||||||
[largeSpacing]="true"
|
|
||||||
[memberIds]="selectedApproversList"
|
|
||||||
[perLine]="13"
|
|
||||||
[unremovableMembers]="[selectedOwnerId]"
|
|
||||||
></redaction-team-members>
|
|
||||||
|
|
||||||
<div class="all-caps-label mt-16" translate="assign-dossier-owner.dialog.reviewers"></div>
|
<ng-container *ngIf="selectedApproversList.length">
|
||||||
<redaction-team-members
|
<div class="all-caps-label mt-16" translate="assign-dossier-owner.dialog.approvers"></div>
|
||||||
(remove)="toggleSelected($event)"
|
<redaction-team-members
|
||||||
[canAdd]="false"
|
(remove)="toggleSelected($event)"
|
||||||
[canRemove]="!disabled"
|
[canAdd]="false"
|
||||||
[dossierId]="dossier.dossierId"
|
[canRemove]="!disabled"
|
||||||
[largeSpacing]="true"
|
[dossierId]="dossier.dossierId"
|
||||||
[memberIds]="selectedReviewers$ | async"
|
[largeSpacing]="true"
|
||||||
[perLine]="13"
|
[memberIds]="selectedApproversList"
|
||||||
[unremovableMembers]="[selectedOwnerId]"
|
[perLine]="13"
|
||||||
></redaction-team-members>
|
[unremovableMembers]="[selectedOwnerId]"
|
||||||
|
></redaction-team-members>
|
||||||
|
</ng-container>
|
||||||
|
|
||||||
<ng-container *ngIf="(selectedReviewers$ | async).length === 0">
|
<ng-container *ngIf="(selectedReviewers$ | async)?.length">
|
||||||
|
<div class="all-caps-label mt-16" translate="assign-dossier-owner.dialog.reviewers"></div>
|
||||||
|
<redaction-team-members
|
||||||
|
(remove)="toggleSelected($event)"
|
||||||
|
[canAdd]="false"
|
||||||
|
[canRemove]="!disabled"
|
||||||
|
[dossierId]="dossier.dossierId"
|
||||||
|
[largeSpacing]="true"
|
||||||
|
[memberIds]="selectedReviewers$ | async"
|
||||||
|
[perLine]="13"
|
||||||
|
[unremovableMembers]="[selectedOwnerId]"
|
||||||
|
></redaction-team-members>
|
||||||
|
</ng-container>
|
||||||
|
|
||||||
|
<ng-container *ngIf="!userService.currentUser.isManager">
|
||||||
<div class="info mt-4">{{ 'assign-dossier-owner.dialog.no-reviewers' | translate }}</div>
|
<div class="info mt-4">{{ 'assign-dossier-owner.dialog.no-reviewers' | translate }}</div>
|
||||||
<div *ngIf="!disabled" class="info">{{ 'assign-dossier-owner.dialog.select-below' | translate }}</div>
|
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
<ng-container *ngIf="!disabled">
|
<ng-container *ngIf="!disabled">
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import { Dossier, IDossierRequest } from '@red/domain';
|
|||||||
import { AutoUnsubscribe } from '@iqser/common-ui';
|
import { AutoUnsubscribe } from '@iqser/common-ui';
|
||||||
import { EditDossierSaveResult, EditDossierSectionInterface } from '../edit-dossier-section.interface';
|
import { EditDossierSaveResult, EditDossierSectionInterface } from '../edit-dossier-section.interface';
|
||||||
import { BehaviorSubject, firstValueFrom } from 'rxjs';
|
import { BehaviorSubject, firstValueFrom } from 'rxjs';
|
||||||
|
import { PermissionsService } from '@services/permissions.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'redaction-edit-dossier-team',
|
selector: 'redaction-edit-dossier-team',
|
||||||
@ -19,14 +20,16 @@ export class EditDossierTeamComponent extends AutoUnsubscribe implements EditDos
|
|||||||
|
|
||||||
@Input() dossier: Dossier;
|
@Input() dossier: Dossier;
|
||||||
|
|
||||||
readonly ownersSelectOptions = this.userService.managerUsers.map(m => m.id);
|
|
||||||
membersSelectOptions: string[] = [];
|
membersSelectOptions: string[] = [];
|
||||||
|
|
||||||
|
readonly ownersSelectOptions = this.userService.managerUsers.map(m => m.id);
|
||||||
readonly selectedReviewers$ = new BehaviorSubject<string[]>([]);
|
readonly selectedReviewers$ = new BehaviorSubject<string[]>([]);
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
readonly userService: UserService,
|
readonly userService: UserService,
|
||||||
private readonly _formBuilder: FormBuilder,
|
private readonly _formBuilder: FormBuilder,
|
||||||
private readonly _dossiersService: DossiersService,
|
private readonly _dossiersService: DossiersService,
|
||||||
|
private readonly _permissionsService: PermissionsService,
|
||||||
) {
|
) {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
@ -48,7 +51,7 @@ export class EditDossierTeamComponent extends AutoUnsubscribe implements EditDos
|
|||||||
}
|
}
|
||||||
|
|
||||||
get disabled() {
|
get disabled() {
|
||||||
return !this.userService.currentUser.isManager;
|
return !this.userService.currentUser.isManager || !this.form.get('owner').value;
|
||||||
}
|
}
|
||||||
|
|
||||||
get changed() {
|
get changed() {
|
||||||
@ -149,7 +152,7 @@ export class EditDossierTeamComponent extends AutoUnsubscribe implements EditDos
|
|||||||
owner: [
|
owner: [
|
||||||
{
|
{
|
||||||
value: this.dossier?.ownerId,
|
value: this.dossier?.ownerId,
|
||||||
disabled: this.disabled,
|
disabled: !this.userService.currentUser.isManager,
|
||||||
},
|
},
|
||||||
Validators.required,
|
Validators.required,
|
||||||
],
|
],
|
||||||
|
|||||||
@ -53,7 +53,7 @@
|
|||||||
<mat-checkbox
|
<mat-checkbox
|
||||||
(change)="hasDueDate = !hasDueDate"
|
(change)="hasDueDate = !hasDueDate"
|
||||||
[checked]="hasDueDate"
|
[checked]="hasDueDate"
|
||||||
[disabled]="!permissionsService.canEditDossier()"
|
[disabled]="!permissionsService.canEditDossier(dossier)"
|
||||||
class="filter-menu-checkbox"
|
class="filter-menu-checkbox"
|
||||||
color="primary"
|
color="primary"
|
||||||
>
|
>
|
||||||
|
|||||||
@ -69,7 +69,7 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti
|
|||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this._filterInvalidDossierTemplates();
|
this._filterInvalidDossierTemplates();
|
||||||
this.form = this._getForm();
|
this.form = this._getForm();
|
||||||
if (!this.permissionsService.canEditDossier()) {
|
if (!this.permissionsService.canEditDossier(this.dossier)) {
|
||||||
this.form.disable();
|
this.form.disable();
|
||||||
}
|
}
|
||||||
this.hasDueDate = !!this.dossier.dueDate;
|
this.hasDueDate = !!this.dossier.dueDate;
|
||||||
|
|||||||
@ -123,8 +123,8 @@ export class PermissionsService {
|
|||||||
return dossier.ownerId === this._userService.currentUser.id;
|
return dossier.ownerId === this._userService.currentUser.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
canEditDossier(user = this._userService.currentUser) {
|
canEditDossier(dossier: Dossier, user = this._userService.currentUser): boolean {
|
||||||
return user.isManager;
|
return user.isManager && !!dossier?.ownerId;
|
||||||
}
|
}
|
||||||
|
|
||||||
isAdmin(user = this._userService.currentUser): boolean {
|
isAdmin(user = this._userService.currentUser): boolean {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user