From 437c192376f1e42751a2e25c5c5cc2e88417d4df Mon Sep 17 00:00:00 2001 From: Denis Bykhov Date: Wed, 12 Nov 2025 00:52:33 +0500 Subject: [PATCH] Fix process roles Signed-off-by: Denis Bykhov --- server-plugins/process-resources/src/transform.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/server-plugins/process-resources/src/transform.ts b/server-plugins/process-resources/src/transform.ts index f648ec635d3..88762a5ec17 100644 --- a/server-plugins/process-resources/src/transform.ts +++ b/server-plugins/process-resources/src/transform.ts @@ -18,6 +18,7 @@ import core, { Doc, matchQuery, Ref, Timestamp } from '@hcengineering/core' import { Execution, parseContext } from '@hcengineering/process' import { ProcessControl } from '@hcengineering/server-process' import { getContextValue } from './utils' +import cardPlugin from '@hcengineering/card' // #region ArrayReduce @@ -408,8 +409,17 @@ export async function RoleContext ( ): Promise[]> { const targetRole = props.target if (targetRole === undefined) return [] - const users = await control.client.findAll(contact.class.UserRole, { role: targetRole }) - return users.map((it) => it.user) + const targetCard = + control.cache.get(execution.card) ?? (await control.client.findOne(cardPlugin.class.Card, { _id: execution.card })) + if (targetCard === undefined) return [] + const targetSpace = + control.cache.get(targetCard.space) ?? (await control.client.findOne(core.class.Space, { _id: targetCard.space })) + if (targetSpace === undefined) return [] + const mixin = control.client.getHierarchy().as(targetSpace, core.mixin.SpacesTypeData) + const accs = (mixin as any)[targetRole] + if (accs === undefined || accs.length === 0) return [] + const users = await control.client.findAll(contact.mixin.Employee, { personUuid: { $in: accs } }) + return users.map((it) => it._id) } export async function CurrentUser (