@acorex-platform/module-maintenance-management-client 0.0.21

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 (45) hide show
  1. package/fesm2022/acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-BiQlJxPX.mjs +2698 -0
  2. package/fesm2022/acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-BiQlJxPX.mjs.map +1 -0
  3. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts.mjs +405 -0
  4. package/fesm2022/acorex-platform-module-maintenance-management-client-contracts.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-xxvOfIxf.mjs +141 -0
  6. package/fesm2022/acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-xxvOfIxf.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-module-maintenance-management-client-failure-register-status.provider-CLBaQy_e.mjs +181 -0
  8. package/fesm2022/acorex-platform-module-maintenance-management-client-failure-register-status.provider-CLBaQy_e.mjs.map +1 -0
  9. package/fesm2022/acorex-platform-module-maintenance-management-client-fill-work-report-completion.command-Capowl1e.mjs +174 -0
  10. package/fesm2022/acorex-platform-module-maintenance-management-client-fill-work-report-completion.command-Capowl1e.mjs.map +1 -0
  11. package/fesm2022/acorex-platform-module-maintenance-management-client-open-work-report-from-work-order.command-B0O4fWPt.mjs +105 -0
  12. package/fesm2022/acorex-platform-module-maintenance-management-client-open-work-report-from-work-order.command-B0O4fWPt.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-CxRfaf0G.mjs +152 -0
  14. package/fesm2022/acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-CxRfaf0G.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-module-maintenance-management-client-resolve-person-user-id.activity-nwXAJHkd.mjs +57 -0
  16. package/fesm2022/acorex-platform-module-maintenance-management-client-resolve-person-user-id.activity-nwXAJHkd.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-module-maintenance-management-client-resolve-work-order.activity-q5WM7Sv5.mjs +92 -0
  18. package/fesm2022/acorex-platform-module-maintenance-management-client-resolve-work-order.activity-q5WM7Sv5.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-module-maintenance-management-client-start-work-order-flow.command-B06a962Y.mjs +402 -0
  20. package/fesm2022/acorex-platform-module-maintenance-management-client-start-work-order-flow.command-B06a962Y.mjs.map +1 -0
  21. package/fesm2022/acorex-platform-module-maintenance-management-client-update-work-order-completed.activity-Di4R6LQl.mjs +89 -0
  22. package/fesm2022/acorex-platform-module-maintenance-management-client-update-work-order-completed.activity-Di4R6LQl.mjs.map +1 -0
  23. package/fesm2022/acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-CzkCCl1L.mjs +96 -0
  24. package/fesm2022/acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-CzkCCl1L.mjs.map +1 -0
  25. package/fesm2022/acorex-platform-module-maintenance-management-client-update-work-report-on-completion.activity-_B0SUFtQ.mjs +142 -0
  26. package/fesm2022/acorex-platform-module-maintenance-management-client-update-work-report-on-completion.activity-_B0SUFtQ.mjs.map +1 -0
  27. package/fesm2022/acorex-platform-module-maintenance-management-client-validate-work-order-completion.activity-RA2zaQHH.mjs +83 -0
  28. package/fesm2022/acorex-platform-module-maintenance-management-client-validate-work-order-completion.activity-RA2zaQHH.mjs.map +1 -0
  29. package/fesm2022/acorex-platform-module-maintenance-management-client-work-order-list-command-Bh_6PS5w.mjs +153 -0
  30. package/fesm2022/acorex-platform-module-maintenance-management-client-work-order-list-command-Bh_6PS5w.mjs.map +1 -0
  31. package/fesm2022/acorex-platform-module-maintenance-management-client-work-order-status.provider-DvBk5kAW.mjs +186 -0
  32. package/fesm2022/acorex-platform-module-maintenance-management-client-work-order-status.provider-DvBk5kAW.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-module-maintenance-management-client-work-order-work-report-column.component-Bf1WZWIS.mjs +163 -0
  34. package/fesm2022/acorex-platform-module-maintenance-management-client-work-order-work-report-column.component-Bf1WZWIS.mjs.map +1 -0
  35. package/fesm2022/acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-Dth3Z9fW.mjs +320 -0
  36. package/fesm2022/acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-Dth3Z9fW.mjs.map +1 -0
  37. package/fesm2022/acorex-platform-module-maintenance-management-client-work-report-assessment.util-Da1HVAit.mjs +74 -0
  38. package/fesm2022/acorex-platform-module-maintenance-management-client-work-report-assessment.util-Da1HVAit.mjs.map +1 -0
  39. package/fesm2022/acorex-platform-module-maintenance-management-client-work-report-checklist-results-view.component-BSFW0Yt-.mjs +149 -0
  40. package/fesm2022/acorex-platform-module-maintenance-management-client-work-report-checklist-results-view.component-BSFW0Yt-.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-module-maintenance-management-client.mjs +2 -0
  42. package/fesm2022/acorex-platform-module-maintenance-management-client.mjs.map +1 -0
  43. package/package.json +28 -0
  44. package/types/acorex-platform-module-maintenance-management-client-contracts.d.ts +1081 -0
  45. package/types/acorex-platform-module-maintenance-management-client.d.ts +54 -0
