@acorex/modules 21.0.0-next.14 → 21.0.0-next.16

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.
Files changed (127) hide show
  1. package/assessment-management/README.md +11 -0
  2. package/assessment-management/index.d.ts +122 -24
  3. package/common/index.d.ts +6 -1
  4. package/data-management/index.d.ts +67 -48
  5. package/document-management/index.d.ts +261 -76
  6. package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-ClgGS32i.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-HgaOIA2U.mjs} +950 -468
  7. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-HgaOIA2U.mjs.map +1 -0
  8. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-UmXUT6Xn.mjs → acorex-modules-assessment-management-answers-viewer-widget-column.component-DyxE9Xec.mjs} +2 -2
  9. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-UmXUT6Xn.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-column.component-DyxE9Xec.mjs.map} +1 -1
  10. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-vVfXtden.mjs → acorex-modules-assessment-management-answers-viewer-widget-edit.component-DC2Ep3r1.mjs} +2 -2
  11. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-vVfXtden.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-edit.component-DC2Ep3r1.mjs.map} +1 -1
  12. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-C75zxKgV.mjs → acorex-modules-assessment-management-answers-viewer-widget-view.component-iKqac5PE.mjs} +2 -2
  13. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-C75zxKgV.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-view.component-iKqac5PE.mjs.map} +1 -1
  14. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-CjhC5YAF.mjs → acorex-modules-assessment-management-assessment-case.entity-CsCMlcvF.mjs} +3 -3
  15. package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-CsCMlcvF.mjs.map +1 -0
  16. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-B_IDiEzp.mjs → acorex-modules-assessment-management-assessment-session.entity-BkNVe3FO.mjs} +2 -2
  17. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-B_IDiEzp.mjs.map → acorex-modules-assessment-management-assessment-session.entity-BkNVe3FO.mjs.map} +1 -1
  18. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-zT5u3h_s.mjs → acorex-modules-assessment-management-fill-assessment-session.command-Dgeh3E5f.mjs} +32 -33
  19. package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-Dgeh3E5f.mjs.map +1 -0
  20. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BIXy9eut.mjs → acorex-modules-assessment-management-preview-questionnaire.command-NcZlE6DU.mjs} +24 -8
  21. package/fesm2022/acorex-modules-assessment-management-preview-questionnaire.command-NcZlE6DU.mjs.map +1 -0
  22. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-BWYLXvCp.mjs → acorex-modules-assessment-management-question-bank-item.entity-vNxSmJuv.mjs} +2 -2
  23. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-BWYLXvCp.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-vNxSmJuv.mjs.map} +1 -1
  24. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-edit.component-3wVcKQGE.mjs → acorex-modules-assessment-management-questionnaire-builder-edit.component-CbfHOFT1.mjs} +20 -4
  25. package/fesm2022/acorex-modules-assessment-management-questionnaire-builder-edit.component-CbfHOFT1.mjs.map +1 -0
  26. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-view.component-meuUo7Vx.mjs → acorex-modules-assessment-management-questionnaire-builder-view.component-DDqDjzwH.mjs} +3 -3
  27. package/fesm2022/acorex-modules-assessment-management-questionnaire-builder-view.component-DDqDjzwH.mjs.map +1 -0
  28. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder.component-CGgUUkOY.mjs → acorex-modules-assessment-management-questionnaire-builder.component-BOnwdWj7.mjs} +11 -5
  29. package/fesm2022/acorex-modules-assessment-management-questionnaire-builder.component-BOnwdWj7.mjs.map +1 -0
  30. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-BX8Q2Kfn.mjs +392 -0
  31. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-BX8Q2Kfn.mjs.map +1 -0
  32. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer.service-D3k3J93r.mjs → acorex-modules-assessment-management-questionnaire-viewer.service-CSdVNxV2.mjs} +21 -6
  33. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer.service-CSdVNxV2.mjs.map +1 -0
  34. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-C8sX0d_p.mjs → acorex-modules-assessment-management-questionnaire.entity-DFQIvlza.mjs} +138 -23
  35. package/fesm2022/acorex-modules-assessment-management-questionnaire.entity-DFQIvlza.mjs.map +1 -0
  36. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-Czq7cj9R.mjs → acorex-modules-assessment-management-view-session-answers.command-CMmE72Kt.mjs} +3 -3
  37. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-Czq7cj9R.mjs.map → acorex-modules-assessment-management-view-session-answers.command-CMmE72Kt.mjs.map} +1 -1
  38. package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
  39. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-DHSmTid9.mjs → acorex-modules-auth-acorex-modules-auth-CZuDhBx5.mjs} +15 -15
  40. package/fesm2022/acorex-modules-auth-acorex-modules-auth-CZuDhBx5.mjs.map +1 -0
  41. package/fesm2022/{acorex-modules-auth-app-chooser.component-BgnYEXEl.mjs → acorex-modules-auth-app-chooser.component-DJE47I8p.mjs} +2 -2
  42. package/fesm2022/{acorex-modules-auth-app-chooser.component-BgnYEXEl.mjs.map → acorex-modules-auth-app-chooser.component-DJE47I8p.mjs.map} +1 -1
  43. package/fesm2022/{acorex-modules-auth-login.module-BvhI4dAz.mjs → acorex-modules-auth-login.module-CI_lkyb7.mjs} +4 -4
  44. package/fesm2022/{acorex-modules-auth-login.module-BvhI4dAz.mjs.map → acorex-modules-auth-login.module-CI_lkyb7.mjs.map} +1 -1
  45. package/fesm2022/{acorex-modules-auth-master.layout-D4zZR1Gr.mjs → acorex-modules-auth-master.layout-CdY380qS.mjs} +2 -2
  46. package/fesm2022/{acorex-modules-auth-master.layout-D4zZR1Gr.mjs.map → acorex-modules-auth-master.layout-CdY380qS.mjs.map} +1 -1
  47. package/fesm2022/{acorex-modules-auth-oauth-callback.component-DniYj9Tx.mjs → acorex-modules-auth-oauth-callback.component-BvPk9b3e.mjs} +2 -2
  48. package/fesm2022/{acorex-modules-auth-oauth-callback.component-DniYj9Tx.mjs.map → acorex-modules-auth-oauth-callback.component-BvPk9b3e.mjs.map} +1 -1
  49. package/fesm2022/{acorex-modules-auth-password.component-mvQ4KY3g.mjs → acorex-modules-auth-password.component-CefISnvd.mjs} +2 -2
  50. package/fesm2022/{acorex-modules-auth-password.component-mvQ4KY3g.mjs.map → acorex-modules-auth-password.component-CefISnvd.mjs.map} +1 -1
  51. package/fesm2022/{acorex-modules-auth-password.component-CZkZAj32.mjs → acorex-modules-auth-password.component-Dw_v_EFQ.mjs} +2 -2
  52. package/fesm2022/{acorex-modules-auth-password.component-CZkZAj32.mjs.map → acorex-modules-auth-password.component-Dw_v_EFQ.mjs.map} +1 -1
  53. package/fesm2022/{acorex-modules-auth-routes-6Ulmk7si.mjs → acorex-modules-auth-routes-CwcJHbAi.mjs} +2 -2
  54. package/fesm2022/{acorex-modules-auth-routes-6Ulmk7si.mjs.map → acorex-modules-auth-routes-CwcJHbAi.mjs.map} +1 -1
  55. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-3OkOSTkm.mjs → acorex-modules-auth-tenant-chooser.component-DFhTYEDt.mjs} +2 -2
  56. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-3OkOSTkm.mjs.map → acorex-modules-auth-tenant-chooser.component-DFhTYEDt.mjs.map} +1 -1
  57. package/fesm2022/{acorex-modules-auth-two-factor.module-DtrVmYAu.mjs → acorex-modules-auth-two-factor.module-BOZB6sLo.mjs} +2 -2
  58. package/fesm2022/{acorex-modules-auth-two-factor.module-DtrVmYAu.mjs.map → acorex-modules-auth-two-factor.module-BOZB6sLo.mjs.map} +1 -1
  59. package/fesm2022/{acorex-modules-auth-user-sessions.component-Co18_D9H.mjs → acorex-modules-auth-user-sessions.component-BnrnXg4G.mjs} +2 -2
  60. package/fesm2022/{acorex-modules-auth-user-sessions.component-Co18_D9H.mjs.map → acorex-modules-auth-user-sessions.component-BnrnXg4G.mjs.map} +1 -1
  61. package/fesm2022/acorex-modules-auth.mjs +1 -1
  62. package/fesm2022/acorex-modules-calendar-management.mjs +4 -3
  63. package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
  64. package/fesm2022/acorex-modules-common.mjs +35 -29
  65. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  66. package/fesm2022/acorex-modules-data-management.mjs +333 -342
  67. package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
  68. package/fesm2022/acorex-modules-document-management.mjs +2716 -527
  69. package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
  70. package/fesm2022/acorex-modules-human-capital-management-leave-request-task-popover.component-yGvT9kSL.mjs +381 -0
  71. package/fesm2022/acorex-modules-human-capital-management-leave-request-task-popover.component-yGvT9kSL.mjs.map +1 -0
  72. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-CviI9xJC.mjs → acorex-modules-human-capital-management-leave-request.entity-BDSyXKSF.mjs} +2 -2
  73. package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-BDSyXKSF.mjs.map +1 -0
  74. package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-CY81Nohl.mjs → acorex-modules-human-capital-management-leave-type.entity-YitcNesR.mjs} +6 -2
  75. package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-YitcNesR.mjs.map +1 -0
  76. package/fesm2022/acorex-modules-human-capital-management.mjs +696 -351
  77. package/fesm2022/acorex-modules-human-capital-management.mjs.map +1 -1
  78. package/fesm2022/acorex-modules-locale-management.mjs +11 -2
  79. package/fesm2022/acorex-modules-locale-management.mjs.map +1 -1
  80. package/fesm2022/acorex-modules-notification-management.mjs +1 -1
  81. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  82. package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-BRVfUYiM.mjs → acorex-modules-settings-management-acorex-modules-settings-management-Dpjfgmg9.mjs} +6 -6
  83. package/fesm2022/{acorex-modules-settings-management-acorex-modules-settings-management-BRVfUYiM.mjs.map → acorex-modules-settings-management-acorex-modules-settings-management-Dpjfgmg9.mjs.map} +1 -1
  84. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-WSxrvAsV.mjs → acorex-modules-settings-management-permission-definition.provider-nYV8iDwJ.mjs} +2 -2
  85. package/fesm2022/{acorex-modules-settings-management-permission-definition.provider-WSxrvAsV.mjs.map → acorex-modules-settings-management-permission-definition.provider-nYV8iDwJ.mjs.map} +1 -1
  86. package/fesm2022/{acorex-modules-settings-management-setting-page.component-MYnJYUxE.mjs → acorex-modules-settings-management-setting-page.component-B1lhCtl_.mjs} +2 -2
  87. package/fesm2022/{acorex-modules-settings-management-setting-page.component-MYnJYUxE.mjs.map → acorex-modules-settings-management-setting-page.component-B1lhCtl_.mjs.map} +1 -1
  88. package/fesm2022/{acorex-modules-settings-management-setting-view.component-Cq80snth.mjs → acorex-modules-settings-management-setting-view.component-CAX1kFy2.mjs} +2 -2
  89. package/fesm2022/{acorex-modules-settings-management-setting-view.component-Cq80snth.mjs.map → acorex-modules-settings-management-setting-view.component-CAX1kFy2.mjs.map} +1 -1
  90. package/fesm2022/acorex-modules-settings-management.mjs +1 -1
  91. package/fesm2022/acorex-modules-system-insight.mjs +4 -3
  92. package/fesm2022/acorex-modules-system-insight.mjs.map +1 -1
  93. package/fesm2022/{acorex-modules-task-management-task-board.page-B_S373L-.mjs → acorex-modules-task-management-task-board.page-CuP9U1h8.mjs} +60 -53
  94. package/fesm2022/acorex-modules-task-management-task-board.page-CuP9U1h8.mjs.map +1 -0
  95. package/fesm2022/acorex-modules-task-management.mjs +11 -39
  96. package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
  97. package/fesm2022/acorex-modules-workflow-management-cartable-page.component-Bso0XRkJ.mjs +296 -0
  98. package/fesm2022/acorex-modules-workflow-management-cartable-page.component-Bso0XRkJ.mjs.map +1 -0
  99. package/fesm2022/acorex-modules-workflow-management-index-xB36g4F1.mjs +469 -0
  100. package/fesm2022/acorex-modules-workflow-management-index-xB36g4F1.mjs.map +1 -0
  101. package/fesm2022/acorex-modules-workflow-management.mjs +2507 -681
  102. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  103. package/human-capital-management/index.d.ts +79 -19
  104. package/package.json +16 -16
  105. package/task-management/index.d.ts +1 -12
  106. package/workflow-management/index.d.ts +265 -220
  107. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-ClgGS32i.mjs.map +0 -1
  108. package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-CjhC5YAF.mjs.map +0 -1
  109. package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-zT5u3h_s.mjs.map +0 -1
  110. package/fesm2022/acorex-modules-assessment-management-preview-questionnaire.command-BIXy9eut.mjs.map +0 -1
  111. package/fesm2022/acorex-modules-assessment-management-questionnaire-builder-edit.component-3wVcKQGE.mjs.map +0 -1
  112. package/fesm2022/acorex-modules-assessment-management-questionnaire-builder-view.component-meuUo7Vx.mjs.map +0 -1
  113. package/fesm2022/acorex-modules-assessment-management-questionnaire-builder.component-CGgUUkOY.mjs.map +0 -1
  114. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-kVnWtedV.mjs +0 -416
  115. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer-popup.component-kVnWtedV.mjs.map +0 -1
  116. package/fesm2022/acorex-modules-assessment-management-questionnaire-viewer.service-D3k3J93r.mjs.map +0 -1
  117. package/fesm2022/acorex-modules-assessment-management-questionnaire.entity-C8sX0d_p.mjs.map +0 -1
  118. package/fesm2022/acorex-modules-auth-acorex-modules-auth-DHSmTid9.mjs.map +0 -1
  119. package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-CviI9xJC.mjs.map +0 -1
  120. package/fesm2022/acorex-modules-human-capital-management-leave-type.entity-CY81Nohl.mjs.map +0 -1
  121. package/fesm2022/acorex-modules-task-management-task-board.page-B_S373L-.mjs.map +0 -1
  122. package/fesm2022/acorex-modules-workflow-management-activity-definition.entity-BbBEPTBa.mjs +0 -258
  123. package/fesm2022/acorex-modules-workflow-management-activity-definition.entity-BbBEPTBa.mjs.map +0 -1
  124. package/fesm2022/acorex-modules-workflow-management-workflow-definition.entity-nJMBL0qt.mjs +0 -371
  125. package/fesm2022/acorex-modules-workflow-management-workflow-definition.entity-nJMBL0qt.mjs.map +0 -1
  126. package/fesm2022/acorex-modules-workflow-management-workflow-instance.entity-Pso0oRN5.mjs +0 -313
  127. package/fesm2022/acorex-modules-workflow-management-workflow-instance.entity-Pso0oRN5.mjs.map +0 -1
