diff --git a/models/process/src/index.ts b/models/process/src/index.ts index b2bf9b7c72..9ca9b488d4 100644 --- a/models/process/src/index.ts +++ b/models/process/src/index.ts @@ -1101,7 +1101,8 @@ export function createModel (builder: Builder): void { presenter: process.component.ToDoSettingPresenter, requiredParams: ['_id'], checkFunction: process.triggerCheck.ToDo, - init: false + init: false, + auto: true }, process.trigger.OnToDoClose ) @@ -1116,7 +1117,8 @@ export function createModel (builder: Builder): void { presenter: process.component.ToDoSettingPresenter, requiredParams: ['_id'], checkFunction: process.triggerCheck.ToDo, - init: false + init: false, + auto: true }, process.trigger.OnToDoRemove ) diff --git a/models/server-process/src/index.ts b/models/server-process/src/index.ts index 7a0d7238e8..3e74c4a094 100644 --- a/models/server-process/src/index.ts +++ b/models/server-process/src/index.ts @@ -51,12 +51,12 @@ export function createModel (builder: Builder): void { builder.createModel(TMethodImpl, TFuncImpl, TTriggerImpl) builder.mixin(process.trigger.OnToDoClose, process.class.Trigger, serverProcess.mixin.TriggerImpl, { - serverCheckFunc: serverProcess.func.CheckToDo, + serverCheckFunc: serverProcess.func.CheckToDoDone, rollbackFunc: serverProcess.rollbacks.ToDoCloseRollback }) builder.mixin(process.trigger.OnToDoRemove, process.class.Trigger, serverProcess.mixin.TriggerImpl, { - serverCheckFunc: serverProcess.func.CheckToDo, + serverCheckFunc: serverProcess.func.CheckToDoCancelled, rollbackFunc: serverProcess.rollbacks.ToDoCancellRollback }) diff --git a/server-plugins/process-resources/src/functions.ts b/server-plugins/process-resources/src/functions.ts index 42e11dcd57..e0a1f0c500 100644 --- a/server-plugins/process-resources/src/functions.ts +++ b/server-plugins/process-resources/src/functions.ts @@ -27,15 +27,36 @@ import process, { import { ExecuteResult, ProcessControl } from '@hcengineering/server-process' import time, { ToDoPriority } from '@hcengineering/time' -export function CheckToDo ( +export async function CheckToDoDone ( control: ProcessControl, execution: Execution, params: Record, context: Record -): boolean { +): Promise { if (params._id === undefined) return false - if (context.todo === undefined) return false - return context.todo._id === params._id + if (context.todo !== undefined) { + return context.todo._id === params._id + } else { + const todo = await control.client.findOne(process.class.ProcessToDo, { _id: params._id }) + if (todo === undefined) return false + return todo.doneOn !== null + } +} + +export async function CheckToDoCancelled ( + control: ProcessControl, + execution: Execution, + params: Record, + context: Record +): Promise { + if (params._id === undefined) return false + if (context.todo !== undefined) { + return context.todo._id === params._id + } else { + const todo = await control.client.findOne(process.class.ProcessToDo, { _id: params._id }) + if (todo === undefined) return false + return todo.doneOn === null + } } export async function CheckSubProcessesDone (control: ProcessControl, execution: Execution): Promise { diff --git a/server-plugins/process-resources/src/index.ts b/server-plugins/process-resources/src/index.ts index 8ca58b1292..d1ec30e787 100644 --- a/server-plugins/process-resources/src/index.ts +++ b/server-plugins/process-resources/src/index.ts @@ -78,7 +78,8 @@ import { CreateCard, AddRelation, AddTag, - CheckToDo, + CheckToDoDone, + CheckToDoCancelled, OnCardUpdateCheck, CheckSubProcessesDone, CheckTime @@ -355,7 +356,8 @@ export default async () => ({ CreateCard, AddRelation, AddTag, - CheckToDo, + CheckToDoDone, + CheckToDoCancelled, OnCardUpdateCheck, CheckSubProcessesDone, CheckTime diff --git a/server-plugins/process/src/index.ts b/server-plugins/process/src/index.ts index 8e5a36e42f..812719cd91 100644 --- a/server-plugins/process/src/index.ts +++ b/server-plugins/process/src/index.ts @@ -54,7 +54,8 @@ export default plugin(serverProcessId, { AddRelation: '' as Resource, WaitSubProcess: '' as Resource, AddTag: '' as Resource, - CheckToDo: '' as Resource, + CheckToDoDone: '' as Resource, + CheckToDoCancelled: '' as Resource, OnCardUpdateCheck: '' as Resource, CheckSubProcessesDone: '' as Resource, CheckTime: '' as Resource