@acorex-platform/module-maintenance-management-client 2.0.0-next.1 → 2.0.0-next.10

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 (87) hide show
  1. package/fesm2022/{acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-CGjcOjjv.mjs → acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-DFQ1G-hG.mjs} +37 -16
  2. package/fesm2022/acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-DFQ1G-hG.mjs.map +1 -0
  3. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entities-work-order.mjs +1 -1
  4. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entities-work-order.mjs.map +1 -1
  5. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-acorex-platform-module-maintenance-management-client-contracts-entity-catalog-Dgu63wyv.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-acorex-platform-module-maintenance-management-client-contracts-entity-catalog-DizPNs_s.mjs} +27 -27
  6. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-acorex-platform-module-maintenance-management-client-contracts-entity-catalog-Dgu63wyv.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-acorex-platform-module-maintenance-management-client-contracts-entity-catalog-DizPNs_s.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-asset-type.entity-CePSpBHM.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-asset-type.entity-kR0oSO4e.mjs} +2 -2
  8. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-asset-type.entity-CePSpBHM.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-asset-type.entity-kR0oSO4e.mjs.map} +1 -1
  9. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-resource.entity-Bfvk4GcQ.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-resource.entity-ClwDi_Jb.mjs} +2 -2
  10. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-resource.entity-Bfvk4GcQ.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type-resource.entity-ClwDi_Jb.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type.entity-Jy3BDuNN.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type.entity-DP5sZxs_.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type.entity-Jy3BDuNN.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-activity-type.entity-DP5sZxs_.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-cause.entity-CCgWn686.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-cause.entity-BmeTCrwN.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-cause.entity-CCgWn686.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-cause.entity-BmeTCrwN.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-detection.entity-r_GaKV4C.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-detection.entity-CDpUhYiN.mjs} +2 -2
  16. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-detection.entity-r_GaKV4C.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-detection.entity-CDpUhYiN.mjs.map} +1 -1
  17. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-effect.entity-BC8cmP-E.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-effect.entity-Cdk-qtLE.mjs} +2 -2
  18. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-effect.entity-BC8cmP-E.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-effect.entity-Cdk-qtLE.mjs.map} +1 -1
  19. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mechanism.entity-DkyVyX8d.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mechanism.entity-C44dK6qu.mjs} +2 -2
  20. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mechanism.entity-DkyVyX8d.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mechanism.entity-C44dK6qu.mjs.map} +1 -1
  21. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-asset-type.entity-WxiHq42o.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-asset-type.entity-CjSaac8w.mjs} +2 -2
  22. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-asset-type.entity-WxiHq42o.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-asset-type.entity-CjSaac8w.mjs.map} +1 -1
  23. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-mechanism.entity-B1yGBbFQ.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-mechanism.entity-Be5DyJW3.mjs} +2 -2
  24. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-mechanism.entity-B1yGBbFQ.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-mechanism.entity-Be5DyJW3.mjs.map} +1 -1
  25. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-solution.entity-Bquvs5zg.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-solution.entity-NVDxs4Jg.mjs} +2 -2
  26. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-solution.entity-Bquvs5zg.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode-solution.entity-NVDxs4Jg.mjs.map} +1 -1
  27. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode.entity-DU4i03Hi.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode.entity-DPxL9xPT.mjs} +2 -2
  28. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode.entity-DU4i03Hi.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-mode.entity-DPxL9xPT.mjs.map} +1 -1
  29. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-cause.entity-DvO7KoEq.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-cause.entity-D6eRyfNF.mjs} +2 -2
  30. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-cause.entity-DvO7KoEq.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-cause.entity-D6eRyfNF.mjs.map} +1 -1
  31. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-effect.entity-DK702y8j.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-effect.entity-B8hemq03.mjs} +2 -2
  32. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-effect.entity-DK702y8j.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-effect.entity-B8hemq03.mjs.map} +1 -1
  33. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-mechanism.entity-Dua1ufeE.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-mechanism.entity-DbZv4ND1.mjs} +2 -2
  34. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-mechanism.entity-Dua1ufeE.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register-mechanism.entity-DbZv4ND1.mjs.map} +1 -1
  35. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register.entity-Cs-SLfHm.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register.entity-DY1wDu57.mjs} +2 -2
  36. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register.entity-Cs-SLfHm.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-register.entity-DY1wDu57.mjs.map} +1 -1
  37. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-severity.entity-C-vkhC0g.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-severity.entity-CNEyZP8a.mjs} +2 -2
  38. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-severity.entity-C-vkhC0g.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-severity.entity-CNEyZP8a.mjs.map} +1 -1
  39. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-type.entity-DEcLe9MD.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-type.entity-CzCbAfmc.mjs} +2 -2
  40. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-type.entity-DEcLe9MD.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-failure-type.entity-CzCbAfmc.mjs.map} +1 -1
  41. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-plan.entity-R0UVSWKi.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-plan.entity-CbNGgF1g.mjs} +2 -2
  42. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-plan.entity-R0UVSWKi.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-plan.entity-CbNGgF1g.mjs.map} +1 -1
  43. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-activity-type.entity-C3KERG4U.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-activity-type.entity-CbdP4Qru.mjs} +2 -2
  44. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-activity-type.entity-C3KERG4U.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-activity-type.entity-CbdP4Qru.mjs.map} +1 -1
  45. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-failure-mode.entity-EXXJjDYH.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-failure-mode.entity-UmQTCcp5.mjs} +2 -2
  46. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-failure-mode.entity-EXXJjDYH.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-failure-mode.entity-UmQTCcp5.mjs.map} +1 -1
  47. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-resource.entity-CrMPuOD8.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-resource.entity-Ca41hUCB.mjs} +2 -2
  48. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-resource.entity-CrMPuOD8.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template-resource.entity-Ca41hUCB.mjs.map} +1 -1
  49. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template.entity-Bn2DAaNN.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template.entity-pJH1271_.mjs} +2 -2
  50. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template.entity-Bn2DAaNN.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-template.entity-pJH1271_.mjs.map} +1 -1
  51. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-type.entity-DS8_oRB7.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-type.entity-CILIRWU2.mjs} +2 -2
  52. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-type.entity-DS8_oRB7.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-maintenance-type.entity-CILIRWU2.mjs.map} +1 -1
  53. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-order.entity-DS1RPQ-I.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-order.entity-B52SPa32.mjs} +3 -3
  54. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-order.entity-DS1RPQ-I.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-order.entity-B52SPa32.mjs.map} +1 -1
  55. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-package.entity-BUMsgLTC.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-package.entity-D981EFzG.mjs} +2 -2
  56. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-package.entity-BUMsgLTC.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-package.entity-D981EFzG.mjs.map} +1 -1
  57. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-report.entity-V0CqICBq.mjs → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-report.entity-DhlbPwc1.mjs} +2 -2
  58. package/fesm2022/{acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-report.entity-V0CqICBq.mjs.map → acorex-platform-module-maintenance-management-client-contracts-entity-catalog-work-report.entity-DhlbPwc1.mjs.map} +1 -1
  59. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts-entity-catalog.mjs +1 -1
  60. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts.mjs +450 -1
  61. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts.mjs.map +1 -1
  62. package/fesm2022/{acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-BXKKfu4I.mjs → acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-C33pzC76.mjs} +2 -2
  63. package/fesm2022/{acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-BXKKfu4I.mjs.map → acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-C33pzC76.mjs.map} +1 -1
  64. package/fesm2022/{acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-Be1Nup4H.mjs → acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-yQWSRSqF.mjs} +2 -2
  65. package/fesm2022/{acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-Be1Nup4H.mjs.map → acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-yQWSRSqF.mjs.map} +1 -1
  66. package/fesm2022/acorex-platform-module-maintenance-management-client-open-work-order-checklist-form.command-BWzoBPoP.mjs +597 -0
  67. package/fesm2022/acorex-platform-module-maintenance-management-client-open-work-order-checklist-form.command-BWzoBPoP.mjs.map +1 -0
  68. package/fesm2022/{acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BJUgm59a.mjs → acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BsWJRAfF.mjs} +2 -2
  69. package/fesm2022/{acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BJUgm59a.mjs.map → acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-BsWJRAfF.mjs.map} +1 -1
  70. package/fesm2022/acorex-platform-module-maintenance-management-client-sign-off-work-order.command-Ca8WbM3R.mjs +217 -0
  71. package/fesm2022/acorex-platform-module-maintenance-management-client-sign-off-work-order.command-Ca8WbM3R.mjs.map +1 -0
  72. package/fesm2022/acorex-platform-module-maintenance-management-client-start-work-order-flow-id.util-CuUi8LBT.mjs +123 -0
  73. package/fesm2022/acorex-platform-module-maintenance-management-client-start-work-order-flow-id.util-CuUi8LBT.mjs.map +1 -0
  74. package/fesm2022/{acorex-platform-module-maintenance-management-client-start-work-order-flow.command-Bg1do_Uu.mjs → acorex-platform-module-maintenance-management-client-start-work-order-flow.command-C4vMm8Mu.mjs} +249 -129
  75. package/fesm2022/acorex-platform-module-maintenance-management-client-start-work-order-flow.command-C4vMm8Mu.mjs.map +1 -0
  76. package/fesm2022/{acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-B8vjsOI_.mjs → acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-CIU_evCh.mjs} +2 -2
  77. package/fesm2022/{acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-B8vjsOI_.mjs.map → acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-CIU_evCh.mjs.map} +1 -1
  78. package/fesm2022/{acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-DG80hqRj.mjs → acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-DiUfIHO9.mjs} +2 -2
  79. package/fesm2022/{acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-DG80hqRj.mjs.map → acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-DiUfIHO9.mjs.map} +1 -1
  80. package/fesm2022/acorex-platform-module-maintenance-management-client.mjs +1 -1
  81. package/i18n/en-AU/maintenance-management.json +47 -1
  82. package/i18n/en-US/maintenance-management.json +47 -1
  83. package/i18n/fa-IR/maintenance-management.json +47 -1
  84. package/package.json +2 -2
  85. package/types/acorex-platform-module-maintenance-management-client-contracts.d.ts +153 -2
  86. package/fesm2022/acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-CGjcOjjv.mjs.map +0 -1
  87. package/fesm2022/acorex-platform-module-maintenance-management-client-start-work-order-flow.command-Bg1do_Uu.mjs.map +0 -1
@@ -4,79 +4,12 @@ import { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/t
4
4
  import { AXPEntityService, getRecordWorkflowInstanceId, buildAXPRecordWorkflowInfo } from '@acorex-platform/framework-client/layout/entity';
5
5
  import { AXPBroadcastEventService } from '@acorex-platform/framework-client/core';
6
6
  import { AXP_WORKFLOW_ENGINE } from '@acorex-platform/framework-client/workflow';
7
- import { AXPWorkflowInstanceHumanTaskService } from '@acorex-platform/module-workflow-management-client';
8
7
  import * as i0 from '@angular/core';
9
8
  import { inject, Injectable } from '@angular/core';
10
- import { defaultTo, get, isString } from 'lodash';
9
+ import { get, defaultTo, isString } from 'lodash';
11
10
  import { AXMWorkOrderStatus, RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';
12
- import { q as queryWorkflowTemplatesForAsset, r as resolveDisplayLabel } from './acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-CGjcOjjv.mjs';
13
-
14
- //#region ----- Types -----
15
- function resolveText(value) {
16
- return typeof value === 'string' ? value.trim() : '';
17
- }
18
- function isRecord(value) {
19
- return value != null && typeof value === 'object' && !Array.isArray(value);
20
- }
21
- //#endregion
22
- //#region ----- Resolve -----
23
- /**
24
- * Distinguishes WorkOrder id from workflow-instance / bookmark ids on StartFlow input.
25
- * Prefer explicit business `data.id` / `workOrderId`; never treat bookmarkId or instanceId as the work order.
26
- */
27
- function resolveStartWorkOrderFlowIds(input) {
28
- const root = isRecord(input) ? input : {};
29
- const data = isRecord(root['data']) ? root['data'] : {};
30
- const options = isRecord(root['options']) ? root['options'] : {};
31
- const optionsData = isRecord(options['data']) ? options['data'] : {};
32
- const sourceInstanceId = resolveText(root['instanceId']) ||
33
- resolveText(data['instanceId']) ||
34
- resolveText(options['instanceId']) ||
35
- resolveText(optionsData['instanceId']);
36
- const sourceBookmarkId = resolveText(root['bookmarkId']) ||
37
- resolveText(data['bookmarkId']) ||
38
- resolveText(options['bookmarkId']) ||
39
- resolveText(optionsData['bookmarkId']);
40
- const sourceActivityId = resolveText(root['activityId']) ||
41
- resolveText(data['activityId']) ||
42
- resolveText(options['activityId']) ||
43
- resolveText(optionsData['activityId']);
44
- const sourceTaskToken = resolveText(root['taskToken']) ||
45
- resolveText(data['taskToken']) ||
46
- resolveText(options['taskToken']) ||
47
- resolveText(optionsData['taskToken']);
48
- const candidates = [
49
- resolveText(data['workOrderId']),
50
- resolveText(root['workOrderId']),
51
- resolveText(options['workOrderId']),
52
- resolveText(data['id']),
53
- resolveText(optionsData['id']),
54
- resolveText(optionsData['workOrderId']),
55
- ];
56
- let workOrderId = '';
57
- for (const candidate of candidates) {
58
- if (!candidate) {
59
- continue;
60
- }
61
- // Never confuse task-board / workflow ids with the work order.
62
- if (candidate === sourceInstanceId ||
63
- candidate === sourceBookmarkId ||
64
- candidate === sourceActivityId ||
65
- candidate === sourceTaskToken) {
66
- continue;
67
- }
68
- workOrderId = candidate;
69
- break;
70
- }
71
- return {
72
- workOrderId,
73
- sourceInstanceId,
74
- sourceBookmarkId,
75
- sourceActivityId,
76
- sourceTaskToken,
77
- };
78
- }
79
- //#endregion
11
+ import { q as queryWorkflowTemplatesForAsset, r as resolveDisplayLabel } from './acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-DFQ1G-hG.mjs';
12
+ import { r as resolveStartWorkOrderFlowIds, p as persistIntervalTaskCard } from './acorex-platform-module-maintenance-management-client-start-work-order-flow-id.util-CuUi8LBT.mjs';
80
13
 
81
14
  //#region ---- Imports ----
82
15
  const STARTABLE_STATUSES = new Set([
@@ -84,16 +17,20 @@ const STARTABLE_STATUSES = new Set([
84
17
  AXMWorkOrderStatus.Scheduled,
85
18
  AXMWorkOrderStatus.Assigned,
86
19
  ]);
20
+ /** Seeded interval workflow. One instance owns the work order for its whole lifecycle. */
21
+ const INTERVAL_WORK_ORDER_WORKFLOW_NAME = 'maintenance-interval-work-order';
22
+ const WORKFLOW_INSTANCE_MODULE = 'WorkflowManagement';
23
+ const WORKFLOW_INSTANCE_ENTITY = 'WorkflowInstance';
87
24
  //#endregion
88
25
  /**
89
- * Starts the maintenance template workflow for a work order (execution + approval).
26
+ * Starts maintenance work on a work order.
27
+ * Interval-generated orders reuse the existing workflow and task-board card.
90
28
  */
91
29
  class StartWorkOrderFlowCommand {
92
30
  constructor() {
93
31
  //#region ---- Services & Dependencies ----
94
32
  this.entityService = inject(AXPEntityService);
95
33
  this.workflowEngine = inject(AXP_WORKFLOW_ENGINE);
96
- this.humanTaskService = inject(AXPWorkflowInstanceHumanTaskService);
97
34
  this.toastService = inject(AXToastService);
98
35
  this.translationService = inject(AXTranslationService);
99
36
  this.dialogService = inject(AXDialogService);
@@ -107,17 +44,18 @@ class StartWorkOrderFlowCommand {
107
44
  if (!workOrderId) {
108
45
  return { success: false, message: { text: 'Work order id is required.' } };
109
46
  }
110
- const row = defaultTo(get(input, 'data'), {});
111
- let workOrder = await this.loadWorkOrder(workOrderId, row);
47
+ let workOrder = await this.loadWorkOrder(workOrderId);
112
48
  if (!workOrder) {
113
49
  return { success: false, message: { text: 'Work order not found.' } };
114
50
  }
115
- const existingExecutionInstanceId = getRecordWorkflowInstanceId(workOrder);
116
- // Idempotent retry: execution already attached — close the interval card if still open.
117
- if (existingExecutionInstanceId) {
118
- await this.consumeSourceIntervalCard(ids);
119
- this.eventService.publish('task-board.refresh', {});
120
- return { success: true, kind: 'object', data: undefined };
51
+ const reuseInstanceId = await this.resolveExistingWorkflowInstanceId(workOrder, ids);
52
+ if (reuseInstanceId) {
53
+ return this.advanceExistingWorkflow(workOrder, reuseInstanceId, ids.sourceBookmarkId);
54
+ }
55
+ if (workOrder.autoGeneratedWorkOrder) {
56
+ const content = await this.translationService.translateAsync('@maintenance-management:work-orders.messages.interval-workflow-missing');
57
+ await this.showWarning(content);
58
+ return { success: false, message: { text: content } };
121
59
  }
122
60
  const explicitTemplateId = this.resolveText(get(input, 'maintenanceTemplateId'));
123
61
  const selectedTemplateId = await this.resolveMaintenanceTemplateId(workOrder, explicitTemplateId || undefined);
@@ -128,14 +66,14 @@ class StartWorkOrderFlowCommand {
128
66
  if (!flowPrerequisites) {
129
67
  return { success: false };
130
68
  }
131
- const { workflowConfig, workflowName, assignedEmployeeId } = flowPrerequisites;
69
+ const { workflowConfig, workflowName, assignedEmployeeId, assigneeUserId } = flowPrerequisites;
132
70
  if (selectedTemplateId !== workOrder.maintenanceTemplateId) {
133
71
  await this.applyMaintenanceTemplate(workOrderId, selectedTemplateId);
134
72
  workOrder = (await this.loadWorkOrder(workOrderId)) ?? workOrder;
135
73
  }
136
74
  const assetIdentifiers = await this.resolveAssetIdentifiers(this.resolveText(workOrder.assetId));
137
75
  const checklistOverride = this.resolveText(get(input, 'checklist')) || this.resolveText(get(input, 'options.checklist'));
138
- const workflowInputs = this.buildWorkflowInputs(workOrder, workflowConfig, assignedEmployeeId, assetIdentifiers, checklistOverride || undefined);
76
+ const workflowInputs = this.buildWorkflowInputs(workOrder, workflowConfig, assignedEmployeeId, assigneeUserId, assetIdentifiers, checklistOverride || undefined);
139
77
  const correlationId = `${RootConfig.entities.workOrder.source}:${workOrderId}:${workflowName}`;
140
78
  try {
141
79
  // Start via engine only — do not use AXPWorkflowManager.start() here; it auto-runs inline
@@ -162,18 +100,8 @@ class StartWorkOrderFlowCommand {
162
100
  });
163
101
  return { success: false, message: { text: unknownError } };
164
102
  }
165
- await this.entityService
166
- .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)
167
- .data()
168
- .update(workOrderId, {
169
- workflowInfo: buildAXPRecordWorkflowInfo({
170
- instanceId,
171
- definitionId: workflowName,
172
- correlationId,
173
- }),
174
- });
175
- // Close the original interval card only after execution workflow + workflowInfo succeed.
176
- await this.consumeSourceIntervalCard(ids);
103
+ await this.attachExecutionInstance(workOrderId, instanceId, workflowName, correlationId);
104
+ await this.markWorkOrderInProgress(workOrder);
177
105
  this.eventService.publish('task-board.refresh', { provider: workflowName });
178
106
  const taskBoardHint = await this.translationService.translateAsync('@maintenance-management:work-orders.messages.workflow-started-use-task-board');
179
107
  this.toastService.show({
@@ -197,45 +125,194 @@ class StartWorkOrderFlowCommand {
197
125
  closeButton: true,
198
126
  timeOut: 5000,
199
127
  });
200
- // Leave the interval card open for retry.
201
128
  return { success: false, message: { text: message } };
202
129
  }
203
130
  }
204
131
  //#endregion
205
132
  //#region ---- Helpers ----
206
133
  /**
207
- * Consumes the interval-due human-task bookmark after execution workflow is attached.
208
- * Failures here do not roll back StartFlow — the card may remain until the next idempotent retry.
134
+ * Moves the existing interval workflow to in progress and points its task card at the work order assignee.
135
+ * Does not create a workflow or card, and does not change WorkOrder.assignedToId.
209
136
  */
210
- async consumeSourceIntervalCard(ids) {
211
- if (!ids.sourceInstanceId || !ids.sourceBookmarkId || !ids.sourceActivityId || !ids.sourceTaskToken) {
212
- return;
137
+ async advanceExistingWorkflow(workOrder, instanceId, sourceBookmarkId) {
138
+ const statusId = workOrder.statusId ?? '';
139
+ if (statusId === AXMWorkOrderStatus.Completed ||
140
+ statusId === AXMWorkOrderStatus.SignedOff ||
141
+ statusId === AXMWorkOrderStatus.Cancelled) {
142
+ const content = await this.translationService.translateAsync('@maintenance-management:work-orders.messages.flow-requires-startable-status');
143
+ await this.showWarning(content);
144
+ return { success: false, message: { text: content } };
145
+ }
146
+ const assigneeUserId = await this.resolveWorkOrderAssigneeUserId(workOrder);
147
+ try {
148
+ await this.syncExistingTaskCard(instanceId, workOrder.id, assigneeUserId, sourceBookmarkId);
149
+ await this.persistExistingWorkflowStart(workOrder, instanceId);
150
+ }
151
+ catch (error) {
152
+ const message = error instanceof Error
153
+ ? error.message
154
+ : await this.translationService.translateAsync('@general:messages.generic.error.description');
155
+ console.error('[StartWorkOrderFlowCommand] failed to advance existing workflow', error);
156
+ this.toastService.show({
157
+ color: 'danger',
158
+ title: await this.translationService.translateAsync('@general:messages.generic.error.title'),
159
+ content: message,
160
+ closeButton: true,
161
+ timeOut: 5000,
162
+ });
163
+ return { success: false, message: { text: message } };
164
+ }
165
+ this.eventService.publish('task-board.refresh', {});
166
+ const taskBoardHint = await this.translationService.translateAsync('@maintenance-management:work-orders.messages.interval-flow-in-progress');
167
+ this.toastService.show({
168
+ color: 'success',
169
+ title: await this.translationService.translateAsync('@general:messages.generic.success.title'),
170
+ content: taskBoardHint,
171
+ closeButton: true,
172
+ timeOut: 6000,
173
+ });
174
+ return { success: true, kind: 'object', data: undefined };
175
+ }
176
+ /**
177
+ * Prefers the task-board card's workflow, then the work order link, then a suspended interval instance.
178
+ */
179
+ async resolveExistingWorkflowInstanceId(workOrder, ids) {
180
+ const fromCard = this.resolveText(ids.sourceInstanceId);
181
+ if (fromCard && fromCard !== ids.workOrderId) {
182
+ return fromCard;
183
+ }
184
+ const linked = getRecordWorkflowInstanceId(workOrder);
185
+ if (linked && linked !== workOrder.id) {
186
+ return linked;
187
+ }
188
+ if (!workOrder.autoGeneratedWorkOrder) {
189
+ return '';
190
+ }
191
+ return this.findIntervalInstanceId(workOrder.id);
192
+ }
193
+ async findIntervalInstanceId(workOrderId) {
194
+ const page = await this.entityService
195
+ .withEntity(WORKFLOW_INSTANCE_MODULE, WORKFLOW_INSTANCE_ENTITY)
196
+ .data()
197
+ .query({
198
+ skip: 0,
199
+ take: 50,
200
+ filter: {
201
+ logic: 'and',
202
+ filters: [
203
+ { field: 'definitionId', operator: { type: 'equal' }, value: INTERVAL_WORK_ORDER_WORKFLOW_NAME },
204
+ { field: 'subStatus', operator: { type: 'equal' }, value: 'Suspended' },
205
+ ],
206
+ },
207
+ });
208
+ const items = defaultTo(get(page, 'items'), []);
209
+ for (const instance of items) {
210
+ const instanceId = this.resolveText(instance['id']);
211
+ if (!instanceId) {
212
+ continue;
213
+ }
214
+ const bookmarks = this.readBookmarks(instance);
215
+ const matches = bookmarks.some((bookmark) => this.isActiveBookmark(bookmark) && this.bookmarkReferencesWorkOrder(bookmark, workOrderId));
216
+ if (matches) {
217
+ return instanceId;
218
+ }
219
+ }
220
+ return '';
221
+ }
222
+ async persistExistingWorkflowStart(workOrder, instanceId) {
223
+ const instance = await this.readWorkflowInstance(instanceId);
224
+ const definitionId = this.resolveText(instance?.['definitionId']) || INTERVAL_WORK_ORDER_WORKFLOW_NAME;
225
+ const correlationId = this.resolveText(instance?.['correlationId']) ||
226
+ `${RootConfig.entities.workOrder.source}:${workOrder.id}:${definitionId}`;
227
+ const linked = getRecordWorkflowInstanceId(workOrder);
228
+ const patch = {};
229
+ if (STARTABLE_STATUSES.has(workOrder.statusId ?? '')) {
230
+ patch['statusId'] = AXMWorkOrderStatus.InProgress;
231
+ patch['startedAt'] = this.resolveText(workOrder.startedAt) || new Date().toISOString();
213
232
  }
214
- // Never resume using the work-order / execution instance id as the source card.
215
- if (ids.sourceInstanceId === ids.workOrderId ||
216
- ids.sourceBookmarkId === ids.workOrderId ||
217
- ids.sourceActivityId === ids.workOrderId) {
233
+ if (linked !== instanceId) {
234
+ patch['workflowInfo'] = buildAXPRecordWorkflowInfo({
235
+ instanceId,
236
+ definitionId,
237
+ correlationId,
238
+ });
239
+ }
240
+ if (Object.keys(patch).length === 0) {
218
241
  return;
219
242
  }
243
+ await this.entityService
244
+ .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)
245
+ .data()
246
+ .update(workOrder.id, patch);
247
+ }
248
+ /**
249
+ * Rewrites the existing human-task bookmark. The person who clicks Start is not written as the assignee.
250
+ * In Progress shows Open Form, then Sign Off. The bookmark stays active.
251
+ */
252
+ async syncExistingTaskCard(instanceId, workOrderId, assigneeUserId, sourceBookmarkId) {
253
+ await persistIntervalTaskCard(this.entityService, {
254
+ instanceId,
255
+ workOrderId,
256
+ sourceBookmarkId,
257
+ mode: 'in-progress',
258
+ assigneeUserId,
259
+ });
260
+ }
261
+ async readWorkflowInstance(instanceId) {
262
+ const loaded = await this.entityService
263
+ .withEntity(WORKFLOW_INSTANCE_MODULE, WORKFLOW_INSTANCE_ENTITY)
264
+ .data()
265
+ .byKey(instanceId);
266
+ return this.asRecord(loaded);
267
+ }
268
+ readBookmarks(instance) {
269
+ const workflowInstance = this.asRecord(instance['workflowInstance']);
270
+ const bookmarks = workflowInstance?.['bookmarks'];
271
+ if (!Array.isArray(bookmarks)) {
272
+ return [];
273
+ }
274
+ return bookmarks.map((bookmark) => this.asRecord(bookmark)).filter((bookmark) => !!bookmark);
275
+ }
276
+ readBookmarkPayload(bookmark) {
277
+ const payload = this.asRecord(bookmark['payload']);
278
+ if (payload) {
279
+ return { ...payload };
280
+ }
281
+ const payloadJson = bookmark['payloadJson'];
282
+ if (typeof payloadJson !== 'string' || !payloadJson.trim()) {
283
+ return null;
284
+ }
220
285
  try {
221
- await this.humanTaskService.resumeSuspendedHumanTask({
222
- instanceId: ids.sourceInstanceId,
223
- bookmarkId: ids.sourceBookmarkId,
224
- activityId: ids.sourceActivityId,
225
- taskToken: ids.sourceTaskToken,
226
- outcome: 'Done',
227
- userInput: { workOrderId: ids.workOrderId },
228
- suppressContinuation: true,
229
- });
286
+ return this.asRecord(JSON.parse(payloadJson));
230
287
  }
231
- catch (error) {
232
- console.error('[StartWorkOrderFlowCommand] failed to consume interval card', error);
288
+ catch {
289
+ return null;
290
+ }
291
+ }
292
+ bookmarkReferencesWorkOrder(bookmark, workOrderId) {
293
+ const payload = this.readBookmarkPayload(bookmark);
294
+ const context = this.asRecord(payload?.['context']);
295
+ return this.resolveText(context?.['workOrderId']) === workOrderId;
296
+ }
297
+ isActiveBookmark(bookmark) {
298
+ return bookmark['isConsumed'] !== true && bookmark['consumed'] !== true;
299
+ }
300
+ asRecord(value) {
301
+ if (value != null && typeof value === 'object' && !Array.isArray(value)) {
302
+ return value;
233
303
  }
304
+ return null;
234
305
  }
235
- async loadWorkOrder(workOrderId, row) {
236
- if (get(row, 'id') === workOrderId) {
237
- return row;
306
+ /** User id for the work order assignee. Never the user who clicked Start. */
307
+ async resolveWorkOrderAssigneeUserId(workOrder) {
308
+ const assignedToId = this.resolveText(workOrder.assignedToId);
309
+ if (!assignedToId) {
310
+ return '';
238
311
  }
312
+ const assignee = await this.resolveAssigneeByPersonId(assignedToId);
313
+ return assignee.userId;
314
+ }
315
+ async loadWorkOrder(workOrderId) {
239
316
  const loaded = await this.entityService
240
317
  .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)
241
318
  .data()
@@ -310,17 +387,27 @@ class StartWorkOrderFlowCommand {
310
387
  await this.showWarning(content);
311
388
  return null;
312
389
  }
313
- const assignedEmployeeId = await this.resolveEmployeeIdByPersonId(assignedToId);
314
- if (workflowName === 'work-order-approval' && !assignedEmployeeId) {
390
+ const assignee = await this.resolveAssigneeByPersonId(assignedToId);
391
+ if (!assignee.userId) {
392
+ const content = await this.translationService.translateAsync('@maintenance-management:work-orders.messages.assigned-user-required');
393
+ await this.showWarning(content);
394
+ return null;
395
+ }
396
+ if (workflowName === 'work-order-approval' && !assignee.employeeId) {
315
397
  const content = await this.translationService.translateAsync('@maintenance-management:work-orders.messages.assigned-employee-required');
316
398
  await this.showWarning(content);
317
399
  return null;
318
400
  }
319
- return { workflowConfig: workflowConfig, workflowName, assignedEmployeeId };
401
+ return {
402
+ workflowConfig: workflowConfig,
403
+ workflowName,
404
+ assignedEmployeeId: assignee.employeeId,
405
+ assigneeUserId: assignee.userId,
406
+ };
320
407
  }
321
408
  /**
322
- * Interval templates bind `maintenance-interval-work-order` for due-check creation.
323
- * Manual StartFlow continues with `defaultInput.executionWorkflowName` when present.
409
+ * Used only when the work order has no workflow instance yet.
410
+ * `defaultInput.executionWorkflowName` continues a manual order into its execution workflow.
324
411
  */
325
412
  resolveExecutionWorkflowName(workflowConfig) {
326
413
  const executionName = this.resolveText(get(workflowConfig, 'defaultInput.executionWorkflowName'));
@@ -351,7 +438,7 @@ class StartWorkOrderFlowCommand {
351
438
  assetSerialNumber: assetSerialNumber || null,
352
439
  };
353
440
  }
354
- buildWorkflowInputs(workOrder, workflowConfig, assignedEmployeeId, assetIdentifiers, checklistOverride) {
441
+ buildWorkflowInputs(workOrder, workflowConfig, assignedEmployeeId, assigneeUserId, assetIdentifiers, checklistOverride) {
355
442
  const assetTitle = workOrder.asset?.title;
356
443
  const assetDisplayName = typeof assetTitle === 'string'
357
444
  ? assetTitle
@@ -385,6 +472,7 @@ class StartWorkOrderFlowCommand {
385
472
  ? assignedToTitle.trim()
386
473
  : workOrder.assignedToId ?? null,
387
474
  assignedEmployeeId: assignedEmployeeId || null,
475
+ assigneeUserId,
388
476
  sourceType: workOrder.sourceType ?? null,
389
477
  dueDate: workOrder.scheduledEnd ?? workOrder.scheduledStart ?? null,
390
478
  ...(checklistId ? { preChecklistQuestionnaireId: checklistId, checklist: checklistId } : {}),
@@ -408,11 +496,11 @@ class StartWorkOrderFlowCommand {
408
496
  }
409
497
  /**
410
498
  * Work-order approval flow expects `HumanCapitalManagement.Employee` id (`performedById` on WorkReport).
411
- * `WorkOrder.assignedToId` stores `PersonCore.Person` id.
499
+ * `WorkOrder.assignedToId` stores `PersonCore.Person` id. Task-board assignment uses the employee's user id.
412
500
  */
413
- async resolveEmployeeIdByPersonId(personId) {
501
+ async resolveAssigneeByPersonId(personId) {
414
502
  if (!personId) {
415
- return '';
503
+ return { employeeId: '', userId: '' };
416
504
  }
417
505
  const page = await this.entityService
418
506
  .withEntity('HumanCapitalManagement', 'Employee')
@@ -426,7 +514,39 @@ class StartWorkOrderFlowCommand {
426
514
  },
427
515
  });
428
516
  const employee = defaultTo(get(page, 'items[0]'), null);
429
- return this.resolveText(employee?.id);
517
+ return {
518
+ employeeId: this.resolveText(employee?.id),
519
+ userId: this.resolveText(employee?.userId),
520
+ };
521
+ }
522
+ async attachExecutionInstance(workOrderId, instanceId, workflowName, correlationId) {
523
+ await this.entityService
524
+ .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)
525
+ .data()
526
+ .update(workOrderId, {
527
+ workflowInfo: buildAXPRecordWorkflowInfo({
528
+ instanceId,
529
+ definitionId: workflowName,
530
+ correlationId,
531
+ }),
532
+ });
533
+ }
534
+ /** Start Workflow moves the order to in progress. Later steps keep that status until completion. */
535
+ async markWorkOrderInProgress(workOrder) {
536
+ const statusId = workOrder.statusId ?? '';
537
+ if (statusId === AXMWorkOrderStatus.InProgress ||
538
+ statusId === AXMWorkOrderStatus.Completed ||
539
+ statusId === AXMWorkOrderStatus.SignedOff) {
540
+ return;
541
+ }
542
+ const startedAt = this.resolveText(workOrder.startedAt) || new Date().toISOString();
543
+ await this.entityService
544
+ .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)
545
+ .data()
546
+ .update(workOrder.id, {
547
+ statusId: AXMWorkOrderStatus.InProgress,
548
+ startedAt,
549
+ });
430
550
  }
431
551
  async resolveMaintenanceTemplateId(workOrder, explicitTemplateId) {
432
552
  if (explicitTemplateId) {
@@ -527,4 +647,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
527
647
  }] });
528
648
 
529
649
  export { StartWorkOrderFlowCommand };
530
- //# sourceMappingURL=acorex-platform-module-maintenance-management-client-start-work-order-flow.command-Bg1do_Uu.mjs.map
650
+ //# sourceMappingURL=acorex-platform-module-maintenance-management-client-start-work-order-flow.command-C4vMm8Mu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-maintenance-management-client-start-work-order-flow.command-C4vMm8Mu.mjs","sources":["../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/commands/start-work-order-flow.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport {\n AXPEntityService,\n buildAXPRecordWorkflowInfo,\n getRecordWorkflowInstanceId,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPBroadcastEventService } from '@acorex-platform/framework-client/core';\nimport { AXP_WORKFLOW_ENGINE, type AXPWorkflowEngine } from '@acorex-platform/framework-client/workflow';\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo, get, isString } from 'lodash';\n\nimport {\n AXMWorkOrderStatus,\n RootConfig,\n} from '@acorex-platform/module-maintenance-management-client/contracts';\nimport type { AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport type { AXMMaintenanceManagementWorkOrderEntityModel } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n type EntityStorageBackend,\n queryWorkflowTemplatesForAsset,\n resolveDisplayLabel,\n type MaintenanceTemplateLike,\n} from '../../../middlewares/maintenance-generation.utils';\nimport { persistIntervalTaskCard } from './interval-task-card.persist';\nimport { resolveStartWorkOrderFlowIds } from './start-work-order-flow-id.util';\n\n//#endregion\n\n//#region ---- Types ----\n\ninterface StartWorkOrderFlowContext {\n /** When set, applies the maintenance template on the work order before starting the workflow. */\n maintenanceTemplateId?: string;\n /** Interval workflow checklist → approval `preChecklistQuestionnaireId`. */\n checklist?: string;\n data?: Record<string, unknown>;\n options?: { maintenanceTemplateId?: string; checklist?: string };\n /** Source interval (or other) task-board card — consumed only after a successful start. */\n instanceId?: string;\n bookmarkId?: string;\n activityId?: string;\n taskToken?: string;\n}\n\nconst STARTABLE_STATUSES = new Set<string>([\n AXMWorkOrderStatus.Planned,\n AXMWorkOrderStatus.Scheduled,\n AXMWorkOrderStatus.Assigned,\n]);\n\n/** Seeded interval workflow. One instance owns the work order for its whole lifecycle. */\nconst INTERVAL_WORK_ORDER_WORKFLOW_NAME = 'maintenance-interval-work-order';\nconst WORKFLOW_INSTANCE_MODULE = 'WorkflowManagement';\nconst WORKFLOW_INSTANCE_ENTITY = 'WorkflowInstance';\n\n//#endregion\n\n/**\n * Starts maintenance work on a work order.\n * Interval-generated orders reuse the existing workflow and task-board card.\n */\n@Injectable({ providedIn: 'root' })\nexport class StartWorkOrderFlowCommand implements AXPCommand<StartWorkOrderFlowContext, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly workflowEngine = inject(AXP_WORKFLOW_ENGINE) as AXPWorkflowEngine;\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly dialogService = inject(AXDialogService);\n private readonly eventService = inject(AXPBroadcastEventService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: StartWorkOrderFlowContext): AXPCommandExecuteResultPromise<void> {\n const ids = resolveStartWorkOrderFlowIds(input as unknown as Record<string, unknown>);\n const workOrderId = ids.workOrderId;\n if (!workOrderId) {\n return { success: false, message: { text: 'Work order id is required.' } };\n }\n\n let workOrder = await this.loadWorkOrder(workOrderId);\n if (!workOrder) {\n return { success: false, message: { text: 'Work order not found.' } };\n }\n\n const reuseInstanceId = await this.resolveExistingWorkflowInstanceId(workOrder, ids);\n if (reuseInstanceId) {\n return this.advanceExistingWorkflow(workOrder, reuseInstanceId, ids.sourceBookmarkId);\n }\n if (workOrder.autoGeneratedWorkOrder) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.interval-workflow-missing',\n );\n await this.showWarning(content);\n return { success: false, message: { text: content } };\n }\n\n const explicitTemplateId = this.resolveText(get(input, 'maintenanceTemplateId'));\n const selectedTemplateId = await this.resolveMaintenanceTemplateId(workOrder, explicitTemplateId || undefined);\n if (!selectedTemplateId) {\n return { success: false };\n }\n\n const flowPrerequisites = await this.validateFlowPrerequisites(workOrder, selectedTemplateId);\n if (!flowPrerequisites) {\n return { success: false };\n }\n\n const { workflowConfig, workflowName, assignedEmployeeId, assigneeUserId } = flowPrerequisites;\n\n if (selectedTemplateId !== workOrder.maintenanceTemplateId) {\n await this.applyMaintenanceTemplate(workOrderId, selectedTemplateId);\n workOrder = (await this.loadWorkOrder(workOrderId)) ?? workOrder;\n }\n\n const assetIdentifiers = await this.resolveAssetIdentifiers(this.resolveText(workOrder.assetId));\n const checklistOverride =\n this.resolveText(get(input, 'checklist')) || this.resolveText(get(input, 'options.checklist'));\n const workflowInputs = this.buildWorkflowInputs(\n workOrder,\n workflowConfig,\n assignedEmployeeId,\n assigneeUserId,\n assetIdentifiers,\n checklistOverride || undefined,\n );\n const correlationId = `${RootConfig.entities.workOrder.source}:${workOrderId}:${workflowName}`;\n\n try {\n // Start via engine only — do not use AXPWorkflowManager.start() here; it auto-runs inline\n // frontend steps (e.g. checklist fill). Human tasks must stay on the task board.\n const startResponse = await this.workflowEngine.start({\n workflowId: workflowName,\n input: {\n ...workflowInputs,\n workOrderId,\n refId: workOrderId,\n refType: RootConfig.entities.workOrder.source,\n correlationId,\n },\n });\n\n const instanceId = startResponse.instanceId;\n if (!instanceId) {\n const unknownError = await this.translationService.translateAsync(\n '@general:messages.generic.error.description',\n );\n this.toastService.show({\n color: 'danger',\n title: await this.translationService.translateAsync('@general:messages.generic.error.title'),\n content: unknownError,\n closeButton: true,\n timeOut: 5000,\n });\n return { success: false, message: { text: unknownError } };\n }\n\n await this.attachExecutionInstance(workOrderId, instanceId, workflowName, correlationId);\n await this.markWorkOrderInProgress(workOrder);\n\n this.eventService.publish('task-board.refresh', { provider: workflowName });\n\n const taskBoardHint = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.workflow-started-use-task-board',\n );\n this.toastService.show({\n color: 'success',\n title: await this.translationService.translateAsync('@general:messages.generic.success.title'),\n content: taskBoardHint,\n closeButton: true,\n timeOut: 6000,\n });\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const message =\n error instanceof Error\n ? error.message\n : await this.translationService.translateAsync(\n '@general:messages.generic.error.description',\n );\n console.error('[StartWorkOrderFlowCommand]', error);\n this.toastService.show({\n color: 'danger',\n title: await this.translationService.translateAsync('@general:messages.generic.error.title'),\n content: message,\n closeButton: true,\n timeOut: 5000,\n });\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n /**\n * Moves the existing interval workflow to in progress and points its task card at the work order assignee.\n * Does not create a workflow or card, and does not change WorkOrder.assignedToId.\n */\n private async advanceExistingWorkflow(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n instanceId: string,\n sourceBookmarkId: string,\n ): AXPCommandExecuteResultPromise<void> {\n const statusId = workOrder.statusId ?? '';\n if (\n statusId === AXMWorkOrderStatus.Completed ||\n statusId === AXMWorkOrderStatus.SignedOff ||\n statusId === AXMWorkOrderStatus.Cancelled\n ) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.flow-requires-startable-status',\n );\n await this.showWarning(content);\n return { success: false, message: { text: content } };\n }\n\n const assigneeUserId = await this.resolveWorkOrderAssigneeUserId(workOrder);\n try {\n await this.syncExistingTaskCard(instanceId, workOrder.id, assigneeUserId, sourceBookmarkId);\n await this.persistExistingWorkflowStart(workOrder, instanceId);\n } catch (error: unknown) {\n const message =\n error instanceof Error\n ? error.message\n : await this.translationService.translateAsync('@general:messages.generic.error.description');\n console.error('[StartWorkOrderFlowCommand] failed to advance existing workflow', error);\n this.toastService.show({\n color: 'danger',\n title: await this.translationService.translateAsync('@general:messages.generic.error.title'),\n content: message,\n closeButton: true,\n timeOut: 5000,\n });\n return { success: false, message: { text: message } };\n }\n\n this.eventService.publish('task-board.refresh', {});\n const taskBoardHint = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.interval-flow-in-progress',\n );\n this.toastService.show({\n color: 'success',\n title: await this.translationService.translateAsync('@general:messages.generic.success.title'),\n content: taskBoardHint,\n closeButton: true,\n timeOut: 6000,\n });\n return { success: true, kind: 'object', data: undefined };\n }\n\n /**\n * Prefers the task-board card's workflow, then the work order link, then a suspended interval instance.\n */\n private async resolveExistingWorkflowInstanceId(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n ids: { sourceInstanceId: string; workOrderId: string },\n ): Promise<string> {\n const fromCard = this.resolveText(ids.sourceInstanceId);\n if (fromCard && fromCard !== ids.workOrderId) {\n return fromCard;\n }\n\n const linked = getRecordWorkflowInstanceId(workOrder as unknown as Record<string, unknown>);\n if (linked && linked !== workOrder.id) {\n return linked;\n }\n\n if (!workOrder.autoGeneratedWorkOrder) {\n return '';\n }\n return this.findIntervalInstanceId(workOrder.id);\n }\n\n private async findIntervalInstanceId(workOrderId: string): Promise<string> {\n const page = await this.entityService\n .withEntity(WORKFLOW_INSTANCE_MODULE, WORKFLOW_INSTANCE_ENTITY)\n .data()\n .query({\n skip: 0,\n take: 50,\n filter: {\n logic: 'and',\n filters: [\n { field: 'definitionId', operator: { type: 'equal' }, value: INTERVAL_WORK_ORDER_WORKFLOW_NAME },\n { field: 'subStatus', operator: { type: 'equal' }, value: 'Suspended' },\n ],\n },\n } as never);\n const items = defaultTo(get(page, 'items'), []) as unknown as Record<string, unknown>[];\n for (const instance of items) {\n const instanceId = this.resolveText(instance['id']);\n if (!instanceId) {\n continue;\n }\n const bookmarks = this.readBookmarks(instance);\n const matches = bookmarks.some(\n (bookmark) => this.isActiveBookmark(bookmark) && this.bookmarkReferencesWorkOrder(bookmark, workOrderId),\n );\n if (matches) {\n return instanceId;\n }\n }\n return '';\n }\n\n private async persistExistingWorkflowStart(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n instanceId: string,\n ): Promise<void> {\n const instance = await this.readWorkflowInstance(instanceId);\n const definitionId =\n this.resolveText(instance?.['definitionId']) || INTERVAL_WORK_ORDER_WORKFLOW_NAME;\n const correlationId =\n this.resolveText(instance?.['correlationId']) ||\n `${RootConfig.entities.workOrder.source}:${workOrder.id}:${definitionId}`;\n const linked = getRecordWorkflowInstanceId(workOrder as unknown as Record<string, unknown>);\n const patch: Record<string, unknown> = {};\n if (STARTABLE_STATUSES.has(workOrder.statusId ?? '')) {\n patch['statusId'] = AXMWorkOrderStatus.InProgress;\n patch['startedAt'] = this.resolveText(workOrder.startedAt) || new Date().toISOString();\n }\n if (linked !== instanceId) {\n patch['workflowInfo'] = buildAXPRecordWorkflowInfo({\n instanceId,\n definitionId,\n correlationId,\n });\n }\n if (Object.keys(patch).length === 0) {\n return;\n }\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .update(workOrder.id, patch as never);\n }\n\n /**\n * Rewrites the existing human-task bookmark. The person who clicks Start is not written as the assignee.\n * In Progress shows Open Form, then Sign Off. The bookmark stays active.\n */\n private async syncExistingTaskCard(\n instanceId: string,\n workOrderId: string,\n assigneeUserId: string,\n sourceBookmarkId: string,\n ): Promise<void> {\n await persistIntervalTaskCard(this.entityService, {\n instanceId,\n workOrderId,\n sourceBookmarkId,\n mode: 'in-progress',\n assigneeUserId,\n });\n }\n\n private async readWorkflowInstance(instanceId: string): Promise<Record<string, unknown> | null> {\n const loaded = await this.entityService\n .withEntity(WORKFLOW_INSTANCE_MODULE, WORKFLOW_INSTANCE_ENTITY)\n .data()\n .byKey(instanceId);\n return this.asRecord(loaded);\n }\n\n private readBookmarks(instance: Record<string, unknown>): Record<string, unknown>[] {\n const workflowInstance = this.asRecord(instance['workflowInstance']);\n const bookmarks = workflowInstance?.['bookmarks'];\n if (!Array.isArray(bookmarks)) {\n return [];\n }\n return bookmarks.map((bookmark) => this.asRecord(bookmark)).filter((bookmark): bookmark is Record<string, unknown> => !!bookmark);\n }\n\n private readBookmarkPayload(bookmark: Record<string, unknown>): Record<string, unknown> | null {\n const payload = this.asRecord(bookmark['payload']);\n if (payload) {\n return { ...payload };\n }\n const payloadJson = bookmark['payloadJson'];\n if (typeof payloadJson !== 'string' || !payloadJson.trim()) {\n return null;\n }\n try {\n return this.asRecord(JSON.parse(payloadJson));\n } catch {\n return null;\n }\n }\n\n private bookmarkReferencesWorkOrder(bookmark: Record<string, unknown>, workOrderId: string): boolean {\n const payload = this.readBookmarkPayload(bookmark);\n const context = this.asRecord(payload?.['context']);\n return this.resolveText(context?.['workOrderId']) === workOrderId;\n }\n\n private isActiveBookmark(bookmark: Record<string, unknown>): boolean {\n return bookmark['isConsumed'] !== true && bookmark['consumed'] !== true;\n }\n\n private asRecord(value: unknown): Record<string, unknown> | null {\n if (value != null && typeof value === 'object' && !Array.isArray(value)) {\n return value as Record<string, unknown>;\n }\n return null;\n }\n\n /** User id for the work order assignee. Never the user who clicked Start. */\n private async resolveWorkOrderAssigneeUserId(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n ): Promise<string> {\n const assignedToId = this.resolveText(workOrder.assignedToId);\n if (!assignedToId) {\n return '';\n }\n const assignee = await this.resolveAssigneeByPersonId(assignedToId);\n return assignee.userId;\n }\n\n private async loadWorkOrder(\n workOrderId: string,\n ): Promise<AXMMaintenanceManagementWorkOrderEntityModel | null> {\n const loaded = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .byKey(workOrderId);\n return (loaded as AXMMaintenanceManagementWorkOrderEntityModel | null) ?? null;\n }\n\n private async applyMaintenanceTemplate(workOrderId: string, templateId: string): Promise<void> {\n const template = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.maintenanceTemplate.name)\n .data()\n .byKey(templateId)) as {\n id?: string;\n title?: unknown;\n maintenanceTypeId?: string;\n metadataIds?: string[];\n workflowConfig?: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig | null;\n needShutdown?: boolean;\n needPermission?: boolean;\n estimatedMinutes?: number;\n } | null;\n\n if (!template?.id) {\n throw new Error('Maintenance template not found.');\n }\n\n const estimatedHours =\n typeof template.estimatedMinutes === 'number' && template.estimatedMinutes > 0\n ? Math.round((template.estimatedMinutes / 60) * 100) / 100\n : undefined;\n\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .update(workOrderId, {\n maintenanceTemplateId: template.id,\n maintenanceTypeId: template.maintenanceTypeId,\n maintenanceTemplate: {\n id: template.id,\n title: template.title,\n metadataIds: template.metadataIds,\n workflowConfig: template.workflowConfig,\n },\n needShutdown: template.needShutdown ?? false,\n needPermission: template.needPermission ?? false,\n ...(estimatedHours !== undefined ? { estimatedHours } : {}),\n } as never);\n }\n\n private async resolveWorkflowConfig(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n ): Promise<AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig | null> {\n let workflowConfig = workOrder.maintenanceTemplate?.workflowConfig ?? null;\n if (!workflowConfig?.workflowDefinitionId && workOrder.maintenanceTemplateId) {\n const template = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.maintenanceTemplate.name)\n .data()\n .byKey(workOrder.maintenanceTemplateId);\n workflowConfig = get(template, 'workflowConfig') ?? null;\n }\n return workflowConfig;\n }\n\n private isWorkflowEnabled(\n workflowConfig: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig | null,\n ): boolean {\n if (!workflowConfig?.workflowDefinitionId?.trim() || !workflowConfig.workflowName?.trim()) {\n return false;\n }\n return workflowConfig.enabled !== false;\n }\n\n /**\n * Validates work-order state before starting a workflow or persisting workflowInfo.\n */\n private async validateFlowPrerequisites(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n selectedTemplateId: string,\n ): Promise<{\n workflowConfig: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig;\n workflowName: string;\n assignedEmployeeId: string;\n assigneeUserId: string;\n } | null> {\n const statusId = workOrder.statusId ?? '';\n if (!STARTABLE_STATUSES.has(statusId)) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.flow-requires-startable-status',\n );\n await this.showWarning(content);\n return null;\n }\n\n const workflowConfig = await this.resolveWorkflowConfigForTemplate(selectedTemplateId);\n if (!this.isWorkflowEnabled(workflowConfig)) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.no-workflow-configured',\n );\n await this.showWarning(content);\n return null;\n }\n\n const workflowName = this.resolveExecutionWorkflowName(workflowConfig!);\n const assignedToId = this.resolveText(workOrder.assignedToId);\n if (!assignedToId) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.assigned-user-required',\n );\n await this.showWarning(content);\n return null;\n }\n\n const assignee = await this.resolveAssigneeByPersonId(assignedToId);\n if (!assignee.userId) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.assigned-user-required',\n );\n await this.showWarning(content);\n return null;\n }\n if (workflowName === 'work-order-approval' && !assignee.employeeId) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.assigned-employee-required',\n );\n await this.showWarning(content);\n return null;\n }\n\n return {\n workflowConfig: workflowConfig!,\n workflowName,\n assignedEmployeeId: assignee.employeeId,\n assigneeUserId: assignee.userId,\n };\n }\n\n /**\n * Used only when the work order has no workflow instance yet.\n * `defaultInput.executionWorkflowName` continues a manual order into its execution workflow.\n */\n private resolveExecutionWorkflowName(\n workflowConfig: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig,\n ): string {\n const executionName = this.resolveText(get(workflowConfig, 'defaultInput.executionWorkflowName'));\n if (executionName) {\n return executionName;\n }\n return workflowConfig.workflowName.trim();\n }\n\n private async resolveWorkflowConfigForTemplate(\n templateId: string,\n ): Promise<AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig | null> {\n const template = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.maintenanceTemplate.name)\n .data()\n .byKey(templateId);\n return get(template, 'workflowConfig') ?? null;\n }\n\n private async resolveAssetIdentifiers(\n assetId: string,\n ): Promise<{ assetCode: string | null; assetSerialNumber: string | null }> {\n if (!assetId) {\n return { assetCode: null, assetSerialNumber: null };\n }\n\n const asset = (await this.entityService\n .withEntity('AssetManagement', 'Asset')\n .data()\n .byKey(assetId)) as { code?: string; serialNumber?: string } | null;\n\n const assetCode = this.resolveText(asset?.code);\n const assetSerialNumber = this.resolveText(asset?.serialNumber);\n\n return {\n assetCode: assetCode || null,\n assetSerialNumber: assetSerialNumber || null,\n };\n }\n\n private buildWorkflowInputs(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n workflowConfig: AXMMaintenanceManagementMaintenanceTemplateWorkflowConfig,\n assignedEmployeeId: string,\n assigneeUserId: string,\n assetIdentifiers: { assetCode: string | null; assetSerialNumber: string | null },\n checklistOverride?: string,\n ): Record<string, unknown> {\n const assetTitle = workOrder.asset?.title;\n const assetDisplayName =\n typeof assetTitle === 'string'\n ? assetTitle\n : resolveMultiLanguageString(assetTitle as never, this.translationService.getActiveLang());\n\n const templateDefaults = defaultTo(workflowConfig.defaultInput, {}) as Record<string, unknown>;\n const maintenanceTypeTitle = workOrder.maintenanceType?.title;\n const maintenanceTypeName =\n typeof maintenanceTypeTitle === 'string'\n ? maintenanceTypeTitle\n : resolveMultiLanguageString(maintenanceTypeTitle as never, this.translationService.getActiveLang());\n\n const assignedToTitle = workOrder.assignedTo?.fullName;\n // Interval workflow input `checklist` maps to approval flow `preChecklistQuestionnaireId`.\n const checklistId =\n this.resolveText(checklistOverride) ||\n this.resolveText(templateDefaults['checklist']) ||\n this.resolveText(templateDefaults['preChecklistQuestionnaireId']);\n\n // Template defaults first; runtime plan / work-order refs must win (never overridable by defaults).\n return {\n ...templateDefaults,\n workOrderId: workOrder.id,\n workOrderNo: workOrder.workOrderNo,\n workOrderCode: workOrder.workOrderNo,\n assetId: workOrder.assetId,\n assetCode: assetIdentifiers.assetCode,\n assetSerialNumber: assetIdentifiers.assetSerialNumber,\n assetDisplayName,\n maintenanceTypeId: workOrder.maintenanceTypeId,\n maintenanceTypeName,\n maintenancePlanId: workOrder.maintenancePlanId ?? null,\n failureRegisterId: workOrder.failureRegisterId ?? null,\n assignedToId: workOrder.assignedToId ?? null,\n assignedToDisplayName:\n typeof assignedToTitle === 'string' && assignedToTitle.trim()\n ? assignedToTitle.trim()\n : workOrder.assignedToId ?? null,\n assignedEmployeeId: assignedEmployeeId || null,\n assigneeUserId,\n sourceType: workOrder.sourceType ?? null,\n dueDate: workOrder.scheduledEnd ?? workOrder.scheduledStart ?? null,\n ...(checklistId ? { preChecklistQuestionnaireId: checklistId, checklist: checklistId } : {}),\n };\n }\n\n private resolveText(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n }\n\n private async showWarning(content: string): Promise<void> {\n this.toastService.show({\n color: 'warning',\n title: await this.translationService.translateAsync('@general:messages.generic.warning.title'),\n content,\n closeButton: true,\n timeOut: 10000,\n timeOutProgress: true,\n });\n }\n\n /**\n * Work-order approval flow expects `HumanCapitalManagement.Employee` id (`performedById` on WorkReport).\n * `WorkOrder.assignedToId` stores `PersonCore.Person` id. Task-board assignment uses the employee's user id.\n */\n private async resolveAssigneeByPersonId(personId: string): Promise<{ employeeId: string; userId: string }> {\n if (!personId) {\n return { employeeId: '', userId: '' };\n }\n\n const page = await this.entityService\n .withEntity('HumanCapitalManagement', 'Employee')\n .data()\n .query({\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [{ field: 'personId', operator: { type: 'equal' }, value: personId }],\n },\n } as never);\n\n const employee = defaultTo(get(page, 'items[0]'), null) as { id?: string; userId?: string } | null;\n return {\n employeeId: this.resolveText(employee?.id),\n userId: this.resolveText(employee?.userId),\n };\n }\n\n private async attachExecutionInstance(\n workOrderId: string,\n instanceId: string,\n workflowName: string,\n correlationId: string,\n ): Promise<void> {\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .update(workOrderId, {\n workflowInfo: buildAXPRecordWorkflowInfo({\n instanceId,\n definitionId: workflowName,\n correlationId,\n }),\n } as never);\n }\n\n /** Start Workflow moves the order to in progress. Later steps keep that status until completion. */\n private async markWorkOrderInProgress(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n ): Promise<void> {\n const statusId = workOrder.statusId ?? '';\n if (\n statusId === AXMWorkOrderStatus.InProgress ||\n statusId === AXMWorkOrderStatus.Completed ||\n statusId === AXMWorkOrderStatus.SignedOff\n ) {\n return;\n }\n\n const startedAt = this.resolveText(workOrder.startedAt) || new Date().toISOString();\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .update(workOrder.id, {\n statusId: AXMWorkOrderStatus.InProgress,\n startedAt,\n } as never);\n }\n\n private async resolveMaintenanceTemplateId(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n explicitTemplateId?: string,\n ): Promise<string> {\n if (explicitTemplateId) {\n return explicitTemplateId;\n }\n\n const currentTemplateId = this.resolveText(workOrder.maintenanceTemplateId);\n if (currentTemplateId) {\n const currentConfig = await this.resolveWorkflowConfig(workOrder);\n if (this.isWorkflowEnabled(currentConfig)) {\n return currentTemplateId;\n }\n }\n\n const assetId = this.resolveText(workOrder.assetId);\n if (!assetId) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.no-workflow-templates-for-asset',\n );\n await this.showWarning(content);\n return '';\n }\n\n const backend = this.createStorageBackend();\n const templateEntityName = `${RootConfig.module.name}.${RootConfig.entities.maintenanceTemplate.name}`;\n const templates = await queryWorkflowTemplatesForAsset(backend, templateEntityName, assetId);\n if (templates.length === 0) {\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.messages.no-workflow-templates-for-asset',\n );\n await this.showWarning(content);\n return '';\n }\n\n if (templates.length === 1) {\n return templates[0].id;\n }\n\n return (await this.pickMaintenanceTemplate(templates)) ?? '';\n }\n\n private async pickMaintenanceTemplate(templates: MaintenanceTemplateLike[]): Promise<string | null> {\n const locale = this.translationService.getActiveLang() as 'en-US' | 'fa-IR';\n const sorted = [...templates].sort((a, b) => {\n const ta = resolveDisplayLabel(a.title, a.code ?? a.id, locale);\n const tb = resolveDisplayLabel(b.title, b.code ?? b.id, locale);\n return ta.localeCompare(tb, locale, { sensitivity: 'base' });\n });\n\n const title = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.actions.start-flow.select-template.title',\n );\n const content = await this.translationService.translateAsync(\n '@maintenance-management:work-orders.actions.start-flow.select-template.content',\n );\n const cancelLabel = await this.translationService.translateAsync('@general:actions.cancel.title');\n\n return new Promise((resolve) => {\n let settled = false;\n const finish = (value: string | null) => {\n if (settled) {\n return;\n }\n settled = true;\n resolve(value);\n };\n\n const dialog = this.dialogService.open({\n title,\n content,\n type: 'primary',\n orientation: 'vertical',\n closeButton: true,\n buttons: [\n {\n text: cancelLabel,\n color: 'default',\n autofocus: true,\n onClick: () => {\n dialog.close();\n finish(null);\n },\n },\n ...sorted.map((template) => ({\n text: resolveDisplayLabel(template.title, template.code ?? template.id, locale),\n color: 'primary' as const,\n onClick: () => {\n dialog.close();\n finish(template.id);\n },\n })),\n ],\n });\n });\n }\n\n private createStorageBackend(): EntityStorageBackend {\n return {\n getOne: async (entityName, id) => {\n const [module, entity] = entityName.split('.');\n return this.entityService.withEntity(module, entity).data().byKey(id);\n },\n insertOne: async () => null,\n query: async (entityName, request) => {\n const [module, entity] = entityName.split('.');\n return this.entityService.withEntity(module, entity).data().query(request as never);\n },\n };\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import * as i0 from '@angular/core';
4
4
  import { inject, Injectable } from '@angular/core';
5
5
  import { isString } from 'lodash';
6
6
  import { RootConfig, AXMWorkOrderStatus } from '@acorex-platform/module-maintenance-management-client/contracts';
7
- import { A as AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE } from './acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-CGjcOjjv.mjs';
7
+ import { A as AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE } from './acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-DFQ1G-hG.mjs';
8
8
 
9
9
  //#region ---- Imports ----
10
10
  //#endregion
@@ -93,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
93
93
  }] });
94
94
 
95
95
  export { UpdateWorkOrderInProgressActivity };
96
- //# sourceMappingURL=acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-B8vjsOI_.mjs.map
96
+ //# sourceMappingURL=acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-CIU_evCh.mjs.map