From 93b798c99b8f40c64c8f0e785c4122a06cf7f137 Mon Sep 17 00:00:00 2001 From: Alexey Zinoviev Date: Mon, 22 Jul 2024 19:57:37 +0400 Subject: [PATCH] ezqms-1121: fix deleted doc states (#6112) Signed-off-by: Alexey Zinoviev --- .../server-controlled-documents/src/index.ts | 9 +++++++ .../src/index.ts | 25 ++++++++++++++++++- .../controlled-documents/src/index.ts | 1 + 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/models/server-controlled-documents/src/index.ts b/models/server-controlled-documents/src/index.ts index 63ff65431b..5c2887569f 100644 --- a/models/server-controlled-documents/src/index.ts +++ b/models/server-controlled-documents/src/index.ts @@ -22,6 +22,15 @@ export function createModel (builder: Builder): void { } }) + builder.createDoc(serverCore.class.Trigger, core.space.Model, { + trigger: serverDocuments.trigger.OnDocDeleted, + txMatch: { + _class: core.class.TxUpdateDoc, + objectClass: documents.class.ControlledDocument, + 'operations.state': DocumentState.Deleted + } + }) + builder.createDoc(serverCore.class.Trigger, core.space.Model, { trigger: serverDocuments.trigger.OnDocPlannedEffectiveDateChanged, txMatch: { diff --git a/server-plugins/controlled-documents-resources/src/index.ts b/server-plugins/controlled-documents-resources/src/index.ts index d7d3c43a3b..dee3667cb7 100644 --- a/server-plugins/controlled-documents-resources/src/index.ts +++ b/server-plugins/controlled-documents-resources/src/index.ts @@ -31,9 +31,11 @@ import documents, { calcRank, type DocumentTraining, getEffectiveDocUpdate, - getDocumentId + getDocumentId, + type DocumentRequest } from '@hcengineering/controlled-documents' import training, { type TrainingRequest, TrainingState } from '@hcengineering/training' +import { RequestStatus } from '@hcengineering/request' /** * @public @@ -351,6 +353,26 @@ export async function OnDocHasBecomeEffective ( ] } +export async function OnDocDeleted (tx: TxUpdateDoc, control: TriggerControl): Promise { + const requests = await control.findAll(documents.class.DocumentRequest, { + attachedTo: tx.objectId, + status: RequestStatus.Active + }) + const cancelTxes = requests.map((request) => + control.txFactory.createTxUpdateDoc(request._class, request.space, request._id, { + status: RequestStatus.Cancelled + }) + ) + await control.apply([ + ...cancelTxes, + control.txFactory.createTxUpdateDoc(tx.objectClass, tx.objectSpace, tx.objectId, { + controlledState: undefined + }) + ]) + + return [] +} + export async function OnDocPlannedEffectiveDateChanged ( tx: TxUpdateDoc, control: TriggerControl @@ -446,6 +468,7 @@ export async function documentTextPresenter (doc: ControlledDocument): Promise ({ trigger: { OnCollaborativeSectionDeleted, + OnDocDeleted, OnDocPlannedEffectiveDateChanged, OnDocApprovalRequestApproved, OnDocHasBecomeEffective, diff --git a/server-plugins/controlled-documents/src/index.ts b/server-plugins/controlled-documents/src/index.ts index 45e03c09be..82b9bd08a3 100644 --- a/server-plugins/controlled-documents/src/index.ts +++ b/server-plugins/controlled-documents/src/index.ts @@ -19,6 +19,7 @@ export const serverDocumentsId = 'server-documents' as Plugin export default plugin(serverDocumentsId, { trigger: { OnCollaborativeSectionDeleted: '' as Resource, + OnDocDeleted: '' as Resource, OnDocPlannedEffectiveDateChanged: '' as Resource, OnDocApprovalRequestApproved: '' as Resource, OnDocHasBecomeEffective: '' as Resource,