@acorex-platform/module-document-management-client 0.0.60 → 0.0.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-DHVvb5hG.mjs → acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-BiosmCuZ.mjs} +134 -50
- package/fesm2022/acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-BiosmCuZ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-attachment-view-skeleton.component-DD0Lceid.mjs → acorex-platform-module-document-management-client-attachment-view-skeleton.component-D-38wiyG.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-attachment-view-skeleton.component-DD0Lceid.mjs.map → acorex-platform-module-document-management-client-attachment-view-skeleton.component-D-38wiyG.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-attachment-widget.component-YAoJdiMV.mjs → acorex-platform-module-document-management-client-attachment-widget.component-Bd48EHwE.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-attachment-widget.component-YAoJdiMV.mjs.map → acorex-platform-module-document-management-client-attachment-widget.component-Bd48EHwE.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-document-management-client-contracts.mjs +172 -4
- package/fesm2022/acorex-platform-module-document-management-client-contracts.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-details-view.component-DVrr-Jcx.mjs → acorex-platform-module-document-management-client-details-view.component-DRCj5sJZ.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-details-view.component-DVrr-Jcx.mjs.map → acorex-platform-module-document-management-client-details-view.component-DRCj5sJZ.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-distribute-document.command-dTEExoVn.mjs → acorex-platform-module-document-management-client-distribute-document.command-DgUgY_A1.mjs} +233 -83
- package/fesm2022/acorex-platform-module-document-management-client-distribute-document.command-DgUgY_A1.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-distribute-document.command.util-Bnw0rh94.mjs → acorex-platform-module-document-management-client-distribute-document.command.util-HCkpx2Hk.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-distribute-document.command.util-Bnw0rh94.mjs.map → acorex-platform-module-document-management-client-distribute-document.command.util-HCkpx2Hk.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-drive-choose.component-B-CVJk4t.mjs → acorex-platform-module-document-management-client-drive-choose.component-DxEWAigd.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-drive-choose.component-B-CVJk4t.mjs.map → acorex-platform-module-document-management-client-drive-choose.component-DxEWAigd.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-large-icons-view-skeleton.component-DLW69Mgy.mjs → acorex-platform-module-document-management-client-large-icons-view-skeleton.component-B8-WYaZN.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-large-icons-view-skeleton.component-DLW69Mgy.mjs.map → acorex-platform-module-document-management-client-large-icons-view-skeleton.component-B8-WYaZN.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-large-icons-view.component-CSgo6Q03.mjs → acorex-platform-module-document-management-client-large-icons-view.component-dfZyrfST.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-large-icons-view.component-CSgo6Q03.mjs.map → acorex-platform-module-document-management-client-large-icons-view.component-dfZyrfST.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-large-tiles-view.component-CzlMERYd.mjs → acorex-platform-module-document-management-client-large-tiles-view.component-BxZdISS0.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-large-tiles-view.component-CzlMERYd.mjs.map → acorex-platform-module-document-management-client-large-tiles-view.component-BxZdISS0.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-list-view-skeleton.component-DgFCBi89.mjs → acorex-platform-module-document-management-client-list-view-skeleton.component-hOXMuPjS.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-list-view-skeleton.component-DgFCBi89.mjs.map → acorex-platform-module-document-management-client-list-view-skeleton.component-hOXMuPjS.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-list-view.component-bgDPFpLU.mjs → acorex-platform-module-document-management-client-list-view.component-iH0kvdWp.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-list-view.component-bgDPFpLU.mjs.map → acorex-platform-module-document-management-client-list-view.component-iH0kvdWp.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-open-document.command-CObrpooD.mjs → acorex-platform-module-document-management-client-open-document.command-IN2QSWDo.mjs} +45 -4
- package/fesm2022/acorex-platform-module-document-management-client-open-document.command-IN2QSWDo.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-request-document-review.command-DNq2mYIx.mjs → acorex-platform-module-document-management-client-request-document-review.command-CK5mJYR4.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-document-management-client-request-document-review.command-DNq2mYIx.mjs.map → acorex-platform-module-document-management-client-request-document-review.command-CK5mJYR4.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-sign-distributed-document.command-DpQ-Un7q.mjs → acorex-platform-module-document-management-client-sign-distributed-document.command-BqLS0leG.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-sign-distributed-document.command-DpQ-Un7q.mjs.map → acorex-platform-module-document-management-client-sign-distributed-document.command-BqLS0leG.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-sign-document-review.command-B08sgrRi.mjs → acorex-platform-module-document-management-client-sign-document-review.command-Ccl9iY7j.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-sign-document-review.command-B08sgrRi.mjs.map → acorex-platform-module-document-management-client-sign-document-review.command-Ccl9iY7j.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-small-icons-view-skeleton.component-CiYITmkk.mjs → acorex-platform-module-document-management-client-small-icons-view-skeleton.component-BABsshsn.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-small-icons-view-skeleton.component-CiYITmkk.mjs.map → acorex-platform-module-document-management-client-small-icons-view-skeleton.component-BABsshsn.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-small-icons-view.component-ILdKPBoz.mjs → acorex-platform-module-document-management-client-small-icons-view.component-BBo1iXfu.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-small-icons-view.component-ILdKPBoz.mjs.map → acorex-platform-module-document-management-client-small-icons-view.component-BBo1iXfu.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-DKOxhUoZ.mjs → acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-BsP4uJdA.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-DKOxhUoZ.mjs.map → acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-BsP4uJdA.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-small-tiles-view.component-yv_uqUPM.mjs → acorex-platform-module-document-management-client-small-tiles-view.component-DrDYpNsF.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-small-tiles-view.component-yv_uqUPM.mjs.map → acorex-platform-module-document-management-client-small-tiles-view.component-DrDYpNsF.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-upload-document.command-CrtRTjke.mjs → acorex-platform-module-document-management-client-upload-document.command-Dycu8sci.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-upload-document.command-CrtRTjke.mjs.map → acorex-platform-module-document-management-client-upload-document.command-Dycu8sci.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-document-management-client.mjs +1 -1
- package/i18n/en-AU/document-management.json +9 -4
- package/i18n/en-US/document-management.json +9 -4
- package/i18n/fa-IR/document-management.json +9 -4
- package/package.json +2 -2
- package/types/acorex-platform-module-document-management-client-contracts.d.ts +23 -1
- package/types/acorex-platform-module-document-management-client.d.ts +2 -2
- package/fesm2022/acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-DHVvb5hG.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-distribute-document.command-dTEExoVn.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-open-document.command-CObrpooD.mjs.map +0 -1
|
@@ -6,11 +6,11 @@ import { AXPLayoutBuilderService, resolveLayoutBuilderDialogResult } from '@acor
|
|
|
6
6
|
import { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';
|
|
7
7
|
import { AXPWorkflowManager } from '@acorex-platform/framework-client/workflow';
|
|
8
8
|
import { buildAXPRecordWorkflowInfo } from '@acorex-platform/framework-shared/entity';
|
|
9
|
-
import { RootConfig, AXPContentDocumentsPermissionKeys } from '@acorex-platform/module-document-management-client/contracts';
|
|
9
|
+
import { RootConfig, AXPContentDocumentsPermissionKeys, stampDocumentDistributionFormValues, AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME, isDocumentReviewRequired, isDocumentReviewMetadataComplete, highestDocumentVersionNumber, DOCUMENT_DISTRIBUTION_WORKFLOW_NAME } from '@acorex-platform/module-document-management-client/contracts';
|
|
10
10
|
import * as i0 from '@angular/core';
|
|
11
11
|
import { inject, Injectable } from '@angular/core';
|
|
12
|
-
import { j as AXMDocumentManagerService } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-
|
|
13
|
-
import { a as asTrimmedId,
|
|
12
|
+
import { j as AXMDocumentManagerService, m as AXPDocumentManagementService, s as sourcesAllowDocumentDistribution, n as collectDocumentTypeKeys } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-BiosmCuZ.mjs';
|
|
13
|
+
import { a as asTrimmedId, b as asDisplayName, c as asUserIds, r as resolveCreatedEntityId, m as mapWithConcurrency } from './acorex-platform-module-document-management-client-distribute-document.command.util-HCkpx2Hk.mjs';
|
|
14
14
|
|
|
15
15
|
//#region ----- Imports -----
|
|
16
16
|
//#endregion
|
|
@@ -21,20 +21,13 @@ const TASK_ENTITY_NAME = `${TASK_MODULE}.${TASK_ENTITY}`;
|
|
|
21
21
|
const TASK_TYPE_ENTITY = 'TaskType';
|
|
22
22
|
const TASK_STATUS_ENTITY = 'TaskStatus';
|
|
23
23
|
const TASK_ASSIGNMENT_ENTITY = 'TaskAssignment';
|
|
24
|
-
const DOCUMENT_DISTRIBUTION_WORKFLOW_NAME = 'document-distribution';
|
|
25
24
|
const MOCK_DOCUMENT_DISTRIBUTION_TASK_TYPE_ID = 'pm-mock-task-type-document-distribution';
|
|
26
|
-
const
|
|
25
|
+
const DOCUMENT_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.document.name}`;
|
|
26
|
+
const FOLDER_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.folder.name}`;
|
|
27
27
|
const I18N = '@document-management:distribute';
|
|
28
28
|
const ASSIGNEE_CREATE_CONCURRENCY = 3;
|
|
29
29
|
//#endregion
|
|
30
30
|
//#region ----- Helpers -----
|
|
31
|
-
function resolveDocumentId(input = {}) {
|
|
32
|
-
const data = input.data;
|
|
33
|
-
const fromData = data && typeof data === 'object'
|
|
34
|
-
? asTrimmedId(data.documentId) ?? asTrimmedId(data.id)
|
|
35
|
-
: undefined;
|
|
36
|
-
return asTrimmedId(input.options?.documentId) ?? fromData ?? asTrimmedId(input.documentId);
|
|
37
|
-
}
|
|
38
31
|
function asItems(value) {
|
|
39
32
|
if (Array.isArray(value)) {
|
|
40
33
|
return value;
|
|
@@ -44,6 +37,12 @@ function asItems(value) {
|
|
|
44
37
|
}
|
|
45
38
|
return [];
|
|
46
39
|
}
|
|
40
|
+
function asRecord(value) {
|
|
41
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
47
46
|
function statusRef(row) {
|
|
48
47
|
const id = asTrimmedId(row?.id);
|
|
49
48
|
if (!id) {
|
|
@@ -51,6 +50,34 @@ function statusRef(row) {
|
|
|
51
50
|
}
|
|
52
51
|
return { id, title: row?.title, color: row?.color, icon: row?.icon };
|
|
53
52
|
}
|
|
53
|
+
function resolveSubject(input = {}) {
|
|
54
|
+
const data = input.data;
|
|
55
|
+
const nodeType = data && typeof data === 'object' && 'type' in data ? data.type : undefined;
|
|
56
|
+
const fromDataId = data && typeof data === 'object' ? asTrimmedId(data.id) : undefined;
|
|
57
|
+
const documentId = asTrimmedId(input.options?.documentId) ??
|
|
58
|
+
asTrimmedId(input.documentId) ??
|
|
59
|
+
(data && typeof data === 'object' ? asTrimmedId(data.documentId) : undefined);
|
|
60
|
+
const folderId = asTrimmedId(input.options?.folderId) ??
|
|
61
|
+
asTrimmedId(input.folderId) ??
|
|
62
|
+
(data && typeof data === 'object' ? asTrimmedId(data.folderId) : undefined);
|
|
63
|
+
if (nodeType === 'folder' && fromDataId) {
|
|
64
|
+
return { kind: 'folder', id: fromDataId, title: asDisplayName(data.name) ?? fromDataId };
|
|
65
|
+
}
|
|
66
|
+
if (nodeType === 'file' && fromDataId) {
|
|
67
|
+
return { kind: 'file', id: fromDataId, title: asDisplayName(data.name) ?? fromDataId };
|
|
68
|
+
}
|
|
69
|
+
if (folderId) {
|
|
70
|
+
return { kind: 'folder', id: folderId, title: folderId };
|
|
71
|
+
}
|
|
72
|
+
if (documentId) {
|
|
73
|
+
return { kind: 'file', id: documentId, title: documentId };
|
|
74
|
+
}
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
function metaDataFormOf(record) {
|
|
78
|
+
const form = record['metaDataForm'];
|
|
79
|
+
return asRecord(form) ?? undefined;
|
|
80
|
+
}
|
|
54
81
|
//#endregion
|
|
55
82
|
//#region ----- Distribute document command -----
|
|
56
83
|
class AXMDistributeDocumentCommand {
|
|
@@ -63,16 +90,23 @@ class AXMDistributeDocumentCommand {
|
|
|
63
90
|
this.translationService = inject(AXTranslationService);
|
|
64
91
|
this.workflowManager = inject(AXPWorkflowManager);
|
|
65
92
|
this.driveService = inject(AXMDocumentManagerService);
|
|
93
|
+
this.documentApi = inject(AXPDocumentManagementService);
|
|
66
94
|
this.loadingDialog = inject(AXLoadingDialogService);
|
|
67
95
|
this.documentData = this.entityService
|
|
68
96
|
.withEntity(RootConfig.module.name, RootConfig.entities.document.name)
|
|
69
97
|
.data();
|
|
98
|
+
this.folderData = this.entityService
|
|
99
|
+
.withEntity(RootConfig.module.name, RootConfig.entities.folder.name)
|
|
100
|
+
.data();
|
|
70
101
|
this.taskTypeData = this.entityService.withEntity(TASK_MODULE, TASK_TYPE_ENTITY).data();
|
|
71
102
|
this.taskStatusData = this.entityService
|
|
72
103
|
.withEntity(TASK_MODULE, TASK_STATUS_ENTITY)
|
|
73
104
|
.data();
|
|
74
105
|
this.taskData = this.entityService.withEntity(TASK_MODULE, TASK_ENTITY).data();
|
|
75
106
|
this.assignmentData = this.entityService.withEntity(TASK_MODULE, TASK_ASSIGNMENT_ENTITY).data();
|
|
107
|
+
this.documentTypeData = this.entityService
|
|
108
|
+
.withEntity(RootConfig.module.name, RootConfig.entities.documentType.name)
|
|
109
|
+
.data();
|
|
76
110
|
}
|
|
77
111
|
//#endregion
|
|
78
112
|
//#region ----- Command Implementation -----
|
|
@@ -81,27 +115,32 @@ class AXMDistributeDocumentCommand {
|
|
|
81
115
|
await this.toastError('errors.forbidden');
|
|
82
116
|
return { success: false, message: { text: `${I18N}.errors.forbidden` } };
|
|
83
117
|
}
|
|
84
|
-
const
|
|
85
|
-
if (!
|
|
86
|
-
await this.toastError('errors.
|
|
87
|
-
return { success: false, message: { text: `${I18N}.errors.
|
|
118
|
+
const subjectHint = resolveSubject(input);
|
|
119
|
+
if (!subjectHint) {
|
|
120
|
+
await this.toastError('errors.subject-required');
|
|
121
|
+
return { success: false, message: { text: `${I18N}.errors.subject-required` } };
|
|
88
122
|
}
|
|
89
|
-
const
|
|
90
|
-
if (!
|
|
91
|
-
await this.toastError('errors.
|
|
92
|
-
return { success: false, message: { text: `${I18N}.errors.
|
|
123
|
+
const subject = await this.loadSubject(subjectHint);
|
|
124
|
+
if (!subject) {
|
|
125
|
+
await this.toastError('errors.subject-required');
|
|
126
|
+
return { success: false, message: { text: `${I18N}.errors.subject-required` } };
|
|
93
127
|
}
|
|
94
|
-
|
|
128
|
+
const typeLoader = {
|
|
129
|
+
byNames: (names) => this.driveService.getDocumentTypesByNames(names),
|
|
130
|
+
byKey: (id) => this.documentTypeData.byKey(id),
|
|
131
|
+
};
|
|
132
|
+
const appliesTo = subject.kind === 'folder' ? 'folder' : 'document';
|
|
133
|
+
const allowsDistribution = await sourcesAllowDocumentDistribution([subject.record, input.data], typeLoader, appliesTo);
|
|
134
|
+
if (!allowsDistribution) {
|
|
95
135
|
await this.toastError('errors.not-enabled');
|
|
96
136
|
return { success: false, message: { text: `${I18N}.errors.not-enabled` } };
|
|
97
137
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
return { success: false, message: { text: `${I18N}.errors.version-required` } };
|
|
138
|
+
if (await this.requiresUnfinishedReview(subject, typeLoader)) {
|
|
139
|
+
await this.toastError('errors.review-required');
|
|
140
|
+
return { success: false, message: { text: `${I18N}.errors.review-required` } };
|
|
102
141
|
}
|
|
103
142
|
const setupPromise = this.loadDistributionSetup();
|
|
104
|
-
const form = await this.openDialog(
|
|
143
|
+
const form = await this.openDialog(subject.title);
|
|
105
144
|
if (!form) {
|
|
106
145
|
return { success: true, kind: 'object', data: { cancelled: true } };
|
|
107
146
|
}
|
|
@@ -116,40 +155,15 @@ class AXMDistributeDocumentCommand {
|
|
|
116
155
|
await this.toastError('errors.status-missing');
|
|
117
156
|
return { success: false, message: { text: `${I18N}.errors.status-missing` } };
|
|
118
157
|
}
|
|
119
|
-
const
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const assignedBy = this.sessionService.user?.id;
|
|
127
|
-
const total = form.assigneeIds.length;
|
|
128
|
-
let completed = 0;
|
|
129
|
-
const created = await mapWithConcurrency(form.assigneeIds, ASSIGNEE_CREATE_CONCURRENCY, async (userId) => {
|
|
130
|
-
const row = await this.createAndStartForAssignee({
|
|
131
|
-
userId,
|
|
132
|
-
assignedBy: assignedBy ?? firstAssigneeId,
|
|
133
|
-
form,
|
|
134
|
-
taskType: setup.taskType,
|
|
135
|
-
openStatus: setup.openStatus,
|
|
136
|
-
signOffStatus: setup.signOffStatus,
|
|
137
|
-
completedStatus: setup.completedStatus,
|
|
138
|
-
subjectRef,
|
|
139
|
-
document,
|
|
140
|
-
versionId,
|
|
141
|
-
documentDisplayName,
|
|
142
|
-
workflowId: setup.workflowId,
|
|
143
|
-
});
|
|
144
|
-
completed += 1;
|
|
145
|
-
await this.updateDistributeLoadingProgress(loading, completed, total);
|
|
146
|
-
return row;
|
|
158
|
+
const version = await this.resolveHighestVersion(subject);
|
|
159
|
+
const created = await this.createParentAndSubtasks({
|
|
160
|
+
form,
|
|
161
|
+
setup,
|
|
162
|
+
subject,
|
|
163
|
+
version,
|
|
164
|
+
loading,
|
|
147
165
|
});
|
|
148
|
-
|
|
149
|
-
const createdInstanceIds = created
|
|
150
|
-
.map((row) => row.instanceId)
|
|
151
|
-
.filter((id) => typeof id === 'string' && id.length > 0);
|
|
152
|
-
if (created.some((row) => row.pinFailed)) {
|
|
166
|
+
if (created.pinFailed) {
|
|
153
167
|
await this.toastWarning('warnings.pin-failed');
|
|
154
168
|
}
|
|
155
169
|
const [title, content] = await Promise.all([
|
|
@@ -157,7 +171,15 @@ class AXMDistributeDocumentCommand {
|
|
|
157
171
|
this.translationService.translateAsync(`${I18N}.success.description`),
|
|
158
172
|
]);
|
|
159
173
|
this.toastService.show({ color: 'success', title, content, timeOut: 3000 });
|
|
160
|
-
return {
|
|
174
|
+
return {
|
|
175
|
+
success: true,
|
|
176
|
+
kind: 'object',
|
|
177
|
+
data: {
|
|
178
|
+
parentTaskId: created.parentTaskId,
|
|
179
|
+
taskIds: created.taskIds,
|
|
180
|
+
instanceIds: created.instanceIds,
|
|
181
|
+
},
|
|
182
|
+
};
|
|
161
183
|
}
|
|
162
184
|
catch (error) {
|
|
163
185
|
const message = error instanceof Error ? error.message : undefined;
|
|
@@ -170,8 +192,7 @@ class AXMDistributeDocumentCommand {
|
|
|
170
192
|
}
|
|
171
193
|
//#endregion
|
|
172
194
|
//#region ----- Dialog -----
|
|
173
|
-
async openDialog(
|
|
174
|
-
const defaultTitle = asDisplayName(document.name) ?? asDisplayName(document.title) ?? '';
|
|
195
|
+
async openDialog(defaultTitle) {
|
|
175
196
|
const dueDate = new Date();
|
|
176
197
|
dueDate.setHours(0, 0, 0, 0);
|
|
177
198
|
const result = await this.layoutBuilder
|
|
@@ -246,15 +267,76 @@ class AXMDistributeDocumentCommand {
|
|
|
246
267
|
return resolveLayoutBuilderDialogResult(result);
|
|
247
268
|
}
|
|
248
269
|
//#endregion
|
|
249
|
-
//#region ----- Create
|
|
270
|
+
//#region ----- Create parent and sub-tasks -----
|
|
271
|
+
async createParentAndSubtasks(params) {
|
|
272
|
+
const initiatorId = this.sessionService.user?.id ?? params.form.assigneeIds[0];
|
|
273
|
+
const subjectRef = {
|
|
274
|
+
type: params.subject.kind === 'folder' ? FOLDER_ENTITY_NAME : DOCUMENT_ENTITY_NAME,
|
|
275
|
+
id: params.subject.id,
|
|
276
|
+
title: params.subject.title,
|
|
277
|
+
};
|
|
278
|
+
const versionForm = stampDocumentDistributionFormValues(undefined, {
|
|
279
|
+
[AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME]: params.version,
|
|
280
|
+
});
|
|
281
|
+
const parentTask = await this.taskData.create({
|
|
282
|
+
title: params.form.title,
|
|
283
|
+
description: params.form.description,
|
|
284
|
+
taskTypeId: params.setup.taskType.id,
|
|
285
|
+
taskType: { id: params.setup.taskType.id, title: params.setup.taskType.title },
|
|
286
|
+
statusId: params.setup.openStatus.id,
|
|
287
|
+
status: statusRef(params.setup.openStatus),
|
|
288
|
+
priority: 'medium',
|
|
289
|
+
progress: 0,
|
|
290
|
+
order: 0,
|
|
291
|
+
startDate: params.form.dueDate,
|
|
292
|
+
dueDate: params.form.dueDate,
|
|
293
|
+
assigneeId: initiatorId,
|
|
294
|
+
assignee: { id: initiatorId },
|
|
295
|
+
subjectRef,
|
|
296
|
+
metaDataForm: versionForm,
|
|
297
|
+
isArchived: false,
|
|
298
|
+
});
|
|
299
|
+
const parentTaskId = resolveCreatedEntityId(parentTask);
|
|
300
|
+
let pinFailed = false;
|
|
301
|
+
await this.pinSubjectOnTask(parentTaskId, params.subject).catch((error) => {
|
|
302
|
+
console.warn('[AXMDistributeDocumentCommand] pin parent shortcut failed', error);
|
|
303
|
+
pinFailed = true;
|
|
304
|
+
});
|
|
305
|
+
const total = params.form.assigneeIds.length;
|
|
306
|
+
let completed = 0;
|
|
307
|
+
const created = await mapWithConcurrency(params.form.assigneeIds, ASSIGNEE_CREATE_CONCURRENCY, async (userId) => {
|
|
308
|
+
const row = await this.createAndStartForAssignee({
|
|
309
|
+
userId,
|
|
310
|
+
assignedBy: initiatorId,
|
|
311
|
+
form: params.form,
|
|
312
|
+
setup: params.setup,
|
|
313
|
+
subject: params.subject,
|
|
314
|
+
subjectRef,
|
|
315
|
+
parentTaskId,
|
|
316
|
+
parentTitle: params.form.title,
|
|
317
|
+
versionForm,
|
|
318
|
+
});
|
|
319
|
+
completed += 1;
|
|
320
|
+
await this.updateDistributeLoadingProgress(params.loading, completed, total);
|
|
321
|
+
return row;
|
|
322
|
+
});
|
|
323
|
+
return {
|
|
324
|
+
parentTaskId,
|
|
325
|
+
taskIds: created.map((row) => row.taskId),
|
|
326
|
+
instanceIds: created
|
|
327
|
+
.map((row) => row.instanceId)
|
|
328
|
+
.filter((id) => typeof id === 'string' && id.length > 0),
|
|
329
|
+
pinFailed: pinFailed || created.some((row) => row.pinFailed),
|
|
330
|
+
};
|
|
331
|
+
}
|
|
250
332
|
async createAndStartForAssignee(params) {
|
|
251
333
|
const createdTask = await this.taskData.create({
|
|
252
334
|
title: params.form.title,
|
|
253
335
|
description: params.form.description,
|
|
254
|
-
taskTypeId: params.taskType.id,
|
|
255
|
-
taskType: { id: params.taskType.id, title: params.taskType.title },
|
|
256
|
-
statusId: params.openStatus.id,
|
|
257
|
-
status: statusRef(params.openStatus),
|
|
336
|
+
taskTypeId: params.setup.taskType.id,
|
|
337
|
+
taskType: { id: params.setup.taskType.id, title: params.setup.taskType.title },
|
|
338
|
+
statusId: params.setup.openStatus.id,
|
|
339
|
+
status: statusRef(params.setup.openStatus),
|
|
258
340
|
priority: 'medium',
|
|
259
341
|
progress: 0,
|
|
260
342
|
order: 0,
|
|
@@ -263,6 +345,9 @@ class AXMDistributeDocumentCommand {
|
|
|
263
345
|
assigneeId: params.userId,
|
|
264
346
|
assignee: { id: params.userId },
|
|
265
347
|
subjectRef: params.subjectRef,
|
|
348
|
+
parentTaskId: params.parentTaskId,
|
|
349
|
+
parentTask: { id: params.parentTaskId, title: params.parentTitle },
|
|
350
|
+
metaDataForm: params.versionForm,
|
|
266
351
|
isArchived: false,
|
|
267
352
|
});
|
|
268
353
|
const taskId = resolveCreatedEntityId(createdTask);
|
|
@@ -279,7 +364,7 @@ class AXMDistributeDocumentCommand {
|
|
|
279
364
|
assignedAt: new Date(),
|
|
280
365
|
isActive: true,
|
|
281
366
|
});
|
|
282
|
-
const pinPromise = this.
|
|
367
|
+
const pinPromise = this.pinSubjectOnTask(taskId, params.subject).catch((error) => {
|
|
283
368
|
console.warn('[AXMDistributeDocumentCommand] pin document shortcut failed', error);
|
|
284
369
|
pinFailed = true;
|
|
285
370
|
});
|
|
@@ -291,20 +376,21 @@ class AXMDistributeDocumentCommand {
|
|
|
291
376
|
return { taskId, instanceId, pinFailed };
|
|
292
377
|
}
|
|
293
378
|
async startWorkflowForAssignee(taskId, params) {
|
|
294
|
-
const startResult = await this.workflowManager.start(params.workflowId, {
|
|
379
|
+
const startResult = await this.workflowManager.start(params.setup.workflowId, {
|
|
295
380
|
taskId,
|
|
296
381
|
taskTitle: params.form.title,
|
|
297
|
-
documentId: params.
|
|
298
|
-
|
|
382
|
+
documentId: params.subject.kind === 'file' ? params.subject.id : '',
|
|
383
|
+
folderId: params.subject.kind === 'folder' ? params.subject.id : '',
|
|
384
|
+
parentTaskId: params.parentTaskId,
|
|
299
385
|
signerUserId: params.userId,
|
|
300
386
|
signerUserIds: [params.userId],
|
|
301
387
|
initiatorUserId: params.assignedBy,
|
|
302
|
-
openStatusId: params.openStatus.id,
|
|
303
|
-
openStatus: statusRef(params.openStatus),
|
|
304
|
-
signOffStatusId: params.signOffStatus?.id ?? params.openStatus.id,
|
|
305
|
-
signOffStatus: statusRef(params.signOffStatus) ?? statusRef(params.openStatus),
|
|
306
|
-
completedStatusId: params.completedStatus?.id ?? params.openStatus.id,
|
|
307
|
-
completedStatus: statusRef(params.completedStatus) ?? statusRef(params.openStatus),
|
|
388
|
+
openStatusId: params.setup.openStatus.id,
|
|
389
|
+
openStatus: statusRef(params.setup.openStatus),
|
|
390
|
+
signOffStatusId: params.setup.signOffStatus?.id ?? params.setup.openStatus.id,
|
|
391
|
+
signOffStatus: statusRef(params.setup.signOffStatus) ?? statusRef(params.setup.openStatus),
|
|
392
|
+
completedStatusId: params.setup.completedStatus?.id ?? params.setup.openStatus.id,
|
|
393
|
+
completedStatus: statusRef(params.setup.completedStatus) ?? statusRef(params.setup.openStatus),
|
|
308
394
|
correlationId: taskId,
|
|
309
395
|
refId: taskId,
|
|
310
396
|
refType: TASK_ENTITY_NAME,
|
|
@@ -318,7 +404,7 @@ class AXMDistributeDocumentCommand {
|
|
|
318
404
|
await this.taskData.update(taskId, {
|
|
319
405
|
workflowInfo: buildAXPRecordWorkflowInfo({
|
|
320
406
|
instanceId: startResult.instanceId,
|
|
321
|
-
definitionId: params.workflowId,
|
|
407
|
+
definitionId: params.setup.workflowId,
|
|
322
408
|
correlationId: taskId,
|
|
323
409
|
}),
|
|
324
410
|
});
|
|
@@ -330,19 +416,83 @@ class AXMDistributeDocumentCommand {
|
|
|
330
416
|
return startResult.instanceId;
|
|
331
417
|
}
|
|
332
418
|
//#endregion
|
|
333
|
-
//#region ----- Pin
|
|
334
|
-
async
|
|
419
|
+
//#region ----- Pin subject -----
|
|
420
|
+
async pinSubjectOnTask(taskId, subject) {
|
|
335
421
|
const folder = await this.driveService.getRootByEntityRef(`${TASK_MODULE}.${TASK_ENTITY}`, taskId);
|
|
336
422
|
const folderId = folder?.result?.id;
|
|
337
423
|
if (!folderId) {
|
|
338
424
|
throw new Error('Task document folder was not provisioned');
|
|
339
425
|
}
|
|
340
|
-
await this.driveService.createShortcut(
|
|
341
|
-
nameOverride:
|
|
426
|
+
await this.driveService.createShortcut(subject.id, subject.kind === 'folder' ? 'folder' : 'file', folderId, {
|
|
427
|
+
nameOverride: subject.title,
|
|
342
428
|
});
|
|
343
429
|
}
|
|
344
430
|
//#endregion
|
|
345
431
|
//#region ----- Data Loading -----
|
|
432
|
+
async loadSubject(subject) {
|
|
433
|
+
if (subject.kind === 'folder') {
|
|
434
|
+
const folder = await this.folderData.byKey(subject.id);
|
|
435
|
+
if (!folder?.id) {
|
|
436
|
+
return null;
|
|
437
|
+
}
|
|
438
|
+
return {
|
|
439
|
+
kind: 'folder',
|
|
440
|
+
id: folder.id,
|
|
441
|
+
title: asDisplayName(folder.title) ?? subject.title,
|
|
442
|
+
record: folder,
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
const document = await this.documentData.byKey(subject.id);
|
|
446
|
+
if (!document?.id) {
|
|
447
|
+
return null;
|
|
448
|
+
}
|
|
449
|
+
return {
|
|
450
|
+
kind: 'file',
|
|
451
|
+
id: document.id,
|
|
452
|
+
title: asDisplayName(document.name) ?? asDisplayName(document.title) ?? subject.title,
|
|
453
|
+
record: document,
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
async requiresUnfinishedReview(subject, load) {
|
|
457
|
+
const types = await this.loadSubjectTypes(subject, load);
|
|
458
|
+
if (!types.some((type) => isDocumentReviewRequired(type.requiresReview))) {
|
|
459
|
+
return false;
|
|
460
|
+
}
|
|
461
|
+
return !isDocumentReviewMetadataComplete(metaDataFormOf(subject.record));
|
|
462
|
+
}
|
|
463
|
+
async loadSubjectTypes(subject, load) {
|
|
464
|
+
const keys = collectDocumentTypeKeys(subject.record);
|
|
465
|
+
const found = [];
|
|
466
|
+
for (const id of keys.ids) {
|
|
467
|
+
try {
|
|
468
|
+
const type = await load.byKey(id);
|
|
469
|
+
if (type) {
|
|
470
|
+
found.push(type);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
catch {
|
|
474
|
+
// Keep checking remaining types when one lookup misses.
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
if (keys.names.length) {
|
|
478
|
+
const byName = await load.byNames(keys.names);
|
|
479
|
+
found.push(...byName);
|
|
480
|
+
}
|
|
481
|
+
return found;
|
|
482
|
+
}
|
|
483
|
+
async resolveHighestVersion(subject) {
|
|
484
|
+
if (subject.kind === 'file') {
|
|
485
|
+
return highestDocumentVersionNumber([subject.record]);
|
|
486
|
+
}
|
|
487
|
+
try {
|
|
488
|
+
const documents = await this.documentApi.listFolderReviewDocuments(subject.id);
|
|
489
|
+
return highestDocumentVersionNumber(documents);
|
|
490
|
+
}
|
|
491
|
+
catch (error) {
|
|
492
|
+
console.warn('[AXMDistributeDocumentCommand] list folder documents for version failed', error);
|
|
493
|
+
return 1;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
346
496
|
async loadDistributionSetup() {
|
|
347
497
|
const taskType = await this.loadDistributionTaskType();
|
|
348
498
|
if (!taskType?.id) {
|
|
@@ -442,4 +592,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
442
592
|
}] });
|
|
443
593
|
|
|
444
594
|
export { AXMDistributeDocumentCommand };
|
|
445
|
-
//# sourceMappingURL=acorex-platform-module-document-management-client-distribute-document.command-
|
|
595
|
+
//# sourceMappingURL=acorex-platform-module-document-management-client-distribute-document.command-DgUgY_A1.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-document-management-client-distribute-document.command-DgUgY_A1.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/commands/distribute-document.command.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport {\n AXPLayoutBuilderService,\n resolveLayoutBuilderDialogResult,\n} from '@acorex-platform/framework-client/layout/builder';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPWorkflowManager } from '@acorex-platform/framework-client/workflow';\nimport type { AXPEntityReference } from '@acorex-platform/framework-shared/core';\nimport { buildAXPRecordWorkflowInfo } from '@acorex-platform/framework-shared/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport {\n AXPContentDocumentsPermissionKeys,\n DOCUMENT_DISTRIBUTION_WORKFLOW_NAME,\n highestDocumentVersionNumber,\n isDocumentReviewMetadataComplete,\n isDocumentReviewRequired,\n RootConfig,\n stampDocumentDistributionFormValues,\n AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME,\n type AXMDocumentDto,\n type AXMDocumentManagementFolderEntityModel,\n} from '@acorex-platform/module-document-management-client/contracts';\nimport { inject, Injectable } from '@angular/core';\n\nimport { AXMDocumentManagerService } from '../shared/document-manager.service';\nimport { AXPDocumentManagementService } from '../shared/document-management.service';\nimport type { AXMDocumentExplorerNode } from '../shared/document-manager.types';\nimport { sourcesAllowDocumentDistribution } from '../shared/document-distribution.util';\nimport { collectDocumentTypeKeys } from '../shared/document-review.util';\nimport {\n asDisplayName,\n asTrimmedId,\n asUserIds,\n mapWithConcurrency,\n resolveCreatedEntityId,\n} from './distribute-document.command.util';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport interface AXMDistributeDocumentCommandInput {\n documentId?: string;\n folderId?: string;\n data?: AXMDocumentExplorerNode | { documentId?: string; folderId?: string; id?: string; type?: string };\n options?: { documentId?: string; folderId?: string };\n}\n\ninterface DistributeDialogResult {\n title: string;\n description?: string;\n dueDate: Date | string;\n assigneeIds: string[];\n}\n\ninterface TaskTypeRow {\n id: string;\n title?: string;\n workflowConfig?: {\n workflowDefinitionId?: string;\n workflowName?: string;\n } | null;\n}\n\ninterface TaskStatusRow {\n id: string;\n name?: string;\n title?: string;\n color?: string;\n icon?: string;\n isDefault?: boolean;\n isFinal?: boolean;\n taskTypeId?: string;\n}\n\ninterface DistributionSetup {\n taskType: TaskTypeRow;\n openStatus: TaskStatusRow;\n signOffStatus: TaskStatusRow | undefined;\n completedStatus: TaskStatusRow | undefined;\n workflowId: string;\n}\n\ninterface LoadingDialogRef {\n close: () => void;\n setProgressText?: (text: string) => void;\n}\n\ninterface DistributionSubject {\n kind: 'file' | 'folder';\n id: string;\n title: string;\n record: Record<string, unknown>;\n}\n\ninterface DocumentTypeRow {\n id: string;\n requiresReview?: unknown;\n enableDistributionCapability?: unknown;\n metaDataList?: unknown;\n}\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst TASK_MODULE = 'TaskManagement';\nconst TASK_ENTITY = 'Task';\nconst TASK_ENTITY_NAME = `${TASK_MODULE}.${TASK_ENTITY}`;\nconst TASK_TYPE_ENTITY = 'TaskType';\nconst TASK_STATUS_ENTITY = 'TaskStatus';\nconst TASK_ASSIGNMENT_ENTITY = 'TaskAssignment';\nconst MOCK_DOCUMENT_DISTRIBUTION_TASK_TYPE_ID = 'pm-mock-task-type-document-distribution';\nconst DOCUMENT_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.document.name}`;\nconst FOLDER_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.folder.name}`;\nconst I18N = '@document-management:distribute';\nconst ASSIGNEE_CREATE_CONCURRENCY = 3;\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction asItems<T>(value: unknown): T[] {\n if (Array.isArray(value)) {\n return value as T[];\n }\n if (value && typeof value === 'object' && Array.isArray((value as { items?: unknown }).items)) {\n return (value as { items: T[] }).items;\n }\n return [];\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return null;\n }\n return value as Record<string, unknown>;\n}\n\nfunction statusRef(\n row: TaskStatusRow | undefined,\n): { id: string; title?: string; color?: string; icon?: string } | undefined {\n const id = asTrimmedId(row?.id);\n if (!id) {\n return undefined;\n }\n return { id, title: row?.title, color: row?.color, icon: row?.icon };\n}\n\nfunction resolveSubject(input: AXMDistributeDocumentCommandInput = {}): {\n kind: 'file' | 'folder';\n id: string;\n title: string;\n} | null {\n const data = input.data;\n const nodeType =\n data && typeof data === 'object' && 'type' in data ? (data as { type?: unknown }).type : undefined;\n const fromDataId =\n data && typeof data === 'object' ? asTrimmedId((data as { id?: unknown }).id) : undefined;\n const documentId =\n asTrimmedId(input.options?.documentId) ??\n asTrimmedId(input.documentId) ??\n (data && typeof data === 'object' ? asTrimmedId((data as { documentId?: unknown }).documentId) : undefined);\n const folderId =\n asTrimmedId(input.options?.folderId) ??\n asTrimmedId(input.folderId) ??\n (data && typeof data === 'object' ? asTrimmedId((data as { folderId?: unknown }).folderId) : undefined);\n\n if (nodeType === 'folder' && fromDataId) {\n return { kind: 'folder', id: fromDataId, title: asDisplayName((data as { name?: unknown }).name) ?? fromDataId };\n }\n if (nodeType === 'file' && fromDataId) {\n return { kind: 'file', id: fromDataId, title: asDisplayName((data as { name?: unknown }).name) ?? fromDataId };\n }\n if (folderId) {\n return { kind: 'folder', id: folderId, title: folderId };\n }\n if (documentId) {\n return { kind: 'file', id: documentId, title: documentId };\n }\n return null;\n}\n\nfunction metaDataFormOf(record: Record<string, unknown>): Record<string, unknown> | undefined {\n const form = record['metaDataForm'];\n return asRecord(form) ?? undefined;\n}\n\n//#endregion\n\n//#region ----- Distribute document command -----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMDistributeDocumentCommand implements AXPCommand<AXMDistributeDocumentCommandInput> {\n //#region ----- Services & Dependencies -----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly entityService = inject(AXPEntityService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly workflowManager = inject(AXPWorkflowManager);\n private readonly driveService = inject(AXMDocumentManagerService);\n private readonly documentApi = inject(AXPDocumentManagementService);\n private readonly loadingDialog = inject(AXLoadingDialogService);\n\n private readonly documentData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.document.name)\n .data<string, AXMDocumentDto>();\n private readonly folderData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.folder.name)\n .data<string, AXMDocumentManagementFolderEntityModel>();\n private readonly taskTypeData = this.entityService.withEntity(TASK_MODULE, TASK_TYPE_ENTITY).data<string, TaskTypeRow>();\n private readonly taskStatusData = this.entityService\n .withEntity(TASK_MODULE, TASK_STATUS_ENTITY)\n .data<string, TaskStatusRow>();\n private readonly taskData = this.entityService.withEntity(TASK_MODULE, TASK_ENTITY).data<string>();\n private readonly assignmentData = this.entityService.withEntity(TASK_MODULE, TASK_ASSIGNMENT_ENTITY).data<string>();\n private readonly documentTypeData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.documentType.name)\n .data<string, DocumentTypeRow>();\n\n //#endregion\n\n //#region ----- Command Implementation -----\n\n async execute(input: AXMDistributeDocumentCommandInput = {}): AXPCommandExecuteResultPromise {\n if (!this.sessionService.authorize(AXPContentDocumentsPermissionKeys.DistributeDocuments)) {\n await this.toastError('errors.forbidden');\n return { success: false, message: { text: `${I18N}.errors.forbidden` } };\n }\n\n const subjectHint = resolveSubject(input);\n if (!subjectHint) {\n await this.toastError('errors.subject-required');\n return { success: false, message: { text: `${I18N}.errors.subject-required` } };\n }\n\n const subject = await this.loadSubject(subjectHint);\n if (!subject) {\n await this.toastError('errors.subject-required');\n return { success: false, message: { text: `${I18N}.errors.subject-required` } };\n }\n\n const typeLoader = {\n byNames: (names: string[]) => this.driveService.getDocumentTypesByNames(names),\n byKey: (id: string) => this.documentTypeData.byKey(id),\n };\n const appliesTo = subject.kind === 'folder' ? 'folder' : 'document';\n const allowsDistribution = await sourcesAllowDocumentDistribution(\n [subject.record, input.data],\n typeLoader,\n appliesTo,\n );\n if (!allowsDistribution) {\n await this.toastError('errors.not-enabled');\n return { success: false, message: { text: `${I18N}.errors.not-enabled` } };\n }\n\n if (await this.requiresUnfinishedReview(subject, typeLoader)) {\n await this.toastError('errors.review-required');\n return { success: false, message: { text: `${I18N}.errors.review-required` } };\n }\n\n const setupPromise = this.loadDistributionSetup();\n const form = await this.openDialog(subject.title);\n if (!form) {\n return { success: true, kind: 'object', data: { cancelled: true } };\n }\n\n const loading = await this.showDistributeLoading(form.assigneeIds.length);\n try {\n const setup = await setupPromise;\n if (!setup?.taskType?.id) {\n await this.toastError('errors.task-type-missing');\n return { success: false, message: { text: `${I18N}.errors.task-type-missing` } };\n }\n if (!setup.openStatus?.id) {\n await this.toastError('errors.status-missing');\n return { success: false, message: { text: `${I18N}.errors.status-missing` } };\n }\n\n const version = await this.resolveHighestVersion(subject);\n const created = await this.createParentAndSubtasks({\n form,\n setup,\n subject,\n version,\n loading,\n });\n\n if (created.pinFailed) {\n await this.toastWarning('warnings.pin-failed');\n }\n\n const [title, content] = await Promise.all([\n this.translationService.translateAsync(`${I18N}.success.title`),\n this.translationService.translateAsync(`${I18N}.success.description`),\n ]);\n this.toastService.show({ color: 'success', title, content, timeOut: 3000 });\n return {\n success: true,\n kind: 'object',\n data: {\n parentTaskId: created.parentTaskId,\n taskIds: created.taskIds,\n instanceIds: created.instanceIds,\n },\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : undefined;\n await this.toastError('errors.failed', message);\n return { success: false, message: { text: message ?? `${I18N}.errors.failed` } };\n } finally {\n loading.close();\n }\n }\n\n //#endregion\n\n //#region ----- Dialog -----\n\n private async openDialog(defaultTitle: string): Promise<DistributeDialogResult | null> {\n const dueDate = new Date();\n dueDate.setHours(0, 0, 0, 0);\n const result = await this.layoutBuilder\n .create()\n .dialog<DistributeDialogResult | null>((dialog) => {\n dialog\n .setTitle(`${I18N}.dialog.title`)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n title: defaultTitle,\n description: '',\n dueDate,\n assigneeIds: [],\n })\n .content((flex) => {\n flex\n .setDirection('column')\n .setGap('12px')\n .formField(`${I18N}.fields.title`, (field) => {\n field.path('title');\n field.textBox({ validations: [{ rule: 'required' }] });\n })\n .formField(`${I18N}.fields.description`, (field) => {\n field.path('description');\n field.textBox({});\n })\n .formField(`${I18N}.fields.due-date`, (field) => {\n field.path('dueDate');\n field.dateTimeBox({ type: 'date', validations: [{ rule: 'required' }] });\n })\n .formField(`${I18N}.fields.assignees`, (field) => {\n field.path('assigneeIds');\n field.lookupBox({\n entity: 'SecurityManagement.User',\n multiple: true,\n look: 'lookup',\n validations: [{ rule: 'required' }],\n });\n });\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title');\n actions.submit(`${I18N}.dialog.submit`);\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n const ctx = dialogRef.context() as {\n title?: string;\n description?: string;\n dueDate?: Date | string | null;\n assigneeIds?: unknown;\n };\n const title = (ctx.title ?? '').trim();\n const assigneeIds = asUserIds(ctx.assigneeIds);\n if (!title) {\n throw new Error(`${I18N}.errors.title-required`);\n }\n if (!ctx.dueDate) {\n throw new Error(`${I18N}.errors.due-date-required`);\n }\n if (assigneeIds.length === 0) {\n throw new Error(`${I18N}.errors.assignees-required`);\n }\n dialogRef.setLoading(true);\n return {\n title,\n description: (ctx.description ?? '').trim() || undefined,\n dueDate: ctx.dueDate,\n assigneeIds,\n };\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<DistributeDialogResult>(result);\n }\n\n //#endregion\n\n //#region ----- Create parent and sub-tasks -----\n\n private async createParentAndSubtasks(params: {\n form: DistributeDialogResult;\n setup: DistributionSetup;\n subject: DistributionSubject;\n version: number;\n loading: LoadingDialogRef;\n }): Promise<{ parentTaskId: string; taskIds: string[]; instanceIds: string[]; pinFailed: boolean }> {\n const initiatorId = this.sessionService.user?.id ?? params.form.assigneeIds[0];\n const subjectRef: AXPEntityReference = {\n type: params.subject.kind === 'folder' ? FOLDER_ENTITY_NAME : DOCUMENT_ENTITY_NAME,\n id: params.subject.id,\n title: params.subject.title,\n };\n const versionForm = stampDocumentDistributionFormValues(undefined, {\n [AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME]: params.version,\n });\n\n const parentTask = await this.taskData.create({\n title: params.form.title,\n description: params.form.description,\n taskTypeId: params.setup.taskType.id,\n taskType: { id: params.setup.taskType.id, title: params.setup.taskType.title },\n statusId: params.setup.openStatus.id,\n status: statusRef(params.setup.openStatus),\n priority: 'medium',\n progress: 0,\n order: 0,\n startDate: params.form.dueDate,\n dueDate: params.form.dueDate,\n assigneeId: initiatorId,\n assignee: { id: initiatorId },\n subjectRef,\n metaDataForm: versionForm,\n isArchived: false,\n } as never);\n const parentTaskId = resolveCreatedEntityId(parentTask);\n\n let pinFailed = false;\n await this.pinSubjectOnTask(parentTaskId, params.subject).catch((error) => {\n console.warn('[AXMDistributeDocumentCommand] pin parent shortcut failed', error);\n pinFailed = true;\n });\n\n const total = params.form.assigneeIds.length;\n let completed = 0;\n const created = await mapWithConcurrency(params.form.assigneeIds, ASSIGNEE_CREATE_CONCURRENCY, async (userId) => {\n const row = await this.createAndStartForAssignee({\n userId,\n assignedBy: initiatorId,\n form: params.form,\n setup: params.setup,\n subject: params.subject,\n subjectRef,\n parentTaskId,\n parentTitle: params.form.title,\n versionForm,\n });\n completed += 1;\n await this.updateDistributeLoadingProgress(params.loading, completed, total);\n return row;\n });\n\n return {\n parentTaskId,\n taskIds: created.map((row) => row.taskId),\n instanceIds: created\n .map((row) => row.instanceId)\n .filter((id): id is string => typeof id === 'string' && id.length > 0),\n pinFailed: pinFailed || created.some((row) => row.pinFailed),\n };\n }\n\n private async createAndStartForAssignee(params: {\n userId: string;\n assignedBy: string;\n form: DistributeDialogResult;\n setup: DistributionSetup;\n subject: DistributionSubject;\n subjectRef: AXPEntityReference;\n parentTaskId: string;\n parentTitle: string;\n versionForm: Record<string, unknown>;\n }): Promise<{ taskId: string; instanceId?: string; pinFailed: boolean }> {\n const createdTask = await this.taskData.create({\n title: params.form.title,\n description: params.form.description,\n taskTypeId: params.setup.taskType.id,\n taskType: { id: params.setup.taskType.id, title: params.setup.taskType.title },\n statusId: params.setup.openStatus.id,\n status: statusRef(params.setup.openStatus),\n priority: 'medium',\n progress: 0,\n order: 0,\n startDate: params.form.dueDate,\n dueDate: params.form.dueDate,\n assigneeId: params.userId,\n assignee: { id: params.userId },\n subjectRef: params.subjectRef,\n parentTaskId: params.parentTaskId,\n parentTask: { id: params.parentTaskId, title: params.parentTitle },\n metaDataForm: params.versionForm,\n isArchived: false,\n } as never);\n const taskId = resolveCreatedEntityId(createdTask);\n\n let pinFailed = false;\n const assignmentPromise = this.assignmentData.create({\n taskId,\n assignmentRef: {\n sourceKey: 'employee-user',\n refId: params.userId,\n displayName: params.userId,\n },\n role: 'reviewer',\n assignedBy: params.assignedBy,\n assignedAt: new Date(),\n isActive: true,\n } as never);\n\n const pinPromise = this.pinSubjectOnTask(taskId, params.subject).catch((error) => {\n console.warn('[AXMDistributeDocumentCommand] pin document shortcut failed', error);\n pinFailed = true;\n });\n\n const [, , instanceId] = await Promise.all([\n assignmentPromise,\n pinPromise,\n this.startWorkflowForAssignee(taskId, params),\n ]);\n return { taskId, instanceId, pinFailed };\n }\n\n private async startWorkflowForAssignee(\n taskId: string,\n params: {\n userId: string;\n assignedBy: string;\n form: DistributeDialogResult;\n setup: DistributionSetup;\n subject: DistributionSubject;\n parentTaskId: string;\n },\n ): Promise<string | undefined> {\n const startResult = await this.workflowManager.start(params.setup.workflowId, {\n taskId,\n taskTitle: params.form.title,\n documentId: params.subject.kind === 'file' ? params.subject.id : '',\n folderId: params.subject.kind === 'folder' ? params.subject.id : '',\n parentTaskId: params.parentTaskId,\n signerUserId: params.userId,\n signerUserIds: [params.userId],\n initiatorUserId: params.assignedBy,\n openStatusId: params.setup.openStatus.id,\n openStatus: statusRef(params.setup.openStatus),\n signOffStatusId: params.setup.signOffStatus?.id ?? params.setup.openStatus.id,\n signOffStatus: statusRef(params.setup.signOffStatus) ?? statusRef(params.setup.openStatus),\n completedStatusId: params.setup.completedStatus?.id ?? params.setup.openStatus.id,\n completedStatus: statusRef(params.setup.completedStatus) ?? statusRef(params.setup.openStatus),\n correlationId: taskId,\n refId: taskId,\n refType: TASK_ENTITY_NAME,\n dueDate: params.form.dueDate,\n });\n\n if (!startResult.success) {\n throw new Error(startResult.error ?? 'workflow-failed');\n }\n\n if (startResult.instanceId) {\n try {\n await this.taskData.update(taskId, {\n workflowInfo: buildAXPRecordWorkflowInfo({\n instanceId: startResult.instanceId,\n definitionId: params.setup.workflowId,\n correlationId: taskId,\n }),\n } as never);\n } catch (error) {\n console.warn('[AXMDistributeDocumentCommand] stamp workflowInfo failed', error);\n }\n }\n\n return startResult.instanceId;\n }\n\n //#endregion\n\n //#region ----- Pin subject -----\n\n private async pinSubjectOnTask(taskId: string, subject: DistributionSubject): Promise<void> {\n const folder = await this.driveService.getRootByEntityRef(`${TASK_MODULE}.${TASK_ENTITY}`, taskId);\n const folderId = folder?.result?.id;\n if (!folderId) {\n throw new Error('Task document folder was not provisioned');\n }\n await this.driveService.createShortcut(subject.id, subject.kind === 'folder' ? 'folder' : 'file', folderId, {\n nameOverride: subject.title,\n });\n }\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async loadSubject(\n subject: { kind: 'file' | 'folder'; id: string; title: string },\n ): Promise<DistributionSubject | null> {\n if (subject.kind === 'folder') {\n const folder = await this.folderData.byKey(subject.id);\n if (!folder?.id) {\n return null;\n }\n return {\n kind: 'folder',\n id: folder.id,\n title: asDisplayName(folder.title) ?? subject.title,\n record: folder as unknown as Record<string, unknown>,\n };\n }\n const document = await this.documentData.byKey(subject.id);\n if (!document?.id) {\n return null;\n }\n return {\n kind: 'file',\n id: document.id,\n title: asDisplayName(document.name) ?? asDisplayName(document.title) ?? subject.title,\n record: document as unknown as Record<string, unknown>,\n };\n }\n\n private async requiresUnfinishedReview(\n subject: DistributionSubject,\n load: {\n byNames: (names: string[]) => Promise<DocumentTypeRow[]>;\n byKey: (id: string) => Promise<DocumentTypeRow | null | undefined>;\n },\n ): Promise<boolean> {\n const types = await this.loadSubjectTypes(subject, load);\n if (!types.some((type) => isDocumentReviewRequired(type.requiresReview))) {\n return false;\n }\n return !isDocumentReviewMetadataComplete(metaDataFormOf(subject.record));\n }\n\n private async loadSubjectTypes(\n subject: DistributionSubject,\n load: {\n byNames: (names: string[]) => Promise<DocumentTypeRow[]>;\n byKey: (id: string) => Promise<DocumentTypeRow | null | undefined>;\n },\n ): Promise<DocumentTypeRow[]> {\n const keys = collectDocumentTypeKeys(subject.record);\n const found: DocumentTypeRow[] = [];\n for (const id of keys.ids) {\n try {\n const type = await load.byKey(id);\n if (type) {\n found.push(type);\n }\n } catch {\n // Keep checking remaining types when one lookup misses.\n }\n }\n if (keys.names.length) {\n const byName = await load.byNames(keys.names);\n found.push(...byName);\n }\n return found;\n }\n\n private async resolveHighestVersion(subject: DistributionSubject): Promise<number> {\n if (subject.kind === 'file') {\n return highestDocumentVersionNumber([subject.record]);\n }\n try {\n const documents = await this.documentApi.listFolderReviewDocuments(subject.id);\n return highestDocumentVersionNumber(documents);\n } catch (error) {\n console.warn('[AXMDistributeDocumentCommand] list folder documents for version failed', error);\n return 1;\n }\n }\n\n private async loadDistributionSetup(): Promise<DistributionSetup | null> {\n const taskType = await this.loadDistributionTaskType();\n if (!taskType?.id) {\n return null;\n }\n const statuses = await this.loadStatuses(taskType.id);\n const openStatus = statuses.find((row) => row.isDefault) ?? statuses[0];\n const signOffStatus = statuses.find((row) => row.name === 'sign-off') ?? openStatus;\n const completedStatus = statuses.find((row) => row.isFinal) ?? signOffStatus;\n return {\n taskType,\n openStatus,\n signOffStatus,\n completedStatus,\n workflowId: taskType.workflowConfig?.workflowName?.trim() || DOCUMENT_DISTRIBUTION_WORKFLOW_NAME,\n };\n }\n\n private async loadDistributionTaskType(): Promise<TaskTypeRow | null> {\n try {\n const byId = await this.taskTypeData.byKey(MOCK_DOCUMENT_DISTRIBUTION_TASK_TYPE_ID);\n if (byId?.id) {\n return byId;\n }\n } catch {\n // hashed tenant copies use different ids\n }\n\n const result = await this.taskTypeData.query({ skip: 0, take: 200 });\n return (\n asItems<TaskTypeRow>(result).find(\n (row) => row.workflowConfig?.workflowName?.trim() === DOCUMENT_DISTRIBUTION_WORKFLOW_NAME,\n ) ?? null\n );\n }\n\n private async loadStatuses(taskTypeId: string): Promise<TaskStatusRow[]> {\n const result = await this.taskStatusData.query({\n skip: 0,\n take: 50,\n filter: { field: 'taskTypeId', operator: { type: 'equal' }, value: taskTypeId },\n });\n const rows = asItems<TaskStatusRow>(result);\n return rows.some((row) => row.taskTypeId === taskTypeId)\n ? rows.filter((row) => row.taskTypeId === taskTypeId)\n : rows;\n }\n\n private async showDistributeLoading(assigneeCount: number): Promise<LoadingDialogRef> {\n const [title, text] = await Promise.all([\n this.translationService.translateAsync(`${I18N}.loading.title`),\n this.translationService.translateAsync(`${I18N}.loading.description`, {\n params: { count: assigneeCount },\n }),\n ]);\n return this.loadingDialog.show({\n title,\n mode: 'indeterminate',\n progressColor: 'primary',\n text,\n }) as LoadingDialogRef;\n }\n\n private async updateDistributeLoadingProgress(\n loading: LoadingDialogRef,\n current: number,\n total: number,\n ): Promise<void> {\n if (!loading.setProgressText) {\n return;\n }\n const text = await this.translationService.translateAsync(`${I18N}.loading.progress`, {\n params: { current, total },\n });\n loading.setProgressText(text);\n }\n\n private async toastError(key: string, detail?: string): Promise<void> {\n const [title, fallback] = await Promise.all([\n this.translationService.translateAsync(`${I18N}.errors.title`),\n this.translationService.translateAsync(`${I18N}.${key}`),\n ]);\n this.toastService.show({\n color: 'danger',\n title,\n content: detail?.trim() || fallback,\n closeButton: true,\n timeOut: 5000,\n });\n }\n\n private async toastWarning(key: string): Promise<void> {\n const [title, content] = await Promise.all([\n this.translationService.translateAsync(`${I18N}.warnings.title`),\n this.translationService.translateAsync(`${I18N}.${key}`),\n ]);\n this.toastService.show({\n color: 'warning',\n title,\n content,\n closeButton: true,\n timeOut: 5000,\n });\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|
|
@@ -74,5 +74,5 @@ async function mapWithConcurrency(items, limit, mapper) {
|
|
|
74
74
|
}
|
|
75
75
|
//#endregion
|
|
76
76
|
|
|
77
|
-
export { asTrimmedId as a, asDisplayName as b, asUserIds as c,
|
|
78
|
-
//# sourceMappingURL=acorex-platform-module-document-management-client-distribute-document.command.util-
|
|
77
|
+
export { asTrimmedId as a, asDisplayName as b, asUserIds as c, mapWithConcurrency as m, resolveCreatedEntityId as r };
|
|
78
|
+
//# sourceMappingURL=acorex-platform-module-document-management-client-distribute-document.command.util-HCkpx2Hk.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-document-management-client-distribute-document.command.util-
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-document-management-client-distribute-document.command.util-HCkpx2Hk.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/commands/distribute-document.command.util.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { coerceUnknownToMultiLanguageString, resolveMultiLanguageString } from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ----- Helpers -----\n\nexport function asTrimmedId(value: unknown): string | undefined {\n if (typeof value === 'string' && value.trim()) {\n return value.trim();\n }\n if (value && typeof value === 'object' && 'id' in value) {\n const id = (value as { id?: unknown }).id;\n if (typeof id === 'string' && id.trim()) {\n return id.trim();\n }\n }\n return undefined;\n}\n\nexport function asUserIds(value: unknown): string[] {\n if (value == null || value === '') {\n return [];\n }\n const source = Array.isArray(value)\n ? value\n : value && typeof value === 'object' && Array.isArray((value as { selectedItems?: unknown }).selectedItems)\n ? ((value as { selectedItems: unknown[] }).selectedItems)\n : [value];\n const ids: string[] = [];\n for (const row of source) {\n const id = asTrimmedId(row);\n if (id && !ids.includes(id)) {\n ids.push(id);\n }\n }\n return ids;\n}\n\nexport function resolveCreatedEntityId(created: unknown): string {\n if (typeof created === 'string' && created.trim()) {\n return created.trim();\n }\n if (created && typeof created === 'object' && 'result' in created) {\n return resolveCreatedEntityId((created as { result: unknown }).result);\n }\n const id = asTrimmedId(created);\n if (!id) {\n throw new Error('Failed to resolve created entity id');\n }\n return id;\n}\n\nexport function isTruthyFlag(value: unknown): boolean {\n return value === true || value === 'true' || value === 1 || value === '1';\n}\n\nexport function asDisplayName(value: unknown): string | undefined {\n const resolved = resolveMultiLanguageString(coerceUnknownToMultiLanguageString(value), 'en-US').trim();\n return resolved || undefined;\n}\n\nexport async function mapWithConcurrency<T, R>(\n items: readonly T[],\n limit: number,\n mapper: (item: T, index: number) => Promise<R>,\n): Promise<R[]> {\n if (items.length === 0) {\n return [];\n }\n const results: R[] = new Array(items.length);\n let nextIndex = 0;\n const workerCount = Math.min(Math.max(1, limit), items.length);\n await Promise.all(\n Array.from({ length: workerCount }, async () => {\n for (;;) {\n const index = nextIndex;\n nextIndex += 1;\n if (index >= items.length) {\n return;\n }\n results[index] = await mapper(items[index], index);\n }\n }),\n );\n return results;\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@ import * as i0 from '@angular/core';
|
|
|
28
28
|
import { inject, signal, viewChild, computed, effect, untracked, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
29
29
|
import { RouterModule } from '@angular/router';
|
|
30
30
|
import { RootConfig } from '@acorex-platform/module-document-management-client/contracts';
|
|
31
|
-
import { j as AXMDocumentManagerService, A as AXPDocumentExplorerViewModel,
|
|
31
|
+
import { j as AXMDocumentManagerService, A as AXPDocumentExplorerViewModel, p as AXMDocumentExplorerComponent, q as AXMFolderPathBreadcrumbsComponent } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-BiosmCuZ.mjs';
|
|
32
32
|
|
|
33
33
|
class AXMDocumentDriveChooseComponent extends AXBasePageComponent {
|
|
34
34
|
constructor() {
|
|
@@ -258,4 +258,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
258
258
|
}], propDecorators: { documentExplorer: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXMDocumentExplorerComponent), { isSignal: true }] }] } });
|
|
259
259
|
|
|
260
260
|
export { AXMDocumentDriveChooseComponent };
|
|
261
|
-
//# sourceMappingURL=acorex-platform-module-document-management-client-drive-choose.component-
|
|
261
|
+
//# sourceMappingURL=acorex-platform-module-document-management-client-drive-choose.component-DxEWAigd.mjs.map
|