@acorex-platform/module-maintenance-management-client 2.0.0-next.12 → 2.0.0-next.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-gUetoBL2.mjs → acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-C3cGlFKd.mjs} +17 -28
- package/fesm2022/acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-C3cGlFKd.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-ByaIojAq.mjs → acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-C-K8mD4N.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-ByaIojAq.mjs.map → acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-C-K8mD4N.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-C-fjBgRp.mjs → acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-b8sTwXxe.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-C-fjBgRp.mjs.map → acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-b8sTwXxe.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-open-work-order-checklist-form.command-B-6cnmrR.mjs → acorex-platform-module-maintenance-management-client-open-work-order-checklist-form.command-C6rDOolF.mjs} +6 -7
- package/fesm2022/acorex-platform-module-maintenance-management-client-open-work-order-checklist-form.command-C6rDOolF.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-B1MzM5zk.mjs → acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-StzIetk8.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-B1MzM5zk.mjs.map → acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-StzIetk8.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-start-work-order-flow.command-0Grjl6rZ.mjs → acorex-platform-module-maintenance-management-client-start-work-order-flow.command-CNau6u4p.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-start-work-order-flow.command-0Grjl6rZ.mjs.map → acorex-platform-module-maintenance-management-client-start-work-order-flow.command-CNau6u4p.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-DXhNeYyx.mjs → acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-DDJHrYkP.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-DXhNeYyx.mjs.map → acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-DDJHrYkP.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-ClRITLiw.mjs → acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-DcBxsEci.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-ClRITLiw.mjs.map → acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-DcBxsEci.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client.mjs +1 -1
- package/package.json +3 -2
- package/fesm2022/acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-gUetoBL2.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-maintenance-management-client-open-work-order-checklist-form.command-B-6cnmrR.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-gUetoBL2.mjs","sources":["../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/workflows/work-order-workflow.debug.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/maintenance-interval/maintenance-interval.component.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/maintenance-interval/maintenance-interval.component.html","../../../../libs/modules/maintenance-management/client/src/lib/middlewares/maintenance-generation.utils.ts","../../../../libs/modules/maintenance-management/client/src/lib/middlewares/asset-create-maintenance-offer.middleware.ts","../../../../libs/modules/maintenance-management/client/src/lib/middlewares/failure-register-create-work-order.middleware.ts","../../../../libs/modules/maintenance-management/client/src/lib/middlewares/maintenance-plan-create-work-order.middleware.ts","../../../../libs/modules/maintenance-management/client/src/lib/middlewares/work-order-checklist-prefill.constants.ts","../../../../libs/modules/maintenance-management/client/src/lib/middlewares/work-order-checklist-fill.middleware.ts","../../../../libs/modules/maintenance-management/client/src/lib/middlewares/work-order-checklist-post-submit.middleware.ts","../../../../libs/modules/maintenance-management/client/src/lib/middlewares/work-order-source-type.middleware.ts","../../../../libs/modules/maintenance-management/client/src/lib/middlewares/index.ts","../../../../libs/modules/maintenance-management/client/src/lib/catalog-scope-definition.provider.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/shared/maintenance-plan-create-actions-expression-evaluator-scope.provider.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/shared/work-order-expression-evaluator-scope.provider.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/maintenance-interval/maintenance-interval-widget.config.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/maintenance-interval/maintenance-interval-widget.provider.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/widgets/work-order-workflow-column.widget.config.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/widgets/work-order-work-report-column.widget.config.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/widgets/work-order-workflow-column-widget.provider.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/work-report/widgets/work-report-checklist-results.widget.config.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/work-report/widgets/work-report-widget.provider.ts","../../../../libs/modules/maintenance-management/client/src/lib/maintenance-management.module.ts","../../../../libs/modules/maintenance-management/client/src/lib/menu.provider.ts","../../../../libs/modules/maintenance-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/maintenance-management/client/src/lib/search-command.provider.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/workflows/work-order-execution-workflow.shared.ts","../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/workflows/work-order-execution.workflow.ts","../../../../libs/modules/maintenance-management/client/src/acorex-platform-module-maintenance-management-client.ts"],"sourcesContent":["//#region ---- Workflow debug namespace ----\n\nexport const AXM_WORK_ORDER_WORKFLOW_DEBUG_NAMESPACE = 'maintenance-management';\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXSwitchModule } from '@acorex/components/switch';\nimport { AXDateTimeBoxModule } from '@acorex/components/datetime-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelComponent } from '@acorex/components/label';\nimport { AXNumberBoxModule } from '@acorex/components/number-box';\nimport {\n AXSchedulerPickerComponent,\n AXSchedulerPickerSettings,\n AXSchedulerPickerValue,\n} from '@acorex/components/scheduler-picker';\nimport { AXSelectionListModule } from '@acorex/components/selection-list';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport {\n AXMMaintenanceIntervalConfig,\n AXMMaintenanceIntervalDraft,\n AXMMaintenanceIntervalErrorCode,\n AXMMaintenanceIntervalKind,\n AXMMaintenanceIntervalTriggerLogic,\n AXMMaintenanceIntervalUnit,\n AXMMaintenanceMeterKind,\n buildAXMMaintenanceIntervalConfig,\n draftFromAXMMaintenanceIntervalConfig,\n emptyAXMMaintenanceIntervalConfig,\n emptyAXMMaintenanceIntervalDraft,\n isAXMMaintenanceIntervalKind,\n isAXMMaintenanceIntervalUnitForKind,\n isAXMMaintenanceMeterKind,\n readIntervalDate,\n} from '@acorex-platform/module-maintenance-management-client/contracts';\nimport { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, input, output, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n//#endregion\n\n//#region ----- Types -----\n\ntype MaintenanceScheduleMode = 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'specific-date';\ntype PickerScheduleMode = Exclude<MaintenanceScheduleMode, 'specific-date'>;\n\ninterface MaintenanceIntervalSection {\n kind: AXMMaintenanceIntervalKind;\n labelKey: string;\n enabled: boolean;\n editor: 'schedule' | 'date' | 'distance' | 'meter';\n meterKind: AXMMaintenanceMeterKind | null;\n date: string | null;\n interval: number | null;\n decimals: number;\n unitId: AXMMaintenanceIntervalUnit | null;\n unitLabelKey: string;\n errorKey: string | null;\n}\n\ninterface MaintenanceIntervalChoice {\n id: string;\n text: string;\n}\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst I18N = '@maintenance-management:maintenance-interval';\n\nconst KIND_ORDER: AXMMaintenanceIntervalKind[] = ['schedule', 'date', 'distance', 'operating-hours', 'operation-count'];\n\nconst SCHEDULE_MODES: readonly MaintenanceScheduleMode[] = [\n 'hourly',\n 'daily',\n 'weekly',\n 'monthly',\n 'yearly',\n 'specific-date',\n];\n/** Shown in the Schedule section. Hourly and Yearly stay readable so existing rows still load. */\nconst VISIBLE_SCHEDULE_MODES: readonly MaintenanceScheduleMode[] = ['daily', 'weekly', 'monthly', 'specific-date'];\n\nconst LABEL_KEYS: Record<AXMMaintenanceIntervalKind, string> = {\n schedule: `${I18N}.kinds.schedule`,\n date: `${I18N}.kinds.date`,\n distance: `${I18N}.kinds.distance`,\n 'operating-hours': `${I18N}.kinds.operating-hours`,\n 'operation-count': `${I18N}.kinds.operation-count`,\n};\n\nconst ERROR_KEYS: Record<AXMMaintenanceIntervalErrorCode, string> = {\n schedule: `${I18N}.validation.schedule`,\n date: `${I18N}.validation.date`,\n interval: `${I18N}.validation.interval`,\n integer: `${I18N}.validation.integer`,\n};\n\nconst UNIT_LABEL_KEYS: Record<AXMMaintenanceIntervalUnit, string> = {\n [AXMMaintenanceIntervalUnit.Kilometer]: `${I18N}.units.kilometer`,\n [AXMMaintenanceIntervalUnit.Mile]: `${I18N}.units.mile`,\n [AXMMaintenanceIntervalUnit.Hour]: `${I18N}.units.hour`,\n [AXMMaintenanceIntervalUnit.Operation]: `${I18N}.units.operation`,\n};\n\nconst SCHEDULE_MODE_LABEL_KEYS: Record<MaintenanceScheduleMode, string> = {\n hourly: `${I18N}.recurrence-unit.hourly`,\n daily: `${I18N}.recurrence-unit.daily`,\n weekly: `${I18N}.recurrence-unit.weekly`,\n monthly: `${I18N}.recurrence-unit.monthly`,\n yearly: `${I18N}.recurrence-unit.yearly`,\n 'specific-date': `${I18N}.recurrence-unit.specific-date`,\n};\n\nfunction isScheduleMode(value: unknown): value is MaintenanceScheduleMode {\n return typeof value === 'string' && (SCHEDULE_MODES as readonly string[]).includes(value);\n}\n\nfunction isPickerScheduleMode(value: unknown): value is PickerScheduleMode {\n return isScheduleMode(value) && value !== 'specific-date';\n}\n\n/** Existing schedules without a mode stay daily so legacy daily rows keep working. */\nfunction readScheduleMode(schedule: unknown): MaintenanceScheduleMode {\n if (schedule && typeof schedule === 'object' && 'mode' in schedule) {\n const mode = (schedule as { mode?: unknown }).mode;\n if (isScheduleMode(mode)) {\n return mode;\n }\n }\n return 'daily';\n}\n\nfunction createScheduleSettings(mode: MaintenanceScheduleMode): AXSchedulerPickerSettings {\n if (mode === 'specific-date') {\n return {\n mode: 'daily',\n showStartCondition: false,\n showEndConditions: false,\n showExclusions: false,\n showInclusions: false,\n };\n }\n const shared = {\n mode,\n showStartCondition: true,\n showEndConditions: true,\n showExclusions: false,\n showInclusions: false,\n } as const;\n\n switch (mode) {\n case 'hourly':\n return { ...shared, options: { showInterval: true } };\n case 'daily':\n return { ...shared, options: { showInterval: true, showWeekdaysOnly: false } };\n case 'weekly':\n return { ...shared, options: { showInterval: true, showWeekdaySelection: true } };\n case 'monthly':\n return { ...shared, options: { showInterval: true, recurrenceMode: 'specificDays' } };\n case 'yearly':\n return {\n ...shared,\n options: { showInterval: true, recurrenceMode: 'specificDate', showMonthSelection: true },\n };\n }\n}\n\n/** Same starting value the scheduler-picker widget uses when a schedule is empty. */\nfunction createDefaultSchedule(): AXSchedulerPickerValue {\n return {\n mode: 'daily',\n interval: 1,\n startCondition: { type: 'now', startDate: new Date() },\n recurrence: {},\n endCondition: { type: 'never' },\n };\n}\n\nfunction withScheduleMode(\n schedule: AXSchedulerPickerValue,\n mode: PickerScheduleMode,\n): AXSchedulerPickerValue {\n const currentRecurrence = (schedule as { recurrence?: unknown }).recurrence;\n // Seed rows store recurrence as a mode string; the picker uses an object. Preserve start/end.\n if (typeof currentRecurrence === 'string') {\n return {\n ...schedule,\n mode,\n recurrence: mode as unknown as AXSchedulerPickerValue['recurrence'],\n };\n }\n return {\n ...schedule,\n mode,\n recurrence: {},\n };\n}\n\n/** One calendar day, stored on the existing schedule start date. */\nfunction withSpecificDate(\n date: string | null,\n): NonNullable<AXMMaintenanceIntervalDraft['schedule']> {\n return {\n mode: 'specific-date',\n interval: 1,\n startCondition: { type: 'byDate', ...(date ? { startDate: date } : {}) },\n endCondition: { type: 'never' },\n };\n}\n\nfunction readScheduleStartDate(schedule: unknown): string | null {\n if (!schedule || typeof schedule !== 'object') {\n return null;\n }\n const start = (schedule as { startCondition?: { startDate?: unknown } }).startCondition?.startDate;\n return readIntervalDate(start);\n}\n\nfunction stable(value: unknown): string {\n return JSON.stringify(value, (_key, item) => (item instanceof Date ? item.toISOString() : item));\n}\n\nfunction configsEqual(left: unknown, right: AXMMaintenanceIntervalConfig): boolean {\n const normalized = left == null ? emptyAXMMaintenanceIntervalConfig() : left;\n return stable(normalized) === stable(right);\n}\n\nfunction kindsKey(kinds: readonly string[]): string {\n return [...new Set(kinds)].sort().join('|');\n}\n\nfunction readChoiceId(value: unknown): string {\n if (typeof value === 'string') {\n return value;\n }\n if (Array.isArray(value)) {\n return readChoiceId(value[0]);\n }\n if (value && typeof value === 'object' && 'id' in value && typeof (value as { id: unknown }).id === 'string') {\n return (value as { id: string }).id;\n }\n return '';\n}\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'axm-maintenance-interval',\n templateUrl: './maintenance-interval.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n FormsModule,\n AXTranslationModule,\n AXSwitchModule,\n AXDecoratorModule,\n AXLabelComponent,\n AXNumberBoxModule,\n AXSelectionListModule,\n AXSchedulerPickerComponent,\n AXDateTimeBoxModule,\n ],\n host: { class: 'block' },\n})\nexport class AXMMaintenanceIntervalComponent {\n //#region ----- Inputs -----\n\n readonly supportedIntervalKinds = input<readonly string[]>([]);\n readonly value = input<AXMMaintenanceIntervalConfig | null | undefined>(undefined);\n readonly disabled = input(false);\n\n //#endregion\n\n //#region ----- Outputs -----\n\n readonly valueChange = output<AXMMaintenanceIntervalConfig>();\n\n //#endregion\n\n //#region ----- Constants -----\n\n protected readonly titleKey = `${I18N}.title`;\n protected readonly everyKey = `${I18N}.every`;\n protected readonly emptyKey = `${I18N}.empty`;\n protected readonly triggerLogicTitleKey = `${I18N}.trigger-logic.title`;\n protected readonly triggerLogic = AXMMaintenanceIntervalTriggerLogic;\n protected readonly distanceUnits: MaintenanceIntervalChoice[] = [\n { id: AXMMaintenanceIntervalUnit.Kilometer, text: UNIT_LABEL_KEYS[AXMMaintenanceIntervalUnit.Kilometer] },\n { id: AXMMaintenanceIntervalUnit.Mile, text: UNIT_LABEL_KEYS[AXMMaintenanceIntervalUnit.Mile] },\n ];\n protected readonly triggerLogicItems: MaintenanceIntervalChoice[] = [\n { id: AXMMaintenanceIntervalTriggerLogic.Any, text: `${I18N}.trigger-logic.any` },\n { id: AXMMaintenanceIntervalTriggerLogic.All, text: `${I18N}.trigger-logic.all` },\n ];\n protected readonly scheduleModeItems: MaintenanceIntervalChoice[] = VISIBLE_SCHEDULE_MODES.map((mode) => ({\n id: mode,\n text: SCHEDULE_MODE_LABEL_KEYS[mode],\n }));\n\n //#endregion\n\n //#region ----- State Signals -----\n\n private readonly draft = signal<AXMMaintenanceIntervalDraft>(emptyAXMMaintenanceIntervalDraft());\n private lastEmitted: AXMMaintenanceIntervalConfig | null = null;\n private lastSupportedKey = '';\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly scheduleValue = computed<AXSchedulerPickerValue | null>(() => {\n const schedule = this.draft().schedule;\n return schedule ? (schedule as unknown as AXSchedulerPickerValue) : null;\n });\n\n protected readonly selectedScheduleMode = computed(() => readScheduleMode(this.draft().schedule));\n\n protected readonly specificDate = computed(() => readScheduleStartDate(this.draft().schedule));\n\n protected readonly scheduleSettings = computed(() => createScheduleSettings(this.selectedScheduleMode()));\n\n protected readonly sections = computed<MaintenanceIntervalSection[]>(() => {\n const supported = this.supportedKeys();\n const draft = this.draft();\n const errors = new Map(\n buildAXMMaintenanceIntervalConfig(supported, draft).errors.map((error) => [error.kind, error.code]),\n );\n return KIND_ORDER.filter((kind) => supported.includes(kind)).map((kind) => this.toSection(kind, draft, errors));\n });\n\n protected readonly showTriggerLogic = computed(\n () => this.sections().filter((section) => section.enabled).length > 1,\n );\n\n protected readonly selectedTriggerLogic = computed(() => this.draft().triggerLogic);\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n effect(() => {\n const supported = this.supportedKeys();\n const incoming = this.value();\n const supportedKey = kindsKey(supported);\n if (\n this.lastEmitted &&\n configsEqual(incoming, this.lastEmitted) &&\n supportedKey === this.lastSupportedKey\n ) {\n return;\n }\n this.lastSupportedKey = supportedKey;\n const next = draftFromAXMMaintenanceIntervalConfig(incoming, supported);\n this.draft.set(next);\n const built = buildAXMMaintenanceIntervalConfig(supported, next).config;\n this.lastEmitted = built;\n if (!configsEqual(incoming, built)) {\n this.valueChange.emit(built);\n }\n });\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected onEnabled(kind: AXMMaintenanceIntervalKind, event: AXValueChangedEvent): void {\n if (!event.isUserInteraction || this.disabled()) {\n return;\n }\n const enabled = Boolean(event.value);\n const draft = this.draft();\n if (kind === 'schedule') {\n const schedule =\n enabled && !draft.schedule\n ? (createDefaultSchedule() as unknown as AXMMaintenanceIntervalDraft['schedule'])\n : draft.schedule;\n this.commit({ ...draft, scheduleEnabled: enabled, schedule });\n return;\n }\n if (kind === 'date') {\n this.commit({ ...draft, dateEnabled: enabled });\n return;\n }\n if (!isAXMMaintenanceMeterKind(kind)) {\n return;\n }\n this.commit({\n ...draft,\n meters: {\n ...draft.meters,\n [kind]: { ...draft.meters[kind], enabled },\n },\n });\n }\n\n protected onInterval(kind: AXMMaintenanceMeterKind, event: AXValueChangedEvent): void {\n if (!event.isUserInteraction || this.disabled()) {\n return;\n }\n const interval = typeof event.value === 'number' && Number.isFinite(event.value) ? event.value : null;\n const draft = this.draft();\n if (draft.meters[kind].interval === interval) {\n return;\n }\n this.commit({\n ...draft,\n meters: {\n ...draft.meters,\n [kind]: { ...draft.meters[kind], interval },\n },\n });\n }\n\n protected onDistanceUnit(event: AXValueChangedEvent): void {\n if (!event.isUserInteraction || this.disabled()) {\n return;\n }\n const unit = readChoiceId(event.value);\n if (!isAXMMaintenanceIntervalUnitForKind('distance', unit as AXMMaintenanceIntervalUnit)) {\n return;\n }\n const draft = this.draft();\n if (draft.meters.distance.unit === unit) {\n return;\n }\n this.commit({\n ...draft,\n meters: {\n ...draft.meters,\n distance: { ...draft.meters.distance, unit: unit as AXMMaintenanceIntervalUnit },\n },\n });\n }\n\n protected onDate(event: AXValueChangedEvent): void {\n if (!event.isUserInteraction || this.disabled()) {\n return;\n }\n const date = readIntervalDate(event.value);\n const draft = this.draft();\n if (draft.date === date) {\n return;\n }\n this.commit({ ...draft, date });\n }\n\n protected onSchedule(value: AXSchedulerPickerValue | null): void {\n if (this.disabled()) {\n return;\n }\n const draft = this.draft();\n const mode = this.selectedScheduleMode();\n const picked =\n value && isPickerScheduleMode(value.mode)\n ? value.mode\n : isPickerScheduleMode(mode)\n ? mode\n : 'daily';\n const next = value ? withScheduleMode(value, picked) : value;\n if (stable(draft.schedule) === stable(next)) {\n return;\n }\n this.commit({ ...draft, schedule: next as unknown as AXMMaintenanceIntervalDraft['schedule'] });\n }\n\n protected onScheduleMode(event: AXValueChangedEvent): void {\n if (!event.isUserInteraction || this.disabled()) {\n return;\n }\n const mode = readChoiceId(event.value);\n if (!isScheduleMode(mode)) {\n return;\n }\n const draft = this.draft();\n const current = (draft.schedule as unknown as AXSchedulerPickerValue | null) ?? createDefaultSchedule();\n if (readScheduleMode(current) === mode) {\n return;\n }\n const next =\n mode === 'specific-date'\n ? withSpecificDate(readScheduleStartDate(current))\n : withScheduleMode(current, mode);\n this.commit({\n ...draft,\n schedule: next as unknown as AXMMaintenanceIntervalDraft['schedule'],\n });\n }\n\n protected onSpecificDate(event: AXValueChangedEvent): void {\n if (!event.isUserInteraction || this.disabled()) {\n return;\n }\n const date = readIntervalDate(event.value);\n const draft = this.draft();\n const current = (draft.schedule as unknown as AXSchedulerPickerValue | null) ?? createDefaultSchedule();\n if (readScheduleMode(current) === 'specific-date' && readScheduleStartDate(current) === date) {\n return;\n }\n this.commit({\n ...draft,\n schedule: withSpecificDate(date),\n });\n }\n\n protected onTriggerLogic(event: AXValueChangedEvent): void {\n if (!event.isUserInteraction || this.disabled()) {\n return;\n }\n const logic = readChoiceId(event.value);\n const triggerLogic =\n logic === AXMMaintenanceIntervalTriggerLogic.All\n ? AXMMaintenanceIntervalTriggerLogic.All\n : AXMMaintenanceIntervalTriggerLogic.Any;\n const draft = this.draft();\n if (draft.triggerLogic === triggerLogic) {\n return;\n }\n this.commit({ ...draft, triggerLogic });\n }\n\n //#endregion\n\n //#region ----- Draft -----\n\n private supportedKeys(): AXMMaintenanceIntervalKind[] {\n return this.supportedIntervalKinds().filter(isAXMMaintenanceIntervalKind);\n }\n\n private toSection(\n kind: AXMMaintenanceIntervalKind,\n draft: AXMMaintenanceIntervalDraft,\n errors: Map<AXMMaintenanceIntervalKind, AXMMaintenanceIntervalErrorCode>,\n ): MaintenanceIntervalSection {\n const error = errors.get(kind);\n if (kind === 'schedule') {\n return {\n kind,\n labelKey: LABEL_KEYS[kind],\n enabled: draft.scheduleEnabled,\n editor: 'schedule',\n meterKind: null,\n date: null,\n interval: null,\n decimals: 0,\n unitId: null,\n unitLabelKey: '',\n errorKey: draft.scheduleEnabled && error ? ERROR_KEYS[error] : null,\n };\n }\n if (kind === 'date') {\n return {\n kind,\n labelKey: LABEL_KEYS[kind],\n enabled: draft.dateEnabled,\n editor: 'date',\n meterKind: null,\n date: draft.date,\n interval: null,\n decimals: 0,\n unitId: null,\n unitLabelKey: '',\n errorKey: draft.dateEnabled && error ? ERROR_KEYS[error] : null,\n };\n }\n if (!isAXMMaintenanceMeterKind(kind)) {\n return {\n kind,\n labelKey: LABEL_KEYS[kind],\n enabled: false,\n editor: 'meter',\n meterKind: null,\n date: null,\n interval: null,\n decimals: 0,\n unitId: null,\n unitLabelKey: '',\n errorKey: null,\n };\n }\n const meter = draft.meters[kind];\n return {\n kind,\n labelKey: LABEL_KEYS[kind],\n enabled: meter.enabled,\n editor: kind === 'distance' ? 'distance' : 'meter',\n meterKind: kind,\n date: null,\n interval: meter.interval,\n decimals: kind === 'operation-count' ? 0 : 2,\n unitId: meter.unit,\n unitLabelKey: UNIT_LABEL_KEYS[meter.unit],\n errorKey: meter.enabled && error ? ERROR_KEYS[error] : null,\n };\n }\n\n private commit(draft: AXMMaintenanceIntervalDraft): void {\n this.draft.set(draft);\n const config = buildAXMMaintenanceIntervalConfig(this.supportedKeys(), draft).config;\n this.lastEmitted = config;\n this.lastSupportedKey = kindsKey(this.supportedKeys());\n this.valueChange.emit(config);\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"flex flex-col gap-4\">\n <span class=\"text-sm font-medium\">{{ titleKey | translate | async }}</span>\n\n <!-- ----- No interval sections when the asset type supports none ----- -->\n @if (sections().length === 0) {\n <p class=\"ax-text-muted\">{{ emptyKey | translate | async }}</p>\n }\n\n @for (section of sections(); track section.kind) {\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex items-center gap-2\">\n <ax-switch\n class=\"ax-sm\"\n [ngModel]=\"section.enabled\"\n [disabled]=\"disabled()\"\n (onValueChanged)=\"onEnabled(section.kind, $event)\"\n ></ax-switch>\n <ax-label>{{ section.labelKey | translate | async }}</ax-label>\n </div>\n\n <!-- ----- Schedule interval reuses the scheduler picker ----- -->\n @if (section.enabled && section.editor === 'schedule') {\n <div class=\"flex flex-col gap-3 ps-7\">\n <ax-selection-list\n [items]=\"scheduleModeItems\"\n [ngModel]=\"selectedScheduleMode()\"\n [disabled]=\"disabled()\"\n direction=\"horizontal\"\n [multiple]=\"false\"\n [showControl]=\"true\"\n valueField=\"id\"\n textField=\"text\"\n (onValueChanged)=\"onScheduleMode($event)\"\n >\n <ng-template #itemTemplate let-item>\n <span>{{ item.text | translate | async }}</span>\n </ng-template>\n </ax-selection-list>\n <!-- ----- Specific Date uses the date box; other modes keep the scheduler picker ----- -->\n @if (selectedScheduleMode() === 'specific-date') {\n <ax-datetime-box\n picker=\"date\"\n [ngModel]=\"specificDate()\"\n [disabled]=\"disabled()\"\n (onValueChanged)=\"onSpecificDate($event)\"\n ></ax-datetime-box>\n }\n <!-- ----- Daily, weekly, and monthly recurrence stay on the scheduler picker ----- -->\n @else {\n <ax-scheduler-picker\n [config]=\"scheduleSettings()\"\n [ngModel]=\"scheduleValue()\"\n [disabled]=\"disabled()\"\n (ngModelChange)=\"onSchedule($event)\"\n />\n }\n <!-- ----- Schedule is required while Schedule is enabled ----- -->\n @if (section.errorKey; as errorKey) {\n <p class=\"text-sm text-danger\">{{ errorKey | translate | async }}</p>\n }\n </div>\n }\n <!-- ----- Date interval is a single date ----- -->\n @else if (section.enabled && section.editor === 'date') {\n <div class=\"ps-7\">\n <ax-datetime-box\n picker=\"date\"\n [ngModel]=\"section.date\"\n [disabled]=\"disabled()\"\n (onValueChanged)=\"onDate($event)\"\n ></ax-datetime-box>\n <!-- ----- A date is required while Date is enabled ----- -->\n @if (section.errorKey; as errorKey) {\n <p class=\"text-sm text-danger\">{{ errorKey | translate | async }}</p>\n }\n </div>\n }\n <!-- ----- Distance interval with a kilometer or mile choice ----- -->\n @else if (section.enabled && section.editor === 'distance') {\n <div class=\"flex flex-nowrap items-center gap-3 overflow-x-auto ps-7\">\n <span class=\"shrink-0\">{{ everyKey | translate | async }}</span>\n <ax-number-box\n class=\"w-36 shrink-0\"\n [minValue]=\"0\"\n [decimals]=\"section.decimals\"\n [ngModel]=\"section.interval\"\n [disabled]=\"disabled()\"\n [showSpinButtons]=\"false\"\n (onValueChanged)=\"onInterval('distance', $event)\"\n ></ax-number-box>\n <ax-selection-list\n class=\"!w-fit shrink-0 [&_ul]:!flex-nowrap\"\n [items]=\"distanceUnits\"\n [ngModel]=\"section.unitId\"\n [disabled]=\"disabled()\"\n direction=\"horizontal\"\n [multiple]=\"false\"\n [showControl]=\"true\"\n valueField=\"id\"\n textField=\"text\"\n (onValueChanged)=\"onDistanceUnit($event)\"\n >\n <ng-template #itemTemplate let-item>\n <span>{{ item.text | translate | async }}</span>\n </ng-template>\n </ax-selection-list>\n </div>\n <!-- ----- Positive distance is required while the section is enabled ----- -->\n @if (section.errorKey; as errorKey) {\n <p class=\"ps-7 text-sm text-danger\">{{ errorKey | translate | async }}</p>\n }\n }\n <!-- ----- Operating hours or operation count with a fixed unit ----- -->\n @else if (section.enabled && section.editor === 'meter') {\n <div class=\"flex flex-col gap-1 ps-7\">\n <div class=\"flex flex-nowrap items-center gap-3\">\n <span class=\"shrink-0\">{{ everyKey | translate | async }}</span>\n <ax-number-box\n class=\"w-36 shrink-0\"\n [minValue]=\"0\"\n [decimals]=\"section.decimals\"\n [ngModel]=\"section.interval\"\n [disabled]=\"disabled()\"\n [showSpinButtons]=\"false\"\n (onValueChanged)=\"onInterval(section.meterKind ?? 'operating-hours', $event)\"\n >\n <ax-suffix>{{ section.unitLabelKey | translate | async }}</ax-suffix>\n </ax-number-box>\n </div>\n <!-- ----- Positive meter interval is required while the section is enabled ----- -->\n @if (section.errorKey; as errorKey) {\n <p class=\"text-sm text-danger\">{{ errorKey | translate | async }}</p>\n }\n </div>\n }\n </div>\n }\n\n <!-- ----- Trigger condition when more than one interval is enabled ----- -->\n @if (showTriggerLogic()) {\n <div class=\"flex flex-col gap-2\">\n <ax-label>{{ triggerLogicTitleKey | translate | async }}</ax-label>\n <ax-selection-list\n [items]=\"triggerLogicItems\"\n [ngModel]=\"selectedTriggerLogic()\"\n [disabled]=\"disabled()\"\n direction=\"vertical\"\n [multiple]=\"false\"\n [showControl]=\"true\"\n valueField=\"id\"\n textField=\"text\"\n (onValueChanged)=\"onTriggerLogic($event)\"\n >\n <ng-template #itemTemplate let-item>\n <span>{{ item.text | translate | async }}</span>\n </ng-template>\n </ax-selection-list>\n </div>\n }\n</div>\n","//#region ---- Imports ----\n\nimport type { AXPIdentifierService } from '@acorex-platform/module-identifier-management-client';\nimport type { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { isValidMultiLanguageObject, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { defaultTo, get, isNumber, isObject, isString } from 'lodash';\nimport {\n AXMMaintenanceIntervalTriggerLogic,\n AXMWorkOrderSourceType,\n AXMWorkOrderStatus,\n readMaintenancePlanCalendarSchedule,\n type AXMMaintenanceIntervalConfig,\n} from '@acorex-platform/module-maintenance-management-client/contracts';\n\n//#endregion\n\n//#region ---- Identifier rules ----\n\nexport const MAINTENANCE_PLAN_CODE_RULE_ID = 'maintenance-plan-code';\nexport const WORK_ORDER_NO_RULE_ID = 'work-order-no';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport type MaintenanceScheduleMode = 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly';\n\n/** Calendar schedule, or the plan interval config that wraps a date trigger. */\ntype MaintenancePlanIntervalInput = AXMMaintenanceIntervalConfig | MaintenancePlanScheduleLike;\n\nexport interface MaintenancePlanScheduleLike {\n startCondition?: {\n type?: string;\n startDate?: string | Date;\n };\n recurrence?: string;\n cron?: string;\n mode?: string;\n interval?: number;\n endCondition?: {\n type?: string;\n occurrences?: number;\n endDate?: string | Date;\n };\n}\n\nexport type LocalizableLabel = string | AXPMultiLanguageString | undefined;\n\ntype BilingualLabel = { 'en-US': string; 'fa-IR': string };\n\nexport interface MaintenanceTemplateLike {\n id: string;\n code?: string;\n title?: LocalizableLabel;\n description?: LocalizableLabel;\n maintenanceTypeId?: string;\n assetTypeId?: string;\n schedule?: MaintenancePlanScheduleLike;\n estimatedMinutes?: number;\n needPermission?: boolean;\n needShutdown?: boolean;\n autoGeneratePlan?: boolean;\n metadataIds?: string[];\n workflowConfig?: {\n workflowDefinitionId?: string;\n workflowName?: string;\n enabled?: boolean;\n defaultInput?: Record<string, unknown>;\n } | null;\n}\n\nexport interface FailureRegisterLike {\n id: string;\n code?: string;\n assetId?: string;\n priorityId?: string;\n description?: string;\n}\n\nexport interface MaintenancePlanLike {\n id: string;\n code?: string;\n title?: LocalizableLabel;\n description?: LocalizableLabel;\n assetId?: string;\n maintenanceTypeId?: string;\n maintenanceTemplateId?: string;\n intervalConfig?: AXMMaintenanceIntervalConfig;\n assignedToId?: string;\n assignedTo?: { id?: string; displayName?: string; fullName?: string };\n priorityId?: string;\n priority?: { id?: string; title?: LocalizableLabel };\n estimatedHours?: number;\n needPermission?: boolean;\n needShutdown?: boolean;\n autoGeneratedPlan?: boolean;\n}\n\nexport interface WorkOrderFieldsFromPlan {\n assignedToId?: string;\n assignedTo?: { id: string; fullName?: string };\n priorityId?: string;\n estimatedHours?: number;\n}\n\nexport interface WorkOrderOccurrenceWindow {\n scheduledStart?: string;\n scheduledEnd?: string;\n}\n\n//#endregion\n\nexport interface AssetLike {\n id: string;\n code?: string;\n title?: LocalizableLabel;\n assetTypeId?: string;\n}\n\nexport interface EntityStorageBackend {\n getOne(entityName: string, id: string): Promise<unknown>;\n insertOne(entityName: string, entity: Record<string, unknown>): Promise<unknown>;\n query(\n entityName: string,\n request: {\n skip?: number;\n take?: number;\n filter?: unknown;\n },\n ): Promise<{ total: number; items: unknown[] }>;\n}\n\n//#endregion\n\n//#region ---- Helpers ----\n\nconst MAX_BY_DATE_OCCURRENCES = 10_000;\n\nexport function isTruthyFlag(value: unknown): boolean {\n return [true, 'true', 1, '1'].includes(value as never);\n}\n\nfunction isMultiLanguageString(value: unknown): value is AXPMultiLanguageString {\n return isValidMultiLanguageObject(value);\n}\n\n/**\n * Normalizes plain or multilingual labels into a bilingual {@link AXPMultiLanguageString}.\n */\nexport function normalizeMultiLanguageString(\n value: LocalizableLabel,\n fallback: string,\n): BilingualLabel {\n if (!value) {\n return { 'en-US': fallback, 'fa-IR': fallback };\n }\n if (isString(value)) {\n return { 'en-US': value, 'fa-IR': value };\n }\n if (isMultiLanguageString(value)) {\n const en = resolveMultiLanguageString(value, 'en-US') || fallback;\n const fa = resolveMultiLanguageString(value, 'fa-IR') || en;\n return { 'en-US': en, 'fa-IR': fa };\n }\n return { 'en-US': fallback, 'fa-IR': fallback };\n}\n\n/**\n * Resolves a display label for dialogs and messages (defaults to en-US).\n */\nexport function resolveDisplayLabel(\n value: LocalizableLabel,\n fallback: string,\n locale: 'en-US' | 'fa-IR' = 'en-US',\n): string {\n if (!value) {\n return fallback;\n }\n if (isString(value)) {\n return value;\n }\n return resolveMultiLanguageString(value, locale) || fallback;\n}\n\nfunction combineMultiLanguageTitle(\n left: LocalizableLabel,\n leftFallback: string,\n right: LocalizableLabel,\n rightFallback: string,\n): AXPMultiLanguageString {\n const leftMl = normalizeMultiLanguageString(left, leftFallback);\n const rightMl = normalizeMultiLanguageString(right, rightFallback);\n\n return {\n 'en-US': `${leftMl['en-US']} - ${rightMl['en-US']}`,\n 'fa-IR': `${leftMl['fa-IR']} - ${rightMl['fa-IR']}`,\n };\n}\n\nfunction toDate(value: string | Date | undefined | null): Date | undefined {\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? undefined : new Date(value.getTime());\n }\n if (typeof value === 'string' && value.length > 0) {\n const parsed = new Date(value);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }\n return undefined;\n}\n\n/** Treat schedule end dates as inclusive through the end of the calendar day. */\nfunction toScheduleEndBoundary(value: string | Date | undefined | null): Date | undefined {\n const date = toDate(value);\n if (!date) {\n return undefined;\n }\n\n const boundary = new Date(date.getTime());\n boundary.setHours(23, 59, 59, 999);\n return boundary;\n}\n\nfunction toIsoString(date: Date): string {\n return date.toISOString();\n}\n\nfunction inferScheduleMode(schedule: MaintenancePlanScheduleLike): MaintenanceScheduleMode {\n const mode = get(schedule, 'mode');\n if (\n mode === 'hourly' ||\n mode === 'daily' ||\n mode === 'weekly' ||\n mode === 'monthly' ||\n mode === 'yearly'\n ) {\n return mode;\n }\n\n const recurrence = get(schedule, 'recurrence');\n switch (recurrence) {\n case 'hourly':\n return 'hourly';\n case 'daily':\n return 'daily';\n case 'weekly':\n return 'weekly';\n case 'monthly':\n return 'monthly';\n case 'yearly':\n return 'yearly';\n default:\n return 'daily';\n }\n}\n\nfunction resolveScheduleInterval(schedule: MaintenancePlanScheduleLike): number {\n const interval = get(schedule, 'interval');\n return isNumber(interval) && interval > 0 ? interval : 1;\n}\n\n/**\n * Anchor date for the first work-order occurrence (now, byDate, or onDemand).\n */\nexport function resolveScheduleAnchorDate(\n schedule: MaintenancePlanScheduleLike | undefined,\n referenceDate: Date = new Date(),\n): Date | undefined {\n if (!schedule) {\n return undefined;\n }\n\n const startType = get(schedule, 'startCondition.type');\n if (startType === 'onDemand') {\n return undefined;\n }\n\n if (startType === 'now') {\n return new Date(referenceDate.getTime());\n }\n\n const configuredStart = toDate(get(schedule, 'startCondition.startDate'));\n if (configuredStart) {\n return configuredStart;\n }\n\n return undefined;\n}\n\nfunction addScheduleInterval(\n anchor: Date,\n mode: MaintenanceScheduleMode,\n interval: number,\n step: number,\n): Date {\n const result = new Date(anchor.getTime());\n const amount = step * interval;\n\n switch (mode) {\n case 'hourly':\n result.setHours(result.getHours() + amount);\n break;\n case 'daily':\n result.setDate(result.getDate() + amount);\n break;\n case 'weekly':\n result.setDate(result.getDate() + amount * 7);\n break;\n case 'monthly':\n result.setMonth(result.getMonth() + amount);\n break;\n case 'yearly':\n result.setFullYear(result.getFullYear() + amount);\n break;\n }\n\n return result;\n}\n\nfunction resolveOccurrenceScheduledEnd(\n scheduledStart: Date,\n estimatedHours?: number,\n): string | undefined {\n if (!isNumber(estimatedHours) || estimatedHours <= 0) {\n return undefined;\n }\n\n const end = new Date(scheduledStart.getTime());\n end.setTime(end.getTime() + estimatedHours * 60 * 60 * 1000);\n return toIsoString(end);\n}\n\n/**\n * Resolves scheduled start dates for work orders from a maintenance plan schedule.\n *\n * - End `never`: first occurrence only (next ones are generated later).\n * - End `afterOccurrences`: all occurrences up to the configured count.\n * - End `byDate`: occurrences from anchor through end date (inclusive).\n */\nexport function resolveWorkOrderScheduledStarts(\n schedule: MaintenancePlanIntervalInput | undefined,\n referenceDate: Date = new Date(),\n): Date[] {\n const calendar = readMaintenancePlanCalendarSchedule(schedule);\n if (!calendar) {\n return [];\n }\n\n const anchor = resolveScheduleAnchorDate(calendar, referenceDate);\n if (!anchor) {\n return [];\n }\n if (get(calendar, 'mode') === 'specific-date') {\n return [anchor];\n }\n\n const mode = inferScheduleMode(calendar);\n const interval = resolveScheduleInterval(calendar);\n const endType = defaultTo(get(calendar, 'endCondition.type'), 'never');\n\n if (endType === 'never') {\n return [anchor];\n }\n\n if (endType === 'afterOccurrences') {\n const count = Math.max(1, defaultTo(get(calendar, 'endCondition.occurrences'), 1));\n return Array.from({ length: count }, (_, step) => addScheduleInterval(anchor, mode, interval, step));\n }\n\n if (endType === 'byDate') {\n const endDate = toScheduleEndBoundary(get(calendar, 'endCondition.endDate'));\n if (!endDate) {\n return [anchor];\n }\n\n const starts: Date[] = [];\n for (let step = 0; step < MAX_BY_DATE_OCCURRENCES; step += 1) {\n const occurrence = addScheduleInterval(anchor, mode, interval, step);\n if (occurrence.getTime() > endDate.getTime()) {\n break;\n }\n starts.push(occurrence);\n }\n\n return starts;\n }\n\n return [anchor];\n}\n\nexport function resolveWorkOrderOccurrences(\n schedule: MaintenancePlanIntervalInput | undefined,\n options?: { referenceDate?: Date; estimatedHours?: number },\n): WorkOrderOccurrenceWindow[] {\n const referenceDate = options?.referenceDate ?? new Date();\n const starts = resolveWorkOrderScheduledStarts(schedule, referenceDate);\n const estimatedHours = options?.estimatedHours;\n\n if (starts.length === 0) {\n return [{}];\n }\n\n return starts.map((scheduledStart) => {\n const scheduledEnd = resolveOccurrenceScheduledEnd(scheduledStart, estimatedHours);\n return {\n scheduledStart: toIsoString(scheduledStart),\n ...(scheduledEnd ? { scheduledEnd } : {}),\n };\n });\n}\n\n/**\n * Returns how many work orders will be created from a plan schedule (minimum 1 when schedule is absent or on-demand).\n */\nexport function countWorkOrdersToCreateFromSchedule(\n schedule: MaintenancePlanIntervalInput | undefined,\n referenceDate: Date = new Date(),\n): number {\n return resolveWorkOrderOccurrences(schedule, { referenceDate }).length;\n}\n\nexport function resolveScheduledStart(\n schedule?: MaintenancePlanIntervalInput,\n referenceDate: Date = new Date(),\n): string | undefined {\n const starts = resolveWorkOrderScheduledStarts(schedule, referenceDate);\n const first = starts[0];\n return first ? toIsoString(first) : undefined;\n}\n\n/** Internal flag on plan create payloads; stripped before persistence when supported. */\nexport const SUPPRESS_WORK_ORDER_PROMPT_FIELD = '__suppressWorkOrderPrompt';\n\n/**\n * Allocates and commits the next identifier code for programmatic entity creates.\n * Validation runs before identifier middleware (order 5); the code must be on the payload.\n * Uses `generate` (not `peek`) so back-to-back creates in a loop receive distinct codes.\n */\nexport async function allocateIdentifierCode(\n identifierService: AXPIdentifierService,\n sessionService: AXPSessionService,\n ruleId: string,\n): Promise<string> {\n const result = await identifierService.generate({\n id: ruleId,\n tenantId: sessionService.tenant?.id,\n appId: sessionService.application?.id,\n });\n return result.code;\n}\n\nexport function buildMaintenancePlanPayload(\n asset: AssetLike,\n template: MaintenanceTemplateLike,\n options?: { suppressWorkOrderPrompt?: boolean; code?: string; autoGeneratedPlan?: boolean },\n): Record<string, unknown> {\n return {\n ...(options?.code ? { code: options.code } : {}),\n title: combineMultiLanguageTitle(\n template.title,\n template.code ?? 'Template',\n asset.title,\n asset.code ?? 'Asset',\n ),\n description: template.description,\n assetId: asset.id,\n maintenanceTypeId: template.maintenanceTypeId,\n maintenanceTemplateId: template.id,\n intervalConfig: {\n triggerLogic: AXMMaintenanceIntervalTriggerLogic.Any,\n triggers: [\n {\n kind: 'schedule',\n schedule: template.schedule ?? {\n mode: 'daily',\n interval: 1,\n startCondition: { type: 'byDate', startDate: new Date().toISOString() },\n endCondition: { type: 'never' },\n },\n },\n ],\n },\n intervalStates: [],\n estimatedHours: template.estimatedMinutes\n ? Math.max(1, Math.ceil(template.estimatedMinutes / 60))\n : undefined,\n needPermission: !!template.needPermission,\n needShutdown: !!template.needShutdown,\n ...(options?.autoGeneratedPlan ? { autoGeneratedPlan: true } : {}),\n ...(options?.suppressWorkOrderPrompt\n ? { [SUPPRESS_WORK_ORDER_PROMPT_FIELD]: true }\n : {}),\n };\n}\n\nexport async function resolveMaintenanceTemplate(\n backend: EntityStorageBackend,\n templateEntityName: string,\n partial: MaintenanceTemplateLike,\n): Promise<MaintenanceTemplateLike | null> {\n if (!partial?.id) {\n return null;\n }\n\n if (partial.maintenanceTypeId) {\n return partial;\n }\n\n const loaded = (await backend\n .getOne(templateEntityName, partial.id)\n .catch(() => null)) as MaintenanceTemplateLike | null;\n\n return loaded?.maintenanceTypeId ? loaded : null;\n}\n\nfunction resolveRelationId(value: unknown): string | undefined {\n if (isString(value)) {\n const trimmed = value.trim();\n return trimmed || undefined;\n }\n\n if (isObject(value)) {\n const id = get(value, 'id') as unknown;\n if (isString(id)) {\n const trimmed = id.trim();\n return trimmed || undefined;\n }\n }\n\n return undefined;\n}\n\n/**\n * Normalizes lookup-style relation values on a plan to plain ids for work-order generation.\n */\nexport function normalizePlanRelationIds(plan: MaintenancePlanLike): MaintenancePlanLike {\n return {\n ...plan,\n assetId: resolveRelationId(plan.assetId) ?? plan.assetId,\n maintenanceTypeId: resolveRelationId(plan.maintenanceTypeId) ?? plan.maintenanceTypeId,\n maintenanceTemplateId: resolveRelationId(plan.maintenanceTemplateId) ?? plan.maintenanceTemplateId,\n assignedToId: resolveRelationId(plan.assignedToId) ?? plan.assignedToId,\n priorityId:\n resolveRelationId(plan.priorityId) ?? resolveRelationId(plan.priority?.id) ?? plan.priorityId,\n };\n}\n\n/**\n * Merges persisted plan with create-time fields that may not be returned by `getOne` yet.\n * Stored values win; missing work-order fields are filled from the create payload.\n */\nexport function mergeMaintenancePlanForWorkOrder(\n createPayload: MaintenancePlanLike | null | undefined,\n stored: MaintenancePlanLike | null,\n id: string,\n): MaintenancePlanLike | null {\n if (!stored && !createPayload) {\n return null;\n }\n\n const merged: MaintenancePlanLike = {\n ...(createPayload ?? {}),\n ...(stored ?? {}),\n id: stored?.id ?? id,\n };\n\n delete (merged as unknown as Record<string, unknown>)[SUPPRESS_WORK_ORDER_PROMPT_FIELD];\n\n if (!createPayload) {\n return normalizePlanRelationIds(merged);\n }\n\n const fillIfMissing = <K extends keyof MaintenancePlanLike>(key: K): void => {\n const storedValue = merged[key];\n const createValue = createPayload[key];\n const storedEmpty =\n storedValue === undefined ||\n storedValue === null ||\n (typeof storedValue === 'string' && storedValue.trim() === '');\n if (storedEmpty && createValue !== undefined && createValue !== null) {\n merged[key] = createValue;\n }\n };\n\n fillIfMissing('assetId');\n fillIfMissing('maintenanceTypeId');\n fillIfMissing('maintenanceTemplateId');\n fillIfMissing('intervalConfig');\n fillIfMissing('title');\n fillIfMissing('description');\n fillIfMissing('needPermission');\n fillIfMissing('needShutdown');\n fillIfMissing('assignedToId');\n fillIfMissing('assignedTo');\n fillIfMissing('priorityId');\n fillIfMissing('priority');\n fillIfMissing('estimatedHours');\n\n return normalizePlanRelationIds(merged);\n}\n\n/**\n * Normalizes plan priority for work-order payload.\n */\nexport function resolvePlanPriorityId(plan: MaintenancePlanLike): string | undefined {\n const priorityId = plan.priorityId?.trim() || plan.priority?.id?.trim();\n return priorityId || undefined;\n}\n\n/**\n * Normalizes plan estimated hours (supports numeric strings from forms/storage).\n */\nexport function resolvePlanEstimatedHours(plan: MaintenancePlanLike): number | undefined {\n const raw = plan.estimatedHours;\n if (isNumber(raw) && raw >= 0) {\n return raw;\n }\n if (isString(raw)) {\n const parsed = Number(raw);\n if (!Number.isNaN(parsed) && parsed >= 0) {\n return parsed;\n }\n }\n return undefined;\n}\n\nconst EMPLOYEE_ENTITY = 'HumanCapitalManagement.Employee';\n\n/**\n * Maintenance plan `assignedToId` stores Employee id; work order `assignedToId` expects Person id.\n */\nexport async function resolvePlanAssignedToForWorkOrder(\n backend: EntityStorageBackend,\n plan: MaintenancePlanLike,\n): Promise<Pick<WorkOrderFieldsFromPlan, 'assignedToId' | 'assignedTo'>> {\n const employeeId = plan.assignedToId?.trim();\n if (!employeeId) {\n return {};\n }\n\n const employee = (await backend.getOne(EMPLOYEE_ENTITY, employeeId).catch(() => null)) as {\n personId?: string;\n person?: { id?: string; fullName?: string; displayName?: string };\n } | null;\n\n const personId = employee?.personId?.trim() || employee?.person?.id?.trim();\n if (!personId) {\n return {};\n }\n\n const fullName = employee?.person?.fullName?.trim() || employee?.person?.displayName?.trim();\n return {\n assignedToId: personId,\n assignedTo: fullName ? { id: personId, fullName } : { id: personId },\n };\n}\n\n/**\n * Resolves work-order assignment, priority, and estimated hours from a maintenance plan.\n */\nexport async function resolvePlanFieldsForWorkOrder(\n backend: EntityStorageBackend,\n plan: MaintenancePlanLike,\n): Promise<WorkOrderFieldsFromPlan> {\n const assignment = await resolvePlanAssignedToForWorkOrder(backend, plan);\n const priorityId = resolvePlanPriorityId(plan);\n const estimatedHours = resolvePlanEstimatedHours(plan);\n\n return {\n ...assignment,\n ...(priorityId ? { priorityId } : {}),\n ...(estimatedHours !== undefined ? { estimatedHours } : {}),\n };\n}\n\nexport function buildWorkOrderPayloadFromFailureRegister(\n failureRegister: FailureRegisterLike,\n template: MaintenanceTemplateLike,\n workOrderNo: string,\n): Record<string, unknown> {\n const title = normalizeMultiLanguageString(template.title, template.code ?? 'Template');\n\n return {\n workOrderNo,\n assetId: failureRegister.assetId,\n maintenanceTypeId: template.maintenanceTypeId,\n maintenanceTemplateId: template.id,\n failureRegisterId: failureRegister.id,\n priorityId: failureRegister.priorityId,\n title,\n description: failureRegister.description,\n needPermission: !!template.needPermission,\n needShutdown: !!template.needShutdown,\n statusId: AXMWorkOrderStatus.Planned,\n sourceType: AXMWorkOrderSourceType.FailureRegister,\n isArchived: false,\n isDeleted: false,\n };\n}\n\nexport function buildWorkOrderPayloadFromPlan(\n plan: MaintenancePlanLike,\n workOrderNo: string,\n options?: {\n autoGeneratedWorkOrder?: boolean;\n referenceDate?: Date;\n occurrence?: WorkOrderOccurrenceWindow;\n sourceType?: AXMWorkOrderSourceType;\n workOrderFields?: WorkOrderFieldsFromPlan;\n includeScheduledEnd?: boolean;\n },\n): Record<string, unknown> {\n const title = normalizeMultiLanguageString(plan.title, plan.code ?? 'Work order');\n const occurrence =\n options?.occurrence ??\n resolveWorkOrderOccurrences(plan.intervalConfig, {\n referenceDate: options?.referenceDate,\n estimatedHours: resolvePlanEstimatedHours(plan),\n })[0];\n\n const fields = options?.workOrderFields ?? {};\n const priorityId = fields.priorityId ?? resolvePlanPriorityId(plan);\n const estimatedHours = fields.estimatedHours ?? resolvePlanEstimatedHours(plan);\n\n return {\n workOrderNo,\n assetId: plan.assetId,\n maintenanceTypeId: plan.maintenanceTypeId,\n maintenanceTemplateId: plan.maintenanceTemplateId,\n maintenancePlanId: plan.id,\n title,\n description: plan.description,\n scheduledStart: occurrence?.scheduledStart,\n ...(options?.includeScheduledEnd && occurrence?.scheduledEnd\n ? { scheduledEnd: occurrence.scheduledEnd }\n : {}),\n ...(fields.assignedToId\n ? {\n assignedToId: fields.assignedToId,\n ...(fields.assignedTo ? { assignedTo: fields.assignedTo } : {}),\n }\n : {}),\n ...(priorityId ? { priorityId } : {}),\n ...(estimatedHours !== undefined ? { estimatedHours } : {}),\n needPermission: !!plan.needPermission,\n needShutdown: !!plan.needShutdown,\n ...(options?.autoGeneratedWorkOrder ? { autoGeneratedWorkOrder: true } : {}),\n statusId: AXMWorkOrderStatus.Planned,\n sourceType: options?.sourceType ?? AXMWorkOrderSourceType.MaintenancePlan,\n isArchived: false,\n isDeleted: false,\n };\n}\n\n/**\n * Builds one work-order payload per schedule occurrence (count varies by end condition).\n */\nexport function buildWorkOrderPayloadsFromPlan(\n plan: MaintenancePlanLike,\n options?: {\n autoGeneratedWorkOrder?: boolean;\n referenceDate?: Date;\n sourceType?: AXMWorkOrderSourceType;\n workOrderFields?: WorkOrderFieldsFromPlan;\n includeScheduledEnd?: boolean;\n },\n): Array<Record<string, unknown>> {\n const referenceDate = options?.referenceDate ?? new Date();\n const estimatedHours = resolvePlanEstimatedHours(plan);\n const occurrences = resolveWorkOrderOccurrences(plan.intervalConfig, {\n referenceDate,\n estimatedHours,\n });\n const selectedOccurrences = options?.autoGeneratedWorkOrder ? occurrences.slice(0, 1) : occurrences;\n\n return selectedOccurrences.map((occurrence) =>\n buildWorkOrderPayloadFromPlan(plan, '', {\n autoGeneratedWorkOrder: options?.autoGeneratedWorkOrder,\n referenceDate,\n occurrence,\n sourceType: options?.sourceType,\n workOrderFields: options?.workOrderFields,\n includeScheduledEnd: options?.includeScheduledEnd,\n }),\n );\n}\n\n/**\n * Inserts all work orders implied by the plan schedule (peek identifier per row).\n */\nexport async function insertWorkOrdersFromPlan(\n entityStorage: { insertOne(entityName: string, entity: Record<string, unknown>): Promise<unknown> },\n identifierService: AXPIdentifierService,\n sessionService: AXPSessionService,\n workOrderEntityName: string,\n plan: MaintenancePlanLike,\n options?: {\n autoGeneratedWorkOrder?: boolean;\n referenceDate?: Date;\n sourceType?: AXMWorkOrderSourceType;\n backend?: EntityStorageBackend;\n },\n): Promise<number> {\n const resolvedPlan = normalizePlanRelationIds(plan);\n const workOrderFields = options?.backend ? await resolvePlanFieldsForWorkOrder(options.backend, resolvedPlan) : {};\n\n const payloads = buildWorkOrderPayloadsFromPlan(resolvedPlan, {\n autoGeneratedWorkOrder: options?.autoGeneratedWorkOrder,\n referenceDate: options?.referenceDate,\n sourceType: options?.sourceType,\n workOrderFields,\n includeScheduledEnd: false,\n });\n let createdCount = 0;\n\n for (const payload of payloads) {\n const workOrderNo = await allocateIdentifierCode(identifierService, sessionService, WORK_ORDER_NO_RULE_ID);\n await entityStorage.insertOne(workOrderEntityName, { ...payload, workOrderNo });\n createdCount += 1;\n }\n\n return createdCount;\n}\n\nexport function canCreateWorkOrderFromFailureRegister(\n failureRegister: FailureRegisterLike,\n template: MaintenanceTemplateLike,\n): boolean {\n return !!(failureRegister.assetId && template.id && template.maintenanceTypeId);\n}\n\nexport function canCreateWorkOrderFromPlan(plan: MaintenancePlanLike): boolean {\n const normalized = normalizePlanRelationIds(plan);\n return !!(\n normalized.assetId &&\n normalized.maintenanceTypeId &&\n normalized.maintenanceTemplateId\n );\n}\n\nfunction isMaintenanceTemplateLike(row: unknown): row is MaintenanceTemplateLike {\n if (!row || typeof row !== 'object') {\n return false;\n }\n const candidate = row as MaintenanceTemplateLike;\n return typeof candidate.id === 'string' && typeof candidate.maintenanceTypeId === 'string';\n}\n\nexport async function queryAutoGenerateTemplatesForAssetType(\n backend: EntityStorageBackend,\n templateEntityName: string,\n assetTypeId: string,\n): Promise<MaintenanceTemplateLike[]> {\n const result = await backend\n .query(templateEntityName, {\n skip: 0,\n take: 200,\n filter: {\n logic: 'and',\n filters: [\n { field: 'assetTypeId', operator: { type: 'equal' }, value: assetTypeId },\n { field: 'autoGeneratePlan', operator: { type: 'equal' }, value: true },\n ],\n },\n })\n .catch(() => ({ total: 0, items: [] }));\n\n const items: unknown[] = result.items ?? [];\n return items.filter(isMaintenanceTemplateLike);\n}\n\nconst ASSET_ENTITY = 'AssetManagement.Asset';\nconst ASSET_TYPE_ENTITY = 'AssetManagement.AssetType';\n\nexport function isWorkflowEnabledOnTemplate(template: MaintenanceTemplateLike): boolean {\n const config = template.workflowConfig;\n if (!config?.workflowDefinitionId?.trim() || !config?.workflowName?.trim()) {\n return false;\n }\n return config.enabled !== false;\n}\n\n/**\n * Resolves asset → asset type maintenance types → maintenance templates with an enabled workflow.\n */\nexport async function queryWorkflowTemplatesForAsset(\n backend: EntityStorageBackend,\n templateEntityName: string,\n assetId: string,\n): Promise<MaintenanceTemplateLike[]> {\n const trimmedAssetId = assetId?.trim();\n if (!trimmedAssetId) {\n return [];\n }\n\n const asset = (await backend.getOne(ASSET_ENTITY, trimmedAssetId).catch(() => null)) as AssetLike | null;\n const assetTypeId = asset?.assetTypeId?.trim();\n if (!asset || !assetTypeId) {\n return [];\n }\n\n const assetType = (await backend.getOne(ASSET_TYPE_ENTITY, assetTypeId).catch(() => null)) as\n | { maintenanceTypeIds?: string[] }\n | null;\n const maintenanceTypeIds = (assetType?.maintenanceTypeIds ?? []).filter((id) => isString(id) && id.trim());\n if (maintenanceTypeIds.length === 0) {\n return [];\n }\n\n const result = await backend\n .query(templateEntityName, {\n skip: 0,\n take: 500,\n filter: {\n logic: 'and',\n filters: [\n { field: 'assetTypeId', operator: { type: 'equal' }, value: assetTypeId },\n { field: 'maintenanceTypeId', operator: { type: 'in' }, value: maintenanceTypeIds },\n ],\n },\n })\n .catch(() => ({ total: 0, items: [] }));\n\n const rawItems: unknown[] = result.items ?? [];\n const items = rawItems.filter(isMaintenanceTemplateLike);\n return items.filter((template) => isWorkflowEnabledOnTemplate(template));\n}\n\nexport async function hasWorkOrderForPlan(\n backend: EntityStorageBackend,\n workOrderEntityName: string,\n planId: string,\n): Promise<boolean> {\n const result = await backend\n .query(workOrderEntityName, {\n skip: 0,\n take: 1,\n filter: {\n field: 'maintenancePlanId',\n operator: { type: 'equal' },\n value: planId,\n },\n })\n .catch(() => ({ total: 0, items: [] }));\n\n return (result.total ?? 0) > 0 || (result.items?.length ?? 0) > 0;\n}\n\nexport async function countWorkOrdersForMaintenancePlan(\n backend: EntityStorageBackend,\n workOrderEntityName: string,\n planId: string,\n): Promise<number> {\n const result = await backend\n .query(workOrderEntityName, {\n skip: 0,\n take: 1,\n filter: {\n field: 'maintenancePlanId',\n operator: { type: 'equal' },\n value: planId,\n },\n })\n .catch(() => ({ total: 0 }));\n\n return result.total ?? 0;\n}\n\nexport async function hasWorkOrderForPlanScheduledStart(\n backend: EntityStorageBackend,\n workOrderEntityName: string,\n planId: string,\n scheduledStart: string,\n): Promise<boolean> {\n const result = await backend\n .query(workOrderEntityName, {\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [\n { field: 'maintenancePlanId', operator: { type: 'equal' }, value: planId },\n { field: 'scheduledStart', operator: { type: 'equal' }, value: scheduledStart },\n ],\n },\n })\n .catch(() => ({ total: 0, items: [] }));\n\n return (result.total ?? 0) > 0 || (result.items?.length ?? 0) > 0;\n}\n\n/**\n * Resolves the next scheduled work-order occurrence after a signed-off work order.\n * For `endCondition.type === 'never'`, returns the next interval from the signed-off scheduled start.\n */\nexport function resolveNextWorkOrderOccurrenceAfterSignedOff(\n plan: MaintenancePlanLike,\n signedOffWorkOrder: { scheduledStart?: string },\n referenceDate: Date = new Date(),\n): WorkOrderOccurrenceWindow | null {\n const schedule = readMaintenancePlanCalendarSchedule(plan.intervalConfig);\n if (!schedule) {\n return null;\n }\n\n const startType = get(schedule, 'startCondition.type');\n if (startType === 'onDemand' || get(schedule, 'mode') === 'specific-date') {\n return null;\n }\n\n const anchor = toDate(signedOffWorkOrder.scheduledStart) ?? resolveScheduleAnchorDate(schedule, referenceDate);\n if (!anchor) {\n return null;\n }\n\n const mode = inferScheduleMode(schedule);\n const interval = resolveScheduleInterval(schedule);\n const nextStart = addScheduleInterval(anchor, mode, interval, 1);\n const endType = defaultTo(get(schedule, 'endCondition.type'), 'never');\n\n if (endType === 'byDate') {\n const endDate = toScheduleEndBoundary(get(schedule, 'endCondition.endDate'));\n if (endDate && nextStart.getTime() > endDate.getTime()) {\n return null;\n }\n }\n\n const estimatedHours = resolvePlanEstimatedHours(plan);\n const scheduledEnd = resolveOccurrenceScheduledEnd(nextStart, estimatedHours);\n\n return {\n scheduledStart: toIsoString(nextStart),\n ...(scheduledEnd ? { scheduledEnd } : {}),\n };\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXP_IDENTIFIER_SERVICE, type AXPIdentifierService } from '@acorex-platform/module-identifier-management-client';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport {\n AXPEntityStorageMiddleware,\n AXPEntityStorageService,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { AXMWorkOrderSourceType, RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n buildMaintenancePlanPayload,\n canCreateWorkOrderFromPlan,\n allocateIdentifierCode,\n insertWorkOrdersFromPlan,\n MAINTENANCE_PLAN_CODE_RULE_ID,\n mergeMaintenancePlanForWorkOrder,\n queryAutoGenerateTemplatesForAssetType,\n resolveDisplayLabel,\n type AssetLike,\n type EntityStorageBackend,\n type MaintenancePlanLike,\n type MaintenanceTemplateLike,\n} from './maintenance-generation.utils';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst ASSET_ENTITY = 'AssetManagement.Asset';\n\n//#endregion\n\n//#region ---- Dialog ----\n\ninterface MaintenanceOfferChoice {\n createPlans: boolean;\n createWorkOrders: boolean;\n}\n\nasync function askMaintenanceOfferChoice(\n dialogService: AXDialogService,\n translateService: AXTranslationService,\n templateCount: number,\n assetTitle: string,\n): Promise<MaintenanceOfferChoice | null> {\n const title = await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.title',\n );\n const content = await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.content',\n { params: { count: templateCount, assetTitle } },\n );\n const plansOnlyLabel = await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.actions.plans-only',\n );\n const plansAndWorkOrdersLabel = await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.actions.plans-and-work-orders',\n );\n const cancelLabel = await translateService.translateAsync('@general:actions.cancel.title');\n\n return new Promise((resolve) => {\n let settled = false;\n const finish = (value: MaintenanceOfferChoice | null) => {\n if (settled) {\n return;\n }\n settled = true;\n resolve(value);\n };\n\n const dialog = dialogService.open({\n title,\n content,\n type: 'primary',\n orientation: 'horizontal',\n closeButton: false,\n buttons: [\n {\n text: cancelLabel,\n color: 'default',\n autofocus: true,\n onClick: () => {\n dialog.close();\n finish(null);\n },\n },\n {\n text: plansOnlyLabel,\n color: 'default',\n onClick: () => {\n dialog.close();\n finish({ createPlans: true, createWorkOrders: false });\n },\n },\n {\n text: plansAndWorkOrdersLabel,\n color: 'primary',\n onClick: () => {\n dialog.close();\n finish({ createPlans: true, createWorkOrders: true });\n },\n },\n ],\n });\n });\n}\n\n//#endregion\n\n//#region ---- Middleware ----\n\n/**\n * After creating an Asset, offers to create maintenance plans (and optionally work orders)\n * for maintenance templates on the asset type with `autoGeneratePlan = true`.\n */\nexport const assetCreateMaintenanceOfferMiddleware: AXPEntityStorageMiddleware = {\n target: {\n ops: ['create'],\n order: 88,\n },\n execute: async (ctx, next) => {\n const dialogService = inject(AXDialogService, { optional: true });\n const toastService = inject(AXToastService, { optional: true });\n const translateService = inject(AXTranslationService, { optional: true });\n const backend = ctx.entities as EntityStorageBackend;\n const entityStorage = inject(AXPEntityStorageService, { optional: true });\n const identifierService = inject(AXP_IDENTIFIER_SERVICE, { optional: true }) as AXPIdentifierService | null;\n const sessionService = inject(AXPSessionService, { optional: true });\n\n if (ctx.entityName !== ASSET_ENTITY) {\n await next();\n return;\n }\n\n await next();\n\n const createdId = typeof ctx.result === 'string' ? ctx.result : undefined;\n if (\n !createdId ||\n !dialogService ||\n !toastService ||\n !translateService ||\n !entityStorage ||\n !identifierService ||\n !sessionService\n ) {\n return;\n }\n\n const asset = (await backend.getOne(ASSET_ENTITY, createdId).catch(() => null)) as AssetLike | null;\n if (!asset?.assetTypeId) {\n return;\n }\n\n const templateEntity = `${RootConfig.module.name}.${RootConfig.entities.maintenanceTemplate.name}`;\n const planEntity = `${RootConfig.module.name}.${RootConfig.entities.maintenancePlan.name}`;\n const workOrderEntity = `${RootConfig.module.name}.${RootConfig.entities.workOrder.name}`;\n\n const templates = await queryAutoGenerateTemplatesForAssetType(\n backend,\n templateEntity,\n asset.assetTypeId,\n );\n if (templates.length === 0) {\n return;\n }\n\n const assetTitle = resolveDisplayLabel(asset.title, asset.code ?? createdId);\n const choice = await askMaintenanceOfferChoice(\n dialogService,\n translateService,\n templates.length,\n assetTitle,\n );\n if (!choice?.createPlans) {\n return;\n }\n\n const createdPlans: MaintenancePlanLike[] = [];\n\n for (const template of templates) {\n if (!template.maintenanceTypeId) {\n const loaded = (await backend\n .getOne(templateEntity, template.id)\n .catch(() => null)) as MaintenanceTemplateLike | null;\n if (!loaded?.maintenanceTypeId) {\n continue;\n }\n Object.assign(template, loaded);\n }\n\n try {\n // Validation runs before identifier middleware; allocate (commit) a distinct code per plan.\n const planCode = await allocateIdentifierCode(\n identifierService,\n sessionService,\n MAINTENANCE_PLAN_CODE_RULE_ID,\n );\n const planPayload = buildMaintenancePlanPayload(asset, template, {\n suppressWorkOrderPrompt: true,\n code: planCode,\n autoGeneratedPlan: true,\n });\n const planId = await entityStorage.insertOne(planEntity, planPayload);\n const resolvedPlanId = typeof planId === 'string' ? planId : undefined;\n if (!resolvedPlanId) {\n continue;\n }\n\n const storedPlan = (await backend.getOne(planEntity, resolvedPlanId).catch(() => null)) as MaintenancePlanLike | null;\n const plan = mergeMaintenancePlanForWorkOrder(\n { ...planPayload, id: resolvedPlanId },\n storedPlan,\n resolvedPlanId,\n );\n if (plan) {\n createdPlans.push(plan);\n }\n } catch (error) {\n const errorTitle = await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.errors.create-failed-title',\n );\n const errorMessage =\n error instanceof Error\n ? error.message\n : await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.errors.create-failed-content',\n );\n toastService.show({ color: 'danger', title: errorTitle, content: errorMessage });\n return;\n }\n }\n\n if (!choice.createWorkOrders || createdPlans.length === 0) {\n const successTitle = await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.success.plans-title',\n );\n const successContent = await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.success.plans-content',\n { params: { count: createdPlans.length } },\n );\n toastService.show({ color: 'success', title: successTitle, content: successContent });\n return;\n }\n\n let workOrderCount = 0;\n const referenceDate = new Date();\n for (const plan of createdPlans) {\n if (!canCreateWorkOrderFromPlan(plan)) {\n continue;\n }\n workOrderCount += await insertWorkOrdersFromPlan(\n entityStorage,\n identifierService,\n sessionService,\n workOrderEntity,\n plan,\n {\n autoGeneratedWorkOrder: true,\n referenceDate,\n sourceType: AXMWorkOrderSourceType.CreateAsset,\n backend,\n },\n );\n }\n\n const successTitle = await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.success.both-title',\n );\n const successContent = await translateService.translateAsync(\n '@asset-management:assets.entities.asset.dialogs.create-maintenance-offer.success.both-content',\n { params: { planCount: createdPlans.length, workOrderCount } },\n );\n toastService.show({ color: 'success', title: successTitle, content: successContent });\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXDataSourceFilterOption } from '@acorex/cdk/common';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXP_IDENTIFIER_SERVICE, type AXPIdentifierService } from '@acorex-platform/module-identifier-management-client';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport {\n AXPEntityDataSelectorService,\n AXPEntityDefinitionRegistryService,\n AXPEntityStorageMiddleware,\n AXPEntityStorageService,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n allocateIdentifierCode,\n buildWorkOrderPayloadFromFailureRegister,\n canCreateWorkOrderFromFailureRegister,\n resolveMaintenanceTemplate,\n WORK_ORDER_NO_RULE_ID,\n type EntityStorageBackend,\n type FailureRegisterLike,\n type MaintenanceTemplateLike,\n} from './maintenance-generation.utils';\n\n/** Asset detail route entity keys (must match AssetManagement registration). */\nconst ASSET_ENTITY = 'AssetManagement.Asset';\nconst ASSET_TYPE_ENTITY = 'AssetManagement.AssetType';\n\nconst I18N = '@maintenance-management:failure-registers.create-work-order-prompt';\n\n//#endregion\n\n//#region ---- Types ----\n\ninterface AssetLike {\n assetTypeId?: string;\n assetType?: {\n maintenanceTypeIds?: string[];\n };\n}\n\ninterface AssetTypeLike {\n maintenanceTypeIds?: string[];\n}\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction normalizeMaintenanceTypeIds(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value.filter((id): id is string => typeof id === 'string' && id.trim().length > 0);\n}\n\n/**\n * Resolves maintenance type ids allowed for the asset (from asset type), matching work-order / maintenance-plan lookups.\n */\nasync function resolveAssetMaintenanceTypeIds(backend: EntityStorageBackend, assetId: string): Promise<string[]> {\n const asset = (await backend.getOne(ASSET_ENTITY, assetId).catch(() => null)) as AssetLike | null;\n if (!asset) {\n return [];\n }\n\n const fromAssetType = normalizeMaintenanceTypeIds(asset.assetType?.maintenanceTypeIds);\n if (fromAssetType.length > 0) {\n return fromAssetType;\n }\n\n if (!asset.assetTypeId) {\n return [];\n }\n\n const assetType = (await backend\n .getOne(ASSET_TYPE_ENTITY, asset.assetTypeId)\n .catch(() => null)) as AssetTypeLike | null;\n return normalizeMaintenanceTypeIds(assetType?.maintenanceTypeIds);\n}\n\n//#endregion\n\n//#region ---- Middleware ----\n\n/**\n * After creating a Failure Register, asks user to optionally create a Work Order.\n * If user confirms, opens the standard entity data selector for maintenance templates.\n */\nexport const failureRegisterCreateWorkOrderMiddleware: AXPEntityStorageMiddleware = {\n target: {\n ops: ['create'],\n order: 90,\n },\n execute: async (ctx, next) => {\n // IMPORTANT: resolve injected deps before any await to keep Angular injection context valid.\n const dialogService = inject(AXDialogService, { optional: true });\n const toastService = inject(AXToastService, { optional: true });\n const translateService = inject(AXTranslationService, { optional: true });\n const entityRegistry = inject(AXPEntityDefinitionRegistryService, { optional: true });\n const entityDataSelector = inject(AXPEntityDataSelectorService, { optional: true });\n const backend = ctx.entities as EntityStorageBackend;\n const entityStorage = inject(AXPEntityStorageService, { optional: true });\n const identifierService = inject(AXP_IDENTIFIER_SERVICE, { optional: true }) as AXPIdentifierService | null;\n const sessionService = inject(AXPSessionService, { optional: true });\n\n const failureRegisterEntity = `${RootConfig.module.name}.${RootConfig.entities.failureRegister.name}`;\n if (ctx.entityName !== failureRegisterEntity) {\n await next();\n return;\n }\n\n await next();\n\n const createdId = typeof ctx.result === 'string' ? ctx.result : undefined;\n if (!createdId) {\n return;\n }\n\n // The middleware can run in non-UI execution contexts; keep it safe.\n if (\n !dialogService ||\n !toastService ||\n !translateService ||\n !entityRegistry ||\n !entityDataSelector ||\n !entityStorage ||\n !identifierService ||\n !sessionService\n ) {\n return;\n }\n\n const fr = (await backend.getOne(ctx.entityName, createdId).catch(() => null)) as FailureRegisterLike | null;\n if (!fr?.assetId) {\n return;\n }\n\n const confirm = await dialogService.confirm(\n await translateService.translateAsync(`${I18N}.confirm-title`),\n await translateService.translateAsync(`${I18N}.confirm-message`),\n 'warning',\n 'horizontal',\n false,\n 'cancel',\n );\n if (confirm.result !== true) {\n return;\n }\n\n const templateEntity = await entityRegistry.resolve(\n RootConfig.module.name,\n RootConfig.entities.maintenanceTemplate.name,\n );\n if (!templateEntity) {\n toastService.show({\n color: 'danger',\n title: await translateService.translateAsync(`${I18N}.template-error-title`),\n content: await translateService.translateAsync(`${I18N}.template-entity-unavailable`),\n });\n return;\n }\n\n const maintenanceTypeIds = await resolveAssetMaintenanceTypeIds(backend, fr.assetId);\n if (!maintenanceTypeIds.length) {\n toastService.show({\n color: 'warning',\n title: await translateService.translateAsync(`${I18N}.no-maintenance-types-title`),\n content: await translateService.translateAsync(`${I18N}.no-maintenance-types-content`),\n });\n return;\n }\n\n const selectorTitle =\n typeof templateEntity.title === 'string' ? templateEntity.title : RootConfig.entities.maintenanceTemplate.title;\n\n const templateFilters: AXDataSourceFilterOption = {\n field: 'maintenanceTypeId',\n operator: { type: 'in' },\n value: maintenanceTypeIds,\n };\n\n const templateEntityName = `${RootConfig.module.name}.${RootConfig.entities.maintenanceTemplate.name}`;\n const workOrderEntityName = `${RootConfig.module.name}.${RootConfig.entities.workOrder.name}`;\n\n const selectorResult = await entityDataSelector.open({\n entity: templateEntity,\n title: selectorTitle,\n allowMultiple: false,\n allowCreate: 'none',\n columns: [\n 'code',\n 'title',\n 'maintenanceTypeId',\n 'needPermission',\n 'needShutdown',\n 'estimatedHours',\n 'schedule',\n 'autoGeneratePlan',\n ],\n filters: templateFilters,\n });\n\n if (!selectorResult?.items?.length) {\n return;\n }\n\n const selectedTemplate = selectorResult.items[0] as MaintenanceTemplateLike;\n const template = await resolveMaintenanceTemplate(backend, templateEntityName, selectedTemplate);\n if (!template) {\n toastService.show({\n color: 'danger',\n title: await translateService.translateAsync(`${I18N}.template-error-title`),\n content: await translateService.translateAsync(`${I18N}.template-missing-type`),\n });\n return;\n }\n\n if (!canCreateWorkOrderFromFailureRegister(fr, template)) {\n toastService.show({\n color: 'warning',\n title: await translateService.translateAsync(`${I18N}.missing-data-title`),\n content: await translateService.translateAsync(`${I18N}.missing-data-content`),\n });\n return;\n }\n\n const workOrderNo = await allocateIdentifierCode(identifierService, sessionService, WORK_ORDER_NO_RULE_ID);\n\n const result = await entityStorage.insertOne(\n workOrderEntityName,\n buildWorkOrderPayloadFromFailureRegister(fr, template, workOrderNo),\n );\n const workOrderId = typeof result === 'string' ? result : undefined;\n\n if (!workOrderId) {\n toastService.show({\n color: 'danger',\n title: await translateService.translateAsync(`${I18N}.work-order-error-title`),\n content: await translateService.translateAsync(`${I18N}.work-order-error-content`),\n });\n return;\n }\n\n toastService.show({\n color: 'success',\n title: await translateService.translateAsync(`${I18N}.success-title`),\n content: await translateService.translateAsync(`${I18N}.success-content`),\n });\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXP_IDENTIFIER_SERVICE, type AXPIdentifierService } from '@acorex-platform/module-identifier-management-client';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport {\n AXPEntityStorageMiddleware,\n AXPEntityStorageService,\n AXPMiddlewareAbortError,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport {\n AXM_MAINTENANCE_INTERVAL_STATE_ERRORS,\n readMaintenanceIntervalStates,\n resolveMaintenanceIntervalStates,\n RootConfig,\n} from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n canCreateWorkOrderFromPlan,\n countWorkOrdersToCreateFromSchedule,\n hasWorkOrderForPlan,\n insertWorkOrdersFromPlan,\n mergeMaintenancePlanForWorkOrder,\n SUPPRESS_WORK_ORDER_PROMPT_FIELD,\n type EntityStorageBackend,\n type MaintenancePlanLike,\n} from './maintenance-generation.utils';\n\n//#endregion\n\n//#region ---- Constants ----\n\n/** Per-create ctx.locals flag so duplicate middleware entries schedule only one prompt. */\nconst WORK_ORDER_PROMPT_SCHEDULED_KEY = 'maintenancePlan.workOrderPromptScheduled';\n\nconst I18N = '@maintenance-management:maintenance-plans.create-work-order-prompt';\n\n//#endregion\n\n//#region ---- Types ----\n\ninterface MaintenancePlanWorkOrderPromptDeps {\n createdId: string;\n planEntity: string;\n createPayload?: MaintenancePlanLike;\n dialogService: AXDialogService;\n backend: EntityStorageBackend;\n entityStorage: {\n insertOne(entityName: string, entity: Record<string, unknown>): Promise<unknown>;\n };\n identifierService: AXPIdentifierService;\n sessionService: AXPSessionService;\n toastService: AXToastService;\n translateService: AXTranslationService;\n}\n\n//#endregion\n\n//#region ---- Prompt runner ----\n\n/**\n * Asks whether to create work order(s) immediately after plan create completes.\n * Runs inline after `next()` so the dialog appears before navigation away from the create form.\n */\nasync function runMaintenancePlanWorkOrderPrompt(deps: MaintenancePlanWorkOrderPromptDeps): Promise<void> {\n const {\n createdId,\n planEntity,\n createPayload,\n dialogService,\n backend,\n entityStorage,\n identifierService,\n sessionService,\n toastService,\n translateService,\n } = deps;\n\n const storedPlan = (await backend.getOne(planEntity, createdId).catch(() => null)) as MaintenancePlanLike | null;\n const plan = mergeMaintenancePlanForWorkOrder(createPayload, storedPlan, createdId);\n if (!plan) {\n return;\n }\n\n const plannedWorkOrderCount = countWorkOrdersToCreateFromSchedule(plan.intervalConfig);\n const confirmTitle = await translateService.translateAsync(`${I18N}.confirm-title`);\n const confirmMessage =\n plannedWorkOrderCount === 1\n ? await translateService.translateAsync(`${I18N}.confirm-single`)\n : await translateService.translateAsync(`${I18N}.confirm-multiple`, {\n params: { count: plannedWorkOrderCount },\n });\n\n const confirm = await dialogService.confirm(\n confirmTitle,\n confirmMessage,\n 'warning',\n 'horizontal',\n false,\n 'cancel',\n );\n if (confirm.result !== true) {\n return;\n }\n\n if (!canCreateWorkOrderFromPlan(plan)) {\n await dialogService.alert(\n await translateService.translateAsync(`${I18N}.missing-data-title`),\n await translateService.translateAsync(`${I18N}.missing-data-message`),\n 'warning',\n );\n return;\n }\n\n const workOrderEntity = `${RootConfig.module.name}.${RootConfig.entities.workOrder.name}`;\n if (await hasWorkOrderForPlan(backend, workOrderEntity, plan.id)) {\n await dialogService.alert(\n await translateService.translateAsync(`${I18N}.exists-title`),\n await translateService.translateAsync(`${I18N}.exists-message`),\n 'warning',\n );\n return;\n }\n\n try {\n const workOrderCount = await insertWorkOrdersFromPlan(\n entityStorage,\n identifierService,\n sessionService,\n workOrderEntity,\n plan,\n { backend },\n );\n\n if (workOrderCount === 0) {\n await dialogService.alert(\n await translateService.translateAsync(`${I18N}.error-title`),\n await translateService.translateAsync(`${I18N}.error-failed`),\n 'danger',\n );\n return;\n }\n\n const successMessage =\n workOrderCount === 1\n ? await translateService.translateAsync(`${I18N}.success-single`)\n : await translateService.translateAsync(`${I18N}.success-multiple`, {\n params: { count: workOrderCount },\n });\n toastService.show({\n color: 'success',\n title: await translateService.translateAsync(`${I18N}.success-title`),\n content: successMessage,\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : await translateService.translateAsync(`${I18N}.error-failed`);\n await dialogService.alert(await translateService.translateAsync(`${I18N}.error-title`), message, 'danger');\n }\n}\n\n//#endregion\n\n//#region ---- Middleware ----\n\n/**\n * After creating a Maintenance Plan, asks whether to create a Work Order immediately.\n * If confirmed, creates Work Order using the plan's already selected template.\n */\nconst WRITE_OPS = new Set(['create', 'update', 'upsertOne']);\n\nfunction readRecord(value: unknown): Record<string, unknown> | null {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return null;\n }\n return value as Record<string, unknown>;\n}\n\nfunction assignIntervalStates(record: Record<string, unknown>): void {\n record['intervalStates'] = readMaintenanceIntervalStates(record['intervalStates']);\n}\n\nexport const maintenancePlanCreateWorkOrderMiddleware: AXPEntityStorageMiddleware = {\n target: {\n ops: ['create', 'update', 'upsertOne', 'getOne', 'getAll', 'query', 'queryAll', 'getMany'],\n entity: `${RootConfig.module.name}.${RootConfig.entities.maintenancePlan.name}`,\n order: 91,\n },\n execute: async (ctx, next) => {\n const dialogService = inject(AXDialogService, { optional: true });\n const toastService = inject(AXToastService, { optional: true });\n const backend = ctx.entities as EntityStorageBackend;\n const entityStorage = inject(AXPEntityStorageService, { optional: true });\n const identifierService = inject(AXP_IDENTIFIER_SERVICE, { optional: true }) as AXPIdentifierService | null;\n const sessionService = inject(AXPSessionService, { optional: true });\n const translateService = inject(AXTranslationService, { optional: true });\n\n const maintenancePlanEntity = `${RootConfig.module.name}.${RootConfig.entities.maintenancePlan.name}`;\n if (ctx.entityName !== maintenancePlanEntity) {\n await next();\n return;\n }\n\n if (WRITE_OPS.has(ctx.op)) {\n const data = readRecord(ctx.data);\n const fieldPresent = ctx.op === 'create' || ctx.op === 'upsertOne' || (data != null && 'intervalStates' in data);\n if (data && fieldPresent) {\n const resolved = resolveMaintenanceIntervalStates(data['intervalStates']);\n if (resolved.issue) {\n const error = AXM_MAINTENANCE_INTERVAL_STATE_ERRORS[resolved.issue];\n throw new AXPMiddlewareAbortError(error.message, { code: error.code, status: 400 });\n }\n data['intervalStates'] = resolved.states;\n }\n }\n\n const suppressPrompt =\n ctx.data &&\n typeof ctx.data === 'object' &&\n (ctx.data as Record<string, unknown>)[SUPPRESS_WORK_ORDER_PROMPT_FIELD] === true;\n\n const createPayload =\n ctx.data && typeof ctx.data === 'object' ? (ctx.data as unknown as MaintenancePlanLike) : undefined;\n\n await next();\n\n if (ctx.op !== 'create') {\n if (ctx.op === 'getOne') {\n const record = readRecord(ctx.result);\n if (record) {\n assignIntervalStates(record);\n }\n return;\n }\n\n const items = Array.isArray(ctx.result)\n ? ctx.result\n : Array.isArray(ctx.result?.items)\n ? ctx.result.items\n : null;\n if (items) {\n for (const item of items) {\n const record = readRecord(item);\n if (record) {\n assignIntervalStates(record);\n }\n }\n }\n return;\n }\n\n const createdId = typeof ctx.result === 'string' ? ctx.result : undefined;\n if (\n !createdId ||\n !dialogService ||\n !toastService ||\n !entityStorage ||\n !identifierService ||\n !sessionService ||\n !translateService ||\n suppressPrompt\n ) {\n return;\n }\n\n if (ctx.locals.get(WORK_ORDER_PROMPT_SCHEDULED_KEY)) {\n return;\n }\n ctx.locals.set(WORK_ORDER_PROMPT_SCHEDULED_KEY, true);\n\n await runMaintenancePlanWorkOrderPrompt({\n createdId,\n planEntity: ctx.entityName,\n createPayload,\n dialogService,\n backend,\n entityStorage,\n identifierService,\n sessionService,\n toastService,\n translateService,\n });\n },\n};\n\n//#endregion\n","//#region ---- Constants ----\n\n/** Answer keys pre-filled from asset.code (readonly in viewer). */\nexport const WORK_ORDER_CHECKLIST_ASSET_CODE_KEYS = [\n 'mm_f920_asset_no',\n 'mm_prestart_plant_item',\n] as const;\n\n/** Answer keys pre-filled from asset.serialNumber (readonly in viewer). */\nexport const WORK_ORDER_CHECKLIST_ASSET_SERIAL_KEYS = [\n 'mm_f920_registration_number',\n 'mm_prestart_serial_number',\n] as const;\n\n/** All asset-driven prefill keys across maintenance checklists. */\nexport const WORK_ORDER_CHECKLIST_ASSET_PREFILL_KEYS = [\n ...WORK_ORDER_CHECKLIST_ASSET_CODE_KEYS,\n ...WORK_ORDER_CHECKLIST_ASSET_SERIAL_KEYS,\n] as const;\n\nexport type WorkOrderChecklistAssetPrefillKey = (typeof WORK_ORDER_CHECKLIST_ASSET_PREFILL_KEYS)[number];\n\n//#endregion\n\n//#region ---- Helpers ----\n\n/**\n * Builds checklist answer prefill from asset identifiers for maintenance questionnaires.\n */\nexport function buildWorkOrderChecklistAssetPrefillAnswers(asset: {\n code?: string | null;\n serialNumber?: string | null;\n}): Partial<Record<WorkOrderChecklistAssetPrefillKey, string>> {\n const code = typeof asset.code === 'string' ? asset.code.trim() : '';\n const serialNumber = typeof asset.serialNumber === 'string' ? asset.serialNumber.trim() : '';\n\n const answers: Partial<Record<WorkOrderChecklistAssetPrefillKey, string>> = {};\n if (code) {\n for (const key of WORK_ORDER_CHECKLIST_ASSET_CODE_KEYS) {\n answers[key] = code;\n }\n }\n if (serialNumber) {\n for (const key of WORK_ORDER_CHECKLIST_ASSET_SERIAL_KEYS) {\n answers[key] = serialNumber;\n }\n }\n return answers;\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommandMiddleware } from '@acorex-platform/framework-client/runtime';\nimport { inject } from '@angular/core';\nimport { defaultTo, get, isEmpty, isString } from 'lodash';\n\nimport { resolveIntervalChecklistViewerMode, RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n buildWorkOrderChecklistAssetPrefillAnswers,\n WORK_ORDER_CHECKLIST_ASSET_PREFILL_KEYS,\n} from './work-order-checklist-prefill.constants';\n\n//#endregion\n\n//#region ---- Types ----\n\nconst WORK_ORDER_SUBJECT_TYPE = `${RootConfig.module.name}.${RootConfig.entities.workOrder.name}`;\n\ninterface FillAssessmentCaseCommandInput {\n caseId?: string;\n sessionId?: string;\n prefillAnswers?: Record<string, unknown>;\n readonlyAnswerKeys?: string[];\n readonly?: boolean;\n}\n\n//#endregion\n\n//#region ---- Middleware ----\n\n/**\n * Pre-fills PD-F920 asset header answers when a work-order checklist is opened from the task board.\n */\nexport const workOrderChecklistFillMiddleware: AXPCommandMiddleware<FillAssessmentCaseCommandInput, void> = async (\n context,\n next,\n) => {\n const entityService = inject(AXPEntityService);\n const input = context.input;\n const caseId = resolveText(get(input, 'caseId'));\n if (!caseId) {\n return next(context);\n }\n const assessmentCase = await entityService\n .withEntity('AssessmentManagement', 'AssessmentCase')\n .data()\n .byKey(caseId);\n\n const subjectType = resolveText(get(assessmentCase, 'subjectRef.type'));\n const workOrderId = resolveText(get(assessmentCase, 'subjectRef.id'));\n if (subjectType !== WORK_ORDER_SUBJECT_TYPE || !workOrderId) {\n return next(context);\n }\n\n const workOrder = await entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .byKey(workOrderId);\n\n const assetId = resolveText(get(workOrder, 'assetId'));\n if (!assetId) {\n return next(context);\n }\n\n const asset = (await entityService.withEntity('AssetManagement', 'Asset').data().byKey(assetId)) as {\n code?: string;\n serialNumber?: string;\n } | null;\n\n const prefillAnswers = buildWorkOrderChecklistAssetPrefillAnswers({\n code: asset?.code ?? null,\n serialNumber: asset?.serialNumber ?? null,\n });\n\n if (isEmpty(prefillAnswers)) {\n return next(context);\n }\n\n const sessionId = resolveText(get(input, 'sessionId'));\n const answersLocked =\n get(input, 'readonly') === true ||\n resolveIntervalChecklistViewerMode(get(workOrder, 'statusId')) === 'readonly';\n if (sessionId && !answersLocked) {\n const session = await entityService.withEntity('AssessmentManagement', 'AssessmentSession').data().byKey(sessionId);\n const existingAnswers = defaultTo(get(session, 'answers'), {}) as Record<string, unknown>;\n const { merged, changed } = mergeMissingAnswers(existingAnswers, prefillAnswers);\n if (changed) {\n await entityService\n .withEntity('AssessmentManagement', 'AssessmentSession')\n .data()\n .update(sessionId, { answers: merged } as never);\n }\n }\n\n return next({\n ...context,\n input: {\n ...input,\n prefillAnswers: {\n ...prefillAnswers,\n ...defaultTo(get(input, 'prefillAnswers'), {}),\n },\n readonlyAnswerKeys: [\n ...WORK_ORDER_CHECKLIST_ASSET_PREFILL_KEYS,\n ...defaultTo(get(input, 'readonlyAnswerKeys'), []),\n ],\n },\n });\n};\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction resolveText(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n}\n\nfunction mergeMissingAnswers(\n existing: Record<string, unknown>,\n prefill: Record<string, unknown>,\n): { merged: Record<string, unknown>; changed: boolean } {\n const merged = { ...existing };\n let changed = false;\n\n for (const [key, value] of Object.entries(prefill)) {\n if (isEmpty(merged[key]) && !isEmpty(value)) {\n merged[key] = value;\n changed = true;\n }\n }\n\n return { merged, changed };\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPDebugService } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommandMiddleware, AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { inject } from '@angular/core';\nimport { defaultTo, get, isString } from 'lodash';\n\nimport {\n AXMWorkOrderStatus,\n AXMMaintenanceManagementCommandKeys,\n resolveIntervalChecklistViewerMode,\n RootConfig,\n} from '@acorex-platform/module-maintenance-management-client/contracts';\nimport type { AXMMaintenanceManagementWorkOrderEntityModel } from '@acorex-platform/module-maintenance-management-client/contracts';\n\n//#endregion\n\n//#region ---- Types ----\n\nconst WORK_ORDER_SUBJECT_TYPE = `${RootConfig.module.name}.${RootConfig.entities.workOrder.name}`;\n\ninterface FillAssessmentCaseCommandInput {\n caseId?: string;\n sessionId?: string;\n readonly?: boolean;\n}\n\n//#endregion\n\n//#region ---- Middleware ----\n\n/**\n * After a work-order checklist is submitted, ensures WorkReport draft, assessment reference,\n * and work-order in-progress status are persisted even when the workflow backend chain does not run.\n */\nexport const workOrderChecklistPostSubmitMiddleware: AXPCommandMiddleware<\n FillAssessmentCaseCommandInput,\n void\n> = async (context, next) => {\n const entityService = inject(AXPEntityService);\n const commandService = inject(AXPCommandService);\n const sessionService = inject(AXPSessionService);\n\n const result = await next(context);\n try {\n await applyWorkOrderChecklistPostSubmitEffects(context.input, result, {\n entityService,\n commandService,\n sessionService,\n });\n } catch (error: unknown) {\n AXPDebugService.instance?.error(\n 'maintenance-management',\n 'work-order-checklist-post-submit',\n 'Post-submit middleware failed; assessment fill result preserved',\n () => ({\n caseId: get(context.input, 'caseId'),\n sessionId: get(context.input, 'sessionId'),\n success: result?.success,\n outcome: get(result, 'metadata.outcome'),\n error: error instanceof Error ? error.message : String(error),\n }),\n );\n }\n return result;\n};\n\ninterface WorkOrderChecklistPostSubmitServices {\n entityService: AXPEntityService;\n commandService: AXPCommandService;\n sessionService: AXPSessionService;\n}\n\n//#endregion\n\n//#region ---- Post-submit effects ----\n\nasync function applyWorkOrderChecklistPostSubmitEffects(\n input: FillAssessmentCaseCommandInput,\n result: AXPRuntimeCommandResult<void> | null | undefined,\n services: WorkOrderChecklistPostSubmitServices,\n): Promise<void> {\n if (!result?.success || get(input, 'readonly') === true) {\n return;\n }\n\n const caseId = resolveText(get(input, 'caseId'));\n if (!caseId) {\n return;\n }\n\n const submitted = await isWorkOrderChecklistSubmitted(input, result, caseId, services.entityService);\n if (!submitted) {\n return;\n }\n\n const { entityService, commandService, sessionService } = services;\n\n const assessmentCase = await entityService\n .withEntity('AssessmentManagement', 'AssessmentCase')\n .data()\n .byKey(caseId);\n\n const subjectType = resolveText(get(assessmentCase, 'subjectRef.type'));\n const workOrderId = resolveText(get(assessmentCase, 'subjectRef.id'));\n if (subjectType !== WORK_ORDER_SUBJECT_TYPE || !workOrderId) {\n return;\n }\n\n const workOrder = (await entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .byKey(workOrderId)) as AXMMaintenanceManagementWorkOrderEntityModel | null;\n\n if (!workOrder?.id) {\n return;\n }\n if (resolveIntervalChecklistViewerMode(workOrder.statusId) === 'readonly') {\n return;\n }\n\n const performedById = await resolveEmployeeIdByPersonId(\n entityService,\n resolveText(workOrder.assignedToId),\n );\n const completedById = resolveText(sessionService.user?.id);\n const activityKeys = AXMMaintenanceManagementCommandKeys.WorkflowActivity;\n\n const draftResult = await commandService.execute(activityKeys.CreateOrGetWorkReportDraft, {\n workOrderId,\n performedById: performedById || null,\n });\n\n const workReportId = resolveText(get(draftResult, 'data.workReportId'));\n\n await commandService.execute(activityKeys.RecordWorkReportAssessment, {\n workOrderId,\n workReportId: workReportId || null,\n performedById: performedById || null,\n assessmentCaseId: caseId,\n completedById: completedById || null,\n });\n\n const shouldSetInProgress =\n workOrder.statusId === AXMWorkOrderStatus.Planned ||\n workOrder.statusId === AXMWorkOrderStatus.Scheduled ||\n workOrder.statusId === AXMWorkOrderStatus.Assigned;\n\n if (shouldSetInProgress) {\n await commandService.execute(activityKeys.UpdateWorkOrderInProgress, { workOrderId });\n }\n}\n\nasync function isWorkOrderChecklistSubmitted(\n input: FillAssessmentCaseCommandInput,\n result: AXPRuntimeCommandResult<void> | null | undefined,\n caseId: string,\n entityService: AXPEntityService,\n): Promise<boolean> {\n const outcome = resolveText(get(result, 'metadata.outcome')).toLowerCase();\n if (outcome === 'submitted') {\n return true;\n }\n const sessionId = resolveText(get(input, 'sessionId'));\n if (sessionId) {\n const session = await entityService\n .withEntity('AssessmentManagement', 'AssessmentSession')\n .data()\n .byKey(sessionId);\n if (resolveText(get(session, 'statusId')).toLowerCase() === 'submitted') {\n return true;\n }\n }\n\n const page = await entityService\n .withEntity('AssessmentManagement', 'AssessmentSession')\n .data()\n .query({\n skip: 0,\n take: 1,\n sort: [{ field: 'lastSavedAt', direction: 'desc' }],\n filter: {\n logic: 'and',\n filters: [{ field: 'caseId', operator: { type: 'equal' }, value: caseId }],\n },\n } as never);\n\n const latest = defaultTo(get(page, 'items[0]'), null) as { statusId?: string } | null;\n return resolveText(latest?.statusId).toLowerCase() === 'submitted';\n}\n\nasync function resolveEmployeeIdByPersonId(\n entityService: AXPEntityService,\n personId: string,\n): Promise<string> {\n if (!personId) {\n return '';\n }\n\n const page = await 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 } | null;\n return resolveText(employee?.id);\n}\n\nfunction resolveText(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { isEmpty, isNil } from 'lodash';\nimport { inject } from '@angular/core';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPEntityStorageMiddleware } from '@acorex-platform/framework-client/layout/entity';\nimport { AXMWorkOrderSourceType, RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\n\n//#endregion\n\n//#region ---- Middleware ----\n\nconst workOrderEntityName = `${RootConfig.module.name}.${RootConfig.entities.workOrder.name}`;\n\n/**\n * Applies create defaults for work orders: `sourceType` (manual when unset) and `requestedById` (current user).\n */\nexport const workOrderSourceTypeMiddleware: AXPEntityStorageMiddleware = {\n target: {\n ops: ['create'],\n order: 10,\n },\n execute: async (ctx, next) => {\n if (ctx.entityName !== workOrderEntityName || !ctx.data || typeof ctx.data !== 'object') {\n await next();\n return;\n }\n\n const data = ctx.data as Record<string, unknown>;\n if (isNil(data['sourceType']) || data['sourceType'] === '') {\n data['sourceType'] = AXMWorkOrderSourceType.Manual;\n }\n\n const sessionService = inject(AXPSessionService, { optional: true });\n const currentUserId = sessionService?.user?.id;\n if (!isEmpty(currentUserId)) {\n data['requestedById'] = currentUserId;\n }\n\n await next();\n },\n};\n\n//#endregion\n","//#region ---- Middleware Exports ----\n\nexport { assetCreateMaintenanceOfferMiddleware } from './asset-create-maintenance-offer.middleware';\nexport { failureRegisterCreateWorkOrderMiddleware } from './failure-register-create-work-order.middleware';\nexport { maintenancePlanCreateWorkOrderMiddleware } from './maintenance-plan-create-work-order.middleware';\nexport { workOrderChecklistFillMiddleware } from './work-order-checklist-fill.middleware';\nexport { workOrderChecklistPostSubmitMiddleware } from './work-order-checklist-post-submit.middleware';\nexport { workOrderSourceTypeMiddleware } from './work-order-source-type.middleware';\n\n//#endregion\n","//#region ---- Imports ----\n\nimport type { AXPCatalogScopeDefinition, AXPCatalogScopeDefinitionProvider } from '@acorex-platform/framework-client/core';\nimport { Injectable } from '@angular/core';\nimport { MM_CATALOG_SCOPE_MN } from '@acorex-platform/module-maintenance-management-client/contracts';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst QUESTIONNAIRE = 'AssessmentManagement.Questionnaire';\nconst QUESTION_BANK_ITEM = 'AssessmentManagement.QuestionBankItem';\nconst WORKFLOW_DEFINITION = 'WorkflowManagement.WorkflowDefinition';\n\nconst MM_CATALOG_TARGETS = [QUESTIONNAIRE, QUESTION_BANK_ITEM, WORKFLOW_DEFINITION] as const;\n\n//#endregion\n\n//#region ---- Provider ----\n\n@Injectable()\nexport class AXMMaintenanceManagementCatalogScopeDefinitionProvider implements AXPCatalogScopeDefinitionProvider {\n async items(): Promise<AXPCatalogScopeDefinition[]> {\n return [\n {\n name: MM_CATALOG_SCOPE_MN,\n title: '@maintenance-management:catalog-scopes.mn.title',\n description: '@maintenance-management:catalog-scopes.mn.description',\n targets: [...MM_CATALOG_TARGETS],\n icon: 'fa-light fa-screwdriver-wrench',\n cssClass: 'warning-surface',\n order: 20,\n },\n ];\n }\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport {\n AXPExpressionEvaluatorScopeProvider,\n AXPExpressionEvaluatorScopeProviderContext,\n} from '@acorex-platform/framework-shared/core';\nimport { AXPEntityAction, AXPEntityCommandScope } from '@acorex-platform/framework-shared/entity';\nimport { RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport type { AXMMaintenanceManagementMaintenanceTypeEntityModel } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport { inject } from '@angular/core';\nimport { isString } from 'lodash';\n\n//#endregion\n\n//#region ----- Provider -----\n\n/**\n * Expression-evaluator scope for the asset maintenance-plan \"Create\" dropdown.\n * Each item opens the plan form with that maintenance type already selected.\n */\nexport class AXMMaintenanceManagementMaintenancePlanCreateActionsExpressionEvaluatorScopeProvider\n implements AXPExpressionEvaluatorScopeProvider\n{\n //#region ----- Services & Dependencies -----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- AXPExpressionEvaluatorScopeProvider -----\n\n async provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void> {\n context.addScope(RootConfig.module.name, {\n MaintenancePlanCreateActions: async (assetIdRaw?: unknown): Promise<AXPEntityAction[]> => {\n const assetId = isString(assetIdRaw) ? assetIdRaw.trim() : '';\n if (!assetId) {\n return [];\n }\n\n try {\n const assetContext = await this.loadAssetContext(assetId);\n if (!assetContext) {\n return [];\n }\n\n const types = await this.loadMaintenanceTypes(assetContext.maintenanceTypeIds);\n const locale = this.translation.getActiveLang();\n const sorted = [...types].sort((left, right) => {\n const leftTitle = resolveMultiLanguageString(left.title, locale).trim() || left.id;\n const rightTitle = resolveMultiLanguageString(right.title, locale).trim() || right.id;\n return leftTitle.localeCompare(rightTitle, locale, { sensitivity: 'base' });\n });\n\n return sorted.map((row) => this.buildAction(row, locale, assetContext));\n } catch (error: unknown) {\n console.error(\n `${RootConfig.module.name}.MaintenancePlanCreateActions failed:`,\n error instanceof Error ? error.message : error,\n );\n return [];\n }\n },\n });\n }\n\n //#endregion\n\n //#region ----- Helpers -----\n\n private async loadAssetContext(assetId: string): Promise<{\n id: string;\n title: unknown;\n assetTypeId: string;\n maintenanceTypeIds: string[];\n supportedIntervalKinds: string[];\n } | null> {\n const asset = (await this.entityService.withEntity('AssetManagement', 'Asset').data().byKey(assetId)) as {\n id?: string;\n title?: unknown;\n assetTypeId?: string;\n } | null;\n const assetTypeId = asset?.assetTypeId?.trim();\n if (!asset?.id || !assetTypeId) {\n return null;\n }\n\n const assetType = (await this.entityService\n .withEntity('AssetManagement', 'AssetType')\n .data()\n .byKey(assetTypeId)) as { maintenanceTypeIds?: string[]; supportedIntervalKinds?: string[] } | null;\n const maintenanceTypeIds = (assetType?.maintenanceTypeIds ?? []).filter(\n (id) => isString(id) && id.trim().length > 0,\n );\n if (maintenanceTypeIds.length === 0) {\n return null;\n }\n\n return {\n id: asset.id,\n title: asset.title,\n assetTypeId,\n maintenanceTypeIds,\n supportedIntervalKinds: (assetType?.supportedIntervalKinds ?? []).filter(\n (kind) => isString(kind) && kind.trim().length > 0,\n ),\n };\n }\n\n private async loadMaintenanceTypes(\n maintenanceTypeIds: string[],\n ): Promise<AXMMaintenanceManagementMaintenanceTypeEntityModel[]> {\n const page = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.maintenanceType.name)\n .data()\n .query({\n skip: 0,\n take: maintenanceTypeIds.length,\n filter: {\n field: 'id',\n operator: { type: 'in' },\n value: maintenanceTypeIds,\n },\n });\n\n return (page.items ?? []) as AXMMaintenanceManagementMaintenanceTypeEntityModel[];\n }\n\n private buildAction(\n row: AXMMaintenanceManagementMaintenanceTypeEntityModel,\n locale: string,\n asset: {\n id: string;\n title: unknown;\n assetTypeId: string;\n maintenanceTypeIds: string[];\n supportedIntervalKinds: string[];\n },\n ): AXPEntityAction {\n const title = resolveMultiLanguageString(row.title, locale).trim() || row.id;\n\n return {\n name: `create-maintenance-plan-${row.id}`,\n title,\n icon: 'fa-light fa-screwdriver-wrench',\n color: 'default',\n command: {\n name: 'Entity:Create',\n options: {\n process: {\n redirect: false,\n canCreateNewOne: true,\n data: {\n assetId: asset.id,\n asset: {\n id: asset.id,\n title: asset.title,\n assetTypeId: asset.assetTypeId,\n assetType: {\n maintenanceTypeIds: asset.maintenanceTypeIds,\n supportedIntervalKinds: asset.supportedIntervalKinds,\n },\n },\n maintenanceTypeId: row.id,\n maintenanceType: {\n id: row.id,\n title: row.title,\n },\n },\n },\n },\n },\n priority: 'primary',\n type: 'create',\n scope: AXPEntityCommandScope.TypeLevel,\n };\n }\n\n //#endregion\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPEntityAction, AXPEntityCommandScope } from '@acorex-platform/framework-shared/entity';\nimport { AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport { isString } from 'lodash';\n\nimport { AXMWorkOrderSourceType, RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n type EntityStorageBackend,\n queryWorkflowTemplatesForAsset,\n resolveDisplayLabel,\n} from '../../middlewares/maintenance-generation.utils';\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction resolveAssetId(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n}\n\n//#endregion\n\n/**\n * Expression-evaluator scope for work-order \"Create\" dropdown items (workflow-enabled maintenance templates).\n */\nexport class AXMMaintenanceManagementWorkOrderExpressionEvaluatorScopeProvider\n implements AXPExpressionEvaluatorScopeProvider\n{\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly translation = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- AXPExpressionEvaluatorScopeProvider ----\n\n async provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void> {\n context.addScope(RootConfig.module.name, {\n /**\n * Loads maintenance templates with workflows for the asset behind the current list context.\n * Resolves asset → assetType.maintenanceTypeIds → templates (assetType + maintenanceType + workflow).\n */\n WorkOrderCreateActions: async (assetIdRaw?: unknown): Promise<AXPEntityAction[]> => {\n const assetId = resolveAssetId(assetIdRaw);\n if (!assetId) {\n return [];\n }\n\n try {\n const locale = this.translation.getActiveLang() as 'en-US' | 'fa-IR';\n const backend = this.createStorageBackend();\n const assetContext = await this.loadAssetMaintenanceContext(backend, assetId);\n if (!assetContext) {\n return [];\n }\n\n const templateEntityName = `${RootConfig.module.name}.${RootConfig.entities.maintenanceTemplate.name}`;\n const templates = await queryWorkflowTemplatesForAsset(backend, templateEntityName, assetId);\n\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 { asset, assetTypeId, maintenanceTypeIds } = assetContext;\n\n return sorted.map((template) => ({\n name: `create-work-order-${template.id}`,\n title: resolveDisplayLabel(template.title, template.code ?? template.id, locale),\n icon: 'fa-light fa-clipboard-list',\n color: 'default',\n command: {\n name: 'Entity:Create',\n options: {\n process: {\n redirect: false,\n canCreateNewOne: true,\n data: {\n assetId: asset.id,\n asset: {\n id: asset.id,\n title: asset.title,\n assetTypeId,\n assetType: { maintenanceTypeIds },\n },\n maintenanceTypeId: template.maintenanceTypeId,\n maintenanceTemplateId: template.id,\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:\n typeof template.estimatedMinutes === 'number' && template.estimatedMinutes > 0\n ? Math.round((template.estimatedMinutes / 60) * 100) / 100\n : undefined,\n sourceType: AXMWorkOrderSourceType.Manual,\n autoGeneratedWorkOrder: false,\n },\n },\n },\n },\n priority: 'primary',\n type: 'info',\n scope: AXPEntityCommandScope.TypeLevel,\n })) satisfies AXPEntityAction[];\n } catch (error: unknown) {\n console.error(\n `${RootConfig.module.name}.WorkOrderCreateActions failed:`,\n error instanceof Error ? error.message : error,\n );\n return [];\n }\n },\n });\n }\n\n //#endregion\n\n //#region ---- Helpers ----\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 private async loadAssetMaintenanceContext(backend: EntityStorageBackend, assetId: string) {\n const asset = (await backend.getOne('AssetManagement.Asset', assetId)) as {\n id?: string;\n title?: unknown;\n assetTypeId?: string;\n } | null;\n\n const assetTypeId = asset?.assetTypeId?.trim();\n if (!asset?.id || !assetTypeId) {\n return null;\n }\n\n const assetType = (await backend.getOne('AssetManagement.AssetType', assetTypeId)) as {\n maintenanceTypeIds?: string[];\n } | null;\n const maintenanceTypeIds = (assetType?.maintenanceTypeIds ?? []).filter((id) => isString(id) && id.trim());\n if (maintenanceTypeIds.length === 0) {\n return null;\n }\n\n return {\n asset: { id: asset.id, title: asset.title, assetTypeId },\n assetTypeId,\n maintenanceTypeIds,\n };\n }\n\n //#endregion\n}\n","//#region ----- Imports -----\n\nimport { AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\nimport { AXM_MAINTENANCE_INTERVAL_WIDGET } from '@acorex-platform/module-maintenance-management-client/contracts';\n\n//#endregion\n\n//#region ----- Widget config -----\n\nexport const AXMMaintenanceIntervalWidget: AXPWidgetConfig = {\n name: AXM_MAINTENANCE_INTERVAL_WIDGET,\n title: '@maintenance-management:maintenance-interval.title',\n description: '@maintenance-management:maintenance-interval.description',\n type: 'editor',\n designer: { needLabel: true },\n categories: [],\n groups: [AXPWidgetGroupEnum.EntityWidget],\n icon: 'fa-light fa-calendar-clock',\n properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],\n components: {\n view: {\n component: () =>\n import('./maintenance-interval-widget-view.component').then(\n (c) => c.AXMMaintenanceIntervalWidgetViewComponent,\n ),\n },\n edit: {\n component: () =>\n import('./maintenance-interval-widget-edit.component').then(\n (c) => c.AXMMaintenanceIntervalWidgetEditComponent,\n ),\n },\n designer: {\n component: () =>\n import('./maintenance-interval-widget-edit.component').then(\n (c) => c.AXMMaintenanceIntervalWidgetEditComponent,\n ),\n },\n },\n};\n\n//#endregion\n","//#region ----- Imports -----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\n\nimport { AXMMaintenanceIntervalWidget } from './maintenance-interval-widget.config';\n\n//#endregion\n\n//#region ----- Provider -----\n\n@Injectable()\nexport class AXMMaintenanceIntervalWidgetProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return [AXMMaintenanceIntervalWidget];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\n\n//#endregion\n\n//#region ---- Widget config ----\n\nexport const AXMWorkOrderWorkflowColumnWidget: AXPWidgetConfig = {\n name: 'work-order-workflow-column',\n title: '@maintenance-management:widgets.work-order-workflow-column.title',\n description: '@maintenance-management:widgets.work-order-workflow-column.description',\n type: 'view',\n categories: [],\n groups: [AXPWidgetGroupEnum.EntityWidget],\n icon: 'fa-light fa-diagram-project',\n properties: [],\n components: {\n column: {\n component: () =>\n import('./work-order-workflow-column.component').then((c) => c.AXMWorkOrderWorkflowColumnComponent),\n },\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\n\n//#endregion\n\n//#region ---- Widget config ----\n\nexport const AXMWorkOrderWorkReportColumnWidget: AXPWidgetConfig = {\n name: 'work-order-work-report-column',\n title: '@maintenance-management:widgets.work-order-work-report-column.title',\n description: '@maintenance-management:widgets.work-order-work-report-column.description',\n type: 'view',\n categories: [],\n groups: [AXPWidgetGroupEnum.EntityWidget],\n icon: 'fa-light fa-file-lines',\n properties: [],\n components: {\n column: {\n component: () =>\n import('./work-order-work-report-column.component').then((c) => c.AXMWorkOrderWorkReportColumnComponent),\n },\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\n\nimport { AXMWorkOrderWorkflowColumnWidget } from './work-order-workflow-column.widget.config';\nimport { AXMWorkOrderWorkReportColumnWidget } from './work-order-work-report-column.widget.config';\n\n//#endregion\n\n//#region ---- Provider ----\n\n@Injectable()\nexport class AXMWorkOrderWorkflowColumnWidgetProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return [AXMWorkOrderWorkflowColumnWidget, AXMWorkOrderWorkReportColumnWidget];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex-platform/framework-shared/widget-core';\n\n//#endregion\n\n//#region ---- Widget config ----\n\nexport const AXMWorkReportChecklistResultsWidget: AXPWidgetConfig = {\n name: 'work-report-checklist-results',\n title: '@maintenance-management:widgets.work-report-checklist-results.title',\n description: '@maintenance-management:widgets.work-report-checklist-results.description',\n type: 'view',\n categories: [],\n groups: [AXPWidgetGroupEnum.EntityWidget],\n icon: 'fa-light fa-list-check',\n properties: [],\n components: {\n view: {\n component: () =>\n import('./work-report-checklist-results-view.component').then(\n (c) => c.AXMWorkReportChecklistResultsViewComponent,\n ),\n },\n edit: {\n component: () =>\n import('./work-report-checklist-results-view.component').then(\n (c) => c.AXMWorkReportChecklistResultsViewComponent,\n ),\n },\n },\n};\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPWidgetDefinitionProvider } from '@acorex-platform/framework-client/layout/widget-core';\nimport { Injectable } from '@angular/core';\n\nimport { AXMWorkReportChecklistResultsWidget } from './work-report-checklist-results.widget.config';\n\n//#endregion\n\n//#region ---- Provider ----\n\n@Injectable()\nexport class AXMWorkReportWidgetProvider implements AXPWidgetDefinitionProvider {\n getWidgets() {\n return [AXMWorkReportChecklistResultsWidget];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER, AXP_STATUS_PROVIDERS } from '@acorex-platform/framework-client/common';\nimport {\n AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n provideLazyProvider,\n} from '@acorex-platform/framework-client/core';\nimport { AXP_ENTITY_STORAGE_MIDDLEWARE } from '@acorex-platform/framework-client/layout/entity';\nimport { AXP_WIDGET_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/layout/widget-core';\nimport { provideCommandSetups, provideCommandMiddleware } from '@acorex-platform/framework-client/runtime';\nimport { NgModule } from '@angular/core';\n\nimport { AXMMaintenanceManagementCommandKeys } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport {\n assetCreateMaintenanceOfferMiddleware,\n failureRegisterCreateWorkOrderMiddleware,\n maintenancePlanCreateWorkOrderMiddleware,\n workOrderChecklistFillMiddleware,\n workOrderChecklistPostSubmitMiddleware,\n workOrderSourceTypeMiddleware,\n} from './middlewares';\nimport { AXMMaintenanceManagementCatalogScopeDefinitionProvider } from './catalog-scope-definition.provider';\nimport { AXMMaintenanceManagementMaintenancePlanCreateActionsExpressionEvaluatorScopeProvider } from './features/shared/maintenance-plan-create-actions-expression-evaluator-scope.provider';\nimport { AXMMaintenanceManagementWorkOrderExpressionEvaluatorScopeProvider } from './features/shared/work-order-expression-evaluator-scope.provider';\nimport { AXMMaintenanceIntervalWidgetProvider } from './features/maintenance-interval/maintenance-interval-widget.provider';\nimport { AXMWorkOrderWorkflowColumnWidgetProvider } from './features/work-order/widgets/work-order-workflow-column-widget.provider';\nimport { AXMWorkReportWidgetProvider } from './features/work-report/widgets/work-report-widget.provider';\n\n//#endregion\n\n//#region ---- Module ----\n\n@NgModule({\n imports: [\n ],\n providers: [\n\n {\n provide: AXP_CATALOG_SCOPE_DEFINITION_PROVIDER,\n useClass: AXMMaintenanceManagementCatalogScopeDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMMaintenanceManagementWorkOrderExpressionEvaluatorScopeProvider,\n multi: true,\n },\n {\n provide: AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER,\n useClass: AXMMaintenanceManagementMaintenancePlanCreateActionsExpressionEvaluatorScopeProvider,\n multi: true,\n },\n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMMaintenanceIntervalWidgetProvider,\n multi: true,\n },\n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMWorkReportWidgetProvider,\n multi: true,\n },\n {\n provide: AXP_WIDGET_DEFINITION_PROVIDER,\n useClass: AXMWorkOrderWorkflowColumnWidgetProvider,\n multi: true,\n },\n // Provider references (now using tokens)\n provideLazyProvider(AXP_PERMISSION_DEFINITION_PROVIDER, () =>\n import('./permission-definition.provider').then((m) => m.AXMMaintenanceManagementPermissionDefinitionProvider),\n ),\n provideLazyProvider(AXP_MENU_PROVIDER, () =>\n import('./menu.provider').then((m) => m.AXMMaintenanceManagementMenuProvider),\n ),\n provideLazyProvider(AXP_SEARCH_PROVIDER, () =>\n import('./search-command.provider').then((m) => m.AXMMaintenanceManagementSearchCommandProvider),\n ),\n provideLazyProvider(AXP_STATUS_PROVIDERS, () =>\n import('./features/failure-register-status.provider').then(\n (m) => m.AXMMaintenanceManagementFailureRegisterStatusProvider,\n ),\n ),\n provideLazyProvider(AXP_STATUS_PROVIDERS, () =>\n import('./features/work-order-status.provider').then(\n (m) => m.AXMMaintenanceManagementWorkOrderStatusProvider,\n ),\n ),\n provideCommandMiddleware([\n {\n target: 'AssessmentManagement.AssessmentCase:Fill',\n middleware: workOrderChecklistPostSubmitMiddleware,\n },\n {\n target: 'AssessmentManagement.AssessmentCase:Fill',\n middleware: workOrderChecklistFillMiddleware,\n },\n ]),\n provideCommandSetups([\n {\n key: 'Entity:List',\n command: () => import('./features/commands/work-order-list-command').then((c) => c.WorkOrderListCommand),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkOrder.StartFlow,\n command: () =>\n import('./features/work-order/commands/start-work-order-flow.command').then(\n (c) => c.StartWorkOrderFlowCommand,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkOrder.OpenForm,\n command: () =>\n import('./features/work-order/commands/open-work-order-checklist-form.command').then(\n (c) => c.OpenWorkOrderChecklistFormCommand,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkOrder.SignOff,\n command: () =>\n import('./features/work-order/commands/sign-off-work-order.command').then((c) => c.SignOffWorkOrderCommand),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.ResolveWorkOrder,\n command: () =>\n import('./features/work-order/workflows/activities/resolve-work-order.activity').then(\n (c) => c.ResolveWorkOrderActivity,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.ResolvePersonUserId,\n command: () =>\n import('./features/work-order/workflows/activities/resolve-person-user-id.activity').then(\n (c) => c.ResolvePersonUserIdActivity,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.CreateOrGetWorkReportDraft,\n command: () =>\n import('./features/work-order/workflows/activities/create-or-get-work-report-draft.activity').then(\n (c) => c.CreateOrGetWorkReportDraftActivity,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.UpdateWorkOrderInProgress,\n command: () =>\n import('./features/work-order/workflows/activities/update-work-order-in-progress.activity').then(\n (c) => c.UpdateWorkOrderInProgressActivity,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.ValidateWorkOrderCompletion,\n command: () =>\n import('./features/work-order/workflows/activities/validate-work-order-completion.activity').then(\n (c) => c.ValidateWorkOrderCompletionActivity,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.UpdateWorkReportOnCompletion,\n command: () =>\n import('./features/work-order/workflows/activities/update-work-report-on-completion.activity').then(\n (c) => c.UpdateWorkReportOnCompletionActivity,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.RecordWorkReportAssessment,\n command: () =>\n import('./features/work-order/workflows/activities/record-work-report-assessment.activity').then(\n (c) => c.RecordWorkReportAssessmentActivity,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkflowActivity.UpdateWorkOrderCompleted,\n command: () =>\n import('./features/work-order/workflows/activities/update-work-order-completed.activity').then(\n (c) => c.UpdateWorkOrderCompletedActivity,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkReport.FillCompletion,\n command: () =>\n import('./features/work-report/commands/fill-work-report-completion.command').then(\n (c) => c.FillWorkReportCompletionCommand,\n ),\n },\n {\n key: AXMMaintenanceManagementCommandKeys.WorkReport.OpenFromWorkOrder,\n command: () =>\n import('./features/work-report/commands/open-work-report-from-work-order.command').then(\n (c) => c.OpenWorkReportFromWorkOrderCommand,\n ),\n },\n ]),\n {\n provide: AXP_ENTITY_STORAGE_MIDDLEWARE,\n useValue: assetCreateMaintenanceOfferMiddleware,\n multi: true,\n },\n {\n provide: AXP_ENTITY_STORAGE_MIDDLEWARE,\n useValue: failureRegisterCreateWorkOrderMiddleware,\n multi: true,\n },\n {\n provide: AXP_ENTITY_STORAGE_MIDDLEWARE,\n useValue: maintenancePlanCreateWorkOrderMiddleware,\n multi: true,\n },\n {\n provide: AXP_ENTITY_STORAGE_MIDDLEWARE,\n useValue: workOrderSourceTypeMiddleware,\n multi: true,\n },\n ],\n})\nexport class AXMMaintenanceManagementModule {}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport {\n AXPCommonMenuKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport {\n RootConfig,\n AXPAssetsMaintenancePermissionKeys\n} from '@acorex-platform/module-maintenance-management-client/contracts';\nimport { AXMMaintenanceManagementMenuKeys } from '@acorex-platform/module-maintenance-management-client/contracts';\n\n//#endregion\n\n//#region ---- Menu Provider ----\n\nconst PLAN_EQUIPMENT_MENU_KEY = 'Configuration:Menu:PlantEquipment';\n\n/**\n * Maintenance Management Menu Provider.\n * Provides menu items for the Maintenance Management module with permission and feature checks.\n */\nexport class AXMMaintenanceManagementMenuProvider implements AXPMenuProvider {\n private readonly entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n const keys = AXPAssetsMaintenancePermissionKeys;\n\n // Edition enables AssetManagement (module name), not MaintenanceManagement.\n // Keep operational + setup menus on the same feature gate as Asset Types.\n const operationalMenuPolicy = {\n features: ['AssetManagement'],\n permissions: [keys.MaintainMaintenance],\n };\n const configMenuPolicy = {\n features: ['AssetManagement'],\n permissions: [keys.Setup],\n };\n\n context.find(AXPCommonMenuKeys.PlantEquipment).addItems([\n {\n name: AXMMaintenanceManagementMenuKeys.FailureRegisters,\n text: RootConfig.entities.failureRegister.titlePlural,\n icon: RootConfig.entities.failureRegister.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.failureRegister.name),\n priority: 12,\n policy: operationalMenuPolicy,\n },\n ]);\n\n const planEquipmentMenu = context.find(PLAN_EQUIPMENT_MENU_KEY);\n if (!planEquipmentMenu.exists) {\n context.find(AXPCommonMenuKeys.Configuration).addItems([\n {\n name: PLAN_EQUIPMENT_MENU_KEY,\n priority: 9000,\n text: '@general:menus.plan-equipment.title',\n icon: module.icon,\n },\n ]);\n }\n\n context.find(PLAN_EQUIPMENT_MENU_KEY).addItems([\n {\n name: AXMMaintenanceManagementMenuKeys.MaintenanceTypes,\n text: RootConfig.entities.maintenanceType.titlePlural,\n icon: RootConfig.entities.maintenanceType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.maintenanceType.name),\n priority: 12,\n policy: configMenuPolicy,\n },\n {\n name: AXMMaintenanceManagementMenuKeys.ActivityTypes,\n text: RootConfig.entities.activityType.titlePlural,\n icon: RootConfig.entities.activityType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.activityType.name),\n priority: 13,\n policy: configMenuPolicy,\n },\n {\n name: AXMMaintenanceManagementMenuKeys.Failures,\n text: '@maintenance-management:module.menus.failures.title',\n icon: RootConfig.entities.failureMode.icon,\n type: 'menu',\n priority: 14,\n policy: configMenuPolicy,\n children: [],\n },\n ]);\n\n // Nest taxonomy items under Failures. A type:'group' parent with sibling leaves\n // looks empty / is easy to miss; empty parents without children are also filtered.\n context.find(AXMMaintenanceManagementMenuKeys.Failures).addItems([\n {\n name: AXMMaintenanceManagementMenuKeys.FailureTypes,\n text: RootConfig.entities.failureType.titlePlural,\n icon: RootConfig.entities.failureType.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.failureType.name),\n priority: 1,\n policy: configMenuPolicy,\n },\n {\n name: AXMMaintenanceManagementMenuKeys.FailureModes,\n text: RootConfig.entities.failureMode.titlePlural,\n icon: RootConfig.entities.failureMode.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.failureMode.name),\n priority: 2,\n policy: configMenuPolicy,\n },\n {\n name: AXMMaintenanceManagementMenuKeys.FailureDetections,\n text: RootConfig.entities.failureDetection.titlePlural,\n icon: RootConfig.entities.failureDetection.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.failureDetection.name),\n priority: 3,\n policy: configMenuPolicy,\n },\n {\n name: AXMMaintenanceManagementMenuKeys.FailureCauses,\n text: RootConfig.entities.failureCause.titlePlural,\n icon: RootConfig.entities.failureCause.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.failureCause.name),\n priority: 4,\n policy: configMenuPolicy,\n },\n {\n name: AXMMaintenanceManagementMenuKeys.FailureMechanisms,\n text: RootConfig.entities.failureMechanism.titlePlural,\n icon: RootConfig.entities.failureMechanism.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.failureMechanism.name),\n priority: 5,\n policy: configMenuPolicy,\n },\n {\n name: AXMMaintenanceManagementMenuKeys.FailureEffects,\n text: RootConfig.entities.failureEffect.titlePlural,\n icon: RootConfig.entities.failureEffect.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.failureEffect.name),\n priority: 6,\n policy: configMenuPolicy,\n },\n {\n name: AXMMaintenanceManagementMenuKeys.FailureSeverities,\n text: RootConfig.entities.failureSeverity.titlePlural,\n icon: RootConfig.entities.failureSeverity.icon,\n path: this.entityService.createPath(module.name, RootConfig.entities.failureSeverity.name),\n priority: 7,\n policy: configMenuPolicy,\n },\n ]);\n }\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPAssetsMaintenancePermissionKeys\n} from '@acorex-platform/module-maintenance-management-client/contracts';\n\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ----- Permission Definition Provider -----\n\n/**\n * Registers maintenance capabilities into the shared Assets & Maintenance group.\n */\n@Injectable()\nexport class AXMMaintenanceManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPAssetsMaintenancePermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:assets-maintenance.permissions';\n const G = '@common:permission-groups';\n\n context.addGroup(groups.AssetsMaintenance.Root, `${G}.assets-maintenance.title`, `${G}.assets-maintenance.description`, { order: 70 });\n\n context\n .addGroup(\n groups.AssetsMaintenance.Maintenance,\n `${G}.assets-maintenance-maintenance.title`,\n `${G}.assets-maintenance-maintenance.description`,\n { parent: groups.AssetsMaintenance.Root, order: 20 },\n )\n .addPermission(\n keys.MaintainMaintenance,\n `${P}.maintain-maintenance.title`,\n `${P}.maintain-maintenance.description`,\n )\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPSearchCommandProvider, AXPSearchResult, createEntityCommandOptions } from '@acorex-platform/framework-client/common';\nimport { RootConfig } from '@acorex-platform/module-maintenance-management-client/contracts';\n\n//#endregion\n\n//#region ---- Search Command Provider ----\n\nexport class AXMMaintenanceManagementSearchCommandProvider extends AXPSearchCommandProvider {\n commands: AXPSearchResult[] = [\n {\n id: 'create-maintenance-type',\n group: 'command',\n title: RootConfig.entities.maintenanceType.title,\n icon: RootConfig.entities.maintenanceType.icon,\n description: RootConfig.entities.maintenanceType.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.maintenanceType.name}`,\n {\n name: RootConfig.entities.maintenanceType.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.maintenanceType.title,\n },\n ),\n },\n },\n {\n id: 'create-maintenance-template',\n group: 'command',\n title: RootConfig.entities.maintenanceTemplate.title,\n icon: RootConfig.entities.maintenanceTemplate.icon,\n description: RootConfig.entities.maintenanceTemplate.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.maintenanceTemplate.name}`,\n {\n name: RootConfig.entities.maintenanceTemplate.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.maintenanceTemplate.title,\n },\n ),\n },\n },\n {\n id: 'create-maintenance-plan',\n group: 'command',\n title: RootConfig.entities.maintenancePlan.title,\n icon: RootConfig.entities.maintenancePlan.icon,\n description: RootConfig.entities.maintenancePlan.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.maintenancePlan.name}`,\n {\n name: RootConfig.entities.maintenancePlan.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.maintenancePlan.title,\n },\n ),\n },\n },\n {\n id: 'create-work-report',\n group: 'command',\n title: RootConfig.entities.workReport.title,\n icon: RootConfig.entities.workReport.icon,\n description: RootConfig.entities.workReport.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.workReport.name}`,\n {\n name: RootConfig.entities.workReport.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.workReport.title,\n },\n ),\n },\n },\n {\n id: 'create-activity-type-resource',\n group: 'command',\n title: RootConfig.entities.activityTypeResource.title,\n icon: RootConfig.entities.activityTypeResource.icon,\n description: RootConfig.entities.activityTypeResource.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.activityTypeResource.name}`,\n {\n name: RootConfig.entities.activityTypeResource.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.activityTypeResource.title,\n }\n ),\n },\n },\n {\n id: 'create-failure-mode',\n group: 'command',\n title: RootConfig.entities.failureMode.title,\n icon: RootConfig.entities.failureMode.icon,\n description: RootConfig.entities.failureMode.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.failureMode.name}`,\n {\n name: RootConfig.entities.failureMode.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.failureMode.title,\n }\n ),\n },\n },\n {\n id: 'create-failure-cause',\n group: 'command',\n title: RootConfig.entities.failureCause.title,\n icon: RootConfig.entities.failureCause.icon,\n description: RootConfig.entities.failureCause.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.failureCause.name}`,\n { name: RootConfig.entities.failureCause.name, module: RootConfig.module.name, title: RootConfig.entities.failureCause.title }\n ),\n },\n },\n {\n id: 'create-failure-mechanism',\n group: 'command',\n title: RootConfig.entities.failureMechanism.title,\n icon: RootConfig.entities.failureMechanism.icon,\n description: RootConfig.entities.failureMechanism.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.failureMechanism.name}`,\n {\n name: RootConfig.entities.failureMechanism.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.failureMechanism.title,\n }\n ),\n },\n },\n {\n id: 'create-failure-detection',\n group: 'command',\n title: RootConfig.entities.failureDetection.title,\n icon: RootConfig.entities.failureDetection.icon,\n description: RootConfig.entities.failureDetection.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.failureDetection.name}`,\n {\n name: RootConfig.entities.failureDetection.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.failureDetection.title,\n }\n ),\n },\n },\n {\n id: 'create-failure-type',\n group: 'command',\n title: RootConfig.entities.failureType.title,\n icon: RootConfig.entities.failureType.icon,\n description: RootConfig.entities.failureType.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.failureType.name}`,\n {\n name: RootConfig.entities.failureType.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.failureType.title,\n }\n ),\n },\n },\n ];\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXMAssetManagementCommandKeys } from '@acorex-platform/module-asset-management-client/contracts';\nimport type { AXPMultiLanguageString, AXPWorkflowDefinition } from '@acorex-platform/framework-shared/core';\n\nimport { AXMMaintenanceManagementCommandKeys } from '@acorex-platform/module-maintenance-management-client/contracts';\n\n//#endregion\n\n//#region ---- Factory config ----\n\nexport interface WorkOrderExecutionWorkflowConfig {\n name: string;\n title: AXPMultiLanguageString;\n description: AXPMultiLanguageString;\n startTaskTitle: string;\n inProgressTaskTitle: string;\n}\n\n//#endregion\n\n//#region ---- Expression helpers ----\n\nconst WFM_EXPR_ASSIGNED_USER = 'context.eval(\"variables.assignedUserId\")';\nconst WFM_EXPR_WORK_ORDER_ID = 'context.eval(\"inputs.workOrderId\")';\nconst WFM_EXPR_ASSET_ID = 'context.eval(\"inputs.assetId\")';\nconst WFM_EXPR_MAINTENANCE_TYPE_ID = 'context.eval(\"inputs.maintenanceTypeId\")';\n\nconst wfmExpr = (expression: string): string => `{{ ${expression} }}`;\n\nconst workOrderTaskContext = {\n workOrderId: wfmExpr(WFM_EXPR_WORK_ORDER_ID),\n workOrderNo: '{{ inputs.workOrderNo }}',\n assetId: wfmExpr(WFM_EXPR_ASSET_ID),\n assetDisplayName: '{{ inputs.assetDisplayName }}',\n maintenanceTypeId: '{{ inputs.maintenanceTypeId }}',\n maintenanceTypeName: '{{ inputs.maintenanceTypeName }}',\n maintenancePlanId: '{{ inputs.maintenancePlanId }}',\n failureRegisterId: '{{ inputs.failureRegisterId }}',\n sourceType: '{{ inputs.sourceType }}',\n dueDate: '{{ inputs.dueDate }}',\n entityType: 'MaintenanceManagement.WorkOrder',\n};\n\nconst startWorkAction = {\n name: 'start-work',\n title: 'Start work',\n icon: 'fa-light fa-play',\n color: 'primary',\n command: { name: 'start-work' },\n};\n\nconst completeWorkAction = {\n name: 'complete-work',\n title: 'Complete work',\n icon: 'fa-light fa-check',\n color: 'success',\n command: { name: 'complete-work' },\n};\n\n//#endregion\n\n/**\n * Executes an existing work order: assignee task board → start work → in progress → complete work → completed.\n * Approval/sign-off is intentionally excluded (separate workflow).\n */\nexport function createWorkOrderExecutionWorkflowDefinition(\n config: WorkOrderExecutionWorkflowConfig,\n): AXPWorkflowDefinition {\n const { name, title, description, startTaskTitle, inProgressTaskTitle } = config;\n const activityKeys = AXMMaintenanceManagementCommandKeys.WorkflowActivity;\n const assetActivityKey = AXMAssetManagementCommandKeys.WorkflowActivity.RecalculateOperationalStatus;\n\n return {\n schemaVersion: 'acorex-platform-workflow/v1',\n name,\n title,\n description,\n variables: [\n {\n name: 'assignedUserId',\n title: 'Assigned user',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'assignedPersonId',\n title: 'Assigned person',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'assetStatusTarget',\n title: 'Asset status target',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'workStartedAt',\n title: 'Work started at',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'workCompletedAt',\n title: 'Work completed at',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n ],\n inputs: [\n {\n name: 'workOrderId',\n title: 'Work order ID',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'workOrderNo',\n title: 'Work order number',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'assetId',\n title: 'Asset ID',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'assetDisplayName',\n title: 'Asset display name',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'assignedToId',\n title: 'Assigned person ID',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'assignedToDisplayName',\n title: 'Assigned person display name',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'maintenanceTypeId',\n title: 'Maintenance type ID',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'maintenanceTypeName',\n title: 'Maintenance type name',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'maintenancePlanId',\n title: 'Maintenance plan ID',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'failureRegisterId',\n title: 'Failure register ID',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'sourceType',\n title: 'Source type',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n {\n name: 'dueDate',\n title: 'Due date',\n dataType: 'string',\n interface: { type: 'text-editor', options: {} },\n },\n ],\n outputs: [],\n extensions: {},\n graph: {\n startActivityId: 'resolveWorkOrder',\n activities: [\n {\n id: 'resolveWorkOrder',\n name: activityKeys.ResolveWorkOrder,\n title: 'Resolve work order',\n inputs: {\n workOrderId: '{{ inputs.workOrderId }}',\n assignedToId: '{{ inputs.assignedToId }}',\n },\n outputToVariables: {\n assignedPersonId: 'assignedToId',\n },\n },\n {\n id: 'resolveAssignedUser',\n name: activityKeys.ResolvePersonUserId,\n title: 'Resolve assigned user',\n inputs: {\n personId: '{{ variables.assignedPersonId || inputs.assignedToId }}',\n },\n outputToVariables: { assignedUserId: 'userId' },\n },\n {\n id: 'showAssignedUserRequiredToast',\n name: 'workflow-activity:show-toast',\n title: 'Assigned user required',\n inputs: {\n message: 'Assigned user is required before starting work order execution.',\n type: 'warning',\n },\n },\n {\n id: 'createWorkOrderTask',\n name: 'workflow-activity:human-task',\n title: startTaskTitle,\n inputs: {\n title: 'Work order: {{ inputs.workOrderNo }}',\n description: 'Start the assigned maintenance work when you are ready.',\n assignedUserIds: wfmExpr(WFM_EXPR_ASSIGNED_USER),\n dueDate: '{{ inputs.dueDate }}',\n context: workOrderTaskContext,\n actions: { suffix: [startWorkAction] },\n },\n },\n {\n id: 'updateWorkOrderInProgress',\n name: activityKeys.UpdateWorkOrderInProgress,\n title: 'Work order — in progress',\n inputs: {\n workOrderId: wfmExpr(WFM_EXPR_WORK_ORDER_ID),\n },\n outputToVariables: { workStartedAt: 'startedAt' },\n },\n {\n id: 'recalculateAssetStatusOnStart',\n name: assetActivityKey,\n title: 'Recalculate asset status (work started)',\n inputs: {\n assetId: wfmExpr(WFM_EXPR_ASSET_ID),\n trigger: 'work-started',\n workOrderId: wfmExpr(WFM_EXPR_WORK_ORDER_ID),\n maintenanceTypeId: wfmExpr(WFM_EXPR_MAINTENANCE_TYPE_ID),\n },\n outputToVariables: { assetStatusTarget: 'statusId' },\n },\n {\n id: 'workInProgressTask',\n name: 'workflow-activity:human-task',\n title: inProgressTaskTitle,\n inputs: {\n title: 'Work order: {{ inputs.workOrderNo }}',\n description: 'Perform the maintenance work, then mark it complete.',\n assignedUserIds: wfmExpr(WFM_EXPR_ASSIGNED_USER),\n dueDate: '{{ inputs.dueDate }}',\n context: workOrderTaskContext,\n actions: { suffix: [completeWorkAction] },\n },\n },\n {\n id: 'showWorkCompletionValidationFailedToast',\n name: 'workflow-activity:show-toast',\n title: 'Work completion validation failed',\n inputs: {\n message: 'Work order cannot be completed yet. Ensure work is in progress and requirements are met.',\n type: 'warning',\n },\n },\n {\n id: 'validateWorkCompletion',\n name: activityKeys.ValidateWorkOrderCompletion,\n title: 'Validate work completion',\n inputs: {\n workOrderId: wfmExpr(WFM_EXPR_WORK_ORDER_ID),\n },\n },\n {\n id: 'updateWorkOrderCompleted',\n name: activityKeys.UpdateWorkOrderCompleted,\n title: 'Work order — completed',\n inputs: {\n workOrderId: wfmExpr(WFM_EXPR_WORK_ORDER_ID),\n },\n outputToVariables: { workCompletedAt: 'completedAt' },\n },\n {\n id: 'recalculateAssetStatusOnComplete',\n name: assetActivityKey,\n title: 'Recalculate asset status (work completed)',\n inputs: {\n assetId: wfmExpr(WFM_EXPR_ASSET_ID),\n trigger: 'work-completed',\n workOrderId: wfmExpr(WFM_EXPR_WORK_ORDER_ID),\n maintenanceTypeId: wfmExpr(WFM_EXPR_MAINTENANCE_TYPE_ID),\n },\n },\n ],\n connections: [\n { source: { activtyName: 'resolveWorkOrder', port: 'Done' }, target: { activtyName: 'resolveAssignedUser' } },\n {\n source: { activtyName: 'resolveWorkOrder', port: 'Blocked' },\n target: { activtyName: 'showAssignedUserRequiredToast' },\n },\n {\n source: { activtyName: 'resolveWorkOrder', port: 'NotFound' },\n target: { activtyName: 'showAssignedUserRequiredToast' },\n },\n {\n source: { activtyName: 'resolveAssignedUser', port: 'Done' },\n target: { activtyName: 'createWorkOrderTask' },\n },\n {\n source: { activtyName: 'createWorkOrderTask', port: 'start-work' },\n target: { activtyName: 'updateWorkOrderInProgress' },\n },\n {\n source: { activtyName: 'updateWorkOrderInProgress', port: 'Done' },\n target: { activtyName: 'recalculateAssetStatusOnStart' },\n },\n {\n source: { activtyName: 'recalculateAssetStatusOnStart', port: 'Done' },\n target: { activtyName: 'workInProgressTask' },\n },\n {\n source: { activtyName: 'workInProgressTask', port: 'complete-work' },\n target: { activtyName: 'validateWorkCompletion' },\n },\n {\n source: { activtyName: 'validateWorkCompletion', port: 'Done' },\n target: { activtyName: 'updateWorkOrderCompleted' },\n },\n {\n source: { activtyName: 'validateWorkCompletion', port: 'Failed' },\n target: { activtyName: 'showWorkCompletionValidationFailedToast' },\n },\n {\n source: { activtyName: 'showWorkCompletionValidationFailedToast', port: 'Done' },\n target: { activtyName: 'workInProgressTask' },\n },\n {\n source: { activtyName: 'updateWorkOrderCompleted', port: 'Done' },\n target: { activtyName: 'recalculateAssetStatusOnComplete' },\n },\n ],\n },\n };\n}\n\nexport const workOrderExecutionWorkflowName = 'work-order-execution';\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { createMultiLanguageString } from '@acorex/core/translation';\nimport type { AXPWorkflowDefinition } from '@acorex-platform/framework-shared/core';\n\nimport {\n createWorkOrderExecutionWorkflowDefinition,\n workOrderExecutionWorkflowName,\n} from './work-order-execution-workflow.shared';\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst M = createMultiLanguageString;\n\n//#endregion\n\n//#region ---- Definition export ----\n\n/** Published workflow graph for seeding `WorkflowManagement.WorkflowDefinition`. */\nexport const workOrderExecutionWorkflowDefinition: AXPWorkflowDefinition = createWorkOrderExecutionWorkflowDefinition({\n name: workOrderExecutionWorkflowName,\n title: M('Work order execution', 'اجرای دستور کار'),\n description: M(\n 'Assignee task board, start work, asset status recalculation, complete work. Approval is a separate workflow.',\n 'کارتابل مسئول، شروع کار، محاسبه وضعیت دارایی، تکمیل کار. تأیید در گردش کار جداگانه انجام میشود.',\n ),\n startTaskTitle: 'Start work — work order',\n inProgressTaskTitle: 'Complete work — work order',\n});\n\nexport { workOrderExecutionWorkflowName };\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["I18N","ASSET_ENTITY","ASSET_TYPE_ENTITY","WORK_ORDER_SUBJECT_TYPE","resolveText"],"mappings":"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"}
|