diff --git a/docs/process-services-cloud/services/task-cloud.service.md b/docs/process-services-cloud/services/task-cloud.service.md index 1f1db0a056..14bd33147f 100644 --- a/docs/process-services-cloud/services/task-cloud.service.md +++ b/docs/process-services-cloud/services/task-cloud.service.md @@ -79,6 +79,12 @@ Manages task cloud. - _taskId:_ `string` - ID of the task to update - _payload:_ `any` - Data to update the task - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts)`>` - Updated task details +- **assign**(appName: `string`, taskId: `string`, assignee: `string`): [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts)`>`
+ Changes assignee of the user task. + - _appName:_ `string` - Name of the app + - _taskId:_ `string` - ID of the task to update assignee + - _assignee:_ `string` - assignee to update current user task assignee + - **Returns** [`Observable`](http://reactivex.io/documentation/observable.html)`<`[`TaskDetailsCloudModel`](../../../lib/process-services-cloud/src/lib/task/start-task/models/task-details-cloud.model.ts)`>` - Updated task details ## Details 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 5840ab4efc..34e5f53fb5 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 @@ -410,4 +410,40 @@ describe('Task Cloud Service', () => { done(); }); }); + + it('should call assign api and return updated task details', (done) => { + const appName = 'task-app'; + const taskId = '68d54a8f'; + spyOn(alfrescoApiMock, 'getInstance').and.callFake(returnFakeTaskDetailsResults); + service.assign(appName, taskId, 'Phil Woods').subscribe( + (res) => { + expect(res.assignee).toBe('Phil Woods'); + done(); + }); + }); + + it('should throw error if appName is not defined when changing task assignee', (done) => { + const appName = ''; + const taskId = '68d54a8f'; + spyOn(alfrescoApiMock, 'getInstance').and.callFake(returnFakeTaskDetailsResults); + service.assign(appName, taskId, 'mock-assignee').subscribe( + () => { }, + (error) => { + expect(error).toBe('AppName/TaskId not configured'); + done(); + }); + }); + + it('should throw error if taskId is not defined when changing task assignee', (done) => { + const appName = 'task-app'; + const taskId = ''; + spyOn(alfrescoApiMock, 'getInstance').and.callFake(returnFakeTaskDetailsResults); + service.assign(appName, taskId, 'mock-assignee').subscribe( + () => { }, + (error) => { + expect(error).toBe('AppName/TaskId not configured'); + done(); + }); + }); + }); 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 9507f44790..c7098ef11f 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 @@ -257,6 +257,29 @@ export class TaskCloudService extends BaseCloudService { } } + /** + * Updates the task assignee. + * @param appName Name of the app + * @param taskId ID of the task to update assignee + * @param assignee assignee to update current user task assignee + * @returns Updated task details with new assignee + */ + assign(appName: string, taskId: string, assignee: string): Observable { + if (appName && taskId) { + const payLoad = { 'assignee': assignee, 'taskId': taskId, 'payloadType': 'AssignTaskPayload' }; + const url = `${this.getBasePath(appName)}/rb/v1/tasks/${taskId}/assign`; + + return this.post(url, payLoad).pipe( + map((res: any) => { + return res.entry; + }) + ); + } else { + this.logService.error('AppName and TaskId are mandatory to change/update the task assignee'); + return throwError('AppName/TaskId not configured'); + } + } + private isAssignedToMe(assignee: string): boolean { const currentUser = this.identityUserService.getCurrentUserInfo().username; return assignee === currentUser;