@acorex-platform/module-human-capital-management-client 0.0.32 → 0.0.37

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 (67) hide show
  1. package/fesm2022/{acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-DmqiCOti.mjs → acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-YulnMbkF.mjs} +8 -8
  2. package/fesm2022/{acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-DmqiCOti.mjs.map → acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-YulnMbkF.mjs.map} +1 -1
  3. package/fesm2022/acorex-platform-module-human-capital-management-client-approve-leave-request.command-Om_S0k9L.mjs.map +1 -1
  4. package/fesm2022/acorex-platform-module-human-capital-management-client-assign-position-assignment.command-2iHIogn6.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-module-human-capital-management-client-cancel-leave-request.command-DGriRFiQ.mjs.map +1 -1
  6. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-employee.mjs +559 -0
  7. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-employee.mjs.map +1 -0
  8. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-employment-type.mjs +182 -0
  9. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-employment-type.mjs.map +1 -0
  10. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-leave-request.mjs +374 -0
  11. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-leave-request.mjs.map +1 -0
  12. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-leave-type.mjs +182 -0
  13. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-leave-type.mjs.map +1 -0
  14. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-lifecycle-event-type.mjs +189 -0
  15. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-lifecycle-event-type.mjs.map +1 -0
  16. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-lifecycle-event.mjs +307 -0
  17. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-lifecycle-event.mjs.map +1 -0
  18. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-position-assignment.mjs +377 -0
  19. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entities-position-assignment.mjs.map +1 -0
  20. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-acorex-platform-module-human-capital-management-client-contracts-entity-catalog-YSqg0InM.mjs +109 -0
  21. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-acorex-platform-module-human-capital-management-client-contracts-entity-catalog-YSqg0InM.mjs.map +1 -0
  22. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-catalog-scope.keys-D8MsCaj5.mjs +5 -0
  23. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-catalog-scope.keys-D8MsCaj5.mjs.map +1 -0
  24. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-commands.keys-B5rEwAkf.mjs +19 -0
  25. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-commands.keys-B5rEwAkf.mjs.map +1 -0
  26. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-employee.entity-DkVdcMBo.mjs +459 -0
  27. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-employee.entity-DkVdcMBo.mjs.map +1 -0
  28. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-employment-type.entity-DtYMx-Fh.mjs +98 -0
  29. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-employment-type.entity-DtYMx-Fh.mjs.map +1 -0
  30. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-leave-request.entity-0NDmiYk0.mjs +290 -0
  31. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-leave-request.entity-0NDmiYk0.mjs.map +1 -0
  32. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-leave-type.entity-DWkv-dnA.mjs +96 -0
  33. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-leave-type.entity-DWkv-dnA.mjs.map +1 -0
  34. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-lifecycle-event-type.entity-CDfVNrc0.mjs +103 -0
  35. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-lifecycle-event-type.entity-CDfVNrc0.mjs.map +1 -0
  36. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-lifecycle-event.entity-Dp-_0o-1.mjs +223 -0
  37. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-lifecycle-event.entity-Dp-_0o-1.mjs.map +1 -0
  38. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-position-assignment.entity-rQe7-CDe.mjs +277 -0
  39. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog-position-assignment.entity-rQe7-CDe.mjs.map +1 -0
  40. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog.mjs +2 -0
  41. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts-entity-catalog.mjs.map +1 -0
  42. package/fesm2022/acorex-platform-module-human-capital-management-client-contracts.mjs.map +1 -1
  43. package/fesm2022/{acorex-platform-module-human-capital-management-client-edit-personal-info.command-CRUNursl.mjs → acorex-platform-module-human-capital-management-client-edit-personal-info.command-6VRu0_a1.mjs} +2 -2
  44. package/fesm2022/{acorex-platform-module-human-capital-management-client-edit-personal-info.command-CRUNursl.mjs.map → acorex-platform-module-human-capital-management-client-edit-personal-info.command-6VRu0_a1.mjs.map} +1 -1
  45. package/fesm2022/{acorex-platform-module-human-capital-management-client-edit-signature.command-Bb3mxwBE.mjs → acorex-platform-module-human-capital-management-client-edit-signature.command-BT_kCp6U.mjs} +2 -2
  46. package/fesm2022/{acorex-platform-module-human-capital-management-client-edit-signature.command-Bb3mxwBE.mjs.map → acorex-platform-module-human-capital-management-client-edit-signature.command-BT_kCp6U.mjs.map} +1 -1
  47. package/fesm2022/acorex-platform-module-human-capital-management-client-local-entities.mjs +35 -0
  48. package/fesm2022/acorex-platform-module-human-capital-management-client-local-entities.mjs.map +1 -0
  49. package/fesm2022/{acorex-platform-module-human-capital-management-client-profile-documents-panel.component-L-Wq--5e.mjs → acorex-platform-module-human-capital-management-client-profile-documents-panel.component-OTrhvB6P.mjs} +2 -2
  50. package/fesm2022/{acorex-platform-module-human-capital-management-client-profile-documents-panel.component-L-Wq--5e.mjs.map → acorex-platform-module-human-capital-management-client-profile-documents-panel.component-OTrhvB6P.mjs.map} +1 -1
  51. package/fesm2022/{acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-n9sEfOE2.mjs → acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-Cwtz43uK.mjs} +3 -3
  52. package/fesm2022/{acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-n9sEfOE2.mjs.map → acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-Cwtz43uK.mjs.map} +1 -1
  53. package/fesm2022/acorex-platform-module-human-capital-management-client-reject-leave-request.command-O9gipd8g.mjs.map +1 -1
  54. package/fesm2022/acorex-platform-module-human-capital-management-client-revoke-position-assignment.command-DmVlDQ8_.mjs.map +1 -1
  55. package/fesm2022/acorex-platform-module-human-capital-management-client-start-leave-request-flow.command-BcyCI_vr.mjs.map +1 -1
  56. package/fesm2022/acorex-platform-module-human-capital-management-client-start-lifecycle-event-flow.command-Cp_7ZyWU.mjs.map +1 -1
  57. package/fesm2022/acorex-platform-module-human-capital-management-client.mjs +1 -1
  58. package/package.json +38 -2
  59. package/types/acorex-platform-module-human-capital-management-client-contracts-entities-employee.d.ts +5 -0
  60. package/types/acorex-platform-module-human-capital-management-client-contracts-entities-employment-type.d.ts +5 -0
  61. package/types/acorex-platform-module-human-capital-management-client-contracts-entities-leave-request.d.ts +5 -0
  62. package/types/acorex-platform-module-human-capital-management-client-contracts-entities-leave-type.d.ts +5 -0
  63. package/types/acorex-platform-module-human-capital-management-client-contracts-entities-lifecycle-event-type.d.ts +5 -0
  64. package/types/acorex-platform-module-human-capital-management-client-contracts-entities-lifecycle-event.d.ts +5 -0
  65. package/types/acorex-platform-module-human-capital-management-client-contracts-entities-position-assignment.d.ts +5 -0
  66. package/types/acorex-platform-module-human-capital-management-client-contracts-entity-catalog.d.ts +10 -0
  67. package/types/acorex-platform-module-human-capital-management-client-local-entities.d.ts +12 -0
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-human-capital-management-client-contracts.mjs","sources":["../../../../libs/modules/human-capital-management/contracts/src/catalog-scope.keys.ts","../../../../libs/modules/human-capital-management/contracts/src/commands.keys.ts","../../../../libs/modules/human-capital-management/contracts/src/features.keys.ts","../../../../libs/modules/human-capital-management/contracts/src/leave-request-status.constants.ts","../../../../libs/modules/human-capital-management/contracts/src/lifecycle-event-status.constants.ts","../../../../libs/modules/human-capital-management/contracts/src/menu.keys.ts","../../../../libs/modules/human-capital-management/contracts/src/permission.keys.ts","../../../../libs/modules/human-capital-management/contracts/src/position-assignment.status.ts","../../../../libs/modules/human-capital-management/contracts/src/profile-document-drive.types.ts","../../../../libs/modules/human-capital-management/contracts/src/runtime.keys.ts","../../../../libs/modules/human-capital-management/contracts/src/root-config.ts","../../../../libs/modules/human-capital-management/contracts/src/entities/lifecycle-event/lifecycle-event.types.ts","../../../../libs/modules/human-capital-management/contracts/src/entities/lifecycle-event-type/lifecycle-event-type.types.ts","../../../../libs/modules/human-capital-management/contracts/src/index.ts","../../../../libs/modules/human-capital-management/contracts/src/acorex-platform-module-human-capital-management-client-contracts.ts"],"sourcesContent":["/** HR catalog scope for questionnaires, question bank items, and workflow definitions. */\nexport const HCM_CATALOG_SCOPE_HR = 'human-capital-management.hr';\n","export const AXPHumanCapitalManagementCommandKeys = {\n PositionAssignment: {\n Assign: 'HumanCapitalManagement.PositionAssignment:Assign',\n Revoke: 'HumanCapitalManagement.PositionAssignment:Revoke',\n },\n LifecycleEvent: {\n StartFlow: 'HumanCapitalManagement.LifecycleEvent:StartFlow',\n },\n LeaveRequest: {\n StartFlow: 'HumanCapitalManagement.LeaveRequest:StartFlow',\n },\n Profile: {\n EditPersonalInfo: 'HumanCapitalManagement.Profile:EditPersonalInfo',\n EditSignature: 'HumanCapitalManagement.Profile:EditSignature',\n },\n} as const;\n","export const AXPHumanCapitalManagementFeatureKeys = {\n EmployeeManagement: 'HumanCapitalManagement:Feature:Employee.Management',\n LeaveManagement: 'HumanCapitalManagement:Feature:Leave.Management',\n LifecycleManagement: 'HumanCapitalManagement:Feature:Lifecycle.Management',\n} as const;\n\n","import { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\n\n//#region ---- Leave request open statuses ----\n\n/** Statuses that block starting another run for the same employee and leave type. */\nexport const AXMLeaveRequestOpenStatusIds = [AXPSystemStatusType.WaitingApproval] as const;\n\n//#endregion\n","import { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\n\n//#region ---- Lifecycle event open statuses ----\n\n/** Statuses that block starting another run for the same employee and event type. */\nexport const AXMLifecycleEventOpenStatusIds = [\n AXPSystemStatusType.InProgress,\n AXPSystemStatusType.WaitingSignOff,\n] as const;\n\n//#endregion\n","export const AXPHumanCapitalManagementMenuKeys = {\n Root: 'HumanCapitalManagement:Menu',\n Employees: 'HumanCapitalManagement:Menu:Employees',\n EmploymentTypes: 'HumanCapitalManagement:Menu:EmploymentTypes',\n Divider1: 'HumanCapitalManagement:Menu:Divider1',\n PositionAssignments: 'HumanCapitalManagement:Menu:PositionAssignments',\n Divider2: 'HumanCapitalManagement:Menu:Divider2',\n LeaveTypes: 'HumanCapitalManagement:Menu:LeaveTypes',\n LeaveRequests: 'HumanCapitalManagement:Menu:LeaveRequests',\n LeaveRequestBoard: 'HumanCapitalManagement:Menu:LeaveRequestBoard',\n LifecycleEventTypes: 'HumanCapitalManagement:Menu:LifecycleEventTypes',\n} as const;\n\n","/**\n * People & Organization capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPPeopleOrganizationPermissionKeys = {\n Access: 'PeopleOrganization:Permission:Access',\n ViewOrganization: 'PeopleOrganization:Permission:ViewOrganization',\n MaintainOrganization: 'PeopleOrganization:Permission:MaintainOrganization',\n MaintainTeams: 'PeopleOrganization:Permission:MaintainTeams',\n MaintainEmployees: 'PeopleOrganization:Permission:MaintainEmployees',\n ManageEmployeeActions: 'PeopleOrganization:Permission:ManageEmployeeActions',\n MaintainPersons: 'PeopleOrganization:Permission:MaintainPersons',\n MaintainAttendance: 'PeopleOrganization:Permission:MaintainAttendance',\n ManageAttendanceActions: 'PeopleOrganization:Permission:ManageAttendanceActions',\n DesignJobs: 'PeopleOrganization:Permission:DesignJobs',\n Setup: 'PeopleOrganization:Permission:Setup',\n} as const;\n","import { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\n\n//#region ---- Position assignment status names ----\n\nexport const AXM_POSITION_ASSIGNMENT_STATUS = {\n active: AXPSystemStatusType.Active,\n scheduled: 'scheduled',\n expired: 'expired',\n revoked: 'revoked',\n} as const;\n\nexport type AXMPositionAssignmentStatusId =\n (typeof AXM_POSITION_ASSIGNMENT_STATUS)[keyof typeof AXM_POSITION_ASSIGNMENT_STATUS];\n\n/**\n * Statuses that still occupy the employee / manager seat for overlap and revoke resolution.\n * Keep in sync with position-assignment duplicate-seat validation (mock and future API rules).\n */\nexport const AXM_POSITION_ASSIGNMENT_OVERLAPPING_STATUS_IDS: readonly AXMPositionAssignmentStatusId[] = [\n AXM_POSITION_ASSIGNMENT_STATUS.active,\n AXM_POSITION_ASSIGNMENT_STATUS.scheduled,\n];\n\n//#endregion\n","//#region ---- Profile document drive context ----\n\n/** Result of resolving the current session user's employee EDMS folder ref. */\nexport interface AXMHcmProfileDocumentDriveContext {\n employeeId: string;\n /** e.g. `HumanCapitalManagement.Employee` */\n refType: string;\n /** Employee record id used as folder `refId`. */\n refId: string;\n /** Allowed document type names for create/upload (matches Employee documents plugin). */\n documentTypeNames: string[];\n}\n\n//#endregion\n","//#region ---- Human capital management runtime keys ----\n\nexport const AXPHumanCapitalManagementQueryKeys = {\n Profile: {\n GetMyDocumentDriveContext: 'HumanCapitalManagement:Profile:GetMyDocumentDriveContext',\n },\n} as const;\n\n//#endregion\n","const config = {\n i18n: 'human-capital-management',\n module: 'HumanCapitalManagement',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'human-capital-management',\n name: config.module,\n title: '@human-capital-management:module.title',\n icon: 'fa-light fa-users',\n },\n entities: {\n employee: {\n name: 'Employee',\n source: `${config.module}.Employee`,\n title: '@human-capital-management:employees.entities.employee.title',\n titlePlural: '@human-capital-management:employees.entities.employee.plural',\n icon: 'fa-light fa-address-card',\n },\n employmentType: {\n name: 'EmploymentType',\n source: `${config.module}.EmploymentType`,\n title: '@human-capital-management:employment-types.entities.employment-type.title',\n titlePlural: '@human-capital-management:employment-types.entities.employment-type.plural',\n icon: 'fa-light fa-file-signature',\n },\n positionAssignment: {\n name: 'PositionAssignment',\n source: `${config.module}.PositionAssignment`,\n title: '@human-capital-management:position-assignments.entities.position-assignment.title',\n titlePlural: '@human-capital-management:position-assignments.entities.position-assignment.plural',\n icon: 'fa-light fa-user-tie-hair',\n },\n leaveType: {\n name: 'LeaveType',\n source: `${config.module}.LeaveType`,\n title: '@human-capital-management:leave-types.entities.leave-type.title',\n titlePlural: '@human-capital-management:leave-types.entities.leave-type.plural',\n icon: 'fa-light fa-calendar-days',\n },\n leaveRequest: {\n name: 'LeaveRequest',\n source: `${config.module}.LeaveRequest`,\n title: '@human-capital-management:leave-requests.entities.leave-request.title',\n titlePlural: '@human-capital-management:leave-requests.entities.leave-request.plural',\n icon: 'fa-light fa-plane-departure',\n },\n lifecycleEventType: {\n name: 'LifecycleEventType',\n source: `${config.module}.LifecycleEventType`,\n title: '@human-capital-management:lifecycle-event-types.entities.lifecycle-event-type.title',\n titlePlural: '@human-capital-management:lifecycle-event-types.entities.lifecycle-event-type.plural',\n icon: 'fa-light fa-diagram-next',\n },\n lifecycleEvent: {\n name: 'LifecycleEvent',\n source: `${config.module}.LifecycleEvent`,\n title: '@human-capital-management:lifecycle-events.entities.lifecycle-event.title',\n titlePlural: '@human-capital-management:lifecycle-events.entities.lifecycle-event.plural',\n icon: 'fa-light fa-clipboard-list-check',\n },\n },\n pages: {\n appointmentBoard: {\n path: 'Boards/ResourceAppointment',\n title: '@human-capital-management:leave-requests.menus.appointment-board.title',\n icon: 'fa-light fa-calendar-lines',\n },\n },\n queries: {\n dashboard: {\n employeesKpi: `${config.module}:Dashboard:EmployeesKpi`,\n },\n reports: {\n getHeadcountByDepartment: `${config.module}:Reports:GetHeadcountByDepartment`,\n getLeaveUsageByType: `${config.module}:Reports:GetLeaveUsageByType`,\n },\n },\n} as const;\n","import { AXPMultiLanguageString, AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n//#region ---- Imports ----\nimport { AXMHumanCapitalManagementEmployeeEntityModel } from '../employee/employee.types';\n\n//#endregion\n\n//#region ---- Lifecycle event ----\n\nexport type AXMHumanCapitalManagementLifecycleEventStatus =\n | AXPSystemStatusType.InProgress\n | AXPSystemStatusType.WaitingSignOff\n | AXPSystemStatusType.Completed\n | AXPSystemStatusType.Cancelled;\n\n/**\n * One employee lifecycle event (onboarding, separation, …), driven by {@link AXMHumanCapitalManagementLifecycleEventTypeEntityModel}.\n */\nexport interface AXMHumanCapitalManagementLifecycleEventEntityModel extends AXPEntityModel<string> {\n employeeId: string;\n employee?: AXMHumanCapitalManagementEmployeeEntityModel;\n eventTypeId: string;\n eventType?: { id: string; title: AXPMultiLanguageString };\n /**\n * Platform user currently assigned the active workflow step (human task / cartable assignee).\n * Populate from workflow engine or middleware when tasks are created or claimed.\n */\n assignedToUserId?: string | null;\n assignedToUser?: { id: string; displayName?: string };\n effectiveDate?: Date;\n notes?: string;\n statusId?: AXMHumanCapitalManagementLifecycleEventStatus;\n status?: { id: AXMHumanCapitalManagementLifecycleEventStatus; title?: string };\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n//#region ---- Imports ----\n\nimport type { AXMMetaDataBuilderValue } from '@acorex-platform/module-data-management-client/contracts';\n//#endregion\n\n//#region ---- Lifecycle event type (reference) ----\n\n/** Workflow template binding and admin-configured default inputs for lifecycle event types. */\nexport interface AXMHumanCapitalManagementLifecycleEventTypeWorkflowConfig {\n workflowDefinitionId: string;\n workflowName: string;\n defaultInput?: Record<string, unknown>;\n}\n\n/**\n * Defines workflow defaults, questionnaire, and metadata schema for employee lifecycle events (onboarding, separation, etc.).\n */\nexport interface AXMHumanCapitalManagementLifecycleEventTypeEntityModel extends AXPEntityModel<string> {\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n /** Selected workflow and template-time input defaults (e.g. questionnaireId). */\n workflowConfig?: AXMHumanCapitalManagementLifecycleEventTypeWorkflowConfig | null;\n /** Font Awesome icon classes (e.g. `fa-light fa-user-plus`). */\n icon?: string;\n /** Meta-data-builder schema (`metaDataList`); drives dynamic fields on lifecycle events for this template. */\n metaDataList?: AXMMetaDataBuilderValue;\n}\n\n//#endregion\n","//#region ---- Contracts barrel ----\n\nexport * from './catalog-scope.keys';\nexport * from './commands.keys';\nexport * from './features.keys';\nexport * from './leave-request-status.constants';\nexport * from './lifecycle-event-status.constants';\nexport * from './menu.keys';\nexport * from './permission.keys';\nexport * from './position-assignment.status';\nexport * from './profile-document-drive.types';\nexport * from './runtime.keys';\n\nexport * from './root-config';\n\n//#endregion\n\nexport * from './entities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-human-capital-management-client-contracts.mjs","sources":["../../../../libs/modules/human-capital-management/contracts/src/catalog-scope.keys.ts","../../../../libs/modules/human-capital-management/contracts/src/commands.keys.ts","../../../../libs/modules/human-capital-management/contracts/src/features.keys.ts","../../../../libs/modules/human-capital-management/contracts/src/leave-request-status.constants.ts","../../../../libs/modules/human-capital-management/contracts/src/lifecycle-event-status.constants.ts","../../../../libs/modules/human-capital-management/contracts/src/menu.keys.ts","../../../../libs/modules/human-capital-management/contracts/src/permission.keys.ts","../../../../libs/modules/human-capital-management/contracts/src/position-assignment.status.ts","../../../../libs/modules/human-capital-management/contracts/src/profile-document-drive.types.ts","../../../../libs/modules/human-capital-management/contracts/src/runtime.keys.ts","../../../../libs/modules/human-capital-management/contracts/src/root-config.ts","../../../../libs/modules/human-capital-management/contracts/src/entities/lifecycle-event/lifecycle-event.types.ts","../../../../libs/modules/human-capital-management/contracts/src/entities/lifecycle-event-type/lifecycle-event-type.types.ts","../../../../libs/modules/human-capital-management/contracts/src/index.ts","../../../../libs/modules/human-capital-management/contracts/src/acorex-platform-module-human-capital-management-client-contracts.ts"],"sourcesContent":["/** HR catalog scope for questionnaires, question bank items, and workflow definitions. */\nexport const HCM_CATALOG_SCOPE_HR = 'human-capital-management.hr';\n","export const AXPHumanCapitalManagementCommandKeys = {\n PositionAssignment: {\n Assign: 'HumanCapitalManagement.PositionAssignment:Assign',\n Revoke: 'HumanCapitalManagement.PositionAssignment:Revoke',\n },\n LifecycleEvent: {\n StartFlow: 'HumanCapitalManagement.LifecycleEvent:StartFlow',\n },\n LeaveRequest: {\n StartFlow: 'HumanCapitalManagement.LeaveRequest:StartFlow',\n },\n Profile: {\n EditPersonalInfo: 'HumanCapitalManagement.Profile:EditPersonalInfo',\n EditSignature: 'HumanCapitalManagement.Profile:EditSignature',\n },\n} as const;\n","export const AXPHumanCapitalManagementFeatureKeys = {\n EmployeeManagement: 'HumanCapitalManagement:Feature:Employee.Management',\n LeaveManagement: 'HumanCapitalManagement:Feature:Leave.Management',\n LifecycleManagement: 'HumanCapitalManagement:Feature:Lifecycle.Management',\n} as const;\n\n","import { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\n\n//#region ---- Leave request open statuses ----\n\n/** Statuses that block starting another run for the same employee and leave type. */\nexport const AXMLeaveRequestOpenStatusIds = [AXPSystemStatusType.WaitingApproval] as const;\n\n//#endregion\n","import { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\n\n//#region ---- Lifecycle event open statuses ----\n\n/** Statuses that block starting another run for the same employee and event type. */\nexport const AXMLifecycleEventOpenStatusIds = [\n AXPSystemStatusType.InProgress,\n AXPSystemStatusType.WaitingSignOff,\n] as const;\n\n//#endregion\n","export const AXPHumanCapitalManagementMenuKeys = {\n Root: 'HumanCapitalManagement:Menu',\n Employees: 'HumanCapitalManagement:Menu:Employees',\n EmploymentTypes: 'HumanCapitalManagement:Menu:EmploymentTypes',\n Divider1: 'HumanCapitalManagement:Menu:Divider1',\n PositionAssignments: 'HumanCapitalManagement:Menu:PositionAssignments',\n Divider2: 'HumanCapitalManagement:Menu:Divider2',\n LeaveTypes: 'HumanCapitalManagement:Menu:LeaveTypes',\n LeaveRequests: 'HumanCapitalManagement:Menu:LeaveRequests',\n LeaveRequestBoard: 'HumanCapitalManagement:Menu:LeaveRequestBoard',\n LifecycleEventTypes: 'HumanCapitalManagement:Menu:LifecycleEventTypes',\n} as const;\n\n","/**\n * People & Organization capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPPeopleOrganizationPermissionKeys = {\n Access: 'PeopleOrganization:Permission:Access',\n ViewOrganization: 'PeopleOrganization:Permission:ViewOrganization',\n MaintainOrganization: 'PeopleOrganization:Permission:MaintainOrganization',\n MaintainTeams: 'PeopleOrganization:Permission:MaintainTeams',\n MaintainEmployees: 'PeopleOrganization:Permission:MaintainEmployees',\n ManageEmployeeActions: 'PeopleOrganization:Permission:ManageEmployeeActions',\n MaintainPersons: 'PeopleOrganization:Permission:MaintainPersons',\n MaintainAttendance: 'PeopleOrganization:Permission:MaintainAttendance',\n ManageAttendanceActions: 'PeopleOrganization:Permission:ManageAttendanceActions',\n DesignJobs: 'PeopleOrganization:Permission:DesignJobs',\n Setup: 'PeopleOrganization:Permission:Setup',\n} as const;\n","import { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\n\n//#region ---- Position assignment status names ----\n\nexport const AXM_POSITION_ASSIGNMENT_STATUS = {\n active: AXPSystemStatusType.Active,\n scheduled: 'scheduled',\n expired: 'expired',\n revoked: 'revoked',\n} as const;\n\nexport type AXMPositionAssignmentStatusId =\n (typeof AXM_POSITION_ASSIGNMENT_STATUS)[keyof typeof AXM_POSITION_ASSIGNMENT_STATUS];\n\n/**\n * Statuses that still occupy the employee / manager seat for overlap and revoke resolution.\n * Keep in sync with position-assignment duplicate-seat validation (mock and future API rules).\n */\nexport const AXM_POSITION_ASSIGNMENT_OVERLAPPING_STATUS_IDS: readonly AXMPositionAssignmentStatusId[] = [\n AXM_POSITION_ASSIGNMENT_STATUS.active,\n AXM_POSITION_ASSIGNMENT_STATUS.scheduled,\n];\n\n//#endregion\n","//#region ---- Profile document drive context ----\n\n/** Result of resolving the current session user's employee EDMS folder ref. */\nexport interface AXMHcmProfileDocumentDriveContext {\n employeeId: string;\n /** e.g. `HumanCapitalManagement.Employee` */\n refType: string;\n /** Employee record id used as folder `refId`. */\n refId: string;\n /** Allowed document type names for create/upload (matches Employee documents plugin). */\n documentTypeNames: string[];\n}\n\n//#endregion\n","//#region ---- Human capital management runtime keys ----\n\nexport const AXPHumanCapitalManagementQueryKeys = {\n Profile: {\n GetMyDocumentDriveContext: 'HumanCapitalManagement:Profile:GetMyDocumentDriveContext',\n },\n} as const;\n\n//#endregion\n","const config = {\n i18n: 'human-capital-management',\n module: 'HumanCapitalManagement',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'human-capital-management',\n name: config.module,\n title: '@human-capital-management:module.title',\n icon: 'fa-light fa-users',\n },\n entities: {\n employee: {\n name: 'Employee',\n source: `${config.module}.Employee`,\n title: '@human-capital-management:employees.entities.employee.title',\n titlePlural: '@human-capital-management:employees.entities.employee.plural',\n icon: 'fa-light fa-address-card',\n },\n employmentType: {\n name: 'EmploymentType',\n source: `${config.module}.EmploymentType`,\n title: '@human-capital-management:employment-types.entities.employment-type.title',\n titlePlural: '@human-capital-management:employment-types.entities.employment-type.plural',\n icon: 'fa-light fa-file-signature',\n },\n positionAssignment: {\n name: 'PositionAssignment',\n source: `${config.module}.PositionAssignment`,\n title: '@human-capital-management:position-assignments.entities.position-assignment.title',\n titlePlural: '@human-capital-management:position-assignments.entities.position-assignment.plural',\n icon: 'fa-light fa-user-tie-hair',\n },\n leaveType: {\n name: 'LeaveType',\n source: `${config.module}.LeaveType`,\n title: '@human-capital-management:leave-types.entities.leave-type.title',\n titlePlural: '@human-capital-management:leave-types.entities.leave-type.plural',\n icon: 'fa-light fa-calendar-days',\n },\n leaveRequest: {\n name: 'LeaveRequest',\n source: `${config.module}.LeaveRequest`,\n title: '@human-capital-management:leave-requests.entities.leave-request.title',\n titlePlural: '@human-capital-management:leave-requests.entities.leave-request.plural',\n icon: 'fa-light fa-plane-departure',\n },\n lifecycleEventType: {\n name: 'LifecycleEventType',\n source: `${config.module}.LifecycleEventType`,\n title: '@human-capital-management:lifecycle-event-types.entities.lifecycle-event-type.title',\n titlePlural: '@human-capital-management:lifecycle-event-types.entities.lifecycle-event-type.plural',\n icon: 'fa-light fa-diagram-next',\n },\n lifecycleEvent: {\n name: 'LifecycleEvent',\n source: `${config.module}.LifecycleEvent`,\n title: '@human-capital-management:lifecycle-events.entities.lifecycle-event.title',\n titlePlural: '@human-capital-management:lifecycle-events.entities.lifecycle-event.plural',\n icon: 'fa-light fa-clipboard-list-check',\n },\n },\n pages: {\n appointmentBoard: {\n path: 'Boards/ResourceAppointment',\n title: '@human-capital-management:leave-requests.menus.appointment-board.title',\n icon: 'fa-light fa-calendar-lines',\n },\n },\n queries: {\n dashboard: {\n employeesKpi: `${config.module}:Dashboard:EmployeesKpi`,\n },\n reports: {\n getHeadcountByDepartment: `${config.module}:Reports:GetHeadcountByDepartment`,\n getLeaveUsageByType: `${config.module}:Reports:GetLeaveUsageByType`,\n },\n },\n} as const;\n","import { AXPMultiLanguageString, AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n//#region ---- Imports ----\nimport { AXMHumanCapitalManagementEmployeeEntityModel } from '../employee/employee.types';\n\n//#endregion\n\n//#region ---- Lifecycle event ----\n\nexport type AXMHumanCapitalManagementLifecycleEventStatus =\n | AXPSystemStatusType.InProgress\n | AXPSystemStatusType.WaitingSignOff\n | AXPSystemStatusType.Completed\n | AXPSystemStatusType.Cancelled;\n\n/**\n * One employee lifecycle event (onboarding, separation, …), driven by {@link AXMHumanCapitalManagementLifecycleEventTypeEntityModel}.\n */\nexport interface AXMHumanCapitalManagementLifecycleEventEntityModel extends AXPEntityModel<string> {\n employeeId: string;\n employee?: AXMHumanCapitalManagementEmployeeEntityModel;\n eventTypeId: string;\n eventType?: { id: string; title: AXPMultiLanguageString };\n /**\n * Platform user currently assigned the active workflow step (human task / cartable assignee).\n * Populate from workflow engine or middleware when tasks are created or claimed.\n */\n assignedToUserId?: string | null;\n assignedToUser?: { id: string; displayName?: string };\n effectiveDate?: Date;\n notes?: string;\n statusId?: AXMHumanCapitalManagementLifecycleEventStatus;\n status?: { id: AXMHumanCapitalManagementLifecycleEventStatus; title?: string };\n}\n\n//#endregion\n","import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n//#region ---- Imports ----\n\nimport type { AXMMetaDataBuilderValue } from '@acorex-platform/module-data-management-client/contracts';\n//#endregion\n\n//#region ---- Lifecycle event type (reference) ----\n\n/** Workflow template binding and admin-configured default inputs for lifecycle event types. */\nexport interface AXMHumanCapitalManagementLifecycleEventTypeWorkflowConfig {\n workflowDefinitionId: string;\n workflowName: string;\n defaultInput?: Record<string, unknown>;\n}\n\n/**\n * Defines workflow defaults, questionnaire, and metadata schema for employee lifecycle events (onboarding, separation, etc.).\n */\nexport interface AXMHumanCapitalManagementLifecycleEventTypeEntityModel extends AXPEntityModel<string> {\n title: AXPMultiLanguageString;\n description?: AXPMultiLanguageString;\n /** Selected workflow and template-time input defaults (e.g. questionnaireId). */\n workflowConfig?: AXMHumanCapitalManagementLifecycleEventTypeWorkflowConfig | null;\n /** Font Awesome icon classes (e.g. `fa-light fa-user-plus`). */\n icon?: string;\n /** Meta-data-builder schema (`metaDataList`); drives dynamic fields on lifecycle events for this template. */\n metaDataList?: AXMMetaDataBuilderValue;\n}\n\n//#endregion\n","//#region ---- Contracts barrel ----\n\nexport * from './catalog-scope.keys';\nexport * from './commands.keys';\nexport * from './features.keys';\nexport * from './leave-request-status.constants';\nexport * from './lifecycle-event-status.constants';\nexport * from './menu.keys';\nexport * from './permission.keys';\nexport * from './position-assignment.status';\nexport * from './profile-document-drive.types';\nexport * from './runtime.keys';\n\nexport * from './root-config';\n\n//#endregion\n\nexport * from './entities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ import { AXPEntityService } from '@acorex-platform/framework-client/layout/entit
7
7
  import * as i0 from '@angular/core';
8
8
  import { inject, Injectable } from '@angular/core';
9
9
  import { trim, isNil, isEmpty, defaultTo, cloneDeep, isArray, isString, isObject } from 'lodash';
10
- import { A as AXMHcmProfileContextService } from './acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-DmqiCOti.mjs';
10
+ import { A as AXMHcmProfileContextService } from './acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-YulnMbkF.mjs';
11
11
  import { AXPUserProfileIdentityService } from '@acorex-platform/framework-client/auth';
12
12
  import { RootConfig } from '@acorex-platform/module-security-management-client/contracts';
13
13
 
@@ -330,4 +330,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
330
330
  }] });
