@acorex-platform/module-maintenance-management-client 2.0.0-next.13 → 2.0.0-next.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (20) hide show
  1. package/fesm2022/{acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-C3cGlFKd.mjs → acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-gUetoBL2.mjs} +28 -17
  2. package/fesm2022/acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-gUetoBL2.mjs.map +1 -0
  3. package/fesm2022/{acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-C-K8mD4N.mjs → acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-ByaIojAq.mjs} +2 -2
  4. package/fesm2022/{acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-C-K8mD4N.mjs.map → acorex-platform-module-maintenance-management-client-create-or-get-work-report-draft.activity-ByaIojAq.mjs.map} +1 -1
  5. package/fesm2022/{acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-b8sTwXxe.mjs → acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-C-fjBgRp.mjs} +2 -2
  6. package/fesm2022/{acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-b8sTwXxe.mjs.map → acorex-platform-module-maintenance-management-client-maintenance-interval-widget-edit.component-C-fjBgRp.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-module-maintenance-management-client-open-work-order-checklist-form.command-C6rDOolF.mjs → acorex-platform-module-maintenance-management-client-open-work-order-checklist-form.command-B-6cnmrR.mjs} +7 -6
  8. package/fesm2022/acorex-platform-module-maintenance-management-client-open-work-order-checklist-form.command-B-6cnmrR.mjs.map +1 -0
  9. package/fesm2022/{acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-StzIetk8.mjs → acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-B1MzM5zk.mjs} +2 -2
  10. package/fesm2022/{acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-StzIetk8.mjs.map → acorex-platform-module-maintenance-management-client-record-work-report-assessment.activity-B1MzM5zk.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-module-maintenance-management-client-start-work-order-flow.command-CNau6u4p.mjs → acorex-platform-module-maintenance-management-client-start-work-order-flow.command-0Grjl6rZ.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-module-maintenance-management-client-start-work-order-flow.command-CNau6u4p.mjs.map → acorex-platform-module-maintenance-management-client-start-work-order-flow.command-0Grjl6rZ.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-DDJHrYkP.mjs → acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-DXhNeYyx.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-DDJHrYkP.mjs.map → acorex-platform-module-maintenance-management-client-update-work-order-in-progress.activity-DXhNeYyx.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-DcBxsEci.mjs → acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-ClRITLiw.mjs} +2 -2
  16. package/fesm2022/{acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-DcBxsEci.mjs.map → acorex-platform-module-maintenance-management-client-work-order-workflow-column.component-ClRITLiw.mjs.map} +1 -1
  17. package/fesm2022/acorex-platform-module-maintenance-management-client.mjs +1 -1
  18. package/package.json +2 -3
  19. package/fesm2022/acorex-platform-module-maintenance-management-client-acorex-platform-module-maintenance-management-client-C3cGlFKd.mjs.map +0 -1
  20. package/fesm2022/acorex-platform-module-maintenance-management-client-open-work-order-checklist-form.command-C6rDOolF.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-platform-module-maintenance-management-client-open-work-order-checklist-form.command-C6rDOolF.mjs","sources":["../../../../libs/modules/maintenance-management/client/src/lib/features/work-order/commands/open-work-order-checklist-form.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo, get, isString } from 'lodash';\nimport { storedAnswersHaveContent } from '@acorex-platform/module-assessment-management-client/contracts';\n\nimport {\n AXM_INTERVAL_CHECKLIST_CASE_ID,\n AXM_INTERVAL_CHECKLIST_CLAIM,\n AXM_INTERVAL_CHECKLIST_QUESTIONNAIRE_ID,\n AXM_INTERVAL_CHECKLIST_SESSION_ID,\n isWorkOrderChecklistOccurrence,\n pickCanonicalChecklistRow,\n readIntervalChecklistId,\n resolveChecklistId,\n resolveIntervalChecklistViewerMode,\n RootConfig,\n} from '@acorex-platform/module-maintenance-management-client/contracts';\nimport type { AXMMaintenanceManagementWorkOrderEntityModel } from '@acorex-platform/module-maintenance-management-client/contracts';\nimport { WORK_ORDER_CHECKLIST_ASSET_PREFILL_KEYS } from '../../../middlewares/work-order-checklist-prefill.constants';\nimport { persistIntervalTaskCard } from './interval-task-card.persist';\nimport { resolveStartWorkOrderFlowIds } from './start-work-order-flow-id.util';\n\n//#endregion\n\n//#region ---- Types ----\n\nconst FILL_ASSESSMENT_COMMAND = 'AssessmentManagement.AssessmentCase:Fill';\nconst VIEW_ANSWERS_COMMAND = 'AssessmentManagement.AssessmentSession:ViewAnswers';\nconst ASSESSMENT_MODULE = 'AssessmentManagement';\nconst ASSESSMENT_CASE = 'AssessmentCase';\nconst ASSESSMENT_SESSION = 'AssessmentSession';\nconst WORK_ORDER_SUBJECT_TYPE = `${RootConfig.module.name}.${RootConfig.entities.workOrder.name}`;\nconst CLAIM_TTL_MS = 15_000;\n\ninterface OpenWorkOrderChecklistFormInput {\n checklist?: string;\n data?: Record<string, unknown>;\n options?: { checklist?: string };\n instanceId?: string;\n bookmarkId?: string;\n}\n\ninterface ChecklistOccurrenceIds {\n caseId: string;\n sessionId: string;\n}\n\ninterface ChecklistClaim {\n token: string;\n at: string;\n workOrderId: string;\n questionnaireId: string;\n}\n\n//#endregion\n\n/**\n * Opens the interval work-order checklist in the assessment viewer.\n * In Progress creates one AssessmentCase and AssessmentSession, then reuses them and keeps the form editable.\n * Completed opens that same session with ViewAnswers and does not create, save, or change the card.\n * The task-board card stays active.\n */\n@Injectable({ providedIn: 'root' })\nexport class OpenWorkOrderChecklistFormCommand implements AXPCommand<OpenWorkOrderChecklistFormInput, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly commandService = inject(AXPCommandService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: OpenWorkOrderChecklistFormInput): AXPCommandExecuteResultPromise<void> {\n const ids = resolveStartWorkOrderFlowIds(input as unknown as Record<string, unknown>);\n const workOrderId = ids.workOrderId;\n if (!workOrderId) {\n return this.fail('Work order id is required.');\n }\n\n const workOrder = await this.loadWorkOrder(workOrderId);\n if (!workOrder) {\n return this.fail('Work order not found.');\n }\n\n const currentUserId = this.resolveText(this.sessionService.user?.id);\n const assigneeUserId = await this.resolveAssigneeUserId(this.resolveText(workOrder.assignedToId));\n if (!currentUserId || !assigneeUserId || currentUserId !== assigneeUserId) {\n return this.failKey('@maintenance-management:work-orders.messages.checklist-assignee-only');\n }\n\n const instanceId = ids.sourceInstanceId;\n if (!instanceId) {\n return this.fail('Workflow instance id is required.');\n }\n const instance = await this.readWorkflowInstance(instanceId);\n if (!instance) {\n return this.fail('Workflow instance not found.');\n }\n\n const viewerMode = this.resolveViewerMode(workOrder, instance, ids.sourceBookmarkId, workOrderId);\n const completed = viewerMode === 'readonly';\n if (viewerMode === 'unavailable') {\n return this.failKey('@maintenance-management:work-orders.messages.checklist-requires-in-progress');\n }\n\n const requestedChecklist =\n resolveChecklistId(get(input, 'checklist')) || resolveChecklistId(get(input, 'options.checklist'));\n const questionnaireId = readIntervalChecklistId(instance, requestedChecklist);\n if (!questionnaireId) {\n return this.failKey('@maintenance-management:work-orders.messages.checklist-missing');\n }\n\n const questionnaire = await this.entityService\n .withEntity(ASSESSMENT_MODULE, 'Questionnaire')\n .data()\n .byKey(questionnaireId);\n if (!questionnaire) {\n return this.failKey('@maintenance-management:work-orders.messages.checklist-missing');\n }\n\n try {\n if (!completed) {\n await persistIntervalTaskCard(this.entityService, {\n instanceId,\n workOrderId,\n sourceBookmarkId: ids.sourceBookmarkId,\n mode: 'in-progress',\n assigneeUserId,\n });\n }\n\n const occurrence = completed\n ? await this.findExistingOccurrence(instanceId, workOrderId, questionnaireId)\n : await this.ensureOccurrence({\n instanceId,\n bookmarkId: ids.sourceBookmarkId,\n workOrderId,\n workOrderNo: this.resolveText(workOrder.workOrderNo),\n questionnaireId,\n responderId: currentUserId,\n });\n if (!occurrence) {\n return this.failKey('@maintenance-management:work-orders.messages.checklist-occurrence-invalid');\n }\n const validated = await this.loadValidatedOccurrence(occurrence, workOrderId, questionnaireId);\n if (!validated) {\n return this.failKey('@maintenance-management:work-orders.messages.checklist-occurrence-invalid');\n }\n\n if (completed) {\n const viewed = await this.commandService.execute<Record<string, unknown>, void>(VIEW_ANSWERS_COMMAND, {\n caseId: validated.caseId,\n sessionId: validated.sessionId,\n });\n return viewed ?? { success: false, message: { text: 'Checklist form could not be opened.' } };\n }\n\n const result = await this.commandService.execute<Record<string, unknown>, void>(FILL_ASSESSMENT_COMMAND, {\n caseId: validated.caseId,\n sessionId: validated.sessionId,\n showAs: 'popup',\n responderId: currentUserId,\n role: 'responder',\n allowEditSubmitted: true,\n readonlyAnswerKeys: [...WORK_ORDER_CHECKLIST_ASSET_PREFILL_KEYS],\n });\n return result ?? { success: false, message: { text: 'Checklist form could not be opened.' } };\n } catch (error: unknown) {\n const message =\n error instanceof Error\n ? error.message\n : await this.translationService.translateAsync('@general:messages.generic.error.description');\n console.error('[OpenWorkOrderChecklistFormCommand]', error);\n return this.fail(message);\n }\n }\n\n //#endregion\n\n //#region ---- Occurrence ----\n\n /**\n * Reuses stored or work-order-linked case/session ids.\n * A claim on the workflow instance stops a second click from creating another pair.\n */\n private async ensureOccurrence(\n input: {\n instanceId: string;\n bookmarkId: string;\n workOrderId: string;\n workOrderNo: string;\n questionnaireId: string;\n responderId: string;\n },\n attempt = 0,\n ): Promise<ChecklistOccurrenceIds> {\n const existing = await this.findExistingOccurrence(input.instanceId, input.workOrderId, input.questionnaireId);\n if (existing) {\n await this.persistOccurrenceIds(\n input.instanceId,\n input.bookmarkId,\n input.workOrderId,\n input.questionnaireId,\n existing,\n );\n return existing;\n }\n if (attempt > 4) {\n throw new Error('Checklist form could not be opened.');\n }\n\n const token = crypto.randomUUID();\n const owned = await this.tryClaim(input.instanceId, {\n token,\n at: new Date().toISOString(),\n workOrderId: input.workOrderId,\n questionnaireId: input.questionnaireId,\n });\n if (!owned) {\n const waited = await this.waitForOccurrence(input.instanceId, input.workOrderId, input.questionnaireId);\n if (waited) {\n await this.persistOccurrenceIds(\n input.instanceId,\n input.bookmarkId,\n input.workOrderId,\n input.questionnaireId,\n waited,\n );\n return waited;\n }\n return this.ensureOccurrence(input, attempt + 1);\n }\n\n let created: ChecklistOccurrenceIds | null = null;\n try {\n const chosen = await this.createOrReuseOccurrence(input);\n created = chosen.created;\n if (created && created.caseId === chosen.ids.caseId && created.sessionId !== chosen.ids.sessionId) {\n try {\n await this.deleteEmptySession(created.sessionId);\n } catch (error: unknown) {\n console.warn('[OpenWorkOrderChecklistFormCommand] unused checklist session was kept', error);\n }\n } else if (created && created.caseId !== chosen.ids.caseId) {\n try {\n await this.deleteEmptyOccurrence(created);\n } catch (error: unknown) {\n console.warn('[OpenWorkOrderChecklistFormCommand] unused checklist duplicate was kept', error);\n }\n }\n await this.persistOccurrenceIds(\n input.instanceId,\n input.bookmarkId,\n input.workOrderId,\n input.questionnaireId,\n chosen.ids,\n );\n return chosen.ids;\n } finally {\n await this.clearClaim(input.instanceId, token);\n }\n }\n\n /**\n * Attaches a session to the earliest case for this work order and questionnaire.\n * A new case is created only when that pair does not exist yet.\n */\n private async createOrReuseOccurrence(input: {\n workOrderId: string;\n workOrderNo: string;\n questionnaireId: string;\n responderId: string;\n }): Promise<{ ids: ChecklistOccurrenceIds; created: ChecklistOccurrenceIds | null }> {\n const caseId = await this.findCanonicalCaseId(input.workOrderId, input.questionnaireId);\n if (caseId) {\n const existingSessionId = await this.findSessionIdForCase(caseId);\n if (existingSessionId) {\n return { ids: { caseId, sessionId: existingSessionId }, created: null };\n }\n const sessionId = await this.createSession(caseId, input.responderId);\n const canonicalSessionId = (await this.findSessionIdForCase(caseId)) || sessionId;\n return {\n ids: { caseId, sessionId: canonicalSessionId },\n created:\n canonicalSessionId === sessionId\n ? null\n : { caseId, sessionId },\n };\n }\n\n const created = await this.createOccurrence(input);\n const canonicalCaseId =\n (await this.findCanonicalCaseId(input.workOrderId, input.questionnaireId)) || created.caseId;\n if (canonicalCaseId === created.caseId) {\n return { ids: created, created: null };\n }\n\n const existingSessionId = await this.findSessionIdForCase(canonicalCaseId);\n const sessionId = existingSessionId || (await this.createSession(canonicalCaseId, input.responderId));\n return {\n ids: { caseId: canonicalCaseId, sessionId },\n created,\n };\n }\n\n private async findExistingOccurrence(\n instanceId: string,\n workOrderId: string,\n questionnaireId: string,\n ): Promise<ChecklistOccurrenceIds | null> {\n const stored = await this.readStoredOccurrence(instanceId, workOrderId, questionnaireId);\n if (stored) {\n return stored;\n }\n\n const caseId = await this.findCanonicalCaseId(workOrderId, questionnaireId);\n if (!caseId) {\n return null;\n }\n const sessionId = await this.findSessionIdForCase(caseId);\n if (!sessionId) {\n return null;\n }\n return { caseId, sessionId };\n }\n\n private async findCanonicalCaseId(workOrderId: string, questionnaireId: string): Promise<string> {\n const page = await this.entityService.withEntity(ASSESSMENT_MODULE, ASSESSMENT_CASE).data().query({\n skip: 0,\n take: 50,\n filter: {\n logic: 'and',\n filters: [{ field: 'subjectRef.id', operator: { type: 'equal' }, value: workOrderId }],\n },\n } as never);\n const rows = (defaultTo(get(page, 'items'), []) as unknown as Record<string, unknown>[]).filter((row) =>\n this.caseMatchesWorkOrderChecklist(row, workOrderId, questionnaireId),\n );\n return this.resolveText(pickCanonicalChecklistRow(rows)?.['id']);\n }\n\n private async readStoredOccurrence(\n instanceId: string,\n workOrderId: string,\n questionnaireId: string,\n ): Promise<ChecklistOccurrenceIds | null> {\n const instance = await this.readWorkflowInstance(instanceId);\n const properties = this.readProperties(instance);\n const storedQuestionnaire = resolveChecklistId(properties[AXM_INTERVAL_CHECKLIST_QUESTIONNAIRE_ID]);\n if (storedQuestionnaire && storedQuestionnaire !== questionnaireId) {\n return null;\n }\n const caseId = this.resolveText(properties[AXM_INTERVAL_CHECKLIST_CASE_ID]);\n const sessionId = this.resolveText(properties[AXM_INTERVAL_CHECKLIST_SESSION_ID]);\n if (!caseId || !sessionId) {\n return null;\n }\n return (await this.loadValidatedOccurrence({ caseId, sessionId }, workOrderId, questionnaireId)) ?? null;\n }\n\n private async loadValidatedOccurrence(\n ids: ChecklistOccurrenceIds,\n workOrderId: string,\n questionnaireId: string,\n ): Promise<ChecklistOccurrenceIds | null> {\n const assessmentCase = this.asRecord(\n await this.entityService.withEntity(ASSESSMENT_MODULE, ASSESSMENT_CASE).data().byKey(ids.caseId),\n );\n const session = this.asRecord(\n await this.entityService.withEntity(ASSESSMENT_MODULE, ASSESSMENT_SESSION).data().byKey(ids.sessionId),\n );\n if (\n !isWorkOrderChecklistOccurrence({\n assessmentCase,\n session,\n workOrderId,\n questionnaireId,\n subjectType: WORK_ORDER_SUBJECT_TYPE,\n })\n ) {\n return null;\n }\n return { caseId: ids.caseId, sessionId: ids.sessionId };\n }\n\n private caseMatchesWorkOrderChecklist(\n row: Record<string, unknown>,\n workOrderId: string,\n questionnaireId: string,\n ): boolean {\n const subject = this.asRecord(row['subjectRef']);\n return (\n this.resolveText(row['questionnaireId']) === questionnaireId &&\n this.resolveText(subject?.['type']) === WORK_ORDER_SUBJECT_TYPE &&\n this.resolveText(subject?.['id']) === workOrderId\n );\n }\n\n /** Sessions are located by case id. Questionnaire id is never the lookup key. */\n private async findSessionIdForCase(caseId: string): Promise<string> {\n const page = await this.entityService.withEntity(ASSESSMENT_MODULE, ASSESSMENT_SESSION).data().query({\n skip: 0,\n take: 20,\n filter: {\n logic: 'and',\n filters: [{ field: 'caseId', operator: { type: 'equal' }, value: caseId }],\n },\n } as never);\n const rows = defaultTo(get(page, 'items'), []) as unknown as Record<string, unknown>[];\n const session = pickCanonicalChecklistRow(rows);\n return this.resolveText(session?.['id']);\n }\n\n private async createOccurrence(input: {\n workOrderId: string;\n workOrderNo: string;\n questionnaireId: string;\n responderId: string;\n }): Promise<ChecklistOccurrenceIds> {\n const caseKey = await this.entityService\n .withEntity(ASSESSMENT_MODULE, ASSESSMENT_CASE)\n .data()\n .create({\n questionnaireId: input.questionnaireId,\n title: input.workOrderNo ? `${input.workOrderNo} — checklist` : 'Checklist',\n subjectRef: {\n type: WORK_ORDER_SUBJECT_TYPE,\n id: input.workOrderId,\n title: input.workOrderNo,\n },\n statusId: 'active',\n } as never);\n const caseId = this.resolveCreatedId(caseKey);\n if (!caseId) {\n throw new Error('Checklist case could not be created.');\n }\n const sessionId = await this.createSession(caseId, input.responderId);\n return { caseId, sessionId };\n }\n\n private async createSession(caseId: string, responderId: string): Promise<string> {\n const now = new Date();\n const sessionKey = await this.entityService\n .withEntity(ASSESSMENT_MODULE, ASSESSMENT_SESSION)\n .data()\n .create({\n caseId,\n responderId,\n role: 'responder',\n answers: [],\n progressPercentage: 0,\n answeredQuestionsCount: 0,\n lastSavedAt: now,\n startedAt: now,\n statusId: 'not-started',\n } as never);\n const sessionId = this.resolveCreatedId(sessionKey);\n if (!sessionId) {\n throw new Error('Checklist session could not be created.');\n }\n return sessionId;\n }\n\n private async deleteEmptySession(sessionId: string): Promise<void> {\n const session = this.asRecord(\n await this.entityService.withEntity(ASSESSMENT_MODULE, ASSESSMENT_SESSION).data().byKey(sessionId),\n );\n if (storedAnswersHaveContent(session?.['answers'])) {\n return;\n }\n await this.entityService.withEntity(ASSESSMENT_MODULE, ASSESSMENT_SESSION).data().delete(sessionId);\n }\n\n private async deleteEmptyOccurrence(ids: ChecklistOccurrenceIds): Promise<void> {\n const session = this.asRecord(\n await this.entityService.withEntity(ASSESSMENT_MODULE, ASSESSMENT_SESSION).data().byKey(ids.sessionId),\n );\n if (storedAnswersHaveContent(session?.['answers'])) {\n return;\n }\n await this.entityService.withEntity(ASSESSMENT_MODULE, ASSESSMENT_SESSION).data().delete(ids.sessionId);\n await this.entityService.withEntity(ASSESSMENT_MODULE, ASSESSMENT_CASE).data().delete(ids.caseId);\n }\n\n //#endregion\n\n //#region ---- Claim & persistence ----\n\n private async tryClaim(instanceId: string, claim: ChecklistClaim): Promise<boolean> {\n const instance = await this.readWorkflowInstance(instanceId);\n const current = this.readClaim(this.readProperties(instance));\n if (\n current &&\n current.token !== claim.token &&\n current.workOrderId === claim.workOrderId &&\n current.questionnaireId === claim.questionnaireId &&\n !this.isClaimStale(current)\n ) {\n return false;\n }\n await this.patchProperties(instanceId, { [AXM_INTERVAL_CHECKLIST_CLAIM]: claim });\n const reread = this.readClaim(this.readProperties(await this.readWorkflowInstance(instanceId)));\n return reread?.token === claim.token;\n }\n\n private async clearClaim(instanceId: string, token: string): Promise<void> {\n const instance = await this.readWorkflowInstance(instanceId);\n const current = this.readClaim(this.readProperties(instance));\n if (!current || current.token !== token) {\n return;\n }\n await this.patchProperties(instanceId, { [AXM_INTERVAL_CHECKLIST_CLAIM]: null });\n }\n\n private async waitForOccurrence(\n instanceId: string,\n workOrderId: string,\n questionnaireId: string,\n ): Promise<ChecklistOccurrenceIds | null> {\n for (let attempt = 0; attempt < 20; attempt += 1) {\n const found = await this.findExistingOccurrence(instanceId, workOrderId, questionnaireId);\n if (found) {\n return found;\n }\n const claim = this.readClaim(this.readProperties(await this.readWorkflowInstance(instanceId)));\n if (!claim || this.isClaimStale(claim)) {\n return null;\n }\n await this.delay(250);\n }\n return null;\n }\n\n private isClaimStale(claim: ChecklistClaim): boolean {\n const at = Date.parse(claim.at);\n return Number.isNaN(at) || Date.now() - at > CLAIM_TTL_MS;\n }\n\n private async persistOccurrenceIds(\n instanceId: string,\n bookmarkId: string,\n workOrderId: string,\n questionnaireId: string,\n ids: ChecklistOccurrenceIds,\n ): Promise<void> {\n await this.patchProperties(\n instanceId,\n {\n [AXM_INTERVAL_CHECKLIST_CASE_ID]: ids.caseId,\n [AXM_INTERVAL_CHECKLIST_SESSION_ID]: ids.sessionId,\n [AXM_INTERVAL_CHECKLIST_QUESTIONNAIRE_ID]: questionnaireId,\n },\n (bookmark) => {\n const payload = this.readBookmarkPayload(bookmark);\n if (!payload) {\n return bookmark;\n }\n const context = this.asRecord(payload['context']) ?? {};\n if (bookmarkId && this.resolveText(bookmark['id']) !== bookmarkId) {\n return bookmark;\n }\n if (!bookmarkId && this.resolveText(context['workOrderId']) !== workOrderId) {\n return bookmark;\n }\n payload['context'] = {\n ...context,\n workOrderId,\n checklist: questionnaireId,\n [AXM_INTERVAL_CHECKLIST_CASE_ID]: ids.caseId,\n [AXM_INTERVAL_CHECKLIST_SESSION_ID]: ids.sessionId,\n [AXM_INTERVAL_CHECKLIST_QUESTIONNAIRE_ID]: questionnaireId,\n };\n return { ...bookmark, payload, payloadJson: JSON.stringify(payload) };\n },\n );\n }\n\n private async patchProperties(\n instanceId: string,\n propertyPatch: Record<string, unknown>,\n mapBookmark?: (bookmark: Record<string, unknown>) => Record<string, unknown>,\n ): Promise<void> {\n const instance = await this.readWorkflowInstance(instanceId);\n if (!instance) {\n throw new Error('Workflow instance not found.');\n }\n const workflowInstance = this.asRecord(instance['workflowInstance']);\n if (!workflowInstance) {\n throw new Error('Workflow instance payload is missing.');\n }\n const workflowState = { ...(this.asRecord(workflowInstance['workflowState']) ?? {}) };\n const properties = { ...(this.asRecord(workflowState['properties']) ?? {}), ...propertyPatch };\n workflowState['properties'] = properties;\n const bookmarks = this.readBookmarks(instance).map((bookmark) => (mapBookmark ? mapBookmark(bookmark) : bookmark));\n await this.entityService\n .withEntity('WorkflowManagement', 'WorkflowInstance')\n .data()\n .update(instanceId, {\n workflowInstance: {\n ...workflowInstance,\n workflowState,\n bookmarks,\n },\n } as never);\n }\n\n //#endregion\n\n //#region ---- Helpers ----\n\n /**\n * Work-order status wins. A completed card bookmark is used when the stored status is not a plain string.\n */\n private resolveViewerMode(\n workOrder: AXMMaintenanceManagementWorkOrderEntityModel,\n instance: Record<string, unknown>,\n bookmarkId: string,\n workOrderId: string,\n ): 'editable' | 'readonly' | 'unavailable' {\n const record = workOrder as unknown as Record<string, unknown>;\n const fromWorkOrder = resolveIntervalChecklistViewerMode(record['statusId'] ?? record['status']);\n if (fromWorkOrder !== 'unavailable') {\n return fromWorkOrder;\n }\n return resolveIntervalChecklistViewerMode(this.readCardStatus(instance, bookmarkId, workOrderId));\n }\n\n private readCardStatus(\n instance: Record<string, unknown>,\n bookmarkId: string,\n workOrderId: string,\n ): unknown {\n for (const bookmark of this.readBookmarks(instance)) {\n if (bookmark['isConsumed'] === true || bookmark['consumed'] === true) {\n continue;\n }\n const payload = this.readBookmarkPayload(bookmark);\n const context = this.asRecord(payload?.['context']);\n const bookmarkMatches = bookmarkId\n ? this.resolveText(bookmark['id']) === bookmarkId\n : this.resolveText(context?.['workOrderId']) === workOrderId;\n if (!bookmarkMatches) {\n continue;\n }\n return context?.['statusId'];\n }\n return undefined;\n }\n\n private async loadWorkOrder(workOrderId: string): Promise<AXMMaintenanceManagementWorkOrderEntityModel | null> {\n const loaded = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.workOrder.name)\n .data()\n .byKey(workOrderId);\n return (loaded as AXMMaintenanceManagementWorkOrderEntityModel | null) ?? null;\n }\n\n private async resolveAssigneeUserId(personId: string): Promise<string> {\n if (!personId) {\n return '';\n }\n const page = await this.entityService\n .withEntity('HumanCapitalManagement', 'Employee')\n .data()\n .query({\n skip: 0,\n take: 1,\n filter: {\n logic: 'and',\n filters: [{ field: 'personId', operator: { type: 'equal' }, value: personId }],\n },\n } as never);\n const employee = defaultTo(get(page, 'items[0]'), null) as { userId?: string } | null;\n return this.resolveText(employee?.userId);\n }\n\n private async readWorkflowInstance(instanceId: string): Promise<Record<string, unknown> | null> {\n const loaded = await this.entityService.withEntity('WorkflowManagement', 'WorkflowInstance').data().byKey(instanceId);\n return this.asRecord(loaded);\n }\n\n private readProperties(instance: Record<string, unknown> | null): Record<string, unknown> {\n const workflowInstance = this.asRecord(instance?.['workflowInstance']);\n const workflowState = this.asRecord(workflowInstance?.['workflowState']);\n return this.asRecord(workflowState?.['properties']) ?? {};\n }\n\n private readClaim(properties: Record<string, unknown>): ChecklistClaim | null {\n const claim = this.asRecord(properties[AXM_INTERVAL_CHECKLIST_CLAIM]);\n const token = this.resolveText(claim?.['token']);\n const at = this.resolveText(claim?.['at']);\n const workOrderId = this.resolveText(claim?.['workOrderId']);\n const questionnaireId = this.resolveText(claim?.['questionnaireId']);\n if (!claim || !token || !at || !workOrderId || !questionnaireId) {\n return null;\n }\n return { token, at, workOrderId, questionnaireId };\n }\n\n private readBookmarks(instance: Record<string, unknown> | null): Record<string, unknown>[] {\n const workflowInstance = this.asRecord(instance?.['workflowInstance']);\n const bookmarks = workflowInstance?.['bookmarks'];\n if (!Array.isArray(bookmarks)) {\n return [];\n }\n return bookmarks\n .map((bookmark) => this.asRecord(bookmark))\n .filter((bookmark): bookmark is Record<string, unknown> => !!bookmark);\n }\n\n private readBookmarkPayload(bookmark: Record<string, unknown>): Record<string, unknown> | null {\n const payload = this.asRecord(bookmark['payload']);\n if (payload) {\n return { ...payload };\n }\n const payloadJson = bookmark['payloadJson'];\n if (typeof payloadJson !== 'string' || !payloadJson.trim()) {\n return null;\n }\n try {\n return this.asRecord(JSON.parse(payloadJson));\n } catch {\n return null;\n }\n }\n\n private resolveCreatedId(created: unknown): string {\n if (typeof created === 'string') {\n return created.trim();\n }\n return this.resolveText(get(created, 'id'));\n }\n\n private resolveText(value: unknown): string {\n if (!isString(value)) {\n return '';\n }\n return value.trim();\n }\n\n private asRecord(value: unknown): Record<string, unknown> | null {\n if (value != null && typeof value === 'object' && !Array.isArray(value)) {\n return value as Record<string, unknown>;\n }\n return null;\n }\n\n private delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n private async failKey(key: string): AXPCommandExecuteResultPromise<void> {\n const text = await this.translationService.translateAsync(key);\n return this.fail(text);\n }\n\n private async fail(text: string): AXPCommandExecuteResultPromise<void> {\n this.toastService.show({\n color: 'warning',\n title: await this.translationService.translateAsync('@general:messages.generic.warning.title'),\n content: text,\n closeButton: true,\n timeOut: 8000,\n });\n return { success: false, message: { text } };\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}