@@ -0,0 +1,141 @@
1
+ import { AXPDebugService } from '@acorex-platform/framework-client/core';
2
+ import { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';
3
+ import * as i0 from '@angular/core';
4
+ import { inject, Injectable } from '@angular/core';
5
+ import { defaultTo, get, isString } from 'lodash';
6
+ import { RootConfig } 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-BiQlJxPX.mjs';
8
+
9
+ //#region ---- Imports ----
10
+ //#endregion
11
+ /**
12
+ * Creates a draft work report for a work order or reuses an existing one to prevent duplicates.
13
+ */
14
+ class CreateOrGetWorkReportDraftActivity {
15
+ constructor() {
16
+ //#region ---- Services & Dependencies ----
17
+ this.entityService = inject(AXPEntityService);
18
+ this.debug = inject(AXPDebugService);
19
+ }
20
+ //#endregion
21
+ //#region ---- Command Implementation ----
22
+ async execute(input) {
23
+ const workOrderId = this.resolveText(input?.workOrderId);
24
+ if (!workOrderId) {
25
+ return {
26
+ success: false,
27
+ message: { text: 'workOrderId is required' },
28
+ metadata: { outcome: 'Failed' },
29
+ };
30
+ }
31
+ const existing = await this.findWorkReportByWorkOrderId(workOrderId);
32
+ if (existing?.id) {
33
+ this.debug.trace(AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE, 'work-report-draft', 'Reused existing work report draft', { workOrderId, workReportId: existing.id });
34
+ return { success: true, kind: 'object',
35
+ data: {
36
+ workReportId: existing.id,
37
+ created: false,
38
+ reused: true,
39
+ },
40
+ metadata: { outcome: 'Done' },
41
+ };
42
+ }
43
+ const performedById = await this.resolvePerformedById(workOrderId, input.performedById);
44
+ if (!performedById) {
45
+ this.debug.error(AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE, 'work-report-draft', 'performedById could not be resolved', { workOrderId });
46
+ return {
47
+ success: false,
48
+ message: { text: 'performedById is required' },
49
+ metadata: { outcome: 'Failed' },
50
+ };
51
+ }
52
+ const now = new Date().toISOString();
53
+ const createdId = await this.entityService
54
+ .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)
55
+ .data()
56
+ .create({
57
+ workOrderId,
58
+ reportedAt: now,
59
+ performedById,
60
+ startedAt: now,
61
+ finalizedAt: null,
62
+ assessments: [],
63
+ });
64
+ const workReportId = this.resolveText(createdId);
65
+ if (!workReportId) {
66
+ this.debug.error(AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE, 'work-report-draft', 'Work report draft creation returned no id', { workOrderId });
67
+ return {
68
+ success: false,
69
+ message: { text: 'Work report draft could not be created' },
70
+ metadata: { outcome: 'Failed' },
71
+ };
72
+ }
73
+ this.debug.trace(AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE, 'work-report-draft', 'Created work report draft', { workOrderId, workReportId, performedById });
74
+ return { success: true, kind: 'object',
75
+ data: {
76
+ workReportId,
77
+ created: true,
78
+ reused: false,
79
+ },
80
+ metadata: { outcome: 'Done' },
81
+ };
82
+ }
83
+ //#endregion
84
+ //#region ---- Helpers ----
85
+ async resolvePerformedById(workOrderId, explicit) {
86
+ const fromInput = this.resolveText(explicit);
87
+ if (fromInput) {
88
+ return fromInput;
89
+ }
90
+ const workOrder = (await this.entityService
91
+ .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)
92
+ .data()
93
+ .byKey(workOrderId));
94
+ const assignedToId = this.resolveText(workOrder?.assignedToId);
95
+ if (!assignedToId) {
96
+ return '';
97
+ }
98
+ const page = await this.entityService
99
+ .withEntity('HumanCapitalManagement', 'Employee')
100
+ .data()
101
+ .query({
102
+ skip: 0,
103
+ take: 1,
104
+ filter: {
105
+ logic: 'and',
106
+ filters: [{ field: 'personId', operator: { type: 'equal' }, value: assignedToId }],
107
+ },
108
+ });
109
+ const employee = defaultTo(get(page, 'items[0]'), null);
110
+ return this.resolveText(employee?.id);
111
+ }
112
+ async findWorkReportByWorkOrderId(workOrderId) {
113
+ const page = await this.entityService
114
+ .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)
115
+ .data()
116
+ .query({
117
+ skip: 0,
118
+ take: 1,
119
+ filter: {
120
+ logic: 'and',
121
+ filters: [{ field: 'workOrderId', operator: { type: 'equal' }, value: workOrderId }],
122
+ },
123
+ });
124
+ return defaultTo(get(page, 'items[0]'), null);
125
+ }
126
+ resolveText(value) {
127
+ if (!isString(value)) {
128
+ return '';
129
+ }
130
+ return value.trim();
131
+ }
132
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: CreateOrGetWorkReportDraftActivity, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
133
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: CreateOrGetWorkReportDraftActivity, providedIn: 'root' }); }
134
+ }
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: CreateOrGetWorkReportDraftActivity, decorators: [{
136
+ type: Injectable,
137
+ args: [{ providedIn: 'root' }]
138
+ }] });
139
+
140
+ export { CreateOrGetWorkReportDraftActivity };
141
+ //# sourceMappingURL=acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-xxvOfIxf.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-xxvOfIxf.mjs","sources":["../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/workflows/activities/create-or-get-work-report-draft.activity.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPDebugService } from '@acorex-platform/framework-client/core';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo, get, isString } from 'lodash';\n\nimport { RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport type { AXMMaintenanceManagementWorkOrderEntityModel } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport { AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE } from '../work-order-workflow.debug';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface CreateOrGetWorkReportDraftInput {\n workOrderId: string;\n performedById?: string | null;\n}\n\nexport interface CreateOrGetWorkReportDraftOutput {\n workReportId: string;\n created: boolean;\n reused: boolean;\n}\n\n//#endregion\n\n/**\n * Creates a draft work report for a work order or reuses an existing one to prevent duplicates.\n */\n@Injectable({ providedIn: 'root' })\nexport class CreateOrGetWorkReportDraftActivity\n implements AXPCommand<CreateOrGetWorkReportDraftInput, CreateOrGetWorkReportDraftOutput>\n{\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly debug = inject(AXPDebugService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(\n input: CreateOrGetWorkReportDraftInput,\n ): AXPCommandExecuteResultPromise<CreateOrGetWorkReportDraftOutput> {\n const workOrderId = this.resolveText(input?.workOrderId);\n\n if (!workOrderId) {\n return {\n success: false,\n message: { text: 'workOrderId is required' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n const existing = await this.findWorkReportByWorkOrderId(workOrderId);\n if (existing?.id) {\n this.debug.trace(\n AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE,\n 'work-report-draft',\n 'Reused existing work report draft',\n { workOrderId, workReportId: existing.id },\n );\n return { success: true, kind: 'object',\n data: {\n workReportId: existing.id,\n created: false,\n reused: true,\n },\n metadata: { outcome: 'Done' },\n };\n }\n\n const performedById = await this.resolvePerformedById(workOrderId, input.performedById);\n if (!performedById) {\n this.debug.error(\n AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE,\n 'work-report-draft',\n 'performedById could not be resolved',\n { workOrderId },\n );\n return {\n success: false,\n message: { text: 'performedById is required' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n const now = new Date().toISOString();\n const createdId = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)\n .data()\n .create({\n workOrderId,\n reportedAt: now,\n performedById,\n startedAt: now,\n finalizedAt: null,\n assessments: [],\n } as never);\n\n const workReportId = this.resolveText(createdId);\n if (!workReportId) {\n this.debug.error(\n AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE,\n 'work-report-draft',\n 'Work report draft creation returned no id',\n { workOrderId },\n );\n return {\n success: false,\n message: { text: 'Work report draft could not be created' },\n metadata: { outcome: 'Failed' },\n };\n }\n\n this.debug.trace(\n AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE,\n 'work-report-draft',\n 'Created work report draft',\n { workOrderId, workReportId, performedById },\n );\n\n return { success: true, kind: 'object',\n data: {\n workReportId,\n created: true,\n reused: false,\n },\n metadata: { outcome: 'Done' },\n };\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private async resolvePerformedById(workOrderId: string, explicit: unknown): Promise<string> {\n const fromInput = this.resolveText(explicit);\n if (fromInput) {\n return fromInput;\n }\n\n const workOrder = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .byKey(workOrderId)) as AXMMaintenanceManagementWorkOrderEntityModel | null;\n\n const assignedToId = this.resolveText(workOrder?.assignedToId);\n if (!assignedToId) {\n return '';\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: assignedToId }],\n },\n } as never);\n\n const employee = defaultTo(get(page, 'items[0]'), null) as { id?: string } | null;\n return this.resolveText(employee?.id);\n }\n\n private async findWorkReportByWorkOrderId(workOrderId: string): Promise<{ id?: string } | null> {\n const page = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)\n .data()\n .query({\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [{ field: 'workOrderId', operator: { type: 'equal' }, value: workOrderId }],\n },\n } as never);\n\n return defaultTo(get(page, 'items[0]'), null) as { id?: string } | null;\n }\n\n private resolveText(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,181 @@
1
+ import { AXPStatusProvider } from '@acorex-platform/framework-shared/core';
2
+ import { AXMFailureRegisterStatus } from '@acorex-platform/module-maintenance-management-client/contracts';
3
+
4
+ //#region ---- Imports ----
5
+ //#endregion
6
+ //#region ---- Status provider ----
7
+ class AXMMaintenanceManagementFailureRegisterStatusProvider extends AXPStatusProvider {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.key = 'maintenance-management.status.failure-register';
11
+ this.statuses = [
12
+ {
13
+ name: AXMFailureRegisterStatus.Reported,
14
+ title: '@maintenance-management:failure-registers.states.reported',
15
+ icon: 'fa-light fa-file-circle-plus',
16
+ color: 'secondary',
17
+ order: 1,
18
+ isInitial: true,
19
+ isFinal: false,
20
+ generateView: false,
21
+ },
22
+ {
23
+ name: AXMFailureRegisterStatus.UnderReview,
24
+ title: '@maintenance-management:failure-registers.states.under-review',
25
+ icon: 'fa-light fa-magnifying-glass',
26
+ color: 'warning',
27
+ order: 2,
28
+ isInitial: false,
29
+ isFinal: false,
30
+ generateView: false,
31
+ },
32
+ {
33
+ name: AXMFailureRegisterStatus.WorkOrderRequired,
34
+ title: '@maintenance-management:failure-registers.states.work-order-required',
35
+ icon: 'fa-light fa-clipboard-list',
36
+ color: 'accent1',
37
+ order: 3,
38
+ isInitial: false,
39
+ isFinal: false,
40
+ generateView: false,
41
+ },
42
+ {
43
+ name: AXMFailureRegisterStatus.WorkOrderCreated,
44
+ title: '@maintenance-management:failure-registers.states.work-order-created',
45
+ icon: 'fa-light fa-file-lines',
46
+ color: 'info',
47
+ order: 4,
48
+ isInitial: false,
49
+ isFinal: false,
50
+ generateView: false,
51
+ },
52
+ {
53
+ name: AXMFailureRegisterStatus.InProgress,
54
+ title: '@maintenance-management:failure-registers.states.in-progress',
55
+ icon: 'fa-light fa-screwdriver-wrench',
56
+ color: 'primary',
57
+ order: 5,
58
+ isInitial: false,
59
+ isFinal: false,
60
+ generateView: false,
61
+ },
62
+ {
63
+ name: AXMFailureRegisterStatus.Resolved,
64
+ title: '@maintenance-management:failure-registers.states.resolved',
65
+ icon: 'fa-light fa-circle-check',
66
+ color: 'success',
67
+ order: 6,
68
+ isInitial: false,
69
+ isFinal: false,
70
+ generateView: false,
71
+ },
72
+ {
73
+ name: AXMFailureRegisterStatus.FollowUpRequired,
74
+ title: '@maintenance-management:failure-registers.states.follow-up-required',
75
+ icon: 'fa-light fa-arrow-rotate-right',
76
+ color: 'warning',
77
+ order: 7,
78
+ isInitial: false,
79
+ isFinal: false,
80
+ generateView: false,
81
+ },
82
+ {
83
+ name: AXMFailureRegisterStatus.Rejected,
84
+ title: '@maintenance-management:failure-registers.states.rejected',
85
+ icon: 'fa-light fa-ban',
86
+ color: 'danger',
87
+ order: 8,
88
+ isInitial: false,
89
+ isFinal: true,
90
+ generateView: false,
91
+ },
92
+ {
93
+ name: AXMFailureRegisterStatus.Duplicate,
94
+ title: '@maintenance-management:failure-registers.states.duplicate',
95
+ icon: 'fa-light fa-clone',
96
+ color: 'neutral',
97
+ order: 9,
98
+ isInitial: false,
99
+ isFinal: true,
100
+ generateView: false,
101
+ },
102
+ {
103
+ name: AXMFailureRegisterStatus.Closed,
104
+ title: '@maintenance-management:failure-registers.states.closed',
105
+ icon: 'fa-light fa-folder-closed',
106
+ color: 'neutral',
107
+ order: 10,
108
+ isInitial: false,
109
+ isFinal: true,
110
+ generateView: false,
111
+ },
112
+ ];
113
+ this.transitions = [
114
+ {
115
+ from: AXMFailureRegisterStatus.Reported,
116
+ to: AXMFailureRegisterStatus.UnderReview,
117
+ title: '@maintenance-management:failure-registers.status.transitions.submit-for-review',
118
+ },
119
+ {
120
+ from: AXMFailureRegisterStatus.UnderReview,
121
+ to: AXMFailureRegisterStatus.WorkOrderRequired,
122
+ title: '@maintenance-management:failure-registers.status.transitions.require-work-order',
123
+ },
124
+ {
125
+ from: AXMFailureRegisterStatus.UnderReview,
126
+ to: AXMFailureRegisterStatus.Rejected,
127
+ title: '@maintenance-management:failure-registers.status.transitions.reject',
128
+ },
129
+ {
130
+ from: AXMFailureRegisterStatus.UnderReview,
131
+ to: AXMFailureRegisterStatus.Duplicate,
132
+ title: '@maintenance-management:failure-registers.status.transitions.mark-duplicate',
133
+ },
134
+ {
135
+ from: AXMFailureRegisterStatus.WorkOrderRequired,
136
+ to: AXMFailureRegisterStatus.WorkOrderCreated,
137
+ title: '@maintenance-management:failure-registers.status.transitions.create-work-order',
138
+ },
139
+ {
140
+ from: AXMFailureRegisterStatus.WorkOrderCreated,
141
+ to: AXMFailureRegisterStatus.InProgress,
142
+ title: '@maintenance-management:failure-registers.status.transitions.start-work-order',
143
+ },
144
+ {
145
+ from: AXMFailureRegisterStatus.InProgress,
146
+ to: AXMFailureRegisterStatus.Resolved,
147
+ title: '@maintenance-management:failure-registers.status.transitions.resolve',
148
+ },
149
+ {
150
+ from: AXMFailureRegisterStatus.InProgress,
151
+ to: AXMFailureRegisterStatus.FollowUpRequired,
152
+ title: '@maintenance-management:failure-registers.status.transitions.require-follow-up',
153
+ },
154
+ {
155
+ from: AXMFailureRegisterStatus.FollowUpRequired,
156
+ to: AXMFailureRegisterStatus.WorkOrderRequired,
157
+ title: '@maintenance-management:failure-registers.status.transitions.create-follow-up-work-order',
158
+ },
159
+ {
160
+ from: AXMFailureRegisterStatus.Resolved,
161
+ to: AXMFailureRegisterStatus.Closed,
162
+ title: '@maintenance-management:failure-registers.status.transitions.close',
163
+ },
164
+ {
165
+ from: AXMFailureRegisterStatus.Rejected,
166
+ to: AXMFailureRegisterStatus.Closed,
167
+ title: '@maintenance-management:failure-registers.status.transitions.close',
168
+ },
169
+ {
170
+ from: AXMFailureRegisterStatus.Duplicate,
171
+ to: AXMFailureRegisterStatus.Closed,
172
+ title: '@maintenance-management:failure-registers.status.transitions.close',
173
+ },
174
+ ];
175
+ this.defaultStatus = AXMFailureRegisterStatus.Reported;
176
+ }
177
+ }
178
+ //#endregion
179
+
180
+ export { AXMMaintenanceManagementFailureRegisterStatusProvider };
181
+ //# sourceMappingURL=acorex-platform-module-maintenance-management-client-failure-register-status.provider-CLBaQy_e.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-maintenance-management-client-failure-register-status.provider-CLBaQy_e.mjs","sources":["../../../../libs/modules/maintenance-management/client/src/lib/features/failure-register-status.provider.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXStyleColorType } from '@acorex/cdk/common';\nimport { AXPStatusProvider, AXPStatusTransition } from '@acorex-platform/framework-shared/core';\n\nimport { AXMFailureRegisterStatus } from '@acorex-platform/module-maintenance-management-client/contracts';\n\n//#endregion\n\n//#region ---- Status provider ----\n\nexport class AXMMaintenanceManagementFailureRegisterStatusProvider extends AXPStatusProvider {\n readonly key = 'maintenance-management.status.failure-register';\n\n readonly statuses = [\n {\n name: AXMFailureRegisterStatus.Reported,\n title: '@maintenance-management:failure-registers.states.reported',\n icon: 'fa-light fa-file-circle-plus',\n color: 'secondary' as AXStyleColorType,\n order: 1,\n isInitial: true,\n isFinal: false,\n generateView: false,\n },\n {\n name: AXMFailureRegisterStatus.UnderReview,\n title: '@maintenance-management:failure-registers.states.under-review',\n icon: 'fa-light fa-magnifying-glass',\n color: 'warning' as AXStyleColorType,\n order: 2,\n isInitial: false,\n isFinal: false,\n generateView: false,\n },\n {\n name: AXMFailureRegisterStatus.WorkOrderRequired,\n title: '@maintenance-management:failure-registers.states.work-order-required',\n icon: 'fa-light fa-clipboard-list',\n color: 'accent1' as AXStyleColorType,\n order: 3,\n isInitial: false,\n isFinal: false,\n generateView: false,\n },\n {\n name: AXMFailureRegisterStatus.WorkOrderCreated,\n title: '@maintenance-management:failure-registers.states.work-order-created',\n icon: 'fa-light fa-file-lines',\n color: 'info' as AXStyleColorType,\n order: 4,\n isInitial: false,\n isFinal: false,\n generateView: false,\n },\n {\n name: AXMFailureRegisterStatus.InProgress,\n title: '@maintenance-management:failure-registers.states.in-progress',\n icon: 'fa-light fa-screwdriver-wrench',\n color: 'primary' as AXStyleColorType,\n order: 5,\n isInitial: false,\n isFinal: false,\n generateView: false,\n },\n {\n name: AXMFailureRegisterStatus.Resolved,\n title: '@maintenance-management:failure-registers.states.resolved',\n icon: 'fa-light fa-circle-check',\n color: 'success' as AXStyleColorType,\n order: 6,\n isInitial: false,\n isFinal: false,\n generateView: false,\n },\n {\n name: AXMFailureRegisterStatus.FollowUpRequired,\n title: '@maintenance-management:failure-registers.states.follow-up-required',\n icon: 'fa-light fa-arrow-rotate-right',\n color: 'warning' as AXStyleColorType,\n order: 7,\n isInitial: false,\n isFinal: false,\n generateView: false,\n },\n {\n name: AXMFailureRegisterStatus.Rejected,\n title: '@maintenance-management:failure-registers.states.rejected',\n icon: 'fa-light fa-ban',\n color: 'danger' as AXStyleColorType,\n order: 8,\n isInitial: false,\n isFinal: true,\n generateView: false,\n },\n {\n name: AXMFailureRegisterStatus.Duplicate,\n title: '@maintenance-management:failure-registers.states.duplicate',\n icon: 'fa-light fa-clone',\n color: 'neutral' as AXStyleColorType,\n order: 9,\n isInitial: false,\n isFinal: true,\n generateView: false,\n },\n {\n name: AXMFailureRegisterStatus.Closed,\n title: '@maintenance-management:failure-registers.states.closed',\n icon: 'fa-light fa-folder-closed',\n color: 'neutral' as AXStyleColorType,\n order: 10,\n isInitial: false,\n isFinal: true,\n generateView: false,\n },\n ];\n\n readonly transitions: AXPStatusTransition[] = [\n {\n from: AXMFailureRegisterStatus.Reported,\n to: AXMFailureRegisterStatus.UnderReview,\n title: '@maintenance-management:failure-registers.status.transitions.submit-for-review',\n },\n {\n from: AXMFailureRegisterStatus.UnderReview,\n to: AXMFailureRegisterStatus.WorkOrderRequired,\n title: '@maintenance-management:failure-registers.status.transitions.require-work-order',\n },\n {\n from: AXMFailureRegisterStatus.UnderReview,\n to: AXMFailureRegisterStatus.Rejected,\n title: '@maintenance-management:failure-registers.status.transitions.reject',\n },\n {\n from: AXMFailureRegisterStatus.UnderReview,\n to: AXMFailureRegisterStatus.Duplicate,\n title: '@maintenance-management:failure-registers.status.transitions.mark-duplicate',\n },\n {\n from: AXMFailureRegisterStatus.WorkOrderRequired,\n to: AXMFailureRegisterStatus.WorkOrderCreated,\n title: '@maintenance-management:failure-registers.status.transitions.create-work-order',\n },\n {\n from: AXMFailureRegisterStatus.WorkOrderCreated,\n to: AXMFailureRegisterStatus.InProgress,\n title: '@maintenance-management:failure-registers.status.transitions.start-work-order',\n },\n {\n from: AXMFailureRegisterStatus.InProgress,\n to: AXMFailureRegisterStatus.Resolved,\n title: '@maintenance-management:failure-registers.status.transitions.resolve',\n },\n {\n from: AXMFailureRegisterStatus.InProgress,\n to: AXMFailureRegisterStatus.FollowUpRequired,\n title: '@maintenance-management:failure-registers.status.transitions.require-follow-up',\n },\n {\n from: AXMFailureRegisterStatus.FollowUpRequired,\n to: AXMFailureRegisterStatus.WorkOrderRequired,\n title: '@maintenance-management:failure-registers.status.transitions.create-follow-up-work-order',\n },\n {\n from: AXMFailureRegisterStatus.Resolved,\n to: AXMFailureRegisterStatus.Closed,\n title: '@maintenance-management:failure-registers.status.transitions.close',\n },\n {\n from: AXMFailureRegisterStatus.Rejected,\n to: AXMFailureRegisterStatus.Closed,\n title: '@maintenance-management:failure-registers.status.transitions.close',\n },\n {\n from: AXMFailureRegisterStatus.Duplicate,\n to: AXMFailureRegisterStatus.Closed,\n title: '@maintenance-management:failure-registers.status.transitions.close',\n },\n ];\n\n readonly defaultStatus = AXMFailureRegisterStatus.Reported;\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,174 @@
1
+ import { AXTranslationService } from '@acorex/core/translation';
2
+ import { AXPEntityFormBuilderService, AXPEntityService } from '@acorex-platform/framework-client/layout/entity';
3
+ import * as i0 from '@angular/core';
4
+ import { inject, Injectable } from '@angular/core';
5
+ import { merge, isString } from 'lodash';
6
+ import { RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';
7
+ import { a as isWorkReportEditable } from './acorex-platform-module-maintenance-management-client-work-report-assessment.util-Da1HVAit.mjs';
8
+
9
+ //#region ---- Imports ----
10
+ //#endregion
11
+ /**
12
+ * Opens the work report completion form during workflow execution.
13
+ * Persists only through workflow follow-up activities (update-work-report-on-completion).
14
+ */
15
+ class FillWorkReportCompletionCommand {
16
+ constructor() {
17
+ //#region ---- Services & Dependencies ----
18
+ this.entityForm = inject(AXPEntityFormBuilderService);
19
+ this.entityService = inject(AXPEntityService);
20
+ this.translation = inject(AXTranslationService);
21
+ //#endregion
22
+ //#region ---- Constants ----
23
+ this.editableFields = [
24
+ 'result',
25
+ 'summary',
26
+ 'actionTaken',
27
+ 'recommendation',
28
+ 'laborHours',
29
+ 'downtimeMinutes',
30
+ 'endedAt',
31
+ 'needFollowUp',
32
+ ];
33
+ this.systemFields = [
34
+ 'workOrderId',
35
+ 'reportedAt',
36
+ 'performedById',
37
+ 'startedAt',
38
+ 'finalizedAt',
39
+ ];
40
+ }
41
+ //#endregion
42
+ //#region ---- Command Implementation ----
43
+ async execute(input) {
44
+ const workReportId = this.resolveText(input?.workReportId);
45
+ if (!workReportId) {
46
+ return {
47
+ success: false,
48
+ message: { text: 'workReportId is required' },
49
+ metadata: { outcome: 'Cancelled' },
50
+ };
51
+ }
52
+ const workReport = (await this.entityService
53
+ .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)
54
+ .data()
55
+ .byKey(workReportId));
56
+ if (!workReport?.id) {
57
+ return {
58
+ success: false,
59
+ message: { text: 'Work report not found' },
60
+ metadata: { outcome: 'Cancelled' },
61
+ };
62
+ }
63
+ const workOrderId = this.resolveText(input.workOrderId) || this.resolveText(workReport.workOrderId);
64
+ const workOrder = workOrderId
65
+ ? (await this.entityService
66
+ .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)
67
+ .data()
68
+ .byKey(workOrderId))
69
+ : null;
70
+ if (workOrderId && this.resolveText(workReport.workOrderId) !== workOrderId) {
71
+ return {
72
+ success: false,
73
+ message: { text: 'Work report does not belong to the work order' },
74
+ metadata: { outcome: 'Cancelled' },
75
+ };
76
+ }
77
+ const editable = isWorkReportEditable(workReport, workOrder);
78
+ const persistOnSubmit = input.persistOnSubmit === true;
79
+ const entitySource = `${RootConfig.module.name}.${RootConfig.entities.workReport.name}`;
80
+ const title = await this.translation.translateAsync('@maintenance-management:work-reports.commands.fill-completion.title');
81
+ let chain = this.entityForm
82
+ .entity(entitySource)
83
+ .update(workReportId)
84
+ .title(title)
85
+ .include(...this.systemFields, ...this.editableFields, 'assessments')
86
+ .readonlyProperties(...this.systemFields, 'assessments');
87
+ if (!editable) {
88
+ chain = chain.readonlyProperties(...this.editableFields).mode('view');
89
+ }
90
+ chain.actions((actions) => {
91
+ actions.cancel('@general:actions.cancel.title');
92
+ if (editable) {
93
+ actions.submit('@general:actions.submit.title');
94
+ }
95
+ });
96
+ const result = await chain
97
+ .onAction(async (dialogRef) => {
98
+ const action = dialogRef.action();
99
+ if (action === 'cancel') {
100
+ return { success: true, kind: 'object',
101
+ data: {},
102
+ metadata: { outcome: 'Cancelled' },
103
+ };
104
+ }
105
+ if (action !== 'submit') {
106
+ return { success: true, kind: 'object',
107
+ data: {},
108
+ metadata: { outcome: 'Cancelled' },
109
+ };
110
+ }
111
+ const context = merge({}, dialogRef.context());
112
+ if (persistOnSubmit) {
113
+ dialogRef.setLoading(true);
114
+ try {
115
+ await this.entityService
116
+ .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)
117
+ .data()
118
+ .update(workReportId, this.pickEditableFields(context));
119
+ }
120
+ finally {
121
+ dialogRef.setLoading(false);
122
+ }
123
+ return { success: true, kind: 'object',
124
+ data: { result: context },
125
+ metadata: { outcome: 'Submitted' },
126
+ };
127
+ }
128
+ return { success: true, kind: 'object',
129
+ data: { result: context },
130
+ metadata: { outcome: 'Submitted' },
131
+ };
132
+ })
133
+ .show();
134
+ return this.normalizeDialogShowResult(result);
135
+ }
136
+ //#endregion
137
+ //#region ---- Helpers ----
138
+ pickEditableFields(context) {
139
+ const picked = {};
140
+ for (const field of this.editableFields) {
141
+ if (field in context) {
142
+ picked[field] = context[field];
143
+ }
144
+ }
145
+ return picked;
146
+ }
147
+ normalizeDialogShowResult(result) {
148
+ if (result &&
149
+ typeof result === 'object' &&
150
+ 'metadata' in result &&
151
+ result.metadata?.['outcome']) {
152
+ return result;
153
+ }
154
+ return { success: true, kind: 'object',
155
+ data: {},
156
+ metadata: { outcome: 'Cancelled' },
157
+ };
158
+ }
159
+ resolveText(value) {
160
+ if (!isString(value)) {
161
+ return '';
162
+ }
163
+ return value.trim();
164
+ }
165
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: FillWorkReportCompletionCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
166
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: FillWorkReportCompletionCommand, providedIn: 'root' }); }
167
+ }
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: FillWorkReportCompletionCommand, decorators: [{
169
+ type: Injectable,
170
+ args: [{ providedIn: 'root' }]
171
+ }] });
172
+
173
+ export { FillWorkReportCompletionCommand };
174
+ //# sourceMappingURL=acorex-platform-module-maintenance-management-client-fill-work-report-completion.command-Capowl1e.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-maintenance-management-client-fill-work-report-completion.command-Capowl1e.mjs","sources":["../../../../libs/modules/maintenance-management/client/src/lib/features/work-report/commands/fill-work-report-completion.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityFormBuilderService, AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo, get, isString, merge } from 'lodash';\n\nimport { RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport type { AXMMaintenanceManagementWorkOrderEntityModel } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport type { AXMMaintenanceManagementWorkReportEntityModel } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport { isWorkReportEditable } from '../work-report-assessment.util';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface FillWorkReportCompletionInput {\n workReportId: string;\n workOrderId?: string;\n /** When false, returns form data for workflow persistence (default). When true, saves immediately. */\n persistOnSubmit?: boolean;\n}\n\nexport interface FillWorkReportCompletionOutput {\n result?: Record<string, unknown>;\n}\n\nexport type FillWorkReportCompletionOutcome = 'Submitted' | 'Cancelled';\n\n//#endregion\n\n/**\n * Opens the work report completion form during workflow execution.\n * Persists only through workflow follow-up activities (update-work-report-on-completion).\n */\n@Injectable({ providedIn: 'root' })\nexport class FillWorkReportCompletionCommand\n implements AXPCommand<FillWorkReportCompletionInput, FillWorkReportCompletionOutput>\n{\n //#region ---- Services & Dependencies ----\n\n private readonly entityForm = inject(AXPEntityFormBuilderService);\n private readonly entityService = inject(AXPEntityService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Constants ----\n\n private readonly editableFields = [\n 'result',\n 'summary',\n 'actionTaken',\n 'recommendation',\n 'laborHours',\n 'downtimeMinutes',\n 'endedAt',\n 'needFollowUp',\n ] as const;\n\n private readonly systemFields = [\n 'workOrderId',\n 'reportedAt',\n 'performedById',\n 'startedAt',\n 'finalizedAt',\n ] as const;\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(\n input: FillWorkReportCompletionInput,\n ): AXPCommandExecuteResultPromise<FillWorkReportCompletionOutput> {\n const workReportId = this.resolveText(input?.workReportId);\n if (!workReportId) {\n return {\n success: false,\n message: { text: 'workReportId is required' },\n metadata: { outcome: 'Cancelled' },\n };\n }\n\n const workReport = (await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)\n .data()\n .byKey(workReportId)) as AXMMaintenanceManagementWorkReportEntityModel | null;\n\n if (!workReport?.id) {\n return {\n success: false,\n message: { text: 'Work report not found' },\n metadata: { outcome: 'Cancelled' },\n };\n }\n\n const workOrderId = this.resolveText(input.workOrderId) || this.resolveText(workReport.workOrderId);\n const workOrder = workOrderId\n ? ((await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .byKey(workOrderId)) as AXMMaintenanceManagementWorkOrderEntityModel | null)\n : null;\n\n if (workOrderId && this.resolveText(workReport.workOrderId) !== workOrderId) {\n return {\n success: false,\n message: { text: 'Work report does not belong to the work order' },\n metadata: { outcome: 'Cancelled' },\n };\n }\n\n const editable = isWorkReportEditable(workReport, workOrder);\n const persistOnSubmit = input.persistOnSubmit === true;\n const entitySource = `${RootConfig.module.name}.${RootConfig.entities.workReport.name}`;\n const title = await this.translation.translateAsync(\n '@maintenance-management:work-reports.commands.fill-completion.title',\n );\n\n let chain = this.entityForm\n .entity(entitySource)\n .update(workReportId)\n .title(title)\n .include(...this.systemFields, ...this.editableFields, 'assessments')\n .readonlyProperties(...this.systemFields, 'assessments');\n\n if (!editable) {\n chain = chain.readonlyProperties(...this.editableFields).mode('view');\n }\n\n chain.actions((actions) => {\n actions.cancel('@general:actions.cancel.title');\n if (editable) {\n actions.submit('@general:actions.submit.title');\n }\n });\n\n const result = await chain\n .onAction<AXPRuntimeCommandResult<FillWorkReportCompletionOutput>>(async (dialogRef) => {\n const action = dialogRef.action();\n\n if (action === 'cancel') {\n return { success: true, kind: 'object',\n data: {},\n metadata: { outcome: 'Cancelled' },\n };\n }\n\n if (action !== 'submit') {\n return { success: true, kind: 'object',\n data: {},\n metadata: { outcome: 'Cancelled' },\n };\n }\n\n const context = merge({}, dialogRef.context());\n\n if (persistOnSubmit) {\n dialogRef.setLoading(true);\n try {\n await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workReport.name)\n .data()\n .update(workReportId, this.pickEditableFields(context) as never);\n } finally {\n dialogRef.setLoading(false);\n }\n\n return { success: true, kind: 'object',\n data: { result: context },\n metadata: { outcome: 'Submitted' },\n };\n }\n\n return { success: true, kind: 'object',\n data: { result: context },\n metadata: { outcome: 'Submitted' },\n };\n })\n .show();\n\n return this.normalizeDialogShowResult(result);\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n private pickEditableFields(context: Record<string, unknown>): Record<string, unknown> {\n const picked: Record<string, unknown> = {};\n for (const field of this.editableFields) {\n if (field in context) {\n picked[field] = context[field];\n }\n }\n return picked;\n }\n\n private normalizeDialogShowResult(\n result: unknown,\n ): AXPRuntimeCommandResult<FillWorkReportCompletionOutput> {\n if (\n result &&\n typeof result === 'object' &&\n 'metadata' in result &&\n (result as AXPRuntimeCommandResult<FillWorkReportCompletionOutput>).metadata?.['outcome']\n ) {\n return result as AXPRuntimeCommandResult<FillWorkReportCompletionOutput>;\n }\n\n return { success: true, kind: 'object',\n data: {},\n metadata: { outcome: 'Cancelled' },\n };\n }\n\n private resolveText(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}