From e151c5c3544b7f240f30e1b4913f4384b2e324bc Mon Sep 17 00:00:00 2001 From: bezak Date: Thu, 15 Jan 2026 14:53:31 +0100 Subject: [PATCH 1/8] [NAE-2354] Include assignee userRealmId in task response - include userRealmId in Task resource interface --- .../netgrif-components-core/src/lib/resources/interface/task.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/netgrif-components-core/src/lib/resources/interface/task.ts b/projects/netgrif-components-core/src/lib/resources/interface/task.ts index 08bce8ad8..038caa3ab 100644 --- a/projects/netgrif-components-core/src/lib/resources/interface/task.ts +++ b/projects/netgrif-components-core/src/lib/resources/interface/task.ts @@ -30,6 +30,7 @@ export interface Task { * See [UserSmall]{@link UserResourceSmall#} */ userId: string; + userRealmId?: string; /** * ***Example:*** * From eb2c92867a514184813d536971262229d1472511 Mon Sep 17 00:00:00 2001 From: bezak Date: Tue, 3 Feb 2026 15:34:12 +0100 Subject: [PATCH 2/8] [NAE-2354] Include assignee userRealmId in task response - refactor Task to contain a new interface instead of just userId --- .../permission/permission.service.ts | 10 +++---- .../abstract-task-panel.component.ts | 2 +- .../src/lib/resources/interface/assignee.ts | 29 +++++++++++++++++++ .../src/lib/resources/interface/task.ts | 6 ++-- .../services/task-content.service.ts | 2 +- .../task/services/assign-policy.service.ts | 2 +- .../lib/task/services/assign-task.service.ts | 2 +- .../task/services/cancel-task.service.spec.ts | 16 +++++----- .../task/services/delegate-task.service.ts | 4 +-- .../task/services/finish-policy.service.ts | 2 +- .../task/services/task-data.service.spec.ts | 4 +-- .../lib/task/services/task-data.service.ts | 6 ++-- .../utility/tests/utility/create-mock-task.ts | 2 +- .../task-view/service/task-view.service.ts | 8 ++--- .../tree-task-content.service.ts | 4 +-- 15 files changed, 64 insertions(+), 35 deletions(-) create mode 100644 projects/netgrif-components-core/src/lib/resources/interface/assignee.ts diff --git a/projects/netgrif-components-core/src/lib/authorization/permission/permission.service.ts b/projects/netgrif-components-core/src/lib/authorization/permission/permission.service.ts index 803e6672e..cfa363356 100644 --- a/projects/netgrif-components-core/src/lib/authorization/permission/permission.service.ts +++ b/projects/netgrif-components-core/src/lib/authorization/permission/permission.service.ts @@ -61,21 +61,21 @@ export class PermissionService { && ( ( task.assignPolicy === AssignPolicy.manual - && !task.userId + && !task.assignee && this.hasTaskPermission(task, PermissionType.ASSIGN) ) ); } public canCancel(task: Task | undefined): boolean { - return !!task && !!task.userId + return !!task && !!task.assignee && this.hasTaskPermission(task, PermissionType.CANCEL) && ((task.assignedUserPolicy === undefined || task.assignedUserPolicy.cancel === undefined) || task.assignedUserPolicy.cancel); } public canReassign(task: Task | undefined): boolean { - return !!task && !!task.userId && this.userComparator.compareUsers(task.userId) + return !!task && !!task.assignee && this.userComparator.compareUsers(task.assignee.id) && this.hasTaskPermission(task, PermissionType.DELEGATE) && ((task.assignedUserPolicy === undefined || task.assignedUserPolicy.reassign === undefined) || task.assignedUserPolicy.reassign); @@ -83,8 +83,8 @@ export class PermissionService { public canFinish(task: Task | undefined): boolean { return !!task - && !!task.userId - && this.userComparator.compareUsers(task.userId) + && !!task.assignee + && this.userComparator.compareUsers(task.assignee.id) && this.hasTaskPermission(task, PermissionType.FINISH); } diff --git a/projects/netgrif-components-core/src/lib/panel/task-panel/abstract-task-panel.component.ts b/projects/netgrif-components-core/src/lib/panel/task-panel/abstract-task-panel.component.ts index ffdd166c2..90e9f6375 100644 --- a/projects/netgrif-components-core/src/lib/panel/task-panel/abstract-task-panel.component.ts +++ b/projects/netgrif-components-core/src/lib/panel/task-panel/abstract-task-panel.component.ts @@ -425,7 +425,7 @@ export abstract class AbstractTaskPanelComponent extends AbstractPanelWithImmedi return {value: 'low', icon: 'south', type: 'meta'}; case TaskMetaField.USER: //TODO: refactor after User refactor PR is merged - return {value: task.userId ? task.userId : '', icon: 'account_circle', type: 'meta'}; + return {value: task.assignee ? task.assignee.fullName : '', icon: 'account_circle', type: 'meta'}; case TaskMetaField.ASSIGN_DATE: return { value: task.startDate ? toMoment(task.startDate).format(DATE_TIME_FORMAT_STRING) : '', diff --git a/projects/netgrif-components-core/src/lib/resources/interface/assignee.ts b/projects/netgrif-components-core/src/lib/resources/interface/assignee.ts new file mode 100644 index 000000000..31f8f8ed6 --- /dev/null +++ b/projects/netgrif-components-core/src/lib/resources/interface/assignee.ts @@ -0,0 +1,29 @@ +/** + * Object from Backend + */ +export interface Assignee { + + /** + * **Example:** 68187906482dcc38f6641bff + */ + id: string; + + /** + * **Example:** Admin + */ + realmId: string; + + /** + * Username of user + * + * **Example:** admin + */ + username: string; + + /** + * First name + " " + Surname + * + * **Example:** Example Netgrif + */ + fullName: string; +} diff --git a/projects/netgrif-components-core/src/lib/resources/interface/task.ts b/projects/netgrif-components-core/src/lib/resources/interface/task.ts index 038caa3ab..35baa74a7 100644 --- a/projects/netgrif-components-core/src/lib/resources/interface/task.ts +++ b/projects/netgrif-components-core/src/lib/resources/interface/task.ts @@ -6,6 +6,7 @@ import {UserResourceSmall} from './user-resource-small'; import {ImmediateData} from './immediate-data'; import {AssignedUserPolicy} from './assigned-user-policy'; import {Permissions, UserPermissions, UserRefs} from '../../process/permissions'; +import {Assignee} from "./assignee"; /** * Object from Backend @@ -27,10 +28,9 @@ export interface Task { caseColor: string; caseTitle: string; /** - * See [UserSmall]{@link UserResourceSmall#} + * Assignee of task if task is assigned, otherwise undefined */ - userId: string; - userRealmId?: string; + assignee: Assignee; /** * ***Example:*** * diff --git a/projects/netgrif-components-core/src/lib/task-content/services/task-content.service.ts b/projects/netgrif-components-core/src/lib/task-content/services/task-content.service.ts index 33666ea35..a00d3434e 100644 --- a/projects/netgrif-components-core/src/lib/task-content/services/task-content.service.ts +++ b/projects/netgrif-components-core/src/lib/task-content/services/task-content.service.ts @@ -208,7 +208,7 @@ export abstract class TaskContentService implements OnDestroy { */ public updateStateData(eventOutcome: TaskEventOutcome): void { if (this._task) { - this._task.userId = eventOutcome.task.userId; + this._task.assignee = eventOutcome.task.assignee; this._task.startDate = eventOutcome.task.startDate; this._task.finishDate = eventOutcome.task.finishDate; } diff --git a/projects/netgrif-components-core/src/lib/task/services/assign-policy.service.ts b/projects/netgrif-components-core/src/lib/task/services/assign-policy.service.ts index 87a9d0444..d2ec6e715 100644 --- a/projects/netgrif-components-core/src/lib/task/services/assign-policy.service.ts +++ b/projects/netgrif-components-core/src/lib/task/services/assign-policy.service.ts @@ -134,7 +134,7 @@ export class AssignPolicyService extends TaskHandlingService { * @param afterAction the action that should be performed when the assign policy (and all following policies) finishes */ protected autoAssignClosedPolicy(afterAction: Subject): void { - if (!this._userComparatorService.compareUsers(this._task.userId)) { + if (!this._userComparatorService.compareUsers(this._task.assignee?.id)) { this._taskOperations.close(); afterAction.next(false); afterAction.complete(); diff --git a/projects/netgrif-components-core/src/lib/task/services/assign-task.service.ts b/projects/netgrif-components-core/src/lib/task/services/assign-task.service.ts index 4855d8267..f5fbf85f5 100644 --- a/projects/netgrif-components-core/src/lib/task/services/assign-task.service.ts +++ b/projects/netgrif-components-core/src/lib/task/services/assign-task.service.ts @@ -68,7 +68,7 @@ export class AssignTaskService extends TaskHandlingService { public assign(afterAction: AfterAction = new AfterAction()): void { this._eventQueue.scheduleEvent(new QueuedEvent( () => { - return !this._safeTask.userId; + return !this._safeTask.assignee; }, nextEvent => { this.performAssignRequest(afterAction, nextEvent, this._taskViewService !== null && !this._taskViewService.allowMultiOpen); diff --git a/projects/netgrif-components-core/src/lib/task/services/cancel-task.service.spec.ts b/projects/netgrif-components-core/src/lib/task/services/cancel-task.service.spec.ts index 6c88a5083..686496ae4 100644 --- a/projects/netgrif-components-core/src/lib/task/services/cancel-task.service.spec.ts +++ b/projects/netgrif-components-core/src/lib/task/services/cancel-task.service.spec.ts @@ -76,7 +76,7 @@ describe('CancelTaskService', () => { title: '', caseColor: '', caseTitle: '', - userId: 'id', + assignee: {id: 'id', realmId: 'realmId', fullName: 'Name Name', username: 'username'}, roles: { role: { assign: true, @@ -111,7 +111,7 @@ describe('CancelTaskService', () => { it('should cancel successfully', done => { expect(testTask.startDate).toBeTruthy(); - expect(testTask.userId).toBeTruthy(); + expect(testTask.assignee).toBeTruthy(); resourceService.response = { success: 'success', outcome: { @@ -123,7 +123,7 @@ describe('CancelTaskService', () => { title: '', caseColor: '', caseTitle: '', - userId: '', + assignee: null, roles: { role: { assign: true, @@ -158,7 +158,7 @@ describe('CancelTaskService', () => { service.cancel(callChainService.create((result) => { expect(result).toBeTrue(); expect(testTask.startDate).toBeFalsy(); - expect(testTask.userId).toBeFalsy(); + expect(testTask.assignee).toBeFalsy(); expect(taskEvent).toBeTruthy(); expect(taskEvent.taskId).toEqual('taskId'); @@ -171,7 +171,7 @@ describe('CancelTaskService', () => { it('should cancel unsuccessful', done => { expect(testTask.startDate).toBeTruthy(); - expect(testTask.userId).toBeTruthy(); + expect(testTask.assignee).toBeTruthy(); resourceService.response = { error: 'error', outcome: {} @@ -185,7 +185,7 @@ describe('CancelTaskService', () => { service.cancel(callChainService.create((result) => { expect(result).toBeFalse(); expect(testTask.startDate).toBeTruthy(); - expect(testTask.userId).toBeTruthy(); + expect(testTask.assignee).toBeTruthy(); expect(taskEvent).toBeTruthy(); expect(taskEvent.taskId).toEqual('taskId'); @@ -198,7 +198,7 @@ describe('CancelTaskService', () => { it('should cancel error', done => { expect(testTask.startDate).toBeTruthy(); - expect(testTask.userId).toBeTruthy(); + expect(testTask.assignee).toBeTruthy(); resourceService.response = {error: 'throw'}; let taskEvent: TaskEventNotification; @@ -209,7 +209,7 @@ describe('CancelTaskService', () => { service.cancel(callChainService.create((result) => { expect(result).toBeFalse(); expect(testTask.startDate).toBeTruthy(); - expect(testTask.userId).toBeTruthy(); + expect(testTask.assignee).toBeTruthy(); expect(taskEvent).toBeTruthy(); expect(taskEvent.taskId).toEqual('taskId'); diff --git a/projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts b/projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts index cbb27207f..aa3bf3373 100644 --- a/projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts +++ b/projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts @@ -77,8 +77,8 @@ export class DelegateTaskService extends TaskHandlingService { { roles: Object.keys(this._safeTask.roles).filter(role => this._safeTask.roles[role]['assign'] !== undefined && this._safeTask.roles[role]['assign']), - value: !this._safeTask.userId ? undefined : new UserValue( - this._safeTask.userId, '', '', '', '' + value: !this._safeTask.assignee ? undefined : new UserValue( + this._safeTask.assignee.id, this._safeTask.assignee.realmId, this._safeTask.assignee.fullName.split(' ')[0], this._safeTask.assignee.fullName.split(' ')[1], this._safeTask.assignee.username ), negativeRoles: Object.keys(this._safeTask.roles).filter(role => this._safeTask.roles[role]['assign'] !== undefined && !this._safeTask.roles[role]['assign']) diff --git a/projects/netgrif-components-core/src/lib/task/services/finish-policy.service.ts b/projects/netgrif-components-core/src/lib/task/services/finish-policy.service.ts index 2c471a544..bfa4fa19c 100644 --- a/projects/netgrif-components-core/src/lib/task/services/finish-policy.service.ts +++ b/projects/netgrif-components-core/src/lib/task/services/finish-policy.service.ts @@ -27,7 +27,7 @@ export class FinishPolicyService extends TaskHandlingService { * @param afterAction the action that should be performed when the finish policy finishes */ public performFinishPolicy(afterAction: AfterAction = new AfterAction()): void { - if (this._safeTask.finishPolicy === FinishPolicy.autoNoData && !!this._safeTask.userId) { + if (this._safeTask.finishPolicy === FinishPolicy.autoNoData && !!this._safeTask.assignee) { this.autoNoDataFinishPolicy(afterAction); } else { this.manualFinishPolicy(afterAction); diff --git a/projects/netgrif-components-core/src/lib/task/services/task-data.service.spec.ts b/projects/netgrif-components-core/src/lib/task/services/task-data.service.spec.ts index c0aada15b..c5d357e07 100644 --- a/projects/netgrif-components-core/src/lib/task/services/task-data.service.spec.ts +++ b/projects/netgrif-components-core/src/lib/task/services/task-data.service.spec.ts @@ -151,7 +151,7 @@ describe('TaskDataService', () => { done(); }); - taskContentService.task.userId = ''; + taskContentService.task.assignee = null; mockField.value = !mockField.value; } @@ -196,7 +196,7 @@ describe('TaskDataService', () => { } }); - taskContentService.task.userId = ''; + taskContentService.task.assignee = null; mockField1.value = !mockField1.value; mockField2.value = !mockField2.value; diff --git a/projects/netgrif-components-core/src/lib/task/services/task-data.service.ts b/projects/netgrif-components-core/src/lib/task/services/task-data.service.ts index de6fc4e1e..26b12e647 100644 --- a/projects/netgrif-components-core/src/lib/task/services/task-data.service.ts +++ b/projects/netgrif-components-core/src/lib/task/services/task-data.service.ts @@ -282,7 +282,7 @@ export class TaskDataService extends TaskHandlingService implements OnDestroy { return; } - if (this._safeTask.userId === undefined) { + if (this._safeTask.assignee === undefined) { this._log.debug('current task is not assigned...'); afterAction.resolve(false); return; @@ -367,10 +367,10 @@ export class TaskDataService extends TaskHandlingService implements OnDestroy { if (!this.isTaskPresent()) { return false; } - if (this._safeTask.userId === undefined) { + if (this._safeTask.assignee === undefined) { return false; } - if (!this._userComparator.compareUsers(this._safeTask.userId)) { + if (!this._userComparator.compareUsers(this._safeTask.assignee.id)) { return false; } const taskIdsInRequest: Array = Object.keys(request); diff --git a/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-task.ts b/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-task.ts index 98dd509f5..d82eadff1 100644 --- a/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-task.ts +++ b/projects/netgrif-components-core/src/lib/utility/tests/utility/create-mock-task.ts @@ -17,7 +17,7 @@ export function createMockTask(stringId = 'stringId', title, caseColor: 'string', caseTitle: 'string', - userId: undefined, + assignee: undefined, roles: {}, users: {}, userRefs: {}, diff --git a/projects/netgrif-components-core/src/lib/view/task-view/service/task-view.service.ts b/projects/netgrif-components-core/src/lib/view/task-view/service/task-view.service.ts index 77e251da3..8737f6217 100644 --- a/projects/netgrif-components-core/src/lib/view/task-view/service/task-view.service.ts +++ b/projects/netgrif-components-core/src/lib/view/task-view/service/task-view.service.ts @@ -114,8 +114,8 @@ export class TaskViewService extends AbstractSortableViewComponent implements On pageLoadResult.tasks[taskId].task.dataGroups = acc[taskId].task.dataGroups; pageLoadResult.tasks[taskId].initiallyExpanded = acc[taskId].initiallyExpanded; this.updateTask(acc[taskId].task, pageLoadResult.tasks[taskId].task); - this.blockTaskFields(acc[taskId].task, !(acc[taskId].task.userId - && this._userComparator.compareUsers(acc[taskId].task.userId))); + this.blockTaskFields(acc[taskId].task, !(acc[taskId].task.assignee + && this._userComparator.compareUsers(acc[taskId].task.assignee.id))); if (!this._paginationView) { delete pageLoadResult.tasks[taskId]; } @@ -261,7 +261,7 @@ export class TaskViewService extends AbstractSortableViewComponent implements On map(tasks => Array.isArray(tasks.content) ? tasks : {...tasks, content: []}), map(tasks => { return tasks.content.reduce((acc, curr) => { - this.blockTaskFields(curr, !(curr.userId && this._userComparator.compareUsers(curr.userId))); + this.blockTaskFields(curr, !(curr.assignee && this._userComparator.compareUsers(curr.assignee.id))); return { ...acc, [curr.stringId]: { task: curr, @@ -286,7 +286,7 @@ export class TaskViewService extends AbstractSortableViewComponent implements On old[key] = neww[key]; } }); - this.blockTaskFields(old, !(old.userId && this._userComparator.compareUsers(old.userId))); + this.blockTaskFields(old, !(old.assignee && this._userComparator.compareUsers(old.assignee.id))); } private blockTaskFields(task: Task, block: boolean): void { diff --git a/projects/netgrif-components-core/src/lib/view/tree-case-view/tree-task-content/tree-task-content.service.ts b/projects/netgrif-components-core/src/lib/view/tree-case-view/tree-task-content/tree-task-content.service.ts index 687391022..e71e58f29 100644 --- a/projects/netgrif-components-core/src/lib/view/tree-case-view/tree-task-content/tree-task-content.service.ts +++ b/projects/netgrif-components-core/src/lib/view/tree-case-view/tree-task-content/tree-task-content.service.ts @@ -256,8 +256,8 @@ export class TreeTaskContentService implements OnDestroy { */ protected resolveTaskBlockState(): void { const taskShouldBeBlocked = !this._taskContentService.task - || this._taskContentService.task.userId === undefined - || !this._userComparator.compareUsers(this._taskContentService.task.userId); + || this._taskContentService.task.assignee === undefined + || !this._userComparator.compareUsers(this._taskContentService.task.assignee?.id); this._taskContentService.blockFields(taskShouldBeBlocked); } From 95d0ae9f2d42906e7c136f34adaa0fc723cc9297 Mon Sep 17 00:00:00 2001 From: bezak Date: Tue, 3 Feb 2026 16:14:41 +0100 Subject: [PATCH 3/8] [NAE-2354] Include assignee userRealmId in task response - add export to public-api.ts --- projects/netgrif-components-core/src/lib/resources/public-api.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/netgrif-components-core/src/lib/resources/public-api.ts b/projects/netgrif-components-core/src/lib/resources/public-api.ts index 6ee3de710..8b901b423 100644 --- a/projects/netgrif-components-core/src/lib/resources/public-api.ts +++ b/projects/netgrif-components-core/src/lib/resources/public-api.ts @@ -14,6 +14,7 @@ export * from './engine-endpoint/public/public-petri-net-resource.service'; export * from './engine-endpoint/public/public-task-resource.service'; export * from './interface/author'; +export * from './interface/assignee'; export * from './interface/immediate-data'; export * from './interface/response-data'; export * from './interface/case'; From 26e311b11bc4657f299a8d523b43fbb455be02f3 Mon Sep 17 00:00:00 2001 From: bezak Date: Tue, 3 Feb 2026 16:16:58 +0100 Subject: [PATCH 4/8] [NAE-2354] Include assignee userRealmId in task response - make assignee optional in Task --- .../netgrif-components-core/src/lib/resources/interface/task.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/netgrif-components-core/src/lib/resources/interface/task.ts b/projects/netgrif-components-core/src/lib/resources/interface/task.ts index 35baa74a7..d423f43be 100644 --- a/projects/netgrif-components-core/src/lib/resources/interface/task.ts +++ b/projects/netgrif-components-core/src/lib/resources/interface/task.ts @@ -30,7 +30,7 @@ export interface Task { /** * Assignee of task if task is assigned, otherwise undefined */ - assignee: Assignee; + assignee?: Assignee; /** * ***Example:*** * From c327505901dcf2a4cbb8abb3dfb4b447be7d7160 Mon Sep 17 00:00:00 2001 From: bezak Date: Tue, 3 Feb 2026 17:02:52 +0100 Subject: [PATCH 5/8] [NAE-2354] Include assignee userRealmId in task response - implement coderabbit suggestion --- .../src/lib/task/services/delegate-task.service.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts b/projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts index aa3bf3373..17091db69 100644 --- a/projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts +++ b/projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts @@ -78,7 +78,11 @@ export class DelegateTaskService extends TaskHandlingService { roles: Object.keys(this._safeTask.roles).filter(role => this._safeTask.roles[role]['assign'] !== undefined && this._safeTask.roles[role]['assign']), value: !this._safeTask.assignee ? undefined : new UserValue( - this._safeTask.assignee.id, this._safeTask.assignee.realmId, this._safeTask.assignee.fullName.split(' ')[0], this._safeTask.assignee.fullName.split(' ')[1], this._safeTask.assignee.username + this._safeTask.assignee.id, + this._safeTask.assignee.realmId, + this._safeTask.assignee.fullName?.split(' ')[0] ?? '', + this._safeTask.assignee.fullName?.split(' ').slice(1).join(' ') ?? '', + this._safeTask.assignee.username ), negativeRoles: Object.keys(this._safeTask.roles).filter(role => this._safeTask.roles[role]['assign'] !== undefined && !this._safeTask.roles[role]['assign']) From 71a403130553430f94b0a48d935b9eccdd60be4a Mon Sep 17 00:00:00 2001 From: bezak Date: Wed, 4 Feb 2026 10:43:44 +0100 Subject: [PATCH 6/8] [NAE-2354] Include assignee userRealmId in task response - fix mock Task properties for tests (userId replaced with assignee) --- .../authorization/permission/permission.service.spec.ts | 8 ++++---- .../task-panel/abstract-task-panel.component.spec.ts | 6 +++--- .../src/lib/task/services/assign-policy.service.spec.ts | 2 +- .../src/lib/task/services/assign-task.service.spec.ts | 2 +- .../src/lib/task/services/finish-task.service.spec.ts | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/projects/netgrif-components-core/src/lib/authorization/permission/permission.service.spec.ts b/projects/netgrif-components-core/src/lib/authorization/permission/permission.service.spec.ts index 37ee63bbe..d7dabef01 100644 --- a/projects/netgrif-components-core/src/lib/authorization/permission/permission.service.spec.ts +++ b/projects/netgrif-components-core/src/lib/authorization/permission/permission.service.spec.ts @@ -49,7 +49,7 @@ describe('PermissionService', () => { title: 'string', caseColor: 'string', caseTitle: 'string', - userId: undefined, + assignee: undefined, roles: { assignRole: { assign: true, @@ -83,7 +83,7 @@ describe('PermissionService', () => { title: 'string', caseColor: 'string', caseTitle: 'string', - userId: undefined, + assignee: undefined, roles: { assignRole: { assign: false, @@ -117,7 +117,7 @@ describe('PermissionService', () => { title: 'string', caseColor: 'string', caseTitle: 'string', - userId: undefined, + assignee: undefined, roles: {}, startDate: undefined, finishDate: undefined, @@ -155,7 +155,7 @@ describe('PermissionService', () => { title: 'string', caseColor: 'string', caseTitle: 'string', - userId: undefined, + assignee: undefined, roles: {}, startDate: undefined, finishDate: undefined, diff --git a/projects/netgrif-components-core/src/lib/panel/task-panel/abstract-task-panel.component.spec.ts b/projects/netgrif-components-core/src/lib/panel/task-panel/abstract-task-panel.component.spec.ts index 0253c0532..e64aea6df 100644 --- a/projects/netgrif-components-core/src/lib/panel/task-panel/abstract-task-panel.component.spec.ts +++ b/projects/netgrif-components-core/src/lib/panel/task-panel/abstract-task-panel.component.spec.ts @@ -242,7 +242,7 @@ class TestWrapperComponent { delegateTitle: 'string', caseColor: 'string', caseTitle: 'string', - userId: undefined, + assignee: undefined, roles: {}, startDate: undefined, finishDate: undefined, @@ -293,7 +293,7 @@ class MyTaskResources { title: 'string', caseColor: 'string', caseTitle: 'string', - userId: undefined, + assignee: undefined, roles: {}, startDate: undefined, finishDate: undefined, @@ -344,7 +344,7 @@ class MyTaskResources { title: 'string', caseColor: 'string', caseTitle: 'string', - userId: undefined, + assignee: undefined, roles: {}, startDate: undefined, finishDate: undefined, diff --git a/projects/netgrif-components-core/src/lib/task/services/assign-policy.service.spec.ts b/projects/netgrif-components-core/src/lib/task/services/assign-policy.service.spec.ts index 3eba7c9c4..f413b3afb 100644 --- a/projects/netgrif-components-core/src/lib/task/services/assign-policy.service.spec.ts +++ b/projects/netgrif-components-core/src/lib/task/services/assign-policy.service.spec.ts @@ -72,7 +72,7 @@ describe('AssignPolicyService', () => { title: 'string', caseColor: 'string', caseTitle: 'string', - userId: undefined, + assignee: undefined, userRefs: undefined, roles: { assignRole: { diff --git a/projects/netgrif-components-core/src/lib/task/services/assign-task.service.spec.ts b/projects/netgrif-components-core/src/lib/task/services/assign-task.service.spec.ts index 187996d1b..2c9c94b01 100644 --- a/projects/netgrif-components-core/src/lib/task/services/assign-task.service.spec.ts +++ b/projects/netgrif-components-core/src/lib/task/services/assign-task.service.spec.ts @@ -77,7 +77,7 @@ describe('AssignTaskService', () => { title: '', caseColor: '', caseTitle: '', - userId: undefined, + assignee: undefined, userRefs: undefined, roles: {}, startDate: [1], diff --git a/projects/netgrif-components-core/src/lib/task/services/finish-task.service.spec.ts b/projects/netgrif-components-core/src/lib/task/services/finish-task.service.spec.ts index dd70b576d..9ae68b9e1 100644 --- a/projects/netgrif-components-core/src/lib/task/services/finish-task.service.spec.ts +++ b/projects/netgrif-components-core/src/lib/task/services/finish-task.service.spec.ts @@ -75,7 +75,7 @@ describe('FinishTaskService', () => { title: '', caseColor: '', caseTitle: '', - userId: undefined, + assignee: undefined, userRefs: undefined, roles: {}, startDate: [1], @@ -116,7 +116,7 @@ describe('FinishTaskService', () => { title: '', caseColor: '', caseTitle: '', - userId: null, + assignee: null, roles: { role: { assign: true, From 2894d5906518bfb901c14a5df7a15281fedf7c97 Mon Sep 17 00:00:00 2001 From: bezak Date: Wed, 4 Feb 2026 11:38:48 +0100 Subject: [PATCH 7/8] [NAE-2354] Include assignee userRealmId in task response - fix broken tests --- .../lib/task/services/task-data.service.spec.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/projects/netgrif-components-core/src/lib/task/services/task-data.service.spec.ts b/projects/netgrif-components-core/src/lib/task/services/task-data.service.spec.ts index c5d357e07..3975f0393 100644 --- a/projects/netgrif-components-core/src/lib/task/services/task-data.service.spec.ts +++ b/projects/netgrif-components-core/src/lib/task/services/task-data.service.spec.ts @@ -151,7 +151,12 @@ describe('TaskDataService', () => { done(); }); - taskContentService.task.assignee = null; + taskContentService.task.assignee = { + id: '', + realmId: '', + username: '', + fullName: '' + }; mockField.value = !mockField.value; } @@ -196,7 +201,12 @@ describe('TaskDataService', () => { } }); - taskContentService.task.assignee = null; + taskContentService.task.assignee = { + id: '', + realmId: '', + username: '', + fullName: '' + }; mockField1.value = !mockField1.value; mockField2.value = !mockField2.value; From ad995c6b34b4be066f5e7907ed046a0fec550bd0 Mon Sep 17 00:00:00 2001 From: Milan Mladoniczky <6153201+tuplle@users.noreply.github.com> Date: Fri, 6 Feb 2026 19:15:43 +0100 Subject: [PATCH 8/8] [NAE-2354] Include assignee userRealmId in task response - Add full name assignment for safeTask assignee --- .../src/lib/task/services/delegate-task.service.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts b/projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts index 17091db69..f18c85c2d 100644 --- a/projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts +++ b/projects/netgrif-components-core/src/lib/task/services/delegate-task.service.ts @@ -82,6 +82,7 @@ export class DelegateTaskService extends TaskHandlingService { this._safeTask.assignee.realmId, this._safeTask.assignee.fullName?.split(' ')[0] ?? '', this._safeTask.assignee.fullName?.split(' ').slice(1).join(' ') ?? '', + this._safeTask.assignee.fullName, this._safeTask.assignee.username ), negativeRoles: Object.keys(this._safeTask.roles).filter(role =>