331
331
 
332
332
  export { AXMHcmEditPersonalInfoCommand };
333
- //# sourceMappingURL=acorex-platform-module-human-capital-management-client-edit-personal-info.command-CRUNursl.mjs.map
333
+ //# sourceMappingURL=acorex-platform-module-human-capital-management-client-edit-personal-info.command-6VRu0_a1.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-human-capital-management-client-edit-personal-info.command-CRUNursl.mjs","sources":["../../../../libs/modules/human-capital-management/client/src/lib/features/profile-page/sync-user-from-person.service.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/profile-page/commands/edit-personal-info.command.ts"],"sourcesContent":["import { AXPUserProfileIdentityService } from '@acorex-platform/framework-client/auth';\nimport {RootConfig as SecurityManagementRootConfig} from '@acorex-platform/module-security-management-client/contracts';\nimport {AXMSecurityManagementUsersEntityModel} from '@acorex-platform/module-security-management-client/contracts';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { Injectable, inject } from '@angular/core';\nimport { trim } from 'lodash';\n\n//#region ---- Sync payload ----\n\nexport interface AXMHcmSyncUserFromPersonInput {\n firstName: string;\n lastName: string;\n}\n\n//#endregion\n\n//#region ---- Sync user from person service ----\n\n/**\n * Keeps the application user record and session display fields aligned with person identity updates.\n * Avatar sync is handled server-side by HCM avatar middleware when Person.image changes.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMHcmSyncUserFromPersonService {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly identityService = inject(AXPUserProfileIdentityService);\n\n //#endregion\n\n //#region ---- Public API ----\n\n async sync(userId: string, person: AXMHcmSyncUserFromPersonInput): Promise<void> {\n const displayName = trim(`${person.firstName} ${person.lastName}`);\n if (!displayName) {\n return;\n }\n\n const userData = this.entityService\n .withEntity(\n SecurityManagementRootConfig.module.name,\n SecurityManagementRootConfig.entities.users.name,\n )\n .data<string, AXMSecurityManagementUsersEntityModel>();\n\n await userData.update(userId, { displayName });\n\n await this.identityService.applySessionPatch({\n title: displayName,\n });\n }\n\n //#endregion\n}\n\n//#endregion\n","import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport type { AXPopupSizeType } from '@acorex/components/popup';\n\nimport {RootConfig as PersonCoreRootConfig} from '@acorex-platform/module-person-core-client/contracts'\nimport {AXMPersonCorePersonEntityModel} from '@acorex-platform/module-person-core-client/contracts';\n\nimport {\n AXPLayoutBuilderService,\n resolveLayoutBuilderDialogResult,\n type LookupBoxOptions,\n} from '@acorex-platform/framework-client/layout/builder';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { inject, Injectable } from '@angular/core';\nimport { cloneDeep, defaultTo, isArray, isEmpty, isNil, isObject, isString, trim } from 'lodash';\n\nimport { AXMHcmProfileContextService } from '../profile-context.service';\nimport { AXMHcmSyncUserFromPersonService } from '../sync-user-from-person.service';\n\n//#region ---- Repeater children (aligned with Person entity) ----\n\nconst PHONES_REPEATER_CHILDREN = [\n {\n type: AXPWidgetsList.Editors.ContactBox,\n mode: 'edit' as const,\n options: {\n type: 'phone',\n placeholder: '@person-core:persons.entities.person.fields.phone.placeholder',\n },\n },\n];\n\nconst EMAILS_REPEATER_CHILDREN = [\n {\n type: AXPWidgetsList.Editors.ContactBox,\n mode: 'edit' as const,\n options: {\n type: 'email',\n placeholder: '@person-core:persons.entities.person.fields.email.placeholder',\n },\n },\n];\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst PERSON_CORE_MODULE = PersonCoreRootConfig.module.name;\n\n//#endregion\n\n//#region ---- Form context ----\n\ninterface AXMHcmEditPersonalInfoFormContext {\n personTitleId?: string;\n personTitle?: { id: string; title?: unknown };\n firstName: string;\n lastName: string;\n birthDate?: string;\n genderId?: string;\n gender?: { id: string; title?: unknown };\n identityNumber?: string;\n maritalStatusId?: string;\n maritalStatus?: { id: string; title?: unknown };\n educationLevelId?: string;\n educationLevel?: { id: string; title?: unknown };\n phones: Array<{ value: string; label?: string }>;\n emails: Array<{ value: string; label?: string }>;\n}\n\n//#endregion\n\n//#region ---- Edit personal info command ----\n\n/** Opens a self-service dialog to update the linked person record and sync user display fields. */\n@Injectable({ providedIn: 'root' })\nexport class AXMHcmEditPersonalInfoCommand implements AXPCommand {\n //#region ---- Services & Dependencies ----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly entityService = inject(AXPEntityService);\n private readonly profileContextService = inject(AXMHcmProfileContextService);\n private readonly syncUserService = inject(AXMHcmSyncUserFromPersonService);\n private readonly toastService = inject(AXToastService);\n private readonly translateService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command ----\n\n async execute(): AXPCommandExecuteResultPromise<void> {\n const profileContext = await this.profileContextService.resolve();\n if (isNil(profileContext)) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync(\n '@human-capital-management:profile-page.commands.edit-personal-info.messages.no-employee',\n ),\n },\n };\n }\n\n const personData = this.entityService\n .withEntity(PersonCoreRootConfig.module.name, PersonCoreRootConfig.entities.person.name)\n .data<string, AXMPersonCorePersonEntityModel>();\n\n const person = await personData.byKey(profileContext.personId);\n if (isNil(person)) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync(\n '@human-capital-management:profile-page.commands.edit-personal-info.messages.person-not-found',\n ),\n },\n };\n }\n\n const dialogTitle = await this.translateService.translateAsync(\n '@human-capital-management:profile-page.commands.edit-personal-info.dialog.title',\n );\n\n const result = await this.layoutBuilder\n .create()\n .dialog<AXPRuntimeCommandResult<void> | null>((dialog) => {\n dialog\n .setTitle(dialogTitle)\n .setSize(this.resolveDialogSize())\n .setCloseButton(true)\n .setContext(this.buildFormContext(person))\n .content((layout) => {\n layout.mode('edit');\n layout.flex((flex) => {\n flex.setDirection('column').setGap('1rem');\n\n flex.fieldset((profileSection) => {\n profileSection\n .setLook('fieldset')\n .setTitle('@person-core:persons.entities.person.groups.profile')\n .setCols(12)\n .formField('@person-core:persons.entities.person.fields.person-title.title', (field) => {\n field.path('personTitleId');\n field.layout({ positions: { lg: { colSpan: 4, order: 0 } } });\n field.lookupBox(this.buildPersonCatalogLookupOptions('personTitle', 'personTitle'));\n })\n .formField('@general:terms.contact.first-name', (field) => {\n field.path('firstName');\n field.layout({ positions: { lg: { colSpan: 4, order: 1 } } });\n field.textBox({\n placeholder: '@general:terms.contact.first-name',\n validations: [{ rule: 'required' }],\n });\n })\n .formField('@general:terms.contact.last-name', (field) => {\n field.path('lastName');\n field.layout({ positions: { lg: { colSpan: 4, order: 2 } } });\n field.textBox({\n placeholder: '@general:terms.contact.last-name',\n validations: [{ rule: 'required' }],\n });\n })\n .formField('@person-core:persons.entities.person.fields.birth-date.title', (field) => {\n field.path('birthDate');\n field.layout({ positions: { lg: { colSpan: 4, order: 3 } } });\n field.dateTimeBox({ format: 'date' });\n })\n .formField('@person-core:persons.entities.person.fields.gender.title', (field) => {\n field.path('genderId');\n field.layout({ positions: { lg: { colSpan: 4, order: 4 } } });\n field.lookupBox(this.buildPersonCatalogLookupOptions('gender', 'gender'));\n })\n .formField('@person-core:persons.entities.person.fields.identity-number.title', (field) => {\n field.path('identityNumber');\n field.layout({ positions: { lg: { colSpan: 4, order: 5 } } });\n field.textBox({\n placeholder: '@person-core:persons.entities.person.fields.identity-number.placeholder',\n });\n })\n .formField('@person-core:persons.entities.person.fields.marital-status.title', (field) => {\n field.path('maritalStatusId');\n field.layout({ positions: { lg: { colSpan: 6, order: 6 } } });\n field.lookupBox(this.buildPersonCatalogLookupOptions('maritalStatus', 'maritalStatus'));\n })\n .formField('@person-core:persons.entities.person.fields.education-level.title', (field) => {\n field.path('educationLevelId');\n field.layout({ positions: { lg: { colSpan: 6, order: 7 } } });\n field.lookupBox(this.buildPersonCatalogLookupOptions('educationLevel', 'educationLevel'));\n });\n });\n\n flex.fieldset((phonesSection) => {\n phonesSection\n .setLook('fieldset')\n .setTitle('@person-core:persons.entities.person.groups.phones')\n .setCols(1)\n .formField('@person-core:persons.entities.person.groups.phones', (field) => {\n field.path('phones');\n field.setShowLabel(false);\n field.customWidget(AXPWidgetsList.Layouts.RepeaterLayout, {\n hasControls: true,\n children: PHONES_REPEATER_CHILDREN,\n });\n });\n });\n\n flex.fieldset((emailsSection) => {\n emailsSection\n .setLook('fieldset')\n .setTitle('@person-core:persons.entities.person.groups.emails')\n .setCols(1)\n .formField('@person-core:persons.entities.person.groups.emails', (field) => {\n field.path('emails');\n field.setShowLabel(false);\n field.customWidget(AXPWidgetsList.Layouts.RepeaterLayout, {\n hasControls: true,\n children: EMAILS_REPEATER_CHILDREN,\n });\n });\n });\n });\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title');\n actions.submit('@general:actions.save.title');\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n\n const form = dialogRef.context() as AXMHcmEditPersonalInfoFormContext;\n const firstName = trim(form.firstName);\n const lastName = trim(form.lastName);\n\n if (isEmpty(firstName) || isEmpty(lastName)) {\n throw new Error(\n '@human-capital-management:profile-page.commands.edit-personal-info.messages.required-name',\n );\n }\n\n dialogRef.setLoading(true);\n try {\n const phones = this.normalizeContactItems(form.phones);\n const emails = this.normalizeContactItems(form.emails);\n const identityNumber = trim(defaultTo(form.identityNumber, ''));\n\n await personData.update(profileContext.personId, {\n personTitleId: form.personTitleId,\n firstName,\n lastName,\n birthDate: form.birthDate,\n genderId: form.genderId,\n identityNumber: isEmpty(identityNumber) ? undefined : identityNumber,\n maritalStatusId: form.maritalStatusId,\n educationLevelId: form.educationLevelId,\n phones,\n emails,\n });\n\n await this.syncUserService.sync(profileContext.userId, {\n firstName,\n lastName,\n });\n\n const successTitle = await this.translateService.translateAsync(\n '@human-capital-management:profile-page.commands.edit-personal-info.messages.success',\n );\n this.toastService.show({ color: 'success', title: successTitle });\n return { success: true, kind: 'object', data: undefined };\n } finally {\n dialogRef.setLoading(false);\n }\n });\n })\n .show();\n\n const commandResult = resolveLayoutBuilderDialogResult<AXPRuntimeCommandResult<void>>(result);\n if (!commandResult) {\n return { success: true, kind: 'object', data: undefined };\n }\n\n return commandResult;\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n /** Desktop widths (including 1440) need lg for the 3-column profile grid; smaller viewports use xl. */\n private resolveDialogSize(): AXPopupSizeType {\n const width = window.innerWidth;\n if (width <= 1024) {\n return 'xl';\n }\n\n return 'lg';\n }\n\n private buildFormContext(person: AXMPersonCorePersonEntityModel): AXMHcmEditPersonalInfoFormContext {\n return {\n personTitleId: person.personTitleId,\n personTitle: cloneDeep(person.personTitle),\n firstName: defaultTo(person.firstName, ''),\n lastName: defaultTo(person.lastName, ''),\n birthDate: person.birthDate,\n genderId: person.genderId,\n gender: cloneDeep(person.gender),\n identityNumber: defaultTo(person.identityNumber, ''),\n maritalStatusId: person.maritalStatusId,\n maritalStatus: cloneDeep(person.maritalStatus),\n educationLevelId: person.educationLevelId,\n educationLevel: cloneDeep(person.educationLevel),\n phones: cloneDeep(defaultTo(person.phones, [])),\n emails: cloneDeep(defaultTo(person.emails, [])),\n };\n }\n\n /** Lookup options aligned with Person entity profile catalogs (quick-create enabled). */\n private buildPersonCatalogLookupOptions(\n entityKey: 'personTitle' | 'gender' | 'maritalStatus' | 'educationLevel',\n exposeTarget: 'personTitle' | 'gender' | 'maritalStatus' | 'educationLevel',\n ): Omit<LookupBoxOptions, 'path'> {\n return {\n entity: `${PERSON_CORE_MODULE}.${PersonCoreRootConfig.entities[entityKey].name}`,\n valueField: 'id',\n textField: 'title',\n look: 'select',\n allowCreate: 'quick',\n expose: [\n { source: 'id', target: `${exposeTarget}.id` },\n { source: 'title', target: `${exposeTarget}.title` },\n ],\n } as Omit<LookupBoxOptions, 'path'>;\n }\n\n /** Normalizes repeater contact rows to `{ value: string }[]`, matching Person entity storage. */\n private normalizeContactItems(items: unknown): Array<{ value: string }> {\n if (!isArray(items)) {\n return [];\n }\n\n return items\n .map((entry) => this.normalizeContactEntry(entry))\n .filter((entry) => !isEmpty(entry.value));\n }\n\n private normalizeContactEntry(entry: unknown): { value: string } {\n if (isString(entry)) {\n return { value: trim(entry) };\n }\n\n if (!isObject(entry) || isNil(entry)) {\n return { value: '' };\n }\n\n const record = entry as { value?: unknown; label?: string };\n const inner = record.value;\n\n if (isObject(inner) && !isNil(inner) && 'value' in inner) {\n const nested = inner as { value?: unknown };\n return { value: trim(String(nested.value ?? '')) };\n }\n\n return { value: trim(String(record.value ?? '')) };\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":["SecurityManagementRootConfig","PersonCoreRootConfig"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-human-capital-management-client-edit-personal-info.command-6VRu0_a1.mjs","sources":["../../../../libs/modules/human-capital-management/client/src/lib/features/profile-page/sync-user-from-person.service.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/profile-page/commands/edit-personal-info.command.ts"],"sourcesContent":["import { AXPUserProfileIdentityService } from '@acorex-platform/framework-client/auth';\nimport {RootConfig as SecurityManagementRootConfig} from '@acorex-platform/module-security-management-client/contracts';\nimport {AXMSecurityManagementUsersEntityModel} from '@acorex-platform/module-security-management-client/contracts';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { Injectable, inject } from '@angular/core';\nimport { trim } from 'lodash';\n\n//#region ---- Sync payload ----\n\nexport interface AXMHcmSyncUserFromPersonInput {\n firstName: string;\n lastName: string;\n}\n\n//#endregion\n\n//#region ---- Sync user from person service ----\n\n/**\n * Keeps the application user record and session display fields aligned with person identity updates.\n * Avatar sync is handled server-side by HCM avatar middleware when Person.image changes.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMHcmSyncUserFromPersonService {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly identityService = inject(AXPUserProfileIdentityService);\n\n //#endregion\n\n //#region ---- Public API ----\n\n async sync(userId: string, person: AXMHcmSyncUserFromPersonInput): Promise<void> {\n const displayName = trim(`${person.firstName} ${person.lastName}`);\n if (!displayName) {\n return;\n }\n\n const userData = this.entityService\n .withEntity(\n SecurityManagementRootConfig.module.name,\n SecurityManagementRootConfig.entities.users.name,\n )\n .data<string, AXMSecurityManagementUsersEntityModel>();\n\n await userData.update(userId, { displayName });\n\n await this.identityService.applySessionPatch({\n title: displayName,\n });\n }\n\n //#endregion\n}\n\n//#endregion\n","import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport type { AXPopupSizeType } from '@acorex/components/popup';\n\nimport {RootConfig as PersonCoreRootConfig} from '@acorex-platform/module-person-core-client/contracts'\nimport {AXMPersonCorePersonEntityModel} from '@acorex-platform/module-person-core-client/contracts';\n\nimport {\n AXPLayoutBuilderService,\n resolveLayoutBuilderDialogResult,\n type LookupBoxOptions,\n} from '@acorex-platform/framework-client/layout/builder';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { inject, Injectable } from '@angular/core';\nimport { cloneDeep, defaultTo, isArray, isEmpty, isNil, isObject, isString, trim } from 'lodash';\n\nimport { AXMHcmProfileContextService } from '../profile-context.service';\nimport { AXMHcmSyncUserFromPersonService } from '../sync-user-from-person.service';\n\n//#region ---- Repeater children (aligned with Person entity) ----\n\nconst PHONES_REPEATER_CHILDREN = [\n {\n type: AXPWidgetsList.Editors.ContactBox,\n mode: 'edit' as const,\n options: {\n type: 'phone',\n placeholder: '@person-core:persons.entities.person.fields.phone.placeholder',\n },\n },\n];\n\nconst EMAILS_REPEATER_CHILDREN = [\n {\n type: AXPWidgetsList.Editors.ContactBox,\n mode: 'edit' as const,\n options: {\n type: 'email',\n placeholder: '@person-core:persons.entities.person.fields.email.placeholder',\n },\n },\n];\n\n//#endregion\n\n//#region ---- Constants ----\n\nconst PERSON_CORE_MODULE = PersonCoreRootConfig.module.name;\n\n//#endregion\n\n//#region ---- Form context ----\n\ninterface AXMHcmEditPersonalInfoFormContext {\n personTitleId?: string;\n personTitle?: { id: string; title?: unknown };\n firstName: string;\n lastName: string;\n birthDate?: string;\n genderId?: string;\n gender?: { id: string; title?: unknown };\n identityNumber?: string;\n maritalStatusId?: string;\n maritalStatus?: { id: string; title?: unknown };\n educationLevelId?: string;\n educationLevel?: { id: string; title?: unknown };\n phones: Array<{ value: string; label?: string }>;\n emails: Array<{ value: string; label?: string }>;\n}\n\n//#endregion\n\n//#region ---- Edit personal info command ----\n\n/** Opens a self-service dialog to update the linked person record and sync user display fields. */\n@Injectable({ providedIn: 'root' })\nexport class AXMHcmEditPersonalInfoCommand implements AXPCommand {\n //#region ---- Services & Dependencies ----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly entityService = inject(AXPEntityService);\n private readonly profileContextService = inject(AXMHcmProfileContextService);\n private readonly syncUserService = inject(AXMHcmSyncUserFromPersonService);\n private readonly toastService = inject(AXToastService);\n private readonly translateService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command ----\n\n async execute(): AXPCommandExecuteResultPromise<void> {\n const profileContext = await this.profileContextService.resolve();\n if (isNil(profileContext)) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync(\n '@human-capital-management:profile-page.commands.edit-personal-info.messages.no-employee',\n ),\n },\n };\n }\n\n const personData = this.entityService\n .withEntity(PersonCoreRootConfig.module.name, PersonCoreRootConfig.entities.person.name)\n .data<string, AXMPersonCorePersonEntityModel>();\n\n const person = await personData.byKey(profileContext.personId);\n if (isNil(person)) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync(\n '@human-capital-management:profile-page.commands.edit-personal-info.messages.person-not-found',\n ),\n },\n };\n }\n\n const dialogTitle = await this.translateService.translateAsync(\n '@human-capital-management:profile-page.commands.edit-personal-info.dialog.title',\n );\n\n const result = await this.layoutBuilder\n .create()\n .dialog<AXPRuntimeCommandResult<void> | null>((dialog) => {\n dialog\n .setTitle(dialogTitle)\n .setSize(this.resolveDialogSize())\n .setCloseButton(true)\n .setContext(this.buildFormContext(person))\n .content((layout) => {\n layout.mode('edit');\n layout.flex((flex) => {\n flex.setDirection('column').setGap('1rem');\n\n flex.fieldset((profileSection) => {\n profileSection\n .setLook('fieldset')\n .setTitle('@person-core:persons.entities.person.groups.profile')\n .setCols(12)\n .formField('@person-core:persons.entities.person.fields.person-title.title', (field) => {\n field.path('personTitleId');\n field.layout({ positions: { lg: { colSpan: 4, order: 0 } } });\n field.lookupBox(this.buildPersonCatalogLookupOptions('personTitle', 'personTitle'));\n })\n .formField('@general:terms.contact.first-name', (field) => {\n field.path('firstName');\n field.layout({ positions: { lg: { colSpan: 4, order: 1 } } });\n field.textBox({\n placeholder: '@general:terms.contact.first-name',\n validations: [{ rule: 'required' }],\n });\n })\n .formField('@general:terms.contact.last-name', (field) => {\n field.path('lastName');\n field.layout({ positions: { lg: { colSpan: 4, order: 2 } } });\n field.textBox({\n placeholder: '@general:terms.contact.last-name',\n validations: [{ rule: 'required' }],\n });\n })\n .formField('@person-core:persons.entities.person.fields.birth-date.title', (field) => {\n field.path('birthDate');\n field.layout({ positions: { lg: { colSpan: 4, order: 3 } } });\n field.dateTimeBox({ format: 'date' });\n })\n .formField('@person-core:persons.entities.person.fields.gender.title', (field) => {\n field.path('genderId');\n field.layout({ positions: { lg: { colSpan: 4, order: 4 } } });\n field.lookupBox(this.buildPersonCatalogLookupOptions('gender', 'gender'));\n })\n .formField('@person-core:persons.entities.person.fields.identity-number.title', (field) => {\n field.path('identityNumber');\n field.layout({ positions: { lg: { colSpan: 4, order: 5 } } });\n field.textBox({\n placeholder: '@person-core:persons.entities.person.fields.identity-number.placeholder',\n });\n })\n .formField('@person-core:persons.entities.person.fields.marital-status.title', (field) => {\n field.path('maritalStatusId');\n field.layout({ positions: { lg: { colSpan: 6, order: 6 } } });\n field.lookupBox(this.buildPersonCatalogLookupOptions('maritalStatus', 'maritalStatus'));\n })\n .formField('@person-core:persons.entities.person.fields.education-level.title', (field) => {\n field.path('educationLevelId');\n field.layout({ positions: { lg: { colSpan: 6, order: 7 } } });\n field.lookupBox(this.buildPersonCatalogLookupOptions('educationLevel', 'educationLevel'));\n });\n });\n\n flex.fieldset((phonesSection) => {\n phonesSection\n .setLook('fieldset')\n .setTitle('@person-core:persons.entities.person.groups.phones')\n .setCols(1)\n .formField('@person-core:persons.entities.person.groups.phones', (field) => {\n field.path('phones');\n field.setShowLabel(false);\n field.customWidget(AXPWidgetsList.Layouts.RepeaterLayout, {\n hasControls: true,\n children: PHONES_REPEATER_CHILDREN,\n });\n });\n });\n\n flex.fieldset((emailsSection) => {\n emailsSection\n .setLook('fieldset')\n .setTitle('@person-core:persons.entities.person.groups.emails')\n .setCols(1)\n .formField('@person-core:persons.entities.person.groups.emails', (field) => {\n field.path('emails');\n field.setShowLabel(false);\n field.customWidget(AXPWidgetsList.Layouts.RepeaterLayout, {\n hasControls: true,\n children: EMAILS_REPEATER_CHILDREN,\n });\n });\n });\n });\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title');\n actions.submit('@general:actions.save.title');\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n\n const form = dialogRef.context() as AXMHcmEditPersonalInfoFormContext;\n const firstName = trim(form.firstName);\n const lastName = trim(form.lastName);\n\n if (isEmpty(firstName) || isEmpty(lastName)) {\n throw new Error(\n '@human-capital-management:profile-page.commands.edit-personal-info.messages.required-name',\n );\n }\n\n dialogRef.setLoading(true);\n try {\n const phones = this.normalizeContactItems(form.phones);\n const emails = this.normalizeContactItems(form.emails);\n const identityNumber = trim(defaultTo(form.identityNumber, ''));\n\n await personData.update(profileContext.personId, {\n personTitleId: form.personTitleId,\n firstName,\n lastName,\n birthDate: form.birthDate,\n genderId: form.genderId,\n identityNumber: isEmpty(identityNumber) ? undefined : identityNumber,\n maritalStatusId: form.maritalStatusId,\n educationLevelId: form.educationLevelId,\n phones,\n emails,\n });\n\n await this.syncUserService.sync(profileContext.userId, {\n firstName,\n lastName,\n });\n\n const successTitle = await this.translateService.translateAsync(\n '@human-capital-management:profile-page.commands.edit-personal-info.messages.success',\n );\n this.toastService.show({ color: 'success', title: successTitle });\n return { success: true, kind: 'object', data: undefined };\n } finally {\n dialogRef.setLoading(false);\n }\n });\n })\n .show();\n\n const commandResult = resolveLayoutBuilderDialogResult<AXPRuntimeCommandResult<void>>(result);\n if (!commandResult) {\n return { success: true, kind: 'object', data: undefined };\n }\n\n return commandResult;\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n /** Desktop widths (including 1440) need lg for the 3-column profile grid; smaller viewports use xl. */\n private resolveDialogSize(): AXPopupSizeType {\n const width = window.innerWidth;\n if (width <= 1024) {\n return 'xl';\n }\n\n return 'lg';\n }\n\n private buildFormContext(person: AXMPersonCorePersonEntityModel): AXMHcmEditPersonalInfoFormContext {\n return {\n personTitleId: person.personTitleId,\n personTitle: cloneDeep(person.personTitle),\n firstName: defaultTo(person.firstName, ''),\n lastName: defaultTo(person.lastName, ''),\n birthDate: person.birthDate,\n genderId: person.genderId,\n gender: cloneDeep(person.gender),\n identityNumber: defaultTo(person.identityNumber, ''),\n maritalStatusId: person.maritalStatusId,\n maritalStatus: cloneDeep(person.maritalStatus),\n educationLevelId: person.educationLevelId,\n educationLevel: cloneDeep(person.educationLevel),\n phones: cloneDeep(defaultTo(person.phones, [])),\n emails: cloneDeep(defaultTo(person.emails, [])),\n };\n }\n\n /** Lookup options aligned with Person entity profile catalogs (quick-create enabled). */\n private buildPersonCatalogLookupOptions(\n entityKey: 'personTitle' | 'gender' | 'maritalStatus' | 'educationLevel',\n exposeTarget: 'personTitle' | 'gender' | 'maritalStatus' | 'educationLevel',\n ): Omit<LookupBoxOptions, 'path'> {\n return {\n entity: `${PERSON_CORE_MODULE}.${PersonCoreRootConfig.entities[entityKey].name}`,\n valueField: 'id',\n textField: 'title',\n look: 'select',\n allowCreate: 'quick',\n expose: [\n { source: 'id', target: `${exposeTarget}.id` },\n { source: 'title', target: `${exposeTarget}.title` },\n ],\n } as Omit<LookupBoxOptions, 'path'>;\n }\n\n /** Normalizes repeater contact rows to `{ value: string }[]`, matching Person entity storage. */\n private normalizeContactItems(items: unknown): Array<{ value: string }> {\n if (!isArray(items)) {\n return [];\n }\n\n return items\n .map((entry) => this.normalizeContactEntry(entry))\n .filter((entry) => !isEmpty(entry.value));\n }\n\n private normalizeContactEntry(entry: unknown): { value: string } {\n if (isString(entry)) {\n return { value: trim(entry) };\n }\n\n if (!isObject(entry) || isNil(entry)) {\n return { value: '' };\n }\n\n const record = entry as { value?: unknown; label?: string };\n const inner = record.value;\n\n if (isObject(inner) && !isNil(inner) && 'value' in inner) {\n const nested = inner as { value?: unknown };\n return { value: trim(String(nested.value ?? '')) };\n }\n\n return { value: trim(String(record.value ?? '')) };\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":["SecurityManagementRootConfig","PersonCoreRootConfig"],"mappings":";;;;;;;;;;;;;AAcA;AAEA;AAEA;;;AAGG;MAEU,+BAA+B,CAAA;AAD5C,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,6BAA6B,CAAC;AA2BzE,IAAA;;;AArBC,IAAA,MAAM,IAAI,CAAC,MAAc,EAAE,MAAqC,EAAA;AAC9D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAA,CAAA,EAAI,MAAM,CAAC,QAAQ,CAAA,CAAE,CAAC;QAClE,IAAI,CAAC,WAAW,EAAE;YAChB;QACF;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC;AACnB,aAAA,UAAU,CACTA,UAA4B,CAAC,MAAM,CAAC,IAAI,EACxCA,UAA4B,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI;AAEjD,aAAA,IAAI,EAAiD;QAExD,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC;AAE9C,QAAA,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC;AAC3C,YAAA,KAAK,EAAE,WAAW;AACnB,SAAA,CAAC;IACJ;8GA5BW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,cADlB,MAAM,EAAA,CAAA,CAAA;;2FACnB,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACAlC;AAEA,MAAM,wBAAwB,GAAG;AAC/B,IAAA;AACE,QAAA,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,UAAU;AACvC,QAAA,IAAI,EAAE,MAAe;AACrB,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,+DAA+D;AAC7E,SAAA;AACF,KAAA;CACF;AAED,MAAM,wBAAwB,GAAG;AAC/B,IAAA;AACE,QAAA,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,UAAU;AACvC,QAAA,IAAI,EAAE,MAAe;AACrB,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,WAAW,EAAE,+DAA+D;AAC7E,SAAA;AACF,KAAA;CACF;AAED;AAEA;AAEA,MAAM,kBAAkB,GAAGC,YAAoB,CAAC,MAAM,CAAC,IAAI;AAuB3D;AAEA;AAEA;MAEa,6BAA6B,CAAA;AAD1C,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC/C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,2BAA2B,CAAC;AAC3D,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,+BAA+B,CAAC;AACzD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AACrC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AA4RjE,IAAA;;;AAtRC,IAAA,MAAM,OAAO,GAAA;QACX,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE;AACjE,QAAA,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE;YACzB,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAC9C,yFAAyF,CAC1F;AACF,iBAAA;aACF;QACH;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC;AACrB,aAAA,UAAU,CAACA,YAAoB,CAAC,MAAM,CAAC,IAAI,EAAEA,YAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI;AACtF,aAAA,IAAI,EAA0C;QAEjD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC9D,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;YACjB,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAC9C,8FAA8F,CAC/F;AACF,iBAAA;aACF;QACH;QAEA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAC5D,iFAAiF,CAClF;AAED,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC;AACvB,aAAA,MAAM;AACN,aAAA,MAAM,CAAuC,CAAC,MAAM,KAAI;YACvD;iBACG,QAAQ,CAAC,WAAW;AACpB,iBAAA,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE;iBAChC,cAAc,CAAC,IAAI;AACnB,iBAAA,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACxC,iBAAA,OAAO,CAAC,CAAC,MAAM,KAAI;AAClB,gBAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AACnB,gBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;oBACnB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AAE1C,oBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,cAAc,KAAI;wBAC/B;6BACG,OAAO,CAAC,UAAU;6BAClB,QAAQ,CAAC,qDAAqD;6BAC9D,OAAO,CAAC,EAAE;AACV,6BAAA,SAAS,CAAC,gEAAgE,EAAE,CAAC,KAAK,KAAI;AACrF,4BAAA,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;4BAC3B,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAC7D,4BAAA,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,+BAA+B,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AACrF,wBAAA,CAAC;AACA,6BAAA,SAAS,CAAC,mCAAmC,EAAE,CAAC,KAAK,KAAI;AACxD,4BAAA,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;4BACvB,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;4BAC7D,KAAK,CAAC,OAAO,CAAC;AACZ,gCAAA,WAAW,EAAE,mCAAmC;AAChD,gCAAA,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AACpC,6BAAA,CAAC;AACJ,wBAAA,CAAC;AACA,6BAAA,SAAS,CAAC,kCAAkC,EAAE,CAAC,KAAK,KAAI;AACvD,4BAAA,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;4BACtB,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;4BAC7D,KAAK,CAAC,OAAO,CAAC;AACZ,gCAAA,WAAW,EAAE,kCAAkC;AAC/C,gCAAA,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AACpC,6BAAA,CAAC;AACJ,wBAAA,CAAC;AACA,6BAAA,SAAS,CAAC,8DAA8D,EAAE,CAAC,KAAK,KAAI;AACnF,4BAAA,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;4BACvB,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;4BAC7D,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACvC,wBAAA,CAAC;AACA,6BAAA,SAAS,CAAC,0DAA0D,EAAE,CAAC,KAAK,KAAI;AAC/E,4BAAA,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;4BACtB,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAC7D,4BAAA,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,+BAA+B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC3E,wBAAA,CAAC;AACA,6BAAA,SAAS,CAAC,mEAAmE,EAAE,CAAC,KAAK,KAAI;AACxF,4BAAA,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC;4BAC5B,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;4BAC7D,KAAK,CAAC,OAAO,CAAC;AACZ,gCAAA,WAAW,EAAE,yEAAyE;AACvF,6BAAA,CAAC;AACJ,wBAAA,CAAC;AACA,6BAAA,SAAS,CAAC,kEAAkE,EAAE,CAAC,KAAK,KAAI;AACvF,4BAAA,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC;4BAC7B,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAC7D,4BAAA,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,+BAA+B,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;AACzF,wBAAA,CAAC;AACA,6BAAA,SAAS,CAAC,mEAAmE,EAAE,CAAC,KAAK,KAAI;AACxF,4BAAA,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC;4BAC9B,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAC7D,4BAAA,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,+BAA+B,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;AAC3F,wBAAA,CAAC,CAAC;AACN,oBAAA,CAAC,CAAC;AAEF,oBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,KAAI;wBAC9B;6BACG,OAAO,CAAC,UAAU;6BAClB,QAAQ,CAAC,oDAAoD;6BAC7D,OAAO,CAAC,CAAC;AACT,6BAAA,SAAS,CAAC,oDAAoD,EAAE,CAAC,KAAK,KAAI;AACzE,4BAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AACpB,4BAAA,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;4BACzB,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE;AACxD,gCAAA,WAAW,EAAE,IAAI;AACjB,gCAAA,QAAQ,EAAE,wBAAwB;AACnC,6BAAA,CAAC;AACJ,wBAAA,CAAC,CAAC;AACN,oBAAA,CAAC,CAAC;AAEF,oBAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,KAAI;wBAC9B;6BACG,OAAO,CAAC,UAAU;6BAClB,QAAQ,CAAC,oDAAoD;6BAC7D,OAAO,CAAC,CAAC;AACT,6BAAA,SAAS,CAAC,oDAAoD,EAAE,CAAC,KAAK,KAAI;AACzE,4BAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AACpB,4BAAA,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;4BACzB,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE;AACxD,gCAAA,WAAW,EAAE,IAAI;AACjB,gCAAA,QAAQ,EAAE,wBAAwB;AACnC,6BAAA,CAAC;AACJ,wBAAA,CAAC,CAAC;AACN,oBAAA,CAAC,CAAC;AACJ,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC;AACA,iBAAA,UAAU,CAAC,CAAC,OAAO,KAAI;AACtB,gBAAA,OAAO,CAAC,MAAM,CAAC,+BAA+B,CAAC;AAC/C,gBAAA,OAAO,CAAC,MAAM,CAAC,6BAA6B,CAAC;AAC/C,YAAA,CAAC;AACA,iBAAA,QAAQ,CAAC,OAAO,SAAS,KAAI;AAC5B,gBAAA,IAAI,SAAS,CAAC,MAAM,EAAE,KAAK,QAAQ,EAAE;AACnC,oBAAA,OAAO,IAAI;gBACb;AAEA,gBAAA,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,EAAuC;gBACrE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAEpC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC3C,oBAAA,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F;gBACH;AAEA,gBAAA,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;AAC1B,gBAAA,IAAI;oBACF,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC;oBACtD,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC;AACtD,oBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AAE/D,oBAAA,MAAM,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE;wBAC/C,aAAa,EAAE,IAAI,CAAC,aAAa;wBACjC,SAAS;wBACT,QAAQ;wBACR,SAAS,EAAE,IAAI,CAAC,SAAS;wBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,wBAAA,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,cAAc;wBACpE,eAAe,EAAE,IAAI,CAAC,eAAe;wBACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;wBACvC,MAAM;wBACN,MAAM;AACP,qBAAA,CAAC;oBAEF,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;wBACrD,SAAS;wBACT,QAAQ;AACT,qBAAA,CAAC;oBAEF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAC7D,qFAAqF,CACtF;AACD,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;AACjE,oBAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC3D;wBAAU;AACR,oBAAA,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC;gBAC7B;AACF,YAAA,CAAC,CAAC;AACN,QAAA,CAAC;AACA,aAAA,IAAI,EAAE;AAET,QAAA,MAAM,aAAa,GAAG,gCAAgC,CAAgC,MAAM,CAAC;QAC7F,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;QAC3D;AAEA,QAAA,OAAO,aAAa;IACtB;;;;IAOQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU;AAC/B,QAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,gBAAgB,CAAC,MAAsC,EAAA;QAC7D,OAAO;YACL,aAAa,EAAE,MAAM,CAAC,aAAa;AACnC,YAAA,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;YAC1C,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;YAC1C,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;YACxC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACzB,YAAA,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;YAChC,cAAc,EAAE,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;YACpD,eAAe,EAAE,MAAM,CAAC,eAAe;AACvC,YAAA,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC;YAC9C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;AACzC,YAAA,cAAc,EAAE,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC;YAChD,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC/C,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;SAChD;IACH;;IAGQ,+BAA+B,CACrC,SAAwE,EACxE,YAA2E,EAAA;QAE3E,OAAO;AACL,YAAA,MAAM,EAAE,CAAA,EAAG,kBAAkB,CAAA,CAAA,EAAIA,YAAoB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAA,CAAE;AAChF,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,MAAM,EAAE;gBACN,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA,EAAG,YAAY,CAAA,GAAA,CAAK,EAAE;gBAC9C,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA,EAAG,YAAY,CAAA,MAAA,CAAQ,EAAE;AACrD,aAAA;SACgC;IACrC;;AAGQ,IAAA,qBAAqB,CAAC,KAAc,EAAA;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACnB,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,OAAO;AACJ,aAAA,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;AAChD,aAAA,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7C;AAEQ,IAAA,qBAAqB,CAAC,KAAc,EAAA;AAC1C,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;YACnB,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;QAC/B;QAEA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;QACtB;QAEA,MAAM,MAAM,GAAG,KAA4C;AAC3D,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;AAE1B,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,OAAO,IAAI,KAAK,EAAE;YACxD,MAAM,MAAM,GAAG,KAA4B;AAC3C,YAAA,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE;QACpD;AAEA,QAAA,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE;IACpD;8GAjSW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,6BAA6B,cADhB,MAAM,EAAA,CAAA,CAAA;;2FACnB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}
@@ -6,7 +6,7 @@ import * as i0 from '@angular/core';
6
6
  import { inject, Injectable } from '@angular/core';
7
7
  import { isNil, defaultTo, isEmpty, trim } from 'lodash';
8
8
  import { RootConfig } from '@acorex-platform/module-human-capital-management-client/contracts';
9
- import { A as AXMHcmProfileContextService } from './acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-DmqiCOti.mjs';
9
+ import { A as AXMHcmProfileContextService } from './acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-YulnMbkF.mjs';
10
10
 
11
11
  //#region ---- Edit signature command ----
12
12
  /** Opens the shared signature editor for the current employee record. */
@@ -73,4 +73,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
73
73
  }] });
74
74
 
75
75
  export { AXMHcmEditSignatureCommand };
76
- //# sourceMappingURL=acorex-platform-module-human-capital-management-client-edit-signature.command-Bb3mxwBE.mjs.map
76
+ //# sourceMappingURL=acorex-platform-module-human-capital-management-client-edit-signature.command-BT_kCp6U.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-human-capital-management-client-edit-signature.command-Bb3mxwBE.mjs","sources":["../../../../libs/modules/human-capital-management/client/src/lib/features/profile-page/commands/edit-signature.command.ts"],"sourcesContent":["import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPSignatureEditorService } from '@acorex-platform/framework-client/layout/components';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo, isEmpty, isNil, trim } from 'lodash';\n\nimport { RootConfig } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { AXMHumanCapitalManagementEmployeeEntityModel } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { AXMHcmProfileContextService } from '../profile-context.service';\n\n//#region ---- Edit signature command ----\n\n/** Opens the shared signature editor for the current employee record. */\n@Injectable({ providedIn: 'root' })\nexport class AXMHcmEditSignatureCommand implements AXPCommand {\n //#region ---- Services & Dependencies ----\n\n private readonly signatureEditorService = inject(AXPSignatureEditorService);\n private readonly entityService = inject(AXPEntityService);\n private readonly profileContextService = inject(AXMHcmProfileContextService);\n private readonly toastService = inject(AXToastService);\n private readonly translateService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command ----\n\n async execute(): AXPCommandExecuteResultPromise<void> {\n const profileContext = await this.profileContextService.resolve();\n if (isNil(profileContext)) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync(\n '@human-capital-management:profile-page.commands.edit-signature.messages.no-employee',\n ),\n },\n };\n }\n\n const employeeData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.employee.name)\n .data<string, AXMHumanCapitalManagementEmployeeEntityModel>();\n\n const employee = await employeeData.byKey(profileContext.employeeId);\n if (isNil(employee)) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync(\n '@human-capital-management:profile-page.commands.edit-signature.messages.employee-not-found',\n ),\n },\n };\n }\n\n const existingSignature = defaultTo(employee.signature, '');\n const submitActionKey = isEmpty(existingSignature)\n ? '@general:actions.save.title'\n : '@general:actions.update.title';\n\n const dialogTitle = await this.translateService.translateAsync(\n '@human-capital-management:profile-page.commands.edit-signature.dialog.title',\n );\n\n const result = await this.signatureEditorService.open({\n title: dialogTitle,\n value: existingSignature,\n submitActionKey,\n });\n\n if (result.action === 'cancel') {\n return { success: false };\n }\n\n const signature = trim(defaultTo(result.value, ''));\n await employeeData.update(profileContext.employeeId, { signature });\n\n const successTitle = await this.translateService.translateAsync(\n isEmpty(signature)\n ? '@human-capital-management:profile-page.commands.edit-signature.messages.removed'\n : '@human-capital-management:profile-page.commands.edit-signature.messages.success',\n );\n this.toastService.show({ color: 'success', title: successTitle });\n return { success: true, kind: 'object', data: undefined };\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-human-capital-management-client-edit-signature.command-BT_kCp6U.mjs","sources":["../../../../libs/modules/human-capital-management/client/src/lib/features/profile-page/commands/edit-signature.command.ts"],"sourcesContent":["import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPSignatureEditorService } from '@acorex-platform/framework-client/layout/components';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo, isEmpty, isNil, trim } from 'lodash';\n\nimport { RootConfig } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { AXMHumanCapitalManagementEmployeeEntityModel } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { AXMHcmProfileContextService } from '../profile-context.service';\n\n//#region ---- Edit signature command ----\n\n/** Opens the shared signature editor for the current employee record. */\n@Injectable({ providedIn: 'root' })\nexport class AXMHcmEditSignatureCommand implements AXPCommand {\n //#region ---- Services & Dependencies ----\n\n private readonly signatureEditorService = inject(AXPSignatureEditorService);\n private readonly entityService = inject(AXPEntityService);\n private readonly profileContextService = inject(AXMHcmProfileContextService);\n private readonly toastService = inject(AXToastService);\n private readonly translateService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command ----\n\n async execute(): AXPCommandExecuteResultPromise<void> {\n const profileContext = await this.profileContextService.resolve();\n if (isNil(profileContext)) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync(\n '@human-capital-management:profile-page.commands.edit-signature.messages.no-employee',\n ),\n },\n };\n }\n\n const employeeData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.employee.name)\n .data<string, AXMHumanCapitalManagementEmployeeEntityModel>();\n\n const employee = await employeeData.byKey(profileContext.employeeId);\n if (isNil(employee)) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync(\n '@human-capital-management:profile-page.commands.edit-signature.messages.employee-not-found',\n ),\n },\n };\n }\n\n const existingSignature = defaultTo(employee.signature, '');\n const submitActionKey = isEmpty(existingSignature)\n ? '@general:actions.save.title'\n : '@general:actions.update.title';\n\n const dialogTitle = await this.translateService.translateAsync(\n '@human-capital-management:profile-page.commands.edit-signature.dialog.title',\n );\n\n const result = await this.signatureEditorService.open({\n title: dialogTitle,\n value: existingSignature,\n submitActionKey,\n });\n\n if (result.action === 'cancel') {\n return { success: false };\n }\n\n const signature = trim(defaultTo(result.value, ''));\n await employeeData.update(profileContext.employeeId, { signature });\n\n const successTitle = await this.translateService.translateAsync(\n isEmpty(signature)\n ? '@human-capital-management:profile-page.commands.edit-signature.messages.removed'\n : '@human-capital-management:profile-page.commands.edit-signature.messages.success',\n );\n this.toastService.show({ color: 'success', title: successTitle });\n return { success: true, kind: 'object', data: undefined };\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { provideLocalEntityCatalog } from '@acorex-platform/framework-client/layout/entity';
2
+ import { RootConfig } from '@acorex-platform/module-human-capital-management-client/contracts';
3
+ export { humanCapitalManagementLocalEntityCatalog } from '@acorex-platform/module-human-capital-management-client/contracts/entity-catalog';
4
+
5
+ //#region ----- Imports -----
6
+ //#endregion
7
+ //#region ----- Provide local entities -----
8
+ /**
9
+ * Registers human-capital-management layouts on the client from packaged factories.
10
+ * Each `import()` targets a secondary entry so unused entities stay out of the
11
+ * bundle. Do not add this to the demo app; demo continues to load layouts via
12
+ * `Domain:GetEntityLayout`.
13
+ */
14
+ function provideHumanCapitalManagementLocalEntities() {
15
+ return provideLocalEntityCatalog({
16
+ moduleName: RootConfig.module.name,
17
+ loaders: {
18
+ [RootConfig.entities.employee.name]: () => import('@acorex-platform/module-human-capital-management-client/contracts/entities/employee').then((m) => m.factoryEmployee()),
19
+ [RootConfig.entities.employmentType.name]: () => import('@acorex-platform/module-human-capital-management-client/contracts/entities/employment-type').then((m) => m.factoryEmploymentType()),
20
+ [RootConfig.entities.leaveRequest.name]: () => import('@acorex-platform/module-human-capital-management-client/contracts/entities/leave-request').then((m) => m.factoryLeaveRequest()),
21
+ [RootConfig.entities.leaveType.name]: () => import('@acorex-platform/module-human-capital-management-client/contracts/entities/leave-type').then((m) => m.factoryLeaveType()),
22
+ [RootConfig.entities.lifecycleEvent.name]: () => import('@acorex-platform/module-human-capital-management-client/contracts/entities/lifecycle-event').then((m) => m.factoryLifecycleEvent()),
23
+ [RootConfig.entities.lifecycleEventType.name]: () => import('@acorex-platform/module-human-capital-management-client/contracts/entities/lifecycle-event-type').then((m) => m.factoryLifecycleEventType()),
24
+ [RootConfig.entities.positionAssignment.name]: () => import('@acorex-platform/module-human-capital-management-client/contracts/entities/position-assignment').then((m) => m.factoryPositionAssignment()),
25
+ },
26
+ });
27
+ }
28
+ //#endregion
29
+
30
+ /**
31
+ * Generated bundle index. Do not edit.
32
+ */
33
+
34
+ export { provideHumanCapitalManagementLocalEntities };
35
+ //# sourceMappingURL=acorex-platform-module-human-capital-management-client-local-entities.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-human-capital-management-client-local-entities.mjs","sources":["../../../../libs/modules/human-capital-management/client/src/lib/provide-local-entities.ts","../../../../libs/modules/human-capital-management/client/src/lib/acorex-platform-module-human-capital-management-client-local-entities.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { provideLocalEntityCatalog } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-human-capital-management-client/contracts';\n\n//#endregion\n\n//#region ----- Provide local entities -----\n\n/**\n * Registers human-capital-management layouts on the client from packaged factories.\n * Each `import()` targets a secondary entry so unused entities stay out of the\n * bundle. Do not add this to the demo app; demo continues to load layouts via\n * `Domain:GetEntityLayout`.\n */\nexport function provideHumanCapitalManagementLocalEntities() {\n return provideLocalEntityCatalog({\n moduleName: RootConfig.module.name,\n loaders: {\n [RootConfig.entities.employee.name]: () =>\n import('@acorex-platform/module-human-capital-management-client/contracts/entities/employee').then((m) => m.factoryEmployee()),\n [RootConfig.entities.employmentType.name]: () =>\n import('@acorex-platform/module-human-capital-management-client/contracts/entities/employment-type').then((m) => m.factoryEmploymentType()),\n [RootConfig.entities.leaveRequest.name]: () =>\n import('@acorex-platform/module-human-capital-management-client/contracts/entities/leave-request').then((m) => m.factoryLeaveRequest()),\n [RootConfig.entities.leaveType.name]: () =>\n import('@acorex-platform/module-human-capital-management-client/contracts/entities/leave-type').then((m) => m.factoryLeaveType()),\n [RootConfig.entities.lifecycleEvent.name]: () =>\n import('@acorex-platform/module-human-capital-management-client/contracts/entities/lifecycle-event').then((m) => m.factoryLifecycleEvent()),\n [RootConfig.entities.lifecycleEventType.name]: () =>\n import('@acorex-platform/module-human-capital-management-client/contracts/entities/lifecycle-event-type').then((m) => m.factoryLifecycleEventType()),\n [RootConfig.entities.positionAssignment.name]: () =>\n import('@acorex-platform/module-human-capital-management-client/contracts/entities/position-assignment').then((m) => m.factoryPositionAssignment()),\n },\n });\n}\n\nexport { humanCapitalManagementLocalEntityCatalog } from '@acorex-platform/module-human-capital-management-client/contracts/entity-catalog';\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './provide-local-entities';\n"],"names":[],"mappings":";;;;AAAA;AAKA;AAEA;AAEA;;;;;AAKG;SACa,0CAA0C,GAAA;AACxD,IAAA,OAAO,yBAAyB,CAAC;AAC/B,QAAA,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAClC,QAAA,OAAO,EAAE;AACP,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,MACnC,OAAO,qFAAqF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;AAChI,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,GAAG,MACzC,OAAO,4FAA4F,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,qBAAqB,EAAE,CAAC;AAC7I,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,MACvC,OAAO,0FAA0F,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,EAAE,CAAC;AACzI,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,MACpC,OAAO,uFAAuF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC;AACnI,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,GAAG,MACzC,OAAO,4FAA4F,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,qBAAqB,EAAE,CAAC;AAC7I,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,GAAG,MAC7C,OAAO,iGAAiG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB,EAAE,CAAC;AACtJ,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,GAAG,MAC7C,OAAO,gGAAgG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB,EAAE,CAAC;AACtJ,SAAA;AACF,KAAA,CAAC;AACJ;AAIA;;ACvCA;;AAEG;;"}
@@ -9,7 +9,7 @@ import { AsyncPipe } from '@angular/common';
9
9
  import * as i0 from '@angular/core';
10
10
  import { input, inject, signal, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
11
11
  import { AXPHumanCapitalManagementQueryKeys } from '@acorex-platform/module-human-capital-management-client/contracts';
12
- import { D as DOCUMENT_DRIVE_PAGE_COMPONENT_KEY } from './acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-DmqiCOti.mjs';
12
+ import { D as DOCUMENT_DRIVE_PAGE_COMPONENT_KEY } from './acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-YulnMbkF.mjs';
13
13
 
14
14
  //#region ----- Imports -----
15
15
  //#endregion
@@ -84,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
84
84
  }], propDecorators: { rootContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "rootContext", required: false }] }], pageConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageConfig", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }] } });
85
85
 
86
86
  export { AXMHcmProfileDocumentsPanelComponent };
87
- //# sourceMappingURL=acorex-platform-module-human-capital-management-client-profile-documents-panel.component-L-Wq--5e.mjs.map
87
+ //# sourceMappingURL=acorex-platform-module-human-capital-management-client-profile-documents-panel.component-OTrhvB6P.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-human-capital-management-client-profile-documents-panel.component-L-Wq--5e.mjs","sources":["../../../../libs/modules/human-capital-management/client/src/lib/features/profile-page/profile-documents-panel.component.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/profile-page/profile-documents-panel.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXPQueryService } from '@acorex-platform/framework-client/runtime';\nimport {\n AXPPageComponentRendererDirective,\n AXPPageLayoutBase,\n AXPPageLayoutBaseComponent,\n} from '@acorex-platform/framework-client/layout/views';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { runtimeQueryPayloadData } from '@acorex-platform/framework-shared/core';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AXPHumanCapitalManagementQueryKeys,\n type AXMHcmProfileDocumentDriveContext,\n} from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { DOCUMENT_DRIVE_PAGE_COMPONENT_KEY } from './profile-documents-panel.constants';\n\n//#endregion\n\n//#region ----- Component -----\n\n/** Fetches the employee document-drive context, then mounts the EDMS page. */\n@Component({\n selector: 'axm-hcm-profile-documents-panel',\n imports: [AsyncPipe, AXLoadingModule, AXTranslationModule, AXPPageComponentRendererDirective],\n templateUrl: './profile-documents-panel.component.html',\n styleUrl: './profile-documents-panel.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'axm-hcm-profile-documents-panel' },\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMHcmProfileDocumentsPanelComponent,\n },\n ],\n})\nexport class AXMHcmProfileDocumentsPanelComponent extends AXPPageLayoutBaseComponent {\n //#region ----- Inputs -----\n\n rootContext = input<Record<string, unknown>>({});\n pageConfig = input<Record<string, unknown>>();\n options = input<Record<string, unknown>>({});\n\n //#endregion\n\n //#region ----- Services & Dependencies -----\n\n private readonly queryService = inject(AXPQueryService);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly isLoading = signal(true);\n protected readonly drivePageConfig = signal<Record<string, unknown> | null>(null);\n protected readonly driveComponentKey = DOCUMENT_DRIVE_PAGE_COMPONENT_KEY;\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n override async ngOnInit(): Promise<void> {\n await this.loadDriveContext();\n }\n\n protected override getPageTitle(): string {\n return '';\n }\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async loadDriveContext(): Promise<void> {\n this.isLoading.set(true);\n try {\n const result = await this.queryService.fetch<void, AXMHcmProfileDocumentDriveContext | null>(\n AXPHumanCapitalManagementQueryKeys.Profile.GetMyDocumentDriveContext,\n undefined as void,\n );\n const context = runtimeQueryPayloadData(result);\n if (!context?.refType || !context?.refId) {\n this.drivePageConfig.set(null);\n return;\n }\n\n this.drivePageConfig.set({\n refType: context.refType,\n refId: context.refId,\n allowedDocumentTypeNames: context.documentTypeNames,\n });\n } finally {\n this.isLoading.set(false);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","@if (isLoading()) {\n <div class=\"__loading\">\n <ax-loading></ax-loading>\n </div>\n} @else if (drivePageConfig(); as config) {\n <div\n axp-page-component-renderer\n [componentKey]=\"driveComponentKey\"\n [pageConfig]=\"config\"\n [rootContext]=\"rootContext()\"\n [options]=\"options()\"\n ></div>\n} @else {\n <p class=\"__empty\">{{ '@human-capital-management:profile-page.groups.documents.empty' | translate | async }}</p>\n}\n"],"names":["i2"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-human-capital-management-client-profile-documents-panel.component-OTrhvB6P.mjs","sources":["../../../../libs/modules/human-capital-management/client/src/lib/features/profile-page/profile-documents-panel.component.ts","../../../../libs/modules/human-capital-management/client/src/lib/features/profile-page/profile-documents-panel.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXPQueryService } from '@acorex-platform/framework-client/runtime';\nimport {\n AXPPageComponentRendererDirective,\n AXPPageLayoutBase,\n AXPPageLayoutBaseComponent,\n} from '@acorex-platform/framework-client/layout/views';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { runtimeQueryPayloadData } from '@acorex-platform/framework-shared/core';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n AXPHumanCapitalManagementQueryKeys,\n type AXMHcmProfileDocumentDriveContext,\n} from '@acorex-platform/module-human-capital-management-client/contracts';\nimport { DOCUMENT_DRIVE_PAGE_COMPONENT_KEY } from './profile-documents-panel.constants';\n\n//#endregion\n\n//#region ----- Component -----\n\n/** Fetches the employee document-drive context, then mounts the EDMS page. */\n@Component({\n selector: 'axm-hcm-profile-documents-panel',\n imports: [AsyncPipe, AXLoadingModule, AXTranslationModule, AXPPageComponentRendererDirective],\n templateUrl: './profile-documents-panel.component.html',\n styleUrl: './profile-documents-panel.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'axm-hcm-profile-documents-panel' },\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMHcmProfileDocumentsPanelComponent,\n },\n ],\n})\nexport class AXMHcmProfileDocumentsPanelComponent extends AXPPageLayoutBaseComponent {\n //#region ----- Inputs -----\n\n rootContext = input<Record<string, unknown>>({});\n pageConfig = input<Record<string, unknown>>();\n options = input<Record<string, unknown>>({});\n\n //#endregion\n\n //#region ----- Services & Dependencies -----\n\n private readonly queryService = inject(AXPQueryService);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly isLoading = signal(true);\n protected readonly drivePageConfig = signal<Record<string, unknown> | null>(null);\n protected readonly driveComponentKey = DOCUMENT_DRIVE_PAGE_COMPONENT_KEY;\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n override async ngOnInit(): Promise<void> {\n await this.loadDriveContext();\n }\n\n protected override getPageTitle(): string {\n return '';\n }\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async loadDriveContext(): Promise<void> {\n this.isLoading.set(true);\n try {\n const result = await this.queryService.fetch<void, AXMHcmProfileDocumentDriveContext | null>(\n AXPHumanCapitalManagementQueryKeys.Profile.GetMyDocumentDriveContext,\n undefined as void,\n );\n const context = runtimeQueryPayloadData(result);\n if (!context?.refType || !context?.refId) {\n this.drivePageConfig.set(null);\n return;\n }\n\n this.drivePageConfig.set({\n refType: context.refType,\n refId: context.refId,\n allowedDocumentTypeNames: context.documentTypeNames,\n });\n } finally {\n this.isLoading.set(false);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","@if (isLoading()) {\n <div class=\"__loading\">\n <ax-loading></ax-loading>\n </div>\n} @else if (drivePageConfig(); as config) {\n <div\n axp-page-component-renderer\n [componentKey]=\"driveComponentKey\"\n [pageConfig]=\"config\"\n [rootContext]=\"rootContext()\"\n [options]=\"options()\"\n ></div>\n} @else {\n <p class=\"__empty\">{{ '@human-capital-management:profile-page.groups.documents.empty' | translate | async }}</p>\n}\n"],"names":["i2"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable } from '@angular/core';
3
- import { P as PROFILE_DOCUMENTS_PANEL_COMPONENT_KEY } from './acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-DmqiCOti.mjs';
3
+ import { P as PROFILE_DOCUMENTS_PANEL_COMPONENT_KEY } from './acorex-platform-module-human-capital-management-client-acorex-platform-module-human-capital-management-client-YulnMbkF.mjs';
4
4
 
5
5
  //#region ----- Profile documents panel provider -----
6
6
  class AXMHcmProfileDocumentsPanelComponentProvider {
@@ -8,7 +8,7 @@ class AXMHcmProfileDocumentsPanelComponentProvider {
8
8
  return [
9
9
  {
10
10
  key: PROFILE_DOCUMENTS_PANEL_COMPONENT_KEY,
11
- loader: () => import('./acorex-platform-module-human-capital-management-client-profile-documents-panel.component-L-Wq--5e.mjs').then((module) => module.AXMHcmProfileDocumentsPanelComponent),
11
+ loader: () => import('./acorex-platform-module-human-capital-management-client-profile-documents-panel.component-OTrhvB6P.mjs').then((module) => module.AXMHcmProfileDocumentsPanelComponent),
12
12
  },
13
13
  ];
14
14
  }
@@ -20,4 +20,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
20
20
  }] });
21
21
 
22
22
  export { AXMHcmProfileDocumentsPanelComponentProvider };
23
- //# sourceMappingURL=acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-n9sEfOE2.mjs.map
23
+ //# sourceMappingURL=acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-Cwtz43uK.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-n9sEfOE2.mjs","sources":["../../../../libs/modules/human-capital-management/client/src/lib/features/profile-page/profile-documents-panel.component.provider.ts"],"sourcesContent":["import {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport { PROFILE_DOCUMENTS_PANEL_COMPONENT_KEY } from './profile-documents-panel.constants';\n\n//#region ----- Profile documents panel provider -----\n\n@Injectable()\nexport class AXMHcmProfileDocumentsPanelComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: PROFILE_DOCUMENTS_PANEL_COMPONENT_KEY,\n loader: () =>\n import('./profile-documents-panel.component').then((module) => module.AXMHcmProfileDocumentsPanelComponent),\n },\n ];\n }\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;AAOA;MAGa,4CAA4C,CAAA;AACvD,IAAA,MAAM,UAAU,GAAA;QACd,OAAO;AACL,YAAA;AACE,gBAAA,GAAG,EAAE,qCAAqC;AAC1C,gBAAA,MAAM,EAAE,MACN,OAAO,yGAAqC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,oCAAoC,CAAC;AAC9G,aAAA;SACF;IACH;8GATW,4CAA4C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA5C,4CAA4C,EAAA,CAAA,CAAA;;2FAA5C,4CAA4C,EAAA,UAAA,EAAA,CAAA;kBADxD;;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-human-capital-management-client-profile-documents-panel.component.provider-Cwtz43uK.mjs","sources":["../../../../libs/modules/human-capital-management/client/src/lib/features/profile-page/profile-documents-panel.component.provider.ts"],"sourcesContent":["import {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport { PROFILE_DOCUMENTS_PANEL_COMPONENT_KEY } from './profile-documents-panel.constants';\n\n//#region ----- Profile documents panel provider -----\n\n@Injectable()\nexport class AXMHcmProfileDocumentsPanelComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: PROFILE_DOCUMENTS_PANEL_COMPONENT_KEY,\n loader: () =>\n import('./profile-documents-panel.component').then((module) => module.AXMHcmProfileDocumentsPanelComponent),\n },\n ];\n }\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;AAOA;MAGa,4CAA4C,CAAA;AACvD,IAAA,MAAM,UAAU,GAAA;QACd,OAAO;AACL,YAAA;AACE,gBAAA,GAAG,EAAE,qCAAqC;AAC1C,gBAAA,MAAM,EAAE,MACN,OAAO,yGAAqC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,oCAAoC,CAAC;AAC9G,aAAA;SACF;IACH;8GATW,4CAA4C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA5C,4CAA4C,EAAA,CAAA,CAAA;;2FAA5C,4CAA4C,EAAA,UAAA,EAAA,CAAA;kBADxD;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-human-capital-management-client-reject-leave-request.command-O9gipd8g.mjs","sources":["../../../../libs/modules/human-capital-management/client/src/lib/features/leave-request/commands/reject-leave-request.command.ts"],"sourcesContent":["\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult, AXPSystemStatuses } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { Injectable, inject } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-human-capital-management-client/contracts';\n\n//#region ---- Types ----\n\nexport interface RejectLeaveRequestInput {\n id: string;\n reason?: string;\n note?: string;\n}\n\n//#endregion\n\n/**\n * Reject Leave Request Command\n * Updates the leave request status to Rejected\n */\n@Injectable({ providedIn: 'root' })\nexport class RejectLeaveRequestCommand implements AXPCommand<RejectLeaveRequestInput, void> {\n //#region ---- Services ----\n\n private readonly entityService = inject(AXPEntityService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: RejectLeaveRequestInput): AXPCommandExecuteResultPromise<void> {\n try {\n console.log('[RejectLeaveRequestCommand] Executing with input:', input);\n\n const dataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.leaveRequest.name)\n .data<string, any>();\n\n // Update the leave request status to Rejected\n const updateData: any = {\n statusId: AXPSystemStatuses.Rejected.name,\n };\n\n // Add reason/note if provided (these fields might not exist in entity model)\n if (input.reason) {\n updateData.reason = input.reason;\n }\n if (input.note) {\n updateData.note = input.note;\n }\n\n console.log('[RejectLeaveRequestCommand] Updating entity with:', updateData);\n\n await dataAccessor.update(input.id, updateData);\n\n console.log('[RejectLeaveRequestCommand] Update successful');\n\n return { success: true, kind: 'object', data: undefined,\n };\n } catch (error: any) {\n console.error('[RejectLeaveRequestCommand] Error:', error);\n return {\n success: false,\n message: {\n text: error.message || 'Failed to reject leave request',\n },\n };\n }\n }\n\n //#endregion\n}\n"],"names":[],"mappings":";;;;;;AAiBA;AAEA;;;AAGG;MAEU,yBAAyB,CAAA;AADtC,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AA+C1D,IAAA;;;IAzCC,MAAM,OAAO,CAAC,KAA8B,EAAA;AAC1C,QAAA,IAAI;AACF,YAAA,OAAO,CAAC,GAAG,CAAC,mDAAmD,EAAE,KAAK,CAAC;AAEvE,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC;AACvB,iBAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI;AACxE,iBAAA,IAAI,EAAe;;AAGtB,YAAA,MAAM,UAAU,GAAQ;AACtB,gBAAA,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC,IAAI;aAC1C;;AAGD,YAAA,IAAI,KAAK,CAAC,MAAM,EAAE;AAChB,gBAAA,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;YAClC;AACA,YAAA,IAAI,KAAK,CAAC,IAAI,EAAE;AACd,gBAAA,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;YAC9B;AAEA,YAAA,OAAO,CAAC,GAAG,CAAC,mDAAmD,EAAE,UAAU,CAAC;YAE5E,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC;AAE/C,YAAA,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC;YAE5D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS;aACtD;QACH;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC;YAC1D,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,gCAAgC;AACxD,iBAAA;aACF;QACH;IACF;8GA/CW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cADZ,MAAM,EAAA,CAAA,CAAA;;2FACnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-human-capital-management-client-reject-leave-request.command-O9gipd8g.mjs","sources":["../../../../libs/modules/human-capital-management/client/src/lib/features/leave-request/commands/reject-leave-request.command.ts"],"sourcesContent":["\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult, AXPSystemStatuses } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { Injectable, inject } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-human-capital-management-client/contracts';\n\n//#region ---- Types ----\n\nexport interface RejectLeaveRequestInput {\n id: string;\n reason?: string;\n note?: string;\n}\n\n//#endregion\n\n/**\n * Reject Leave Request Command\n * Updates the leave request status to Rejected\n */\n@Injectable({ providedIn: 'root' })\nexport class RejectLeaveRequestCommand implements AXPCommand<RejectLeaveRequestInput, void> {\n //#region ---- Services ----\n\n private readonly entityService = inject(AXPEntityService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: RejectLeaveRequestInput): AXPCommandExecuteResultPromise<void> {\n try {\n console.log('[RejectLeaveRequestCommand] Executing with input:', input);\n\n const dataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.leaveRequest.name)\n .data<string, any>();\n\n // Update the leave request status to Rejected\n const updateData: any = {\n statusId: AXPSystemStatuses.Rejected.name,\n };\n\n // Add reason/note if provided (these fields might not exist in entity model)\n if (input.reason) {\n updateData.reason = input.reason;\n }\n if (input.note) {\n updateData.note = input.note;\n }\n\n console.log('[RejectLeaveRequestCommand] Updating entity with:', updateData);\n\n await dataAccessor.update(input.id, updateData);\n\n console.log('[RejectLeaveRequestCommand] Update successful');\n\n return { success: true, kind: 'object', data: undefined,\n };\n } catch (error: any) {\n console.error('[RejectLeaveRequestCommand] Error:', error);\n return {\n success: false,\n message: {\n text: error.message || 'Failed to reject leave request',\n },\n };\n }\n }\n\n //#endregion\n}\n"],"names":[],"mappings":";;;;;;AAiBA;AAEA;;;AAGG;MAEU,yBAAyB,CAAA;AADtC,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AA+C1D,IAAA;;;IAzCC,MAAM,OAAO,CAAC,KAA8B,EAAA;AAC1C,QAAA,IAAI;AACF,YAAA,OAAO,CAAC,GAAG,CAAC,mDAAmD,EAAE,KAAK,CAAC;AAEvE,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC;AACvB,iBAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI;AACxE,iBAAA,IAAI,EAAe;;AAGtB,YAAA,MAAM,UAAU,GAAQ;AACtB,gBAAA,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC,IAAI;aAC1C;;AAGD,YAAA,IAAI,KAAK,CAAC,MAAM,EAAE;AAChB,gBAAA,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;YAClC;AACA,YAAA,IAAI,KAAK,CAAC,IAAI,EAAE;AACd,gBAAA,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;YAC9B;AAEA,YAAA,OAAO,CAAC,GAAG,CAAC,mDAAmD,EAAE,UAAU,CAAC;YAE5E,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC;AAE/C,YAAA,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC;YAE5D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS;aACtD;QACH;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC;YAC1D,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,gCAAgC;AACxD,iBAAA;aACF;QACH;IACF;8GA/CW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cADZ,MAAM,EAAA,CAAA,CAAA;;2FACnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-human-capital-management-client-revoke-position-assignment.command-DmVlDQ8_.mjs","sources":["../../../../libs/modules/human-capital-management/client/src/lib/features/organization-chart/commands/revoke-position-assignment.command.ts"],"sourcesContent":["import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXDataSourceFilterOption } from '@acorex/cdk/common';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { inject, Injectable } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport {\n AXM_POSITION_ASSIGNMENT_OVERLAPPING_STATUS_IDS,\n AXM_POSITION_ASSIGNMENT_STATUS,\n} from '@acorex-platform/module-human-capital-management-client/contracts';\n\nexport interface AXMRevokePositionAssignmentByIdInput {\n data?: unknown;\n id?: unknown;\n positionId?: string;\n employeeId?: string;\n businessUnitId?: string;\n /** When true, do not show the revoke confirmation (caller already confirmed). */\n skipConfirmation?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXMRevokePositionAssignmentByIdCommand\n implements AXPCommand<AXMRevokePositionAssignmentByIdInput, { revokedCount: number }>\n{\n private readonly dialogService = inject(AXDialogService);\n private readonly translationService = inject(AXTranslationService);\n private readonly entityService = inject(AXPEntityService);\n\n async execute(\n input: AXMRevokePositionAssignmentByIdInput,\n ): AXPCommandExecuteResultPromise<{ revokedCount: number }> {\n let ids = this.extractIds(input);\n if (!ids.length && input.positionId && input.employeeId) {\n ids = await this.findOverlappingLifecycleAssignmentIds(\n input.positionId,\n input.employeeId,\n input.businessUnitId,\n );\n }\n if (!ids.length) {\n if (input.skipConfirmation) {\n return { success: true, kind: 'object', data: { revokedCount: 0 } };\n }\n return { success: false };\n }\n\n if (!input.skipConfirmation) {\n const confirmed = await this.confirmRevoke();\n if (!confirmed) {\n return { success: false };\n }\n }\n\n const payload: Record<string, unknown> = {\n endDate: new Date().toISOString(),\n statusId: AXM_POSITION_ASSIGNMENT_STATUS.revoked,\n };\n const data = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.positionAssignment.name)\n .data();\n for (const id of ids) {\n await data.update(id, payload as never);\n }\n\n return { success: true, kind: 'object', data: { revokedCount: ids.length } };\n }\n\n private async confirmRevoke(): Promise<boolean> {\n const title = await this.translationService.translateAsync(\n '@human-capital-management:position-assignments.entities.position-assignment.actions.revoke.confirm.title',\n );\n const message = await this.translationService.translateAsync(\n '@human-capital-management:position-assignments.entities.position-assignment.actions.revoke.confirm.message',\n );\n const result = await this.dialogService.confirm(title, message, 'danger', 'horizontal', false, 'cancel');\n return result.result === true;\n }\n\n private extractIds(input: AXMRevokePositionAssignmentByIdInput): string[] {\n const raw = input?.data ?? input?.data ?? input?.id ?? input;\n const values = Array.isArray(raw) ? raw : [raw];\n return values\n .map((value) => {\n if (typeof value === 'string') {\n return value;\n }\n if (value && typeof value === 'object') {\n const id = (value as { id?: unknown })['id'];\n return typeof id === 'string' ? id : '';\n }\n return '';\n })\n .filter((id) => id.trim().length > 0);\n }\n\n /**\n * Resolves assignment rows that still participate in overlap checks (active + scheduled).\n * Revoking only `active` left future-dated `scheduled` rows and blocked new assignments.\n */\n private async findOverlappingLifecycleAssignmentIds(\n positionId: string,\n employeeId: string,\n businessUnitId?: string,\n ): Promise<string[]> {\n const filters: AXDataSourceFilterOption[] = [\n { field: 'positionId', operator: { type: 'equal' }, value: positionId },\n { field: 'employeeId', operator: { type: 'equal' }, value: employeeId },\n { field: 'statusId', operator: { type: 'in' }, value: [...AXM_POSITION_ASSIGNMENT_OVERLAPPING_STATUS_IDS] },\n ];\n if (businessUnitId) {\n filters.push({ field: 'businessUnitId', operator: { type: 'equal' }, value: businessUnitId });\n }\n\n const result = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.positionAssignment.name)\n .data()\n .query({\n skip: 0,\n take: 50,\n sort: [{ field: 'startDate', dir: 'desc' }],\n filter: { logic: 'and', filters },\n });\n\n const items = (result.items ?? []) as Array<{ id?: string }>;\n const seen = new Set<string>();\n const ids: string[] = [];\n for (const item of items) {\n const id = typeof item.id === 'string' && item.id.trim().length > 0 ? item.id.trim() : '';\n if (id && !seen.has(id)) {\n seen.add(id);\n ids.push(id);\n }\n }\n return ids;\n }\n}\n\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-human-capital-management-client-revoke-position-assignment.command-DmVlDQ8_.mjs","sources":["../../../../libs/modules/human-capital-management/client/src/lib/features/organization-chart/commands/revoke-position-assignment.command.ts"],"sourcesContent":["import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXDataSourceFilterOption } from '@acorex/cdk/common';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { inject, Injectable } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-human-capital-management-client/contracts';\nimport {\n AXM_POSITION_ASSIGNMENT_OVERLAPPING_STATUS_IDS,\n AXM_POSITION_ASSIGNMENT_STATUS,\n} from '@acorex-platform/module-human-capital-management-client/contracts';\n\nexport interface AXMRevokePositionAssignmentByIdInput {\n data?: unknown;\n id?: unknown;\n positionId?: string;\n employeeId?: string;\n businessUnitId?: string;\n /** When true, do not show the revoke confirmation (caller already confirmed). */\n skipConfirmation?: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AXMRevokePositionAssignmentByIdCommand\n implements AXPCommand<AXMRevokePositionAssignmentByIdInput, { revokedCount: number }>\n{\n private readonly dialogService = inject(AXDialogService);\n private readonly translationService = inject(AXTranslationService);\n private readonly entityService = inject(AXPEntityService);\n\n async execute(\n input: AXMRevokePositionAssignmentByIdInput,\n ): AXPCommandExecuteResultPromise<{ revokedCount: number }> {\n let ids = this.extractIds(input);\n if (!ids.length && input.positionId && input.employeeId) {\n ids = await this.findOverlappingLifecycleAssignmentIds(\n input.positionId,\n input.employeeId,\n input.businessUnitId,\n );\n }\n if (!ids.length) {\n if (input.skipConfirmation) {\n return { success: true, kind: 'object', data: { revokedCount: 0 } };\n }\n return { success: false };\n }\n\n if (!input.skipConfirmation) {\n const confirmed = await this.confirmRevoke();\n if (!confirmed) {\n return { success: false };\n }\n }\n\n const payload: Record<string, unknown> = {\n endDate: new Date().toISOString(),\n statusId: AXM_POSITION_ASSIGNMENT_STATUS.revoked,\n };\n const data = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.positionAssignment.name)\n .data();\n for (const id of ids) {\n await data.update(id, payload as never);\n }\n\n return { success: true, kind: 'object', data: { revokedCount: ids.length } };\n }\n\n private async confirmRevoke(): Promise<boolean> {\n const title = await this.translationService.translateAsync(\n '@human-capital-management:position-assignments.entities.position-assignment.actions.revoke.confirm.title',\n );\n const message = await this.translationService.translateAsync(\n '@human-capital-management:position-assignments.entities.position-assignment.actions.revoke.confirm.message',\n );\n const result = await this.dialogService.confirm(title, message, 'danger', 'horizontal', false, 'cancel');\n return result.result === true;\n }\n\n private extractIds(input: AXMRevokePositionAssignmentByIdInput): string[] {\n const raw = input?.data ?? input?.data ?? input?.id ?? input;\n const values = Array.isArray(raw) ? raw : [raw];\n return values\n .map((value) => {\n if (typeof value === 'string') {\n return value;\n }\n if (value && typeof value === 'object') {\n const id = (value as { id?: unknown })['id'];\n return typeof id === 'string' ? id : '';\n }\n return '';\n })\n .filter((id) => id.trim().length > 0);\n }\n\n /**\n * Resolves assignment rows that still participate in overlap checks (active + scheduled).\n * Revoking only `active` left future-dated `scheduled` rows and blocked new assignments.\n */\n private async findOverlappingLifecycleAssignmentIds(\n positionId: string,\n employeeId: string,\n businessUnitId?: string,\n ): Promise<string[]> {\n const filters: AXDataSourceFilterOption[] = [\n { field: 'positionId', operator: { type: 'equal' }, value: positionId },\n { field: 'employeeId', operator: { type: 'equal' }, value: employeeId },\n { field: 'statusId', operator: { type: 'in' }, value: [...AXM_POSITION_ASSIGNMENT_OVERLAPPING_STATUS_IDS] },\n ];\n if (businessUnitId) {\n filters.push({ field: 'businessUnitId', operator: { type: 'equal' }, value: businessUnitId });\n }\n\n const result = await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.positionAssignment.name)\n .data()\n .query({\n skip: 0,\n take: 50,\n sort: [{ field: 'startDate', dir: 'desc' }],\n filter: { logic: 'and', filters },\n });\n\n const items = (result.items ?? []) as Array<{ id?: string }>;\n const seen = new Set<string>();\n const ids: string[] = [];\n for (const item of items) {\n const id = typeof item.id === 'string' && item.id.trim().length > 0 ? item.id.trim() : '';\n if (id && !seen.has(id)) {\n seen.add(id);\n ids.push(id);\n }\n }\n return ids;\n }\n}\n\n"],"names":[],"mappings":"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"}