@@ -0,0 +1,469 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Injectable } from '@angular/core';
3
+ import { AXToastService } from '@acorex/components/toast';
4
+ import { AXPSessionService } from '@acorex/platform/auth';
5
+ import { AXMWorkflowManagementWorkItemEntityService } from './acorex-modules-workflow-management.mjs';
6
+ import { AXPWorkflowManager, AXPActivityDefinitionService } from '@acorex/platform/workflow';
7
+
8
+ //#endregion
9
+ /**
10
+ * Claim Work Item Command
11
+ *
12
+ * Claims a work item for the current user.
13
+ */
14
+ class ClaimWorkItemCommand {
15
+ constructor() {
16
+ //#region ---- Services ----
17
+ this.workItemService = inject(AXMWorkflowManagementWorkItemEntityService);
18
+ this.toastService = inject(AXToastService);
19
+ this.sessionService = inject(AXPSessionService);
20
+ }
21
+ //#endregion
22
+ //#region ---- Command Implementation ----
23
+ async execute(input) {
24
+ try {
25
+ const currentUser = this.sessionService.user;
26
+ if (!currentUser) {
27
+ return {
28
+ success: false,
29
+ message: {
30
+ text: 'User not authenticated'
31
+ },
32
+ data: {
33
+ workItem: null
34
+ }
35
+ };
36
+ }
37
+ // Get work item
38
+ const workItem = await this.workItemService.getOne(input.workItemId);
39
+ if (!workItem) {
40
+ return {
41
+ success: false,
42
+ message: {
43
+ text: 'Work item not found'
44
+ },
45
+ data: {
46
+ workItem: null
47
+ }
48
+ };
49
+ }
50
+ // Check if already claimed
51
+ if (workItem.claimedByUserId) {
52
+ this.toastService.show({
53
+ color: 'warning',
54
+ title: 'Already Claimed',
55
+ content: 'This work item has already been claimed',
56
+ closeButton: true,
57
+ timeOut: 3000,
58
+ });
59
+ return {
60
+ success: false,
61
+ message: {
62
+ text: 'Work item already claimed'
63
+ },
64
+ data: {
65
+ workItem
66
+ }
67
+ };
68
+ }
69
+ // Update work item
70
+ const now = new Date().toISOString();
71
+ const updatedWorkItem = await this.workItemService.updateOne(input.workItemId, {
72
+ ...workItem,
73
+ claimedByUserId: currentUser.id,
74
+ claimedAt: now,
75
+ status: workItem.status === 'Pending' ? 'Claimed' : workItem.status,
76
+ updatedAt: now,
77
+ });
78
+ this.toastService.show({
79
+ color: 'success',
80
+ title: 'Work Item Claimed',
81
+ content: 'Work item claimed successfully',
82
+ closeButton: true,
83
+ timeOut: 3000,
84
+ });
85
+ return {
86
+ success: true,
87
+ data: {
88
+ workItem: updatedWorkItem
89
+ }
90
+ };
91
+ }
92
+ catch (error) {
93
+ console.error('[ClaimWorkItemCommand] Error:', error);
94
+ this.toastService.show({
95
+ color: 'danger',
96
+ title: 'Claim Failed',
97
+ content: error.message || 'Unknown error',
98
+ closeButton: true,
99
+ timeOut: 5000,
100
+ });
101
+ return {
102
+ success: false,
103
+ message: {
104
+ text: error.message || 'Unknown error'
105
+ },
106
+ data: {
107
+ workItem: null
108
+ }
109
+ };
110
+ }
111
+ }
112
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ClaimWorkItemCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
113
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ClaimWorkItemCommand }); }
114
+ }
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ClaimWorkItemCommand, decorators: [{
116
+ type: Injectable
117
+ }] });
118
+
119
+ //#endregion
120
+ /**
121
+ * Complete Work Item Command
122
+ *
123
+ * Completes a work item and optionally resumes the workflow.
124
+ */
125
+ class CompleteWorkItemCommand {
126
+ constructor() {
127
+ //#region ---- Services ----
128
+ this.workItemService = inject(AXMWorkflowManagementWorkItemEntityService);
129
+ this.toastService = inject(AXToastService);
130
+ this.sessionService = inject(AXPSessionService);
131
+ this.workflowManager = inject(AXPWorkflowManager);
132
+ this.activityDefinitionService = inject(AXPActivityDefinitionService);
133
+ }
134
+ //#endregion
135
+ //#region ---- Command Implementation ----
136
+ async execute(input) {
137
+ try {
138
+ const currentUser = this.sessionService.user;
139
+ if (!currentUser) {
140
+ return {
141
+ success: false,
142
+ message: {
143
+ text: 'User not authenticated'
144
+ },
145
+ data: {
146
+ workItem: null
147
+ }
148
+ };
149
+ }
150
+ // Get work item
151
+ const workItem = await this.workItemService.getOne(input.workItemId);
152
+ if (!workItem) {
153
+ return {
154
+ success: false,
155
+ message: {
156
+ text: 'Work item not found'
157
+ },
158
+ data: {
159
+ workItem: null
160
+ }
161
+ };
162
+ }
163
+ // Check if already completed
164
+ if (workItem.status === 'Completed') {
165
+ this.toastService.show({
166
+ color: 'warning',
167
+ title: 'Already Completed',
168
+ content: 'This work item has already been completed',
169
+ closeButton: true,
170
+ timeOut: 3000,
171
+ });
172
+ return {
173
+ success: false,
174
+ message: {
175
+ text: 'Work item already completed'
176
+ },
177
+ data: {
178
+ workItem
179
+ }
180
+ };
181
+ }
182
+ // Update work item
183
+ const now = new Date().toISOString();
184
+ const updatedWorkItem = await this.workItemService.updateOne(input.workItemId, {
185
+ ...workItem,
186
+ completedByUserId: currentUser.id,
187
+ completedAt: now,
188
+ status: 'Completed',
189
+ updatedAt: now,
190
+ });
191
+ // Resume workflow if bookmark exists
192
+ let nextTask = undefined;
193
+ let workflowState = undefined;
194
+ if (workItem.bookmarkId && workItem.instanceId) {
195
+ try {
196
+ // Get taskToken from workitem (stored when workitem was created)
197
+ const taskToken = workItem.taskToken;
198
+ if (!taskToken) {
199
+ console.warn(`[CompleteWorkItemCommand] ⚠️ TaskToken not found in workitem ${workItem.id}, cannot resume workflow`);
200
+ }
201
+ else {
202
+ // Determine outcome from activity definition if not provided
203
+ let outcome = input.outcome;
204
+ if (!outcome) {
205
+ // Get activity name from workItem (activityName stores the activity type/name)
206
+ const activityName = workItem.activityName;
207
+ if (activityName) {
208
+ // Get activity definition to determine default outcome
209
+ const activityDef = await this.activityDefinitionService.getActivityByName(activityName);
210
+ if (activityDef?.outcomes && activityDef.outcomes.length > 0) {
211
+ // For collect-signature, use 'Signed' as default outcome
212
+ // Otherwise use first outcome or 'Done'
213
+ if (activityDef.name === 'workflow-activity:collect-signature') {
214
+ outcome = 'Signed';
215
+ }
216
+ else {
217
+ outcome = activityDef.outcomes[0] || 'Done';
218
+ }
219
+ }
220
+ else {
221
+ outcome = 'Done';
222
+ }
223
+ }
224
+ else {
225
+ outcome = 'Done';
226
+ }
227
+ }
228
+ // Resume workflow using WorkflowManager
229
+ const resumeResult = await this.workflowManager.resume(workItem.instanceId, workItem.activityNodeId, outcome || 'Done', input.output, taskToken);
230
+ if (!resumeResult.success) {
231
+ console.error('[CompleteWorkItemCommand] Workflow resume failed:', resumeResult.error);
232
+ }
233
+ else {
234
+ // Store nextTask and state for return
235
+ nextTask = resumeResult.nextTask || undefined;
236
+ workflowState = resumeResult.state;
237
+ }
238
+ }
239
+ }
240
+ catch (workflowError) {
241
+ console.error('[CompleteWorkItemCommand] Workflow resume error:', workflowError);
242
+ // Don't fail the command if workflow resume fails
243
+ }
244
+ }
245
+ // Show success message
246
+ this.toastService.show({
247
+ color: 'success',
248
+ title: 'Work Item Completed',
249
+ content: workflowState?.status === 'completed'
250
+ ? 'Work item completed and workflow finished successfully'
251
+ : nextTask
252
+ ? `Work item completed. Next activity: ${nextTask.activityType || nextTask.activityName || 'Unknown'}`
253
+ : 'Work item completed successfully',
254
+ closeButton: true,
255
+ timeOut: 3000,
256
+ });
257
+ return {
258
+ success: true,
259
+ data: {
260
+ workItem: updatedWorkItem,
261
+ nextTask,
262
+ state: workflowState,
263
+ },
264
+ };
265
+ }
266
+ catch (error) {
267
+ console.error('[CompleteWorkItemCommand] Error:', error);
268
+ this.toastService.show({
269
+ color: 'danger',
270
+ title: 'Complete Failed',
271
+ content: error.message || 'Unknown error',
272
+ closeButton: true,
273
+ timeOut: 5000,
274
+ });
275
+ return {
276
+ success: false,
277
+ message: {
278
+ text: error.message || 'Unknown error'
279
+ },
280
+ data: {
281
+ workItem: null
282
+ }
283
+ };
284
+ }
285
+ }
286
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CompleteWorkItemCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
287
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CompleteWorkItemCommand }); }
288
+ }
289
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CompleteWorkItemCommand, decorators: [{
290
+ type: Injectable
291
+ }] });
292
+
293
+ //#endregion
294
+ /**
295
+ * Assign Work Item Command
296
+ *
297
+ * Assigns a work item to a user.
298
+ */
299
+ class AssignWorkItemCommand {
300
+ constructor() {
301
+ //#region ---- Services ----
302
+ this.workItemService = inject(AXMWorkflowManagementWorkItemEntityService);
303
+ this.toastService = inject(AXToastService);
304
+ }
305
+ //#endregion
306
+ //#region ---- Command Implementation ----
307
+ async execute(input) {
308
+ try {
309
+ // Get work item
310
+ const workItem = await this.workItemService.getOne(input.workItemId);
311
+ if (!workItem) {
312
+ return {
313
+ success: false,
314
+ message: {
315
+ text: 'Work item not found'
316
+ },
317
+ data: {
318
+ workItem: null
319
+ }
320
+ };
321
+ }
322
+ // Update work item
323
+ const now = new Date().toISOString();
324
+ const updatedWorkItem = await this.workItemService.updateOne(input.workItemId, {
325
+ ...workItem,
326
+ assignedUserId: input.userId,
327
+ assignedAt: now,
328
+ status: workItem.status === 'Pending' ? 'Pending' : workItem.status, // Keep status if already claimed
329
+ updatedAt: now,
330
+ });
331
+ this.toastService.show({
332
+ color: 'success',
333
+ title: 'Work Item Assigned',
334
+ content: 'Work item assigned successfully',
335
+ closeButton: true,
336
+ timeOut: 3000,
337
+ });
338
+ return {
339
+ success: true,
340
+ data: {
341
+ workItem: updatedWorkItem
342
+ }
343
+ };
344
+ }
345
+ catch (error) {
346
+ console.error('[AssignWorkItemCommand] Error:', error);
347
+ this.toastService.show({
348
+ color: 'danger',
349
+ title: 'Assign Failed',
350
+ content: error.message || 'Unknown error',
351
+ closeButton: true,
352
+ timeOut: 5000,
353
+ });
354
+ return {
355
+ success: false,
356
+ message: {
357
+ text: error.message || 'Unknown error'
358
+ },
359
+ data: {
360
+ workItem: null
361
+ }
362
+ };
363
+ }
364
+ }
365
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AssignWorkItemCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
366
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AssignWorkItemCommand }); }
367
+ }
368
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AssignWorkItemCommand, decorators: [{
369
+ type: Injectable
370
+ }] });
371
+
372
+ //#endregion
373
+ /**
374
+ * Cancel Work Item Command
375
+ *
376
+ * Cancels a work item.
377
+ */
378
+ class CancelWorkItemCommand {
379
+ constructor() {
380
+ //#region ---- Services ----
381
+ this.workItemService = inject(AXMWorkflowManagementWorkItemEntityService);
382
+ this.toastService = inject(AXToastService);
383
+ }
384
+ //#endregion
385
+ //#region ---- Command Implementation ----
386
+ async execute(input) {
387
+ try {
388
+ // Get work item
389
+ const workItem = await this.workItemService.getOne(input.workItemId);
390
+ if (!workItem) {
391
+ return {
392
+ success: false,
393
+ message: {
394
+ text: 'Work item not found'
395
+ },
396
+ data: {
397
+ workItem: null
398
+ }
399
+ };
400
+ }
401
+ // Check if already completed or cancelled
402
+ if (workItem.status === 'Completed' || workItem.status === 'Cancelled') {
403
+ this.toastService.show({
404
+ color: 'warning',
405
+ title: 'Cannot Cancel',
406
+ content: `This work item is already ${workItem.status.toLowerCase()}`,
407
+ closeButton: true,
408
+ timeOut: 3000,
409
+ });
410
+ return {
411
+ success: false,
412
+ message: {
413
+ text: `Work item is already ${workItem.status.toLowerCase()}`
414
+ },
415
+ data: {
416
+ workItem
417
+ }
418
+ };
419
+ }
420
+ // Update work item
421
+ const now = new Date().toISOString();
422
+ const updatedWorkItem = await this.workItemService.updateOne(input.workItemId, {
423
+ ...workItem,
424
+ status: 'Cancelled',
425
+ updatedAt: now,
426
+ });
427
+ this.toastService.show({
428
+ color: 'success',
429
+ title: 'Work Item Cancelled',
430
+ content: 'Work item cancelled successfully',
431
+ closeButton: true,
432
+ timeOut: 3000,
433
+ });
434
+ return {
435
+ success: true,
436
+ data: {
437
+ workItem: updatedWorkItem
438
+ }
439
+ };
440
+ }
441
+ catch (error) {
442
+ console.error('[CancelWorkItemCommand] Error:', error);
443
+ this.toastService.show({
444
+ color: 'danger',
445
+ title: 'Cancel Failed',
446
+ content: error.message || 'Unknown error',
447
+ closeButton: true,
448
+ timeOut: 5000,
449
+ });
450
+ return {
451
+ success: false,
452
+ message: {
453
+ text: error.message || 'Unknown error'
454
+ },
455
+ data: {
456
+ workItem: null
457
+ }
458
+ };
459
+ }
460
+ }
461
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CancelWorkItemCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
462
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CancelWorkItemCommand }); }
463
+ }
464
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CancelWorkItemCommand, decorators: [{
465
+ type: Injectable
466
+ }] });
467
+
468
+ export { AssignWorkItemCommand, CancelWorkItemCommand, ClaimWorkItemCommand, CompleteWorkItemCommand };
469
+ //# sourceMappingURL=acorex-modules-workflow-management-index-xB36g4F1.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules-workflow-management-index-xB36g4F1.mjs","sources":["../tmp-esm2022/workflow-management/lib/entities/work-item/commands/claim-work-item.command.js","../tmp-esm2022/workflow-management/lib/entities/work-item/commands/complete-work-item.command.js","../tmp-esm2022/workflow-management/lib/entities/work-item/commands/assign-work-item.command.js","../tmp-esm2022/workflow-management/lib/entities/work-item/commands/cancel-work-item.command.js"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXMWorkflowManagementWorkItemEntityService } from '../work-item.service';\nimport * as i0 from \"@angular/core\";\n//#endregion\n/**\n * Claim Work Item Command\n *\n * Claims a work item for the current user.\n */\nexport class ClaimWorkItemCommand {\n constructor() {\n //#region ---- Services ----\n this.workItemService = inject(AXMWorkflowManagementWorkItemEntityService);\n this.toastService = inject(AXToastService);\n this.sessionService = inject(AXPSessionService);\n }\n //#endregion\n //#region ---- Command Implementation ----\n async execute(input) {\n try {\n const currentUser = this.sessionService.user;\n if (!currentUser) {\n return {\n success: false,\n message: {\n text: 'User not authenticated'\n },\n data: {\n workItem: null\n }\n };\n }\n // Get work item\n const workItem = await this.workItemService.getOne(input.workItemId);\n if (!workItem) {\n return {\n success: false,\n message: {\n text: 'Work item not found'\n },\n data: {\n workItem: null\n }\n };\n }\n // Check if already claimed\n if (workItem.claimedByUserId) {\n this.toastService.show({\n color: 'warning',\n title: 'Already Claimed',\n content: 'This work item has already been claimed',\n closeButton: true,\n timeOut: 3000,\n });\n return {\n success: false,\n message: {\n text: 'Work item already claimed'\n },\n data: {\n workItem\n }\n };\n }\n // Update work item\n const now = new Date().toISOString();\n const updatedWorkItem = await this.workItemService.updateOne(input.workItemId, {\n ...workItem,\n claimedByUserId: currentUser.id,\n claimedAt: now,\n status: workItem.status === 'Pending' ? 'Claimed' : workItem.status,\n updatedAt: now,\n });\n this.toastService.show({\n color: 'success',\n title: 'Work Item Claimed',\n content: 'Work item claimed successfully',\n closeButton: true,\n timeOut: 3000,\n });\n return {\n success: true,\n data: {\n workItem: updatedWorkItem\n }\n };\n }\n catch (error) {\n console.error('[ClaimWorkItemCommand] Error:', error);\n this.toastService.show({\n color: 'danger',\n title: 'Claim Failed',\n content: error.message || 'Unknown error',\n closeButton: true,\n timeOut: 5000,\n });\n return {\n success: false,\n message: {\n text: error.message || 'Unknown error'\n },\n data: {\n workItem: null\n }\n };\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: ClaimWorkItemCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: ClaimWorkItemCommand }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: ClaimWorkItemCommand, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhaW0td29yay1pdGVtLmNvbW1hbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvd29ya2Zsb3ctbWFuYWdlbWVudC9zcmMvbGliL2VudGl0aWVzL3dvcmstaXRlbS9jb21tYW5kcy9jbGFpbS13b3JrLWl0ZW0uY29tbWFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLDBDQUEwQyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBd0JsRixZQUFZO0FBRVo7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyxvQkFBb0I7SUFEakM7UUFFRSxnQ0FBZ0M7UUFFZixvQkFBZSxHQUFHLE1BQU0sQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBQ3JFLGlCQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7S0F3RzdEO0lBdEdDLFlBQVk7SUFFWiw4Q0FBOEM7SUFFOUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUF5QjtRQUNyQyxJQUFJLENBQUM7WUFDSCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUM3QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2pCLE9BQU87b0JBQ0wsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsT0FBTyxFQUFFO3dCQUNQLElBQUksRUFBRSx3QkFBd0I7cUJBQy9CO29CQUNELElBQUksRUFBRTt3QkFDSixRQUFRLEVBQUUsSUFBSTtxQkFDZjtpQkFDRixDQUFDO1lBQ0osQ0FBQztZQUVELGdCQUFnQjtZQUNoQixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2QsT0FBTztvQkFDTCxPQUFPLEVBQUUsS0FBSztvQkFDZCxPQUFPLEVBQUU7d0JBQ1AsSUFBSSxFQUFFLHFCQUFxQjtxQkFDNUI7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLFFBQVEsRUFBRSxJQUFJO3FCQUNmO2lCQUNGLENBQUM7WUFDSixDQUFDO1lBRUQsMkJBQTJCO1lBQzNCLElBQUksUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztvQkFDckIsS0FBSyxFQUFFLFNBQVM7b0JBQ2hCLEtBQUssRUFBRSxpQkFBaUI7b0JBQ3hCLE9BQU8sRUFBRSx5Q0FBeUM7b0JBQ2xELFdBQVcsRUFBRSxJQUFJO29CQUNqQixPQUFPLEVBQUUsSUFBSTtpQkFDZCxDQUFDLENBQUM7Z0JBRUgsT0FBTztvQkFDTCxPQUFPLEVBQUUsS0FBSztvQkFDZCxPQUFPLEVBQUU7d0JBQ1AsSUFBSSxFQUFFLDJCQUEyQjtxQkFDbEM7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLFFBQVE7cUJBQ1Q7aUJBQ0YsQ0FBQztZQUNKLENBQUM7WUFFRCxtQkFBbUI7WUFDbkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQyxNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7Z0JBQzdFLEdBQUcsUUFBUTtnQkFDWCxlQUFlLEVBQUUsV0FBVyxDQUFDLEVBQUU7Z0JBQy9CLFNBQVMsRUFBRSxHQUFHO2dCQUNkLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTTtnQkFDbkUsU0FBUyxFQUFFLEdBQUc7YUFDZixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLEtBQUssRUFBRSxtQkFBbUI7Z0JBQzFCLE9BQU8sRUFBRSxnQ0FBZ0M7Z0JBQ3pDLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixPQUFPLEVBQUUsSUFBSTthQUNkLENBQUMsQ0FBQztZQUVILE9BQU87Z0JBQ0wsT0FBTyxFQUFFLElBQUk7Z0JBQ2IsSUFBSSxFQUFFO29CQUNKLFFBQVEsRUFBRSxlQUFlO2lCQUMxQjthQUNGLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXRELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixLQUFLLEVBQUUsUUFBUTtnQkFDZixLQUFLLEVBQUUsY0FBYztnQkFDckIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksZUFBZTtnQkFDekMsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLE9BQU8sRUFBRSxJQUFJO2FBQ2QsQ0FBQyxDQUFDO1lBRUgsT0FBTztnQkFDTCxPQUFPLEVBQUUsS0FBSztnQkFDZCxPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksZUFBZTtpQkFDdkM7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2FBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDOytHQTFHVSxvQkFBb0I7bUhBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQRXhlY3V0ZUNvbW1hbmRSZXN1bHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQQ29tbWFuZCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vcnVudGltZSc7XG5pbXBvcnQgeyBBWFRvYXN0U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90b2FzdCc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWE1Xb3JrZmxvd01hbmFnZW1lbnRXb3JrSXRlbUVudGl0eVNlcnZpY2UgfSBmcm9tICcuLi93b3JrLWl0ZW0uc2VydmljZSc7XG5cbi8vI3JlZ2lvbiAtLS0tICAgVHlwZXMgICAtLS0tXG5cbi8qKlxuICogSW5wdXQgZm9yIENsYWltV29ya0l0ZW0gY29tbWFuZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsYWltV29ya0l0ZW1JbnB1dCB7XG4gIC8qKlxuICAgKiBXb3JrIGl0ZW0gSURcbiAgICovXG4gIHdvcmtJdGVtSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPdXRwdXQgZm9yIENsYWltV29ya0l0ZW0gY29tbWFuZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsYWltV29ya0l0ZW1PdXRwdXQge1xuICAvKipcbiAgICogVXBkYXRlZCB3b3JrIGl0ZW1cbiAgICovXG4gIHdvcmtJdGVtOiBhbnk7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vKipcbiAqIENsYWltIFdvcmsgSXRlbSBDb21tYW5kXG4gKiBcbiAqIENsYWltcyBhIHdvcmsgaXRlbSBmb3IgdGhlIGN1cnJlbnQgdXNlci5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENsYWltV29ya0l0ZW1Db21tYW5kIGltcGxlbWVudHMgQVhQQ29tbWFuZDxDbGFpbVdvcmtJdGVtSW5wdXQsIENsYWltV29ya0l0ZW1PdXRwdXQ+IHtcbiAgLy8jcmVnaW9uIC0tLS0gICBTZXJ2aWNlcyAgIC0tLS1cblxuICBwcml2YXRlIHJlYWRvbmx5IHdvcmtJdGVtU2VydmljZSA9IGluamVjdChBWE1Xb3JrZmxvd01hbmFnZW1lbnRXb3JrSXRlbUVudGl0eVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0U2VydmljZSA9IGluamVjdChBWFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tbWFuZCBJbXBsZW1lbnRhdGlvbiAgIC0tLS1cblxuICBhc3luYyBleGVjdXRlKGlucHV0OiBDbGFpbVdvcmtJdGVtSW5wdXQpOiBQcm9taXNlPEFYUEV4ZWN1dGVDb21tYW5kUmVzdWx0PENsYWltV29ya0l0ZW1PdXRwdXQ+PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5zZXNzaW9uU2VydmljZS51c2VyO1xuICAgICAgaWYgKCFjdXJyZW50VXNlcikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICAgIHRleHQ6ICdVc2VyIG5vdCBhdXRoZW50aWNhdGVkJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgd29ya0l0ZW06IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIEdldCB3b3JrIGl0ZW1cbiAgICAgIGNvbnN0IHdvcmtJdGVtID0gYXdhaXQgdGhpcy53b3JrSXRlbVNlcnZpY2UuZ2V0T25lKGlucHV0LndvcmtJdGVtSWQpO1xuICAgICAgaWYgKCF3b3JrSXRlbSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICAgIHRleHQ6ICdXb3JrIGl0ZW0gbm90IGZvdW5kJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgd29ya0l0ZW06IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIGFscmVhZHkgY2xhaW1lZFxuICAgICAgaWYgKHdvcmtJdGVtLmNsYWltZWRCeVVzZXJJZCkge1xuICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgICBjb2xvcjogJ3dhcm5pbmcnLFxuICAgICAgICAgIHRpdGxlOiAnQWxyZWFkeSBDbGFpbWVkJyxcbiAgICAgICAgICBjb250ZW50OiAnVGhpcyB3b3JrIGl0ZW0gaGFzIGFscmVhZHkgYmVlbiBjbGFpbWVkJyxcbiAgICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICB0aW1lT3V0OiAzMDAwLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICAgIHRleHQ6ICdXb3JrIGl0ZW0gYWxyZWFkeSBjbGFpbWVkJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgd29ya0l0ZW1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSB3b3JrIGl0ZW1cbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRXb3JrSXRlbSA9IGF3YWl0IHRoaXMud29ya0l0ZW1TZXJ2aWNlLnVwZGF0ZU9uZShpbnB1dC53b3JrSXRlbUlkLCB7XG4gICAgICAgIC4uLndvcmtJdGVtLFxuICAgICAgICBjbGFpbWVkQnlVc2VySWQ6IGN1cnJlbnRVc2VyLmlkLFxuICAgICAgICBjbGFpbWVkQXQ6IG5vdyxcbiAgICAgICAgc3RhdHVzOiB3b3JrSXRlbS5zdGF0dXMgPT09ICdQZW5kaW5nJyA/ICdDbGFpbWVkJyA6IHdvcmtJdGVtLnN0YXR1cyxcbiAgICAgICAgdXBkYXRlZEF0OiBub3csXG4gICAgICB9KTtcblxuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgIGNvbG9yOiAnc3VjY2VzcycsXG4gICAgICAgIHRpdGxlOiAnV29yayBJdGVtIENsYWltZWQnLFxuICAgICAgICBjb250ZW50OiAnV29yayBpdGVtIGNsYWltZWQgc3VjY2Vzc2Z1bGx5JyxcbiAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgIHRpbWVPdXQ6IDMwMDAsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHdvcmtJdGVtOiB1cGRhdGVkV29ya0l0ZW1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbQ2xhaW1Xb3JrSXRlbUNvbW1hbmRdIEVycm9yOicsIGVycm9yKTtcblxuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgdGl0bGU6ICdDbGFpbSBGYWlsZWQnLFxuICAgICAgICBjb250ZW50OiBlcnJvci5tZXNzYWdlIHx8ICdVbmtub3duIGVycm9yJyxcbiAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgIHRpbWVPdXQ6IDUwMDAsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICB0ZXh0OiBlcnJvci5tZXNzYWdlIHx8ICdVbmtub3duIGVycm9yJ1xuICAgICAgICB9LFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgd29ya0l0ZW06IG51bGxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cbn1cblxuIl19","import { Injectable, inject } from '@angular/core';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPWorkflowManager } from '@acorex/platform/workflow';\nimport { AXPActivityDefinitionService } from '@acorex/platform/workflow';\nimport { AXMWorkflowManagementWorkItemEntityService } from '../work-item.service';\nimport * as i0 from \"@angular/core\";\n//#endregion\n/**\n * Complete Work Item Command\n *\n * Completes a work item and optionally resumes the workflow.\n */\nexport class CompleteWorkItemCommand {\n constructor() {\n //#region ---- Services ----\n this.workItemService = inject(AXMWorkflowManagementWorkItemEntityService);\n this.toastService = inject(AXToastService);\n this.sessionService = inject(AXPSessionService);\n this.workflowManager = inject(AXPWorkflowManager);\n this.activityDefinitionService = inject(AXPActivityDefinitionService);\n }\n //#endregion\n //#region ---- Command Implementation ----\n async execute(input) {\n try {\n const currentUser = this.sessionService.user;\n if (!currentUser) {\n return {\n success: false,\n message: {\n text: 'User not authenticated'\n },\n data: {\n workItem: null\n }\n };\n }\n // Get work item\n const workItem = await this.workItemService.getOne(input.workItemId);\n if (!workItem) {\n return {\n success: false,\n message: {\n text: 'Work item not found'\n },\n data: {\n workItem: null\n }\n };\n }\n // Check if already completed\n if (workItem.status === 'Completed') {\n this.toastService.show({\n color: 'warning',\n title: 'Already Completed',\n content: 'This work item has already been completed',\n closeButton: true,\n timeOut: 3000,\n });\n return {\n success: false,\n message: {\n text: 'Work item already completed'\n },\n data: {\n workItem\n }\n };\n }\n // Update work item\n const now = new Date().toISOString();\n const updatedWorkItem = await this.workItemService.updateOne(input.workItemId, {\n ...workItem,\n completedByUserId: currentUser.id,\n completedAt: now,\n status: 'Completed',\n updatedAt: now,\n });\n // Resume workflow if bookmark exists\n let nextTask = undefined;\n let workflowState = undefined;\n if (workItem.bookmarkId && workItem.instanceId) {\n try {\n // Get taskToken from workitem (stored when workitem was created)\n const taskToken = workItem.taskToken;\n if (!taskToken) {\n console.warn(`[CompleteWorkItemCommand] ⚠️ TaskToken not found in workitem ${workItem.id}, cannot resume workflow`);\n }\n else {\n // Determine outcome from activity definition if not provided\n let outcome = input.outcome;\n if (!outcome) {\n // Get activity name from workItem (activityName stores the activity type/name)\n const activityName = workItem.activityName;\n if (activityName) {\n // Get activity definition to determine default outcome\n const activityDef = await this.activityDefinitionService.getActivityByName(activityName);\n if (activityDef?.outcomes && activityDef.outcomes.length > 0) {\n // For collect-signature, use 'Signed' as default outcome\n // Otherwise use first outcome or 'Done'\n if (activityDef.name === 'workflow-activity:collect-signature') {\n outcome = 'Signed';\n }\n else {\n outcome = activityDef.outcomes[0] || 'Done';\n }\n }\n else {\n outcome = 'Done';\n }\n }\n else {\n outcome = 'Done';\n }\n }\n // Resume workflow using WorkflowManager\n const resumeResult = await this.workflowManager.resume(workItem.instanceId, workItem.activityNodeId, outcome || 'Done', input.output, taskToken);\n if (!resumeResult.success) {\n console.error('[CompleteWorkItemCommand] Workflow resume failed:', resumeResult.error);\n }\n else {\n // Store nextTask and state for return\n nextTask = resumeResult.nextTask || undefined;\n workflowState = resumeResult.state;\n }\n }\n }\n catch (workflowError) {\n console.error('[CompleteWorkItemCommand] Workflow resume error:', workflowError);\n // Don't fail the command if workflow resume fails\n }\n }\n // Show success message\n this.toastService.show({\n color: 'success',\n title: 'Work Item Completed',\n content: workflowState?.status === 'completed'\n ? 'Work item completed and workflow finished successfully'\n : nextTask\n ? `Work item completed. Next activity: ${nextTask.activityType || nextTask.activityName || 'Unknown'}`\n : 'Work item completed successfully',\n closeButton: true,\n timeOut: 3000,\n });\n return {\n success: true,\n data: {\n workItem: updatedWorkItem,\n nextTask,\n state: workflowState,\n },\n };\n }\n catch (error) {\n console.error('[CompleteWorkItemCommand] Error:', error);\n this.toastService.show({\n color: 'danger',\n title: 'Complete Failed',\n content: error.message || 'Unknown error',\n closeButton: true,\n timeOut: 5000,\n });\n return {\n success: false,\n message: {\n text: error.message || 'Unknown error'\n },\n data: {\n workItem: null\n }\n };\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: CompleteWorkItemCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: CompleteWorkItemCommand }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: CompleteWorkItemCommand, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxldGUtd29yay1pdGVtLmNvbW1hbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvd29ya2Zsb3ctbWFuYWdlbWVudC9zcmMvbGliL2VudGl0aWVzL3dvcmstaXRlbS9jb21tYW5kcy9jb21wbGV0ZS13b3JrLWl0ZW0uY29tbWFuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekUsT0FBTyxFQUFFLDBDQUEwQyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBNENsRixZQUFZO0FBRVo7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyx1QkFBdUI7SUFEcEM7UUFFRSxnQ0FBZ0M7UUFFZixvQkFBZSxHQUFHLE1BQU0sQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBQ3JFLGlCQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0Msb0JBQWUsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM3Qyw4QkFBeUIsR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztLQTBLbkY7SUF4S0MsWUFBWTtJQUVaLDhDQUE4QztJQUU5QyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQTRCO1FBQ3hDLElBQUksQ0FBQztZQUNILE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFj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IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQRXhlY3V0ZUNvbW1hbmRSZXN1bHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQQ29tbWFuZCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vcnVudGltZSc7XG5pbXBvcnQgeyBBWFRvYXN0U2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90b2FzdCc7XG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBXb3JrZmxvd01hbmFnZXIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IEFYUEFjdGl2aXR5RGVmaW5pdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IEFYTVdvcmtmbG93TWFuYWdlbWVudFdvcmtJdGVtRW50aXR5U2VydmljZSB9IGZyb20gJy4uL3dvcmstaXRlbS5zZXJ2aWNlJztcblxuLy8jcmVnaW9uIC0tLS0gICBUeXBlcyAgIC0tLS1cblxuLyoqXG4gKiBJbnB1dCBmb3IgQ29tcGxldGVXb3JrSXRlbSBjb21tYW5kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGxldGVXb3JrSXRlbUlucHV0IHtcbiAgLyoqXG4gICAqIFdvcmsgaXRlbSBJRFxuICAgKi9cbiAgd29ya0l0ZW1JZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBvdXRwdXQgZGF0YSBmb3Igd29ya2Zsb3cgcmVzdW1lXG4gICAqL1xuICBvdXRwdXQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBvdXRjb21lIGZvciB3b3JrZmxvdyByZXN1bWVcbiAgICovXG4gIG91dGNvbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3V0cHV0IGZvciBDb21wbGV0ZVdvcmtJdGVtIGNvbW1hbmRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wbGV0ZVdvcmtJdGVtT3V0cHV0IHtcbiAgLyoqXG4gICAqIFVwZGF0ZWQgd29yayBpdGVtXG4gICAqL1xuICB3b3JrSXRlbTogYW55O1xuXG4gIC8qKlxuICAgKiBOZXh0IHRhc2sgdG8gZXhlY3V0ZSAoaWYgYW55KVxuICAgKi9cbiAgbmV4dFRhc2s/OiBhbnk7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZWQgd29ya2Zsb3cgc3RhdGVcbiAgICovXG4gIHN0YXRlPzogYW55O1xufVxuXG4vLyNlbmRyZWdpb25cblxuLyoqXG4gKiBDb21wbGV0ZSBXb3JrIEl0ZW0gQ29tbWFuZFxuICogXG4gKiBDb21wbGV0ZXMgYSB3b3JrIGl0ZW0gYW5kIG9wdGlvbmFsbHkgcmVzdW1lcyB0aGUgd29ya2Zsb3cuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb21wbGV0ZVdvcmtJdGVtQ29tbWFuZCBpbXBsZW1lbnRzIEFYUENvbW1hbmQ8Q29tcGxldGVXb3JrSXRlbUlucHV0LCBDb21wbGV0ZVdvcmtJdGVtT3V0cHV0PiB7XG4gIC8vI3JlZ2lvbiAtLS0tICAgU2VydmljZXMgICAtLS0tXG5cbiAgcHJpdmF0ZSByZWFkb25seSB3b3JrSXRlbVNlcnZpY2UgPSBpbmplY3QoQVhNV29ya2Zsb3dNYW5hZ2VtZW50V29ya0l0ZW1FbnRpdHlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0b2FzdFNlcnZpY2UgPSBpbmplY3QoQVhUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB3b3JrZmxvd01hbmFnZXIgPSBpbmplY3QoQVhQV29ya2Zsb3dNYW5hZ2VyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3Rpdml0eURlZmluaXRpb25TZXJ2aWNlID0gaW5qZWN0KEFYUEFjdGl2aXR5RGVmaW5pdGlvblNlcnZpY2UpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tbWFuZCBJbXBsZW1lbnRhdGlvbiAgIC0tLS1cblxuICBhc3luYyBleGVjdXRlKGlucHV0OiBDb21wbGV0ZVdvcmtJdGVtSW5wdXQpOiBQcm9taXNlPEFYUEV4ZWN1dGVDb21tYW5kUmVzdWx0PENvbXBsZXRlV29ya0l0ZW1PdXRwdXQ+PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5zZXNzaW9uU2VydmljZS51c2VyO1xuICAgICAgaWYgKCFjdXJyZW50VXNlcikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICAgIHRleHQ6ICdVc2VyIG5vdCBhdXRoZW50aWNhdGVkJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgd29ya0l0ZW06IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIEdldCB3b3JrIGl0ZW1cbiAgICAgIGNvbnN0IHdvcmtJdGVtID0gYXdhaXQgdGhpcy53b3JrSXRlbVNlcnZpY2UuZ2V0T25lKGlucHV0LndvcmtJdGVtSWQpO1xuICAgICAgaWYgKCF3b3JrSXRlbSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICAgIHRleHQ6ICdXb3JrIGl0ZW0gbm90IGZvdW5kJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgd29ya0l0ZW06IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIGFscmVhZHkgY29tcGxldGVkXG4gICAgICBpZiAod29ya0l0ZW0uc3RhdHVzID09PSAnQ29tcGxldGVkJykge1xuICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgICBjb2xvcjogJ3dhcm5pbmcnLFxuICAgICAgICAgIHRpdGxlOiAnQWxyZWFkeSBDb21wbGV0ZWQnLFxuICAgICAgICAgIGNvbnRlbnQ6ICdUaGlzIHdvcmsgaXRlbSBoYXMgYWxyZWFkeSBiZWVuIGNvbXBsZXRlZCcsXG4gICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgICB0ZXh0OiAnV29yayBpdGVtIGFscmVhZHkgY29tcGxldGVkJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgd29ya0l0ZW1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSB3b3JrIGl0ZW1cbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRXb3JrSXRlbSA9IGF3YWl0IHRoaXMud29ya0l0ZW1TZXJ2aWNlLnVwZGF0ZU9uZShpbnB1dC53b3JrSXRlbUlkLCB7XG4gICAgICAgIC4uLndvcmtJdGVtLFxuICAgICAgICBjb21wbGV0ZWRCeVVzZXJJZDogY3VycmVudFVzZXIuaWQsXG4gICAgICAgIGNvbXBsZXRlZEF0OiBub3csXG4gICAgICAgIHN0YXR1czogJ0NvbXBsZXRlZCcsXG4gICAgICAgIHVwZGF0ZWRBdDogbm93LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFJlc3VtZSB3b3JrZmxvdyBpZiBib29rbWFyayBleGlzdHNcbiAgICAgIGxldCBuZXh0VGFzazogYW55ID0gdW5kZWZpbmVkO1xuICAgICAgbGV0IHdvcmtmbG93U3RhdGU6IGFueSA9IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHdvcmtJdGVtLmJvb2ttYXJrSWQgJiYgd29ya0l0ZW0uaW5zdGFuY2VJZCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIEdldCB0YXNrVG9rZW4gZnJvbSB3b3JraXRlbSAoc3RvcmVkIHdoZW4gd29ya2l0ZW0gd2FzIGNyZWF0ZWQpXG4gICAgICAgICAgY29uc3QgdGFza1Rva2VuID0gKHdvcmtJdGVtIGFzIGFueSkudGFza1Rva2VuO1xuICAgICAgICAgIFxuICAgICAgICAgIGlmICghdGFza1Rva2VuKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFtDb21wbGV0ZVdvcmtJdGVtQ29tbWFuZF0g4pqg77iPIFRhc2tUb2tlbiBub3QgZm91bmQgaW4gd29ya2l0ZW0gJHt3b3JrSXRlbS5pZH0sIGNhbm5vdCByZXN1bWUgd29ya2Zsb3dgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIG91dGNvbWUgZnJvbSBhY3Rpdml0eSBkZWZpbml0aW9uIGlmIG5vdCBwcm92aWRlZFxuICAgICAgICAgICAgbGV0IG91dGNvbWUgPSBpbnB1dC5vdXRjb21lO1xuICAgICAgICAgICAgaWYgKCFvdXRjb21lKSB7XG4gICAgICAgICAgICAgIC8vIEdldCBhY3Rpdml0eSBuYW1lIGZyb20gd29ya0l0ZW0gKGFjdGl2aXR5TmFtZSBzdG9yZXMgdGhlIGFjdGl2aXR5IHR5cGUvbmFtZSlcbiAgICAgICAgICAgICAgY29uc3QgYWN0aXZpdHlOYW1lID0gd29ya0l0ZW0uYWN0aXZpdHlOYW1lO1xuICAgICAgICAgICAgICBpZiAoYWN0aXZpdHlOYW1lKSB7XG4gICAgICAgICAgICAgICAgLy8gR2V0IGFjdGl2aXR5IGRlZmluaXRpb24gdG8gZGV0ZXJtaW5lIGRlZmF1bHQgb3V0Y29tZVxuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2aXR5RGVmID0gYXdhaXQgdGhpcy5hY3Rpdml0eURlZmluaXRpb25TZXJ2aWNlLmdldEFjdGl2aXR5QnlOYW1lKGFjdGl2aXR5TmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2aXR5RGVmPy5vdXRjb21lcyAmJiBhY3Rpdml0eURlZi5vdXRjb21lcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAvLyBGb3IgY29sbGVjdC1zaWduYXR1cmUsIHVzZSAnU2lnbmVkJyBhcyBkZWZhdWx0IG91dGNvbWVcbiAgICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSB1c2UgZmlyc3Qgb3V0Y29tZSBvciAnRG9uZSdcbiAgICAgICAgICAgICAgICAgIGlmIChhY3Rpdml0eURlZi5uYW1lID09PSAnd29ya2Zsb3ctYWN0aXZpdHk6Y29sbGVjdC1zaWduYXR1cmUnKSB7XG4gICAgICAgICAgICAgICAgICAgIG91dGNvbWUgPSAnU2lnbmVkJztcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG91dGNvbWUgPSBhY3Rpdml0eURlZi5vdXRjb21lc1swXSB8fCAnRG9uZSc7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG91dGNvbWUgPSAnRG9uZSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG91dGNvbWUgPSAnRG9uZSc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUmVzdW1lIHdvcmtmbG93IHVzaW5nIFdvcmtmbG93TWFuYWdlclxuICAgICAgICAgICAgY29uc3QgcmVzdW1lUmVzdWx0ID0gYXdhaXQgdGhpcy53b3JrZmxvd01hbmFnZXIucmVzdW1lKFxuICAgICAgICAgICAgICB3b3JrSXRlbS5pbnN0YW5jZUlkLFxuICAgICAgICAgICAgICB3b3JrSXRlbS5hY3Rpdml0eU5vZGVJZCxcbiAgICAgICAgICAgICAgb3V0Y29tZSB8fCAnRG9uZScsXG4gICAgICAgICAgICAgIGlucHV0Lm91dHB1dCxcbiAgICAgICAgICAgICAgdGFza1Rva2VuXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoIXJlc3VtZVJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tDb21wbGV0ZVdvcmtJdGVtQ29tbWFuZF0gV29ya2Zsb3cgcmVzdW1lIGZhaWxlZDonLCByZXN1bWVSZXN1bHQuZXJyb3IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gU3RvcmUgbmV4dFRhc2sgYW5kIHN0YXRlIGZvciByZXR1cm5cbiAgICAgICAgICAgICAgbmV4dFRhc2sgPSByZXN1bWVSZXN1bHQubmV4dFRhc2sgfHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICB3b3JrZmxvd1N0YXRlID0gcmVzdW1lUmVzdWx0LnN0YXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAod29ya2Zsb3dFcnJvcjogYW55KSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignW0NvbXBsZXRlV29ya0l0ZW1Db21tYW5kXSBXb3JrZmxvdyByZXN1bWUgZXJyb3I6Jywgd29ya2Zsb3dFcnJvcik7XG4gICAgICAgICAgLy8gRG9uJ3QgZmFpbCB0aGUgY29tbWFuZCBpZiB3b3JrZmxvdyByZXN1bWUgZmFpbHNcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBTaG93IHN1Y2Nlc3MgbWVzc2FnZVxuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgIGNvbG9yOiAnc3VjY2VzcycsXG4gICAgICAgIHRpdGxlOiAnV29yayBJdGVtIENvbXBsZXRlZCcsXG4gICAgICAgIGNvbnRlbnQ6IHdvcmtmbG93U3RhdGU/LnN0YXR1cyA9PT0gJ2NvbXBsZXRlZCcgXG4gICAgICAgICAgPyAnV29yayBpdGVtIGNvbXBsZXRlZCBhbmQgd29ya2Zsb3cgZmluaXNoZWQgc3VjY2Vzc2Z1bGx5J1xuICAgICAgICAgIDogbmV4dFRhc2sgXG4gICAgICAgICAgICA/IGBXb3JrIGl0ZW0gY29tcGxldGVkLiBOZXh0IGFjdGl2aXR5OiAke25leHRUYXNrLmFjdGl2aXR5VHlwZSB8fCBuZXh0VGFzay5hY3Rpdml0eU5hbWUgfHwgJ1Vua25vd24nfWBcbiAgICAgICAgICAgIDogJ1dvcmsgaXRlbSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5JyxcbiAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgIHRpbWVPdXQ6IDMwMDAsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHdvcmtJdGVtOiB1cGRhdGVkV29ya0l0ZW0sXG4gICAgICAgICAgbmV4dFRhc2ssXG4gICAgICAgICAgc3RhdGU6IHdvcmtmbG93U3RhdGUsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tDb21wbGV0ZVdvcmtJdGVtQ29tbWFuZF0gRXJyb3I6JywgZXJyb3IpO1xuXG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICB0aXRsZTogJ0NvbXBsZXRlIEZhaWxlZCcsXG4gICAgICAgIGNvbnRlbnQ6IGVycm9yLm1lc3NhZ2UgfHwgJ1Vua25vd24gZXJyb3InLFxuICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgdGltZU91dDogNTAwMCxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgIHRleHQ6IGVycm9yLm1lc3NhZ2UgfHwgJ1Vua25vd24gZXJyb3InXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICB3b3JrSXRlbTogbnVsbFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxufVxuXG4iXX0=","import { Injectable, inject } from '@angular/core';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXMWorkflowManagementWorkItemEntityService } from '../work-item.service';\nimport * as i0 from \"@angular/core\";\n//#endregion\n/**\n * Assign Work Item Command\n *\n * Assigns a work item to a user.\n */\nexport class AssignWorkItemCommand {\n constructor() {\n //#region ---- Services ----\n this.workItemService = inject(AXMWorkflowManagementWorkItemEntityService);\n this.toastService = inject(AXToastService);\n }\n //#endregion\n //#region ---- Command Implementation ----\n async execute(input) {\n try {\n // Get work item\n const workItem = await this.workItemService.getOne(input.workItemId);\n if (!workItem) {\n return {\n success: false,\n message: {\n text: 'Work item not found'\n },\n data: {\n workItem: null\n }\n };\n }\n // Update work item\n const now = new Date().toISOString();\n const updatedWorkItem = await this.workItemService.updateOne(input.workItemId, {\n ...workItem,\n assignedUserId: input.userId,\n assignedAt: now,\n status: workItem.status === 'Pending' ? 'Pending' : workItem.status, // Keep status if already claimed\n updatedAt: now,\n });\n this.toastService.show({\n color: 'success',\n title: 'Work Item Assigned',\n content: 'Work item assigned successfully',\n closeButton: true,\n timeOut: 3000,\n });\n return {\n success: true,\n data: {\n workItem: updatedWorkItem\n }\n };\n }\n catch (error) {\n console.error('[AssignWorkItemCommand] Error:', error);\n this.toastService.show({\n color: 'danger',\n title: 'Assign Failed',\n content: error.message || 'Unknown error',\n closeButton: true,\n timeOut: 5000,\n });\n return {\n success: false,\n message: {\n text: error.message || 'Unknown error'\n },\n data: {\n workItem: null\n }\n };\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AssignWorkItemCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AssignWorkItemCommand }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: AssignWorkItemCommand, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWduLXdvcmstaXRlbS5jb21tYW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3dvcmtmbG93LW1hbmFnZW1lbnQvc3JjL2xpYi9lbnRpdGllcy93b3JrLWl0ZW0vY29tbWFuZHMvYXNzaWduLXdvcmstaXRlbS5jb21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsMENBQTBDLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUE2QmxGLFlBQVk7QUFFWjs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQURsQztRQUVFLGdDQUFnQztRQUVmLG9CQUFlLEdBQUcsTUFBTSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDckUsaUJBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7S0FzRXhEO0lBcEVDLFlBQVk7SUFFWiw4Q0FBOEM7SUFFOUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUEwQjtRQUN0QyxJQUFJLENBQUM7WUFDSCxnQkFBZ0I7WUFDaEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLE9BQU87b0JBQ0wsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsT0FBTyxFQUFFO3dCQUNQLElBQUksRUFBRSxxQkFBcUI7cUJBQzVCO29CQUNELElBQUksRUFBRTt3QkFDSixRQUFRLEVBQUUsSUFBSTtxQkFDZjtpQkFDRixDQUFDO1lBQ0osQ0FBQztZQUVELG1CQUFtQjtZQUNuQixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtnQkFDN0UsR0FBRyxRQUFRO2dCQUNYLGNBQWMsRUFBRSxLQUFLLENBQUMsTUFBTTtnQkFDNUIsVUFBVSxFQUFFLEdBQUc7Z0JBQ2YsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsaUNBQWlDO2dCQUN0RyxTQUFTLEVBQUUsR0FBRzthQUNmLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixLQUFLLEVBQUUsU0FBUztnQkFDaEIsS0FBSyxFQUFFLG9CQUFvQjtnQkFDM0IsT0FBTyxFQUFFLGlDQUFpQztnQkFDMUMsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLE9BQU8sRUFBRSxJQUFJO2FBQ2QsQ0FBQyxDQUFDO1lBRUgsT0FBTztnQkFDTCxPQUFPLEVBQUUsSUFBSTtnQkFDYixJQUFJLEVBQUU7b0JBQ0osUUFBUSxFQUFFLGVBQWU7aUJBQzFCO2FBQ0YsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEtBQUssRUFBRSxRQUFRO2dCQUNmLEtBQUssRUFBRSxlQUFlO2dCQUN0QixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxlQUFlO2dCQUN6QyxXQUFXLEVBQUUsSUFBSTtnQkFDakIsT0FBTyxFQUFFLElBQUk7YUFDZCxDQUFDLENBQUM7WUFFSCxPQUFPO2dCQUNMLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE9BQU8sRUFBRTtvQkFDUCxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxlQUFlO2lCQUN2QztnQkFDRCxJQUFJLEVBQUU7b0JBQ0osUUFBUSxFQUFFLElBQUk7aUJBQ2Y7YUFDRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7K0dBdkVVLHFCQUFxQjttSEFBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBFeGVjdXRlQ29tbWFuZFJlc3VsdCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBBWFBDb21tYW5kIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9ydW50aW1lJztcbmltcG9ydCB7IEFYVG9hc3RTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RvYXN0JztcbmltcG9ydCB7IEFYTVdvcmtmbG93TWFuYWdlbWVudFdvcmtJdGVtRW50aXR5U2VydmljZSB9IGZyb20gJy4uL3dvcmstaXRlbS5zZXJ2aWNlJztcblxuLy8jcmVnaW9uIC0tLS0gICBUeXBlcyAgIC0tLS1cblxuLyoqXG4gKiBJbnB1dCBmb3IgQXNzaWduV29ya0l0ZW0gY29tbWFuZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzc2lnbldvcmtJdGVtSW5wdXQge1xuICAvKipcbiAgICogV29yayBpdGVtIElEXG4gICAqL1xuICB3b3JrSXRlbUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVzZXIgSUQgdG8gYXNzaWduIHRvXG4gICAqL1xuICB1c2VySWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPdXRwdXQgZm9yIEFzc2lnbldvcmtJdGVtIGNvbW1hbmRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NpZ25Xb3JrSXRlbU91dHB1dCB7XG4gIC8qKlxuICAgKiBVcGRhdGVkIHdvcmsgaXRlbVxuICAgKi9cbiAgd29ya0l0ZW06IGFueTtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8qKlxuICogQXNzaWduIFdvcmsgSXRlbSBDb21tYW5kXG4gKiBcbiAqIEFzc2lnbnMgYSB3b3JrIGl0ZW0gdG8gYSB1c2VyLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXNzaWduV29ya0l0ZW1Db21tYW5kIGltcGxlbWVudHMgQVhQQ29tbWFuZDxBc3NpZ25Xb3JrSXRlbUlucHV0LCBBc3NpZ25Xb3JrSXRlbU91dHB1dD4ge1xuICAvLyNyZWdpb24gLS0tLSAgIFNlcnZpY2VzICAgLS0tLVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgd29ya0l0ZW1TZXJ2aWNlID0gaW5qZWN0KEFYTVdvcmtmbG93TWFuYWdlbWVudFdvcmtJdGVtRW50aXR5U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdG9hc3RTZXJ2aWNlID0gaW5qZWN0KEFYVG9hc3RTZXJ2aWNlKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENvbW1hbmQgSW1wbGVtZW50YXRpb24gICAtLS0tXG5cbiAgYXN5bmMgZXhlY3V0ZShpbnB1dDogQXNzaWduV29ya0l0ZW1JbnB1dCk6IFByb21pc2U8QVhQRXhlY3V0ZUNvbW1hbmRSZXN1bHQ8QXNzaWduV29ya0l0ZW1PdXRwdXQ+PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEdldCB3b3JrIGl0ZW1cbiAgICAgIGNvbnN0IHdvcmtJdGVtID0gYXdhaXQgdGhpcy53b3JrSXRlbVNlcnZpY2UuZ2V0T25lKGlucHV0LndvcmtJdGVtSWQpO1xuICAgICAgaWYgKCF3b3JrSXRlbSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICAgIHRleHQ6ICdXb3JrIGl0ZW0gbm90IGZvdW5kJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgd29ya0l0ZW06IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSB3b3JrIGl0ZW1cbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRXb3JrSXRlbSA9IGF3YWl0IHRoaXMud29ya0l0ZW1TZXJ2aWNlLnVwZGF0ZU9uZShpbnB1dC53b3JrSXRlbUlkLCB7XG4gICAgICAgIC4uLndvcmtJdGVtLFxuICAgICAgICBhc3NpZ25lZFVzZXJJZDogaW5wdXQudXNlcklkLFxuICAgICAgICBhc3NpZ25lZEF0OiBub3csXG4gICAgICAgIHN0YXR1czogd29ya0l0ZW0uc3RhdHVzID09PSAnUGVuZGluZycgPyAnUGVuZGluZycgOiB3b3JrSXRlbS5zdGF0dXMsIC8vIEtlZXAgc3RhdHVzIGlmIGFscmVhZHkgY2xhaW1lZFxuICAgICAgICB1cGRhdGVkQXQ6IG5vdyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgICAgdGl0bGU6ICdXb3JrIEl0ZW0gQXNzaWduZWQnLFxuICAgICAgICBjb250ZW50OiAnV29yayBpdGVtIGFzc2lnbmVkIHN1Y2Nlc3NmdWxseScsXG4gICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICB0aW1lT3V0OiAzMDAwLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICB3b3JrSXRlbTogdXBkYXRlZFdvcmtJdGVtXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgY29uc29sZS5lcnJvcignW0Fzc2lnbldvcmtJdGVtQ29tbWFuZF0gRXJyb3I6JywgZXJyb3IpO1xuXG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93KHtcbiAgICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgICB0aXRsZTogJ0Fzc2lnbiBGYWlsZWQnLFxuICAgICAgICBjb250ZW50OiBlcnJvci5tZXNzYWdlIHx8ICdVbmtub3duIGVycm9yJyxcbiAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgIHRpbWVPdXQ6IDUwMDAsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICB0ZXh0OiBlcnJvci5tZXNzYWdlIHx8ICdVbmtub3duIGVycm9yJ1xuICAgICAgICB9LFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgd29ya0l0ZW06IG51bGxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cbn1cblxuIl19","import { Injectable, inject } from '@angular/core';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXMWorkflowManagementWorkItemEntityService } from '../work-item.service';\nimport * as i0 from \"@angular/core\";\n//#endregion\n/**\n * Cancel Work Item Command\n *\n * Cancels a work item.\n */\nexport class CancelWorkItemCommand {\n constructor() {\n //#region ---- Services ----\n this.workItemService = inject(AXMWorkflowManagementWorkItemEntityService);\n this.toastService = inject(AXToastService);\n }\n //#endregion\n //#region ---- Command Implementation ----\n async execute(input) {\n try {\n // Get work item\n const workItem = await this.workItemService.getOne(input.workItemId);\n if (!workItem) {\n return {\n success: false,\n message: {\n text: 'Work item not found'\n },\n data: {\n workItem: null\n }\n };\n }\n // Check if already completed or cancelled\n if (workItem.status === 'Completed' || workItem.status === 'Cancelled') {\n this.toastService.show({\n color: 'warning',\n title: 'Cannot Cancel',\n content: `This work item is already ${workItem.status.toLowerCase()}`,\n closeButton: true,\n timeOut: 3000,\n });\n return {\n success: false,\n message: {\n text: `Work item is already ${workItem.status.toLowerCase()}`\n },\n data: {\n workItem\n }\n };\n }\n // Update work item\n const now = new Date().toISOString();\n const updatedWorkItem = await this.workItemService.updateOne(input.workItemId, {\n ...workItem,\n status: 'Cancelled',\n updatedAt: now,\n });\n this.toastService.show({\n color: 'success',\n title: 'Work Item Cancelled',\n content: 'Work item cancelled successfully',\n closeButton: true,\n timeOut: 3000,\n });\n return {\n success: true,\n data: {\n workItem: updatedWorkItem\n }\n };\n }\n catch (error) {\n console.error('[CancelWorkItemCommand] Error:', error);\n this.toastService.show({\n color: 'danger',\n title: 'Cancel Failed',\n content: error.message || 'Unknown error',\n closeButton: true,\n timeOut: 5000,\n });\n return {\n success: false,\n message: {\n text: error.message || 'Unknown error'\n },\n data: {\n workItem: null\n }\n };\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: CancelWorkItemCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: CancelWorkItemCommand }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.16\", ngImport: i0, type: CancelWorkItemCommand, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsLXdvcmstaXRlbS5jb21tYW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL3dvcmtmbG93LW1hbmFnZW1lbnQvc3JjL2xpYi9lbnRpdGllcy93b3JrLWl0ZW0vY29tbWFuZHMvY2FuY2VsLXdvcmstaXRlbS5jb21tYW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsMENBQTBDLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUF3QmxGLFlBQVk7QUFFWjs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQURsQztRQUVFLGdDQUFnQztRQUVmLG9CQUFlLEdBQUcsTUFBTSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDckUsaUJBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7S0F5RnhEO0lBdkZDLFlBQVk7SUFFWiw4Q0FBOEM7SUFFOUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUEwQjtRQUN0QyxJQUFJLENBQUM7WUFDSCxnQkFBZ0I7WUFDaEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLE9BQU87b0JBQ0wsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsT0FBTyxFQUFFO3dCQUNQLElBQUksRUFBRSxxQkFBcUI7cUJBQzVCO29CQUNELElBQUksRUFBRTt3QkFDSixRQUFRLEVBQUUsSUFBSTtxQkFDZjtpQkFDRixDQUFDO1lBQ0osQ0FBQztZQUVELDBDQUEwQztZQUMxQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssV0FBVyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO29CQUNyQixLQUFLLEVBQUUsU0FBUztvQkFDaEIsS0FBSyxFQUFFLGVBQWU7b0JBQ3RCLE9BQU8sRUFBRSw2QkFBNkIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRTtvQkFDckUsV0FBVyxFQUFFLElBQUk7b0JBQ2pCLE9BQU8sRUFBRSxJQUFJO2lCQUNkLENBQUMsQ0FBQztnQkFFSCxPQUFPO29CQUNMLE9BQU8sRUFBRSxLQUFLO29CQUNkLE9BQU8sRUFBRTt3QkFDUCxJQUFJLEVBQUUsd0JBQXdCLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLEVBQUU7cUJBQzlEO29CQUNELElBQUksRUFBRTt3QkFDSixRQUFRO3FCQUNUO2lCQUNGLENBQUM7WUFDSixDQUFDO1lBRUQsbUJBQW1CO1lBQ25CLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckMsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFO2dCQUM3RSxHQUFHLFFBQVE7Z0JBQ1gsTUFBTSxFQUFFLFdBQVc7Z0JBQ25CLFNBQVMsRUFBRSxHQUFHO2FBQ2YsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCLEtBQUssRUFBRSxTQUFTO2dCQUNoQixLQUFLLEVBQUUscUJBQXFCO2dCQUM1QixPQUFPLEVBQUUsa0NBQWtDO2dCQUMzQyxXQUFXLEVBQUUsSUFBSTtnQkFDakIsT0FBTyxFQUFFLElBQUk7YUFDZCxDQUFDLENBQUM7WUFFSCxPQUFPO2dCQUNMLE9BQU8sRUFBRSxJQUFJO2dCQUNiLElBQUksRUFBRTtvQkFDSixRQUFRLEVBQUUsZUFBZTtpQkFDMUI7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUV2RCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsS0FBSyxFQUFFLGVBQWU7Z0JBQ3RCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLGVBQWU7Z0JBQ3pDLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixPQUFPLEVBQUUsSUFBSTthQUNkLENBQUMsQ0FBQztZQUVILE9BQU87Z0JBQ0wsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLGVBQWU7aUJBQ3ZDO2dCQUNELElBQUksRUFBRTtvQkFDSixRQUFRLEVBQUUsSUFBSTtpQkFDZjthQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQzsrR0ExRlUscUJBQXFCO21IQUFyQixxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUEV4ZWN1dGVDb21tYW5kUmVzdWx0IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUENvbW1hbmQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3J1bnRpbWUnO1xuaW1wb3J0IHsgQVhUb2FzdFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9hc3QnO1xuaW1wb3J0IHsgQVhNV29ya2Zsb3dNYW5hZ2VtZW50V29ya0l0ZW1FbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vd29yay1pdGVtLnNlcnZpY2UnO1xuXG4vLyNyZWdpb24gLS0tLSAgIFR5cGVzICAgLS0tLVxuXG4vKipcbiAqIElucHV0IGZvciBDYW5jZWxXb3JrSXRlbSBjb21tYW5kXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuY2VsV29ya0l0ZW1JbnB1dCB7XG4gIC8qKlxuICAgKiBXb3JrIGl0ZW0gSURcbiAgICovXG4gIHdvcmtJdGVtSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPdXRwdXQgZm9yIENhbmNlbFdvcmtJdGVtIGNvbW1hbmRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxXb3JrSXRlbU91dHB1dCB7XG4gIC8qKlxuICAgKiBVcGRhdGVkIHdvcmsgaXRlbVxuICAgKi9cbiAgd29ya0l0ZW06IGFueTtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8qKlxuICogQ2FuY2VsIFdvcmsgSXRlbSBDb21tYW5kXG4gKiBcbiAqIENhbmNlbHMgYSB3b3JrIGl0ZW0uXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDYW5jZWxXb3JrSXRlbUNvbW1hbmQgaW1wbGVtZW50cyBBWFBDb21tYW5kPENhbmNlbFdvcmtJdGVtSW5wdXQsIENhbmNlbFdvcmtJdGVtT3V0cHV0PiB7XG4gIC8vI3JlZ2lvbiAtLS0tICAgU2VydmljZXMgICAtLS0tXG5cbiAgcHJpdmF0ZSByZWFkb25seSB3b3JrSXRlbVNlcnZpY2UgPSBpbmplY3QoQVhNV29ya2Zsb3dNYW5hZ2VtZW50V29ya0l0ZW1FbnRpdHlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0b2FzdFNlcnZpY2UgPSBpbmplY3QoQVhUb2FzdFNlcnZpY2UpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29tbWFuZCBJbXBsZW1lbnRhdGlvbiAgIC0tLS1cblxuICBhc3luYyBleGVjdXRlKGlucHV0OiBDYW5jZWxXb3JrSXRlbUlucHV0KTogUHJvbWlzZTxBWFBFeGVjdXRlQ29tbWFuZFJlc3VsdDxDYW5jZWxXb3JrSXRlbU91dHB1dD4+IHtcbiAgICB0cnkge1xuICAgICAgLy8gR2V0IHdvcmsgaXRlbVxuICAgICAgY29uc3Qgd29ya0l0ZW0gPSBhd2FpdCB0aGlzLndvcmtJdGVtU2VydmljZS5nZXRPbmUoaW5wdXQud29ya0l0ZW1JZCk7XG4gICAgICBpZiAoIXdvcmtJdGVtKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgICAgdGV4dDogJ1dvcmsgaXRlbSBub3QgZm91bmQnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB3b3JrSXRlbTogbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgYWxyZWFkeSBjb21wbGV0ZWQgb3IgY2FuY2VsbGVkXG4gICAgICBpZiAod29ya0l0ZW0uc3RhdHVzID09PSAnQ29tcGxldGVkJyB8fCB3b3JrSXRlbS5zdGF0dXMgPT09ICdDYW5jZWxsZWQnKSB7XG4gICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3coe1xuICAgICAgICAgIGNvbG9yOiAnd2FybmluZycsXG4gICAgICAgICAgdGl0bGU6ICdDYW5ub3QgQ2FuY2VsJyxcbiAgICAgICAgICBjb250ZW50OiBgVGhpcyB3b3JrIGl0ZW0gaXMgYWxyZWFkeSAke3dvcmtJdGVtLnN0YXR1cy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgICB0ZXh0OiBgV29yayBpdGVtIGlzIGFscmVhZHkgJHt3b3JrSXRlbS5zdGF0dXMudG9Mb3dlckNhc2UoKX1gXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB3b3JrSXRlbVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gVXBkYXRlIHdvcmsgaXRlbVxuICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICAgICAgY29uc3QgdXBkYXRlZFdvcmtJdGVtID0gYXdhaXQgdGhpcy53b3JrSXRlbVNlcnZpY2UudXBkYXRlT25lKGlucHV0LndvcmtJdGVtSWQsIHtcbiAgICAgICAgLi4ud29ya0l0ZW0sXG4gICAgICAgIHN0YXR1czogJ0NhbmNlbGxlZCcsXG4gICAgICAgIHVwZGF0ZWRBdDogbm93LFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3coe1xuICAgICAgICBjb2xvcjogJ3N1Y2Nlc3MnLFxuICAgICAgICB0aXRsZTogJ1dvcmsgSXRlbSBDYW5jZWxsZWQnLFxuICAgICAgICBjb250ZW50OiAnV29yayBpdGVtIGNhbmNlbGxlZCBzdWNjZXNzZnVsbHknLFxuICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgdGltZU91dDogMzAwMCxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgd29ya0l0ZW06IHVwZGF0ZWRXb3JrSXRlbVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tDYW5jZWxXb3JrSXRlbUNvbW1hbmRdIEVycm9yOicsIGVycm9yKTtcblxuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgICAgdGl0bGU6ICdDYW5jZWwgRmFpbGVkJyxcbiAgICAgICAgY29udGVudDogZXJyb3IubWVzc2FnZSB8fCAnVW5rbm93biBlcnJvcicsXG4gICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICB0aW1lT3V0OiA1MDAwLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgdGV4dDogZXJyb3IubWVzc2FnZSB8fCAnVW5rbm93biBlcnJvcidcbiAgICAgICAgfSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHdvcmtJdGVtOiBudWxsXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG5cbiJdfQ=="],"names":[],"mappings":"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"}