From 4a363c731be09d8213e25cd149bee302ebcbeb82 Mon Sep 17 00:00:00 2001 From: Silviu Popa Date: Tue, 14 May 2019 17:30:35 +0300 Subject: [PATCH] [ADF-4471] TaskCloud - disable editable fields when the task is unclaimed (#4680) * [ADF-4471] TaskCloud - task header disabled when the task is unclaimed * [ADF-4471] - fix unit test * [ADF-4471] - pr changes * [ADF-4471] - add return type --- .../task/services/task-cloud.service.spec.ts | 5 +++++ .../src/lib/task/services/task-cloud.service.ts | 17 +++++++++++++++-- .../components/task-header-cloud.component.html | 3 +-- .../components/task-header-cloud.component.ts | 10 +++++++--- 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/lib/process-services-cloud/src/lib/task/services/task-cloud.service.spec.ts b/lib/process-services-cloud/src/lib/task/services/task-cloud.service.spec.ts index 911646e164..b203b2b6cf 100644 --- a/lib/process-services-cloud/src/lib/task/services/task-cloud.service.spec.ts +++ b/lib/process-services-cloud/src/lib/task/services/task-cloud.service.spec.ts @@ -113,6 +113,11 @@ describe('Task Cloud Service', () => { expect(canCompleteTaskResult).toEqual(false); }); + it('should verify if the task is editable', () => { + const isTaskEditable = service.isTaskEditable(assignedTaskDetailsCloudMock); + expect(isTaskEditable).toEqual(true); + }); + it('should complete task with owner as null', async(() => { const appName = 'simple-app'; const taskId = '68d54a8f'; diff --git a/lib/process-services-cloud/src/lib/task/services/task-cloud.service.ts b/lib/process-services-cloud/src/lib/task/services/task-cloud.service.ts index 4763ef28d3..8ca9bbca7d 100644 --- a/lib/process-services-cloud/src/lib/task/services/task-cloud.service.ts +++ b/lib/process-services-cloud/src/lib/task/services/task-cloud.service.ts @@ -76,8 +76,16 @@ export class TaskCloudService extends BaseCloudService { * @returns Boolean value if the task can be completed */ canCompleteTask(taskDetails: TaskDetailsCloudModel): boolean { - const currentUser = this.identityUserService.getCurrentUserInfo().username; - return taskDetails && taskDetails.assignee && taskDetails.assignee === currentUser && taskDetails.isAssigned(); + return taskDetails && taskDetails.isAssigned() && this.isAssignedToMe(taskDetails.assignee); + } + + /** + * Validate if a task is editable. + * @param taskDetails task details object + * @returns Boolean value if the task is editable + */ + isTaskEditable(taskDetails: TaskDetailsCloudModel): boolean { + return taskDetails && taskDetails.isAssigned() && this.isAssignedToMe(taskDetails.assignee); } /** @@ -211,6 +219,11 @@ export class TaskCloudService extends BaseCloudService { } } + private isAssignedToMe(assignee: string): boolean { + const currentUser = this.identityUserService.getCurrentUserInfo().username; + return assignee === currentUser; + } + private buildCompleteTaskUrl(appName: string, taskId: string): string { return `${this.getBasePath(appName)}/rb/v1/tasks/${taskId}/complete`; } diff --git a/lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.html b/lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.html index eb21f20d68..f9fa6a5382 100644 --- a/lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.html +++ b/lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.html @@ -5,9 +5,8 @@ + [editable]="isTaskEditable()"> - diff --git a/lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.ts b/lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.ts index 0e255dff67..06eb89d484 100644 --- a/lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/task/task-header/components/task-header-cloud.component.ts @@ -230,14 +230,18 @@ export class TaskHeaderCloudComponent implements OnInit, OnDestroy { return !!this.taskDetails.assignee ? true : false; } - isTaskValid() { - return (this.appName || this.appName === '') && this.taskId; + isTaskValid(): boolean { + return (this.appName || this.appName === '') && !!this.taskId; } - isTaskAssigned() { + isTaskAssigned(): boolean { return this.taskDetails.assignee !== undefined; } + isTaskEditable(): boolean { + return this.taskCloudService.isTaskEditable(this.taskDetails); + } + private isValidSelection(filteredProperties: string[], cardItem: CardViewBaseItemModel): boolean { return filteredProperties ? filteredProperties.indexOf(cardItem.key) >= 0 : true; }