@acorex-platform/module-timesheet-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 (56) hide show
  1. package/fesm2022/acorex-platform-module-timesheet-management-client-admin-adjust-timesheet-period.command-8lA7h4rI.mjs.map +1 -1
  2. package/fesm2022/acorex-platform-module-timesheet-management-client-approval-inbox.query-Wyz_jjxb.mjs.map +1 -1
  3. package/fesm2022/acorex-platform-module-timesheet-management-client-approve-timesheet-period.command-DlAeGANo.mjs.map +1 -1
  4. package/fesm2022/acorex-platform-module-timesheet-management-client-compare-attendance-vs-timesheet.query-ZZym5nSx.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entities-time-entry.mjs +369 -0
  6. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entities-time-entry.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entities-timesheet-correction.mjs +252 -0
  8. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entities-timesheet-correction.mjs.map +1 -0
  9. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entities-timesheet-period.mjs +347 -0
  10. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entities-timesheet-period.mjs.map +1 -0
  11. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entities-timesheet-policy.mjs +281 -0
  12. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entities-timesheet-policy.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entities-work-item.mjs +305 -0
  14. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entities-work-item.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entity-catalog-acorex-platform-module-timesheet-management-client-contracts-entity-catalog-BbB3MCCl.mjs +97 -0
  16. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entity-catalog-acorex-platform-module-timesheet-management-client-contracts-entity-catalog-BbB3MCCl.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entity-catalog-time-entry.entity-CAs7zUnV.mjs +295 -0
  18. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entity-catalog-time-entry.entity-CAs7zUnV.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entity-catalog-timesheet-correction.entity--wZeCM5Q.mjs +178 -0
  20. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entity-catalog-timesheet-correction.entity--wZeCM5Q.mjs.map +1 -0
  21. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entity-catalog-timesheet-period.entity-BOyfB4YA.mjs +273 -0
  22. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entity-catalog-timesheet-period.entity-BOyfB4YA.mjs.map +1 -0
  23. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entity-catalog-timesheet-policy.entity-CqqN7Xty.mjs +207 -0
  24. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entity-catalog-timesheet-policy.entity-CqqN7Xty.mjs.map +1 -0
  25. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entity-catalog-work-item.entity-DilF7u50.mjs +231 -0
  26. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entity-catalog-work-item.entity-DilF7u50.mjs.map +1 -0
  27. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entity-catalog.mjs +2 -0
  28. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts-entity-catalog.mjs.map +1 -0
  29. package/fesm2022/acorex-platform-module-timesheet-management-client-contracts.mjs.map +1 -1
  30. package/fesm2022/acorex-platform-module-timesheet-management-client-create-time-entry.command-DS2EVLym.mjs.map +1 -1
  31. package/fesm2022/acorex-platform-module-timesheet-management-client-delete-time-entry.command-5_ItHpnx.mjs.map +1 -1
  32. package/fesm2022/acorex-platform-module-timesheet-management-client-local-entities.mjs +33 -0
  33. package/fesm2022/acorex-platform-module-timesheet-management-client-local-entities.mjs.map +1 -0
  34. package/fesm2022/acorex-platform-module-timesheet-management-client-lock-timesheet-period.command-D7V7SWUK.mjs.map +1 -1
  35. package/fesm2022/acorex-platform-module-timesheet-management-client-my-timesheet-grid.query-DlDY3tdF.mjs.map +1 -1
  36. package/fesm2022/acorex-platform-module-timesheet-management-client-reject-timesheet-period.command-CONxKPNm.mjs.map +1 -1
  37. package/fesm2022/acorex-platform-module-timesheet-management-client-reopen-timesheet-period.command-DRr_c67L.mjs.map +1 -1
  38. package/fesm2022/acorex-platform-module-timesheet-management-client-report-billable-summary.query-BeLk4Of7.mjs.map +1 -1
  39. package/fesm2022/acorex-platform-module-timesheet-management-client-report-hours-by-project.query-Sp8cLnTC.mjs.map +1 -1
  40. package/fesm2022/acorex-platform-module-timesheet-management-client-report-hours-by-work-item.query-C8RU9Uc0.mjs.map +1 -1
  41. package/fesm2022/acorex-platform-module-timesheet-management-client-submit-timesheet-period.command-C2qlQVIC.mjs.map +1 -1
  42. package/fesm2022/acorex-platform-module-timesheet-management-client-team-timesheets.query-B0QpkVEI.mjs.map +1 -1
  43. package/fesm2022/acorex-platform-module-timesheet-management-client-timesheet-validation.service-DMrJn3HU.mjs.map +1 -1
  44. package/fesm2022/acorex-platform-module-timesheet-management-client-update-time-entry.command-Do6s9OrI.mjs.map +1 -1
  45. package/fesm2022/acorex-platform-module-timesheet-management-client-work-item-search.query-BA2kvF-S.mjs.map +1 -1
  46. package/fesm2022/acorex-platform-module-timesheet-management-client-workforce-exception-report.query-0q-AITic.mjs.map +1 -1
  47. package/fesm2022/acorex-platform-module-timesheet-management-client.mjs +1 -1
  48. package/fesm2022/acorex-platform-module-timesheet-management-client.mjs.map +1 -1
  49. package/package.json +29 -1
  50. package/types/acorex-platform-module-timesheet-management-client-contracts-entities-time-entry.d.ts +8 -0
  51. package/types/acorex-platform-module-timesheet-management-client-contracts-entities-timesheet-correction.d.ts +8 -0
  52. package/types/acorex-platform-module-timesheet-management-client-contracts-entities-timesheet-period.d.ts +8 -0
  53. package/types/acorex-platform-module-timesheet-management-client-contracts-entities-timesheet-policy.d.ts +8 -0
  54. package/types/acorex-platform-module-timesheet-management-client-contracts-entities-work-item.d.ts +8 -0
  55. package/types/acorex-platform-module-timesheet-management-client-contracts-entity-catalog.d.ts +10 -0
  56. package/types/acorex-platform-module-timesheet-management-client-local-entities.d.ts +12 -0
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-timesheet-management-client-admin-adjust-timesheet-period.command-8lA7h4rI.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/timesheet-period/commands/admin-adjust-timesheet-period.command.ts"],"sourcesContent":["import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { Injectable, inject } from '@angular/core';\nimport { isEmpty } from 'lodash';\nimport { RootConfig } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport type { AXMTimesheetManagementTimesheetPeriodEntityModel } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport { AXMTimesheetValidationService } from '../timesheet-validation.service';\n\n//#region ---- Types ----\n\nexport interface AdminAdjustTimesheetPeriodInput {\n id: string;\n totalSeconds?: number;\n adjustmentNote: string;\n}\n\n//#endregion\n\n/**\n * Applies an administrative adjustment to an approved or locked timesheet period.\n */\n@Injectable({ providedIn: 'root' })\nexport class AdminAdjustTimesheetPeriodCommand implements AXPCommand<AdminAdjustTimesheetPeriodInput, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly validationService = inject(AXMTimesheetValidationService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: AdminAdjustTimesheetPeriodInput): AXPCommandExecuteResultPromise<void> {\n try {\n if (isEmpty(input.adjustmentNote?.trim())) {\n return { success: false, message: { text: 'An adjustment note is required.' } };\n }\n\n const dataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timesheetPeriod.name)\n .data<string, AXMTimesheetManagementTimesheetPeriodEntityModel>();\n\n const period = await dataAccessor.byKey(input.id);\n if (!period) {\n return { success: false, message: { text: 'Timesheet period not found.' } };\n }\n\n this.validationService.assertCanAdminAdjust(period);\n\n const updateData: Partial<AXMTimesheetManagementTimesheetPeriodEntityModel> = {\n rejectionReason: input.adjustmentNote.trim(),\n };\n\n if (input.totalSeconds != null) {\n updateData.totalSeconds = input.totalSeconds;\n }\n\n await dataAccessor.update(input.id, updateData);\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to adjust timesheet period.';\n console.error('[AdminAdjustTimesheetPeriodCommand] Error:', error);\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n}\n"],"names":[],"mappings":";;;;;;;AAkBA;AAEA;;AAEG;MAEU,iCAAiC,CAAA;AAD9C,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AA0C3E,IAAA;;;IApCC,MAAM,OAAO,CAAC,KAAsC,EAAA;AAClD,QAAA,IAAI;YACF,IAAI,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE;AACzC,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,iCAAiC,EAAE,EAAE;YACjF;AAEA,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC;AACvB,iBAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI;AAC3E,iBAAA,IAAI,EAA4D;YAEnE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,EAAE;YAC7E;AAEA,YAAA,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,MAAM,CAAC;AAEnD,YAAA,MAAM,UAAU,GAA8D;AAC5E,gBAAA,eAAe,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE;aAC7C;AAED,YAAA,IAAI,KAAK,CAAC,YAAY,IAAI,IAAI,EAAE;AAC9B,gBAAA,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY;YAC9C;YAEA,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC;AAE/C,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;QAC3D;QAAE,OAAO,KAAc,EAAE;AACvB,YAAA,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,oCAAoC;AAC7F,YAAA,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,KAAK,CAAC;AAClE,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACvD;IACF;8GA3CW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjC,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,iCAAiC,cADpB,MAAM,EAAA,CAAA,CAAA;;2FACnB,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAD7C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-timesheet-management-client-admin-adjust-timesheet-period.command-8lA7h4rI.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/timesheet-period/commands/admin-adjust-timesheet-period.command.ts"],"sourcesContent":["import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { Injectable, inject } from '@angular/core';\nimport { isEmpty } from 'lodash';\nimport { RootConfig } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport type { AXMTimesheetManagementTimesheetPeriodEntityModel } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport { AXMTimesheetValidationService } from '../timesheet-validation.service';\n\n//#region ---- Types ----\n\nexport interface AdminAdjustTimesheetPeriodInput {\n id: string;\n totalSeconds?: number;\n adjustmentNote: string;\n}\n\n//#endregion\n\n/**\n * Applies an administrative adjustment to an approved or locked timesheet period.\n */\n@Injectable({ providedIn: 'root' })\nexport class AdminAdjustTimesheetPeriodCommand implements AXPCommand<AdminAdjustTimesheetPeriodInput, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly validationService = inject(AXMTimesheetValidationService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: AdminAdjustTimesheetPeriodInput): AXPCommandExecuteResultPromise<void> {\n try {\n if (isEmpty(input.adjustmentNote?.trim())) {\n return { success: false, message: { text: 'An adjustment note is required.' } };\n }\n\n const dataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timesheetPeriod.name)\n .data<string, AXMTimesheetManagementTimesheetPeriodEntityModel>();\n\n const period = await dataAccessor.byKey(input.id);\n if (!period) {\n return { success: false, message: { text: 'Timesheet period not found.' } };\n }\n\n this.validationService.assertCanAdminAdjust(period);\n\n const updateData: Partial<AXMTimesheetManagementTimesheetPeriodEntityModel> = {\n rejectionReason: input.adjustmentNote.trim(),\n };\n\n if (input.totalSeconds != null) {\n updateData.totalSeconds = input.totalSeconds;\n }\n\n await dataAccessor.update(input.id, updateData);\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to adjust timesheet period.';\n console.error('[AdminAdjustTimesheetPeriodCommand] Error:', error);\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n}\n"],"names":[],"mappings":";;;;;;;AAkBA;AAEA;;AAEG;MAEU,iCAAiC,CAAA;AAD9C,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AA0C3E,IAAA;;;IApCC,MAAM,OAAO,CAAC,KAAsC,EAAA;AAClD,QAAA,IAAI;YACF,IAAI,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE;AACzC,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,iCAAiC,EAAE,EAAE;YACjF;AAEA,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC;AACvB,iBAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI;AAC3E,iBAAA,IAAI,EAA4D;YAEnE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,EAAE;YAC7E;AAEA,YAAA,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,MAAM,CAAC;AAEnD,YAAA,MAAM,UAAU,GAA8D;AAC5E,gBAAA,eAAe,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE;aAC7C;AAED,YAAA,IAAI,KAAK,CAAC,YAAY,IAAI,IAAI,EAAE;AAC9B,gBAAA,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY;YAC9C;YAEA,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC;AAE/C,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;QAC3D;QAAE,OAAO,KAAc,EAAE;AACvB,YAAA,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,oCAAoC;AAC7F,YAAA,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,KAAK,CAAC;AAClE,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACvD;IACF;8GA3CW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjC,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,iCAAiC,cADpB,MAAM,EAAA,CAAA,CAAA;;2FACnB,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAD7C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-timesheet-management-client-approval-inbox.query-Wyz_jjxb.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/reporting/queries/approval-inbox.query.ts"],"sourcesContent":["import { AXPQuery, type AXPQueryFetchResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport {\n AXPSystemStatusType,\n runtimeQueryFailure,\n runtimeQuerySuccessCollection,\n type AXPRuntimeQueryResult,\n} 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-timesheet-management-client/contracts';\nimport type { AXMTimesheetManagementTimesheetPeriodEntityModel } from '@acorex-platform/module-timesheet-management-client/contracts';\n\n//#region ---- Types ----\n\nexport interface AXMApprovalInboxQueryInput {\n approverEmployeeId?: string;\n skip?: number;\n take?: number;\n}\n\n//#endregion\n\n/**\n * Returns timesheet periods awaiting approval for the approval inbox.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMApprovalInboxQuery\n implements AXPQuery<AXMApprovalInboxQueryInput, AXMTimesheetManagementTimesheetPeriodEntityModel>\n{\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n\n //#endregion\n\n //#region ---- Query Execution ----\n\n async fetch(\n input?: AXMApprovalInboxQueryInput | null,\n ): AXPQueryFetchResultPromise<AXMTimesheetManagementTimesheetPeriodEntityModel> {\n try {\n const opts = input ?? {};\n const periodAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timesheetPeriod.name)\n .data<string, AXMTimesheetManagementTimesheetPeriodEntityModel>();\n\n const result = await periodAccessor.query({\n skip: opts.skip ?? 0,\n take: opts.take ?? 50,\n sort: [{ field: 'submittedAt', dir: 'desc' }],\n filter: {\n field: 'statusId',\n operator: { type: 'equal' },\n value: AXPSystemStatusType.WaitingApproval,\n },\n });\n\n return runtimeQuerySuccessCollection({ items: result.items, total: result.total });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load approval inbox.',\n );\n }\n }\n\n //#endregion\n}\n"],"names":[],"mappings":";;;;;;AAqBA;AAEA;;AAEG;MAEU,qBAAqB,CAAA;AADlC,IAAA,WAAA,GAAA;;AAMmB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAmC1D,IAAA;;;IA7BC,MAAM,KAAK,CACT,KAAyC,EAAA;AAEzC,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;AACxB,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC;AACzB,iBAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI;AAC3E,iBAAA,IAAI,EAA4D;AAEnE,YAAA,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC;AACxC,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AACpB,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;gBACrB,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAC7C,gBAAA,MAAM,EAAE;AACN,oBAAA,KAAK,EAAE,UAAU;AACjB,oBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;oBAC3B,KAAK,EAAE,mBAAmB,CAAC,eAAe;AAC3C,iBAAA;AACF,aAAA,CAAC;AAEF,YAAA,OAAO,6BAA6B,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACpF;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,mBAAmB,CACxB,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,gCAAgC,CAC1E;QACH;IACF;8GArCW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,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,qBAAqB,cADR,MAAM,EAAA,CAAA,CAAA;;2FACnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-timesheet-management-client-approval-inbox.query-Wyz_jjxb.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/reporting/queries/approval-inbox.query.ts"],"sourcesContent":["import { AXPQuery, type AXPQueryFetchResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport {\n AXPSystemStatusType,\n runtimeQueryFailure,\n runtimeQuerySuccessCollection,\n type AXPRuntimeQueryResult,\n} 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-timesheet-management-client/contracts';\nimport type { AXMTimesheetManagementTimesheetPeriodEntityModel } from '@acorex-platform/module-timesheet-management-client/contracts';\n\n//#region ---- Types ----\n\nexport interface AXMApprovalInboxQueryInput {\n approverEmployeeId?: string;\n skip?: number;\n take?: number;\n}\n\n//#endregion\n\n/**\n * Returns timesheet periods awaiting approval for the approval inbox.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMApprovalInboxQuery\n implements AXPQuery<AXMApprovalInboxQueryInput, AXMTimesheetManagementTimesheetPeriodEntityModel>\n{\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n\n //#endregion\n\n //#region ---- Query Execution ----\n\n async fetch(\n input?: AXMApprovalInboxQueryInput | null,\n ): AXPQueryFetchResultPromise<AXMTimesheetManagementTimesheetPeriodEntityModel> {\n try {\n const opts = input ?? {};\n const periodAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timesheetPeriod.name)\n .data<string, AXMTimesheetManagementTimesheetPeriodEntityModel>();\n\n const result = await periodAccessor.query({\n skip: opts.skip ?? 0,\n take: opts.take ?? 50,\n sort: [{ field: 'submittedAt', dir: 'desc' }],\n filter: {\n field: 'statusId',\n operator: { type: 'equal' },\n value: AXPSystemStatusType.WaitingApproval,\n },\n });\n\n return runtimeQuerySuccessCollection({ items: result.items, total: result.total });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load approval inbox.',\n );\n }\n }\n\n //#endregion\n}\n"],"names":[],"mappings":";;;;;;AAqBA;AAEA;;AAEG;MAEU,qBAAqB,CAAA;AADlC,IAAA,WAAA,GAAA;;AAMmB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAmC1D,IAAA;;;IA7BC,MAAM,KAAK,CACT,KAAyC,EAAA;AAEzC,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;AACxB,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC;AACzB,iBAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI;AAC3E,iBAAA,IAAI,EAA4D;AAEnE,YAAA,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC;AACxC,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AACpB,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;gBACrB,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AAC7C,gBAAA,MAAM,EAAE;AACN,oBAAA,KAAK,EAAE,UAAU;AACjB,oBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;oBAC3B,KAAK,EAAE,mBAAmB,CAAC,eAAe;AAC3C,iBAAA;AACF,aAAA,CAAC;AAEF,YAAA,OAAO,6BAA6B,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACpF;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,mBAAmB,CACxB,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,gCAAgC,CAC1E;QACH;IACF;8GArCW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,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,qBAAqB,cADR,MAAM,EAAA,CAAA,CAAA;;2FACnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-timesheet-management-client-approve-timesheet-period.command-DlAeGANo.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/timesheet-period/commands/approve-timesheet-period.command.ts"],"sourcesContent":["import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult, AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\n\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { Injectable, inject } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport type { AXMTimesheetManagementTimesheetPeriodEntityModel } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport { AXMTimesheetValidationService } from '../timesheet-validation.service';\n\n//#region ---- Types ----\n\nexport interface ApproveTimesheetPeriodInput {\n id: string;\n note?: string;\n}\n\n//#endregion\n\n/**\n * Approves a timesheet period that is awaiting approval.\n */\n@Injectable({ providedIn: 'root' })\nexport class ApproveTimesheetPeriodCommand implements AXPCommand<ApproveTimesheetPeriodInput, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly validationService = inject(AXMTimesheetValidationService);\n private readonly sessionService = inject(AXPSessionService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: ApproveTimesheetPeriodInput): AXPCommandExecuteResultPromise<void> {\n try {\n const dataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timesheetPeriod.name)\n .data<string, AXMTimesheetManagementTimesheetPeriodEntityModel>();\n\n const period = await dataAccessor.byKey(input.id);\n if (!period) {\n return { success: false, message: { text: 'Timesheet period not found.' } };\n }\n\n this.validationService.assertCanApprove(period);\n\n await dataAccessor.update(input.id, {\n statusId: AXPSystemStatusType.Approved,\n approvedAt: new Date().toISOString(),\n approvedById: this.sessionService.user?.id,\n });\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to approve timesheet period.';\n console.error('[ApproveTimesheetPeriodCommand] Error:', error);\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n}\n"],"names":[],"mappings":";;;;;;;;AAkBA;AAEA;;AAEG;MAEU,6BAA6B,CAAA;AAD1C,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AACzD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAkC5D,IAAA;;;IA5BC,MAAM,OAAO,CAAC,KAAkC,EAAA;AAC9C,QAAA,IAAI;AACF,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC;AACvB,iBAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI;AAC3E,iBAAA,IAAI,EAA4D;YAEnE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,EAAE;YAC7E;AAEA,YAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAE/C,YAAA,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE;gBAClC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;AACtC,gBAAA,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACpC,gBAAA,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE;AAC3C,aAAA,CAAC;AAEF,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;QAC3D;QAAE,OAAO,KAAc,EAAE;AACvB,YAAA,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,qCAAqC;AAC9F,YAAA,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC;AAC9D,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACvD;IACF;8GApCW,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;;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-timesheet-management-client-approve-timesheet-period.command-DlAeGANo.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/timesheet-period/commands/approve-timesheet-period.command.ts"],"sourcesContent":["import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult, AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\n\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { Injectable, inject } from '@angular/core';\nimport { RootConfig } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport type { AXMTimesheetManagementTimesheetPeriodEntityModel } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport { AXMTimesheetValidationService } from '../timesheet-validation.service';\n\n//#region ---- Types ----\n\nexport interface ApproveTimesheetPeriodInput {\n id: string;\n note?: string;\n}\n\n//#endregion\n\n/**\n * Approves a timesheet period that is awaiting approval.\n */\n@Injectable({ providedIn: 'root' })\nexport class ApproveTimesheetPeriodCommand implements AXPCommand<ApproveTimesheetPeriodInput, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly validationService = inject(AXMTimesheetValidationService);\n private readonly sessionService = inject(AXPSessionService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n async execute(input: ApproveTimesheetPeriodInput): AXPCommandExecuteResultPromise<void> {\n try {\n const dataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timesheetPeriod.name)\n .data<string, AXMTimesheetManagementTimesheetPeriodEntityModel>();\n\n const period = await dataAccessor.byKey(input.id);\n if (!period) {\n return { success: false, message: { text: 'Timesheet period not found.' } };\n }\n\n this.validationService.assertCanApprove(period);\n\n await dataAccessor.update(input.id, {\n statusId: AXPSystemStatusType.Approved,\n approvedAt: new Date().toISOString(),\n approvedById: this.sessionService.user?.id,\n });\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to approve timesheet period.';\n console.error('[ApproveTimesheetPeriodCommand] Error:', error);\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n}\n"],"names":[],"mappings":";;;;;;;;AAkBA;AAEA;;AAEG;MAEU,6BAA6B,CAAA;AAD1C,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AACzD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAkC5D,IAAA;;;IA5BC,MAAM,OAAO,CAAC,KAAkC,EAAA;AAC9C,QAAA,IAAI;AACF,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC;AACvB,iBAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI;AAC3E,iBAAA,IAAI,EAA4D;YAEnE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,EAAE;YAC7E;AAEA,YAAA,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAE/C,YAAA,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE;gBAClC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;AACtC,gBAAA,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACpC,gBAAA,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE;AAC3C,aAAA,CAAC;AAEF,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;QAC3D;QAAE,OAAO,KAAc,EAAE;AACvB,YAAA,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,qCAAqC;AAC9F,YAAA,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC;AAC9D,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACvD;IACF;8GApCW,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;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-timesheet-management-client-compare-attendance-vs-timesheet.query-ZZym5nSx.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/reporting/queries/compare-attendance-vs-timesheet.query.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPQuery, type AXPQueryFetchResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport type { AXDataSourceFilterOption } from '@acorex/cdk/common';\nimport {\n runtimeQueryFailure,\n runtimeQuerySuccessObject,\n type AXPRuntimeQueryResult,\n} from '@acorex-platform/framework-shared/core';\nimport { RootConfig as AttendanceRootConfig } from '@acorex-platform/module-attendance-management-client/contracts';\nimport type { AXMAttendanceManagementAttendanceDailySummaryEntityModel } from '@acorex-platform/module-attendance-management-client/contracts';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo } from 'lodash';\nimport { RootConfig } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport type { AXMTimesheetManagementTimeEntryEntityModel } from '@acorex-platform/module-timesheet-management-client/contracts';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXMCompareAttendanceVsTimesheetQueryInput {\n employeeId: string;\n fromDate: string;\n toDate: string;\n varianceThresholdSeconds?: number;\n}\n\nexport interface AXMCompareAttendanceVsTimesheetRow {\n date: string;\n attendanceWorkedSeconds: number;\n timesheetLoggedSeconds: number;\n varianceSeconds: number;\n exceedsThreshold: boolean;\n}\n\nexport interface AXMCompareAttendanceVsTimesheetQueryResult {\n rows: AXMCompareAttendanceVsTimesheetRow[];\n}\n\n//#endregion\n\n//#region ---- Query ----\n\n/**\n * Read-only reconciliation query comparing attendance worked time vs logged timesheet hours.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMCompareAttendanceVsTimesheetQuery\n implements AXPQuery<AXMCompareAttendanceVsTimesheetQueryInput, AXMCompareAttendanceVsTimesheetQueryResult>\n{\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(\n input: AXMCompareAttendanceVsTimesheetQueryInput,\n ): AXPQueryFetchResultPromise<AXMCompareAttendanceVsTimesheetQueryResult> {\n try {\n const threshold = defaultTo(input.varianceThresholdSeconds, 1800);\n const summaryAccessor = this.entityService\n .withEntity(AttendanceRootConfig.module.name, AttendanceRootConfig.entities.attendanceDailySummary.name)\n .data<string, AXMAttendanceManagementAttendanceDailySummaryEntityModel>();\n const entryAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timeEntry.name)\n .data<string, AXMTimesheetManagementTimeEntryEntityModel>();\n\n const dateRangeFilters: AXDataSourceFilterOption[] = [\n { field: 'employeeId', operator: { type: 'equal' }, value: input.employeeId },\n { field: 'workDate', operator: { type: 'gte' }, value: input.fromDate },\n { field: 'workDate', operator: { type: 'lte' }, value: input.toDate },\n ];\n\n const entryDateRangeFilters: AXDataSourceFilterOption[] = [\n { field: 'employeeId', operator: { type: 'equal' }, value: input.employeeId },\n { field: 'entryDate', operator: { type: 'gte' }, value: input.fromDate },\n { field: 'entryDate', operator: { type: 'lte' }, value: input.toDate },\n ];\n\n const summaries = await summaryAccessor.query({\n skip: 0,\n take: 1000,\n filter: { logic: 'and', filters: dateRangeFilters },\n });\n\n const entries = await entryAccessor.query({\n skip: 0,\n take: 5000,\n filter: { logic: 'and', filters: entryDateRangeFilters },\n });\n\n const attendanceByDate = new Map<string, number>();\n for (const row of summaries.items) {\n const date = row.workDate?.slice(0, 10);\n if (date) {\n attendanceByDate.set(date, defaultTo(row.workedSeconds, 0));\n }\n }\n\n const timesheetByDate = new Map<string, number>();\n for (const row of entries.items) {\n const date = row.entryDate?.slice(0, 10);\n if (date) {\n timesheetByDate.set(date, defaultTo(timesheetByDate.get(date), 0) + defaultTo(row.durationSeconds, 0));\n }\n }\n\n const dates = new Set([...attendanceByDate.keys(), ...timesheetByDate.keys()]);\n const rows: AXMCompareAttendanceVsTimesheetRow[] = [...dates]\n .sort()\n .map((date) => {\n const attendanceWorkedSeconds = defaultTo(attendanceByDate.get(date), 0);\n const timesheetLoggedSeconds = defaultTo(timesheetByDate.get(date), 0);\n const varianceSeconds = Math.abs(attendanceWorkedSeconds - timesheetLoggedSeconds);\n return {\n date,\n attendanceWorkedSeconds,\n timesheetLoggedSeconds,\n varianceSeconds,\n exceedsThreshold: varianceSeconds > threshold,\n };\n });\n\n return runtimeQuerySuccessObject({ rows });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to compare attendance vs timesheet.',\n );\n }\n }\n}\n\n//#endregion\n"],"names":["AttendanceRootConfig","RootConfig"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-timesheet-management-client-compare-attendance-vs-timesheet.query-ZZym5nSx.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/reporting/queries/compare-attendance-vs-timesheet.query.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPQuery, type AXPQueryFetchResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport type { AXDataSourceFilterOption } from '@acorex/cdk/common';\nimport {\n runtimeQueryFailure,\n runtimeQuerySuccessObject,\n type AXPRuntimeQueryResult,\n} from '@acorex-platform/framework-shared/core';\nimport { RootConfig as AttendanceRootConfig } from '@acorex-platform/module-attendance-management-client/contracts';\nimport type { AXMAttendanceManagementAttendanceDailySummaryEntityModel } from '@acorex-platform/module-attendance-management-client/contracts';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { inject, Injectable } from '@angular/core';\nimport { defaultTo } from 'lodash';\nimport { RootConfig } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport type { AXMTimesheetManagementTimeEntryEntityModel } from '@acorex-platform/module-timesheet-management-client/contracts';\n\n//#endregion\n\n//#region ---- Types ----\n\nexport interface AXMCompareAttendanceVsTimesheetQueryInput {\n employeeId: string;\n fromDate: string;\n toDate: string;\n varianceThresholdSeconds?: number;\n}\n\nexport interface AXMCompareAttendanceVsTimesheetRow {\n date: string;\n attendanceWorkedSeconds: number;\n timesheetLoggedSeconds: number;\n varianceSeconds: number;\n exceedsThreshold: boolean;\n}\n\nexport interface AXMCompareAttendanceVsTimesheetQueryResult {\n rows: AXMCompareAttendanceVsTimesheetRow[];\n}\n\n//#endregion\n\n//#region ---- Query ----\n\n/**\n * Read-only reconciliation query comparing attendance worked time vs logged timesheet hours.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMCompareAttendanceVsTimesheetQuery\n implements AXPQuery<AXMCompareAttendanceVsTimesheetQueryInput, AXMCompareAttendanceVsTimesheetQueryResult>\n{\n private readonly entityService = inject(AXPEntityService);\n\n async fetch(\n input: AXMCompareAttendanceVsTimesheetQueryInput,\n ): AXPQueryFetchResultPromise<AXMCompareAttendanceVsTimesheetQueryResult> {\n try {\n const threshold = defaultTo(input.varianceThresholdSeconds, 1800);\n const summaryAccessor = this.entityService\n .withEntity(AttendanceRootConfig.module.name, AttendanceRootConfig.entities.attendanceDailySummary.name)\n .data<string, AXMAttendanceManagementAttendanceDailySummaryEntityModel>();\n const entryAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timeEntry.name)\n .data<string, AXMTimesheetManagementTimeEntryEntityModel>();\n\n const dateRangeFilters: AXDataSourceFilterOption[] = [\n { field: 'employeeId', operator: { type: 'equal' }, value: input.employeeId },\n { field: 'workDate', operator: { type: 'gte' }, value: input.fromDate },\n { field: 'workDate', operator: { type: 'lte' }, value: input.toDate },\n ];\n\n const entryDateRangeFilters: AXDataSourceFilterOption[] = [\n { field: 'employeeId', operator: { type: 'equal' }, value: input.employeeId },\n { field: 'entryDate', operator: { type: 'gte' }, value: input.fromDate },\n { field: 'entryDate', operator: { type: 'lte' }, value: input.toDate },\n ];\n\n const summaries = await summaryAccessor.query({\n skip: 0,\n take: 1000,\n filter: { logic: 'and', filters: dateRangeFilters },\n });\n\n const entries = await entryAccessor.query({\n skip: 0,\n take: 5000,\n filter: { logic: 'and', filters: entryDateRangeFilters },\n });\n\n const attendanceByDate = new Map<string, number>();\n for (const row of summaries.items) {\n const date = row.workDate?.slice(0, 10);\n if (date) {\n attendanceByDate.set(date, defaultTo(row.workedSeconds, 0));\n }\n }\n\n const timesheetByDate = new Map<string, number>();\n for (const row of entries.items) {\n const date = row.entryDate?.slice(0, 10);\n if (date) {\n timesheetByDate.set(date, defaultTo(timesheetByDate.get(date), 0) + defaultTo(row.durationSeconds, 0));\n }\n }\n\n const dates = new Set([...attendanceByDate.keys(), ...timesheetByDate.keys()]);\n const rows: AXMCompareAttendanceVsTimesheetRow[] = [...dates]\n .sort()\n .map((date) => {\n const attendanceWorkedSeconds = defaultTo(attendanceByDate.get(date), 0);\n const timesheetLoggedSeconds = defaultTo(timesheetByDate.get(date), 0);\n const varianceSeconds = Math.abs(attendanceWorkedSeconds - timesheetLoggedSeconds);\n return {\n date,\n attendanceWorkedSeconds,\n timesheetLoggedSeconds,\n varianceSeconds,\n exceedsThreshold: varianceSeconds > threshold,\n };\n });\n\n return runtimeQuerySuccessObject({ rows });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to compare attendance vs timesheet.',\n );\n }\n }\n}\n\n//#endregion\n"],"names":["AttendanceRootConfig","RootConfig"],"mappings":"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"}
@@ -0,0 +1,369 @@
1
+ import { AXPWidgetsCatalog, AXPRegionalSetting } from '@acorex-platform/framework-shared/core';
2
+ import { createAllQueryView, entityMasterCrudActions, entityMasterRecordActions } from '@acorex-platform/framework-shared/entity';
3
+
4
+ //#region ---- Module Config ----
5
+ const config = {
6
+ i18n: 'timesheet-management',
7
+ module: 'TimesheetManagement',
8
+ route: 'timesheet-management',
9
+ };
10
+ const RootConfig = {
11
+ config,
12
+ module: {
13
+ name: config.module,
14
+ route: config.route,
15
+ title: `@${config.i18n}:module.title`,
16
+ icon: 'fa-light fa-clock',
17
+ },
18
+ entities: {
19
+ workItem: {
20
+ name: 'WorkItem',
21
+ source: `${config.module}.WorkItem`,
22
+ title: `@${config.i18n}:work-items.entities.work-item.title`,
23
+ titlePlural: `@${config.i18n}:work-items.entities.work-item.plural`,
24
+ icon: 'fa-light fa-list-check',
25
+ },
26
+ timesheetPeriod: {
27
+ name: 'TimesheetPeriod',
28
+ source: `${config.module}.TimesheetPeriod`,
29
+ title: `@${config.i18n}:timesheet-periods.entities.timesheet-period.title`,
30
+ titlePlural: `@${config.i18n}:timesheet-periods.entities.timesheet-period.plural`,
31
+ icon: 'fa-light fa-calendar-week',
32
+ },
33
+ timeEntry: {
34
+ name: 'TimeEntry',
35
+ source: `${config.module}.TimeEntry`,
36
+ title: `@${config.i18n}:time-entries.entities.time-entry.title`,
37
+ titlePlural: `@${config.i18n}:time-entries.entities.time-entry.plural`,
38
+ icon: 'fa-light fa-hourglass-half',
39
+ },
40
+ timesheetCorrection: {
41
+ name: 'TimesheetCorrection',
42
+ source: `${config.module}.TimesheetCorrection`,
43
+ title: `@${config.i18n}:timesheet-corrections.entities.timesheet-correction.title`,
44
+ titlePlural: `@${config.i18n}:timesheet-corrections.entities.timesheet-correction.plural`,
45
+ icon: 'fa-light fa-pen-to-square',
46
+ },
47
+ timesheetPolicy: {
48
+ name: 'TimesheetPolicy',
49
+ source: `${config.module}.TimesheetPolicy`,
50
+ title: `@${config.i18n}:timesheet-policies.entities.timesheet-policy.title`,
51
+ titlePlural: `@${config.i18n}:timesheet-policies.entities.timesheet-policy.plural`,
52
+ icon: 'fa-light fa-sliders',
53
+ },
54
+ },
55
+ pages: {
56
+ myTimesheet: {
57
+ path: 'my-timesheet',
58
+ title: `@${config.i18n}:pages.my-timesheet.title`,
59
+ icon: 'fa-light fa-calendar-week',
60
+ },
61
+ approvalInbox: {
62
+ path: 'approval-inbox',
63
+ title: `@${config.i18n}:pages.approval-inbox.title`,
64
+ icon: 'fa-light fa-inbox',
65
+ },
66
+ teamTimesheets: {
67
+ path: 'team-timesheets',
68
+ title: `@${config.i18n}:pages.team-timesheets.title`,
69
+ icon: 'fa-light fa-users',
70
+ },
71
+ },
72
+ };
73
+ //#endregion
74
+
75
+ //#region ---- Constants ----
76
+ const i18n = RootConfig.config.i18n;
77
+ const entityI18n = `${i18n}:time-entries.entities.time-entry`;
78
+ const listSortAndFilterOptions = {
79
+ sort: { enabled: true },
80
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
81
+ };
82
+ //#endregion
83
+ //#region ---- Entity Factory ----
84
+ /**
85
+ * Time entry entity factory for individual logged work intervals.
86
+ */
87
+ async function factoryTimeEntry() {
88
+ const entityDef = {
89
+ module: RootConfig.module.name,
90
+ name: RootConfig.entities.timeEntry.name,
91
+ title: RootConfig.entities.timeEntry.title,
92
+ icon: RootConfig.entities.timeEntry.icon,
93
+ formats: {
94
+ individual: RootConfig.entities.timeEntry.title,
95
+ plural: RootConfig.entities.timeEntry.titlePlural,
96
+ searchResult: {
97
+ title: '{{ workItem.code }}',
98
+ description: '{{ entryDate | date:"mediumDate" }} — {{ durationSeconds }}s',
99
+ },
100
+ },
101
+ plugins: [{ name: 'history' }],
102
+ groups: [
103
+ { id: 'basic-info', title: '@general:terms.interface.basic-info' },
104
+ { id: 'timing', title: `@${entityI18n}.groups.timing` },
105
+ { id: 'details', title: `@${entityI18n}.groups.details` },
106
+ ],
107
+ properties: [
108
+ {
109
+ name: 'id',
110
+ title: '@general:terms.common.id',
111
+ groupId: 'basic-info',
112
+ schema: { dataType: 'uuid', visible: false, nullable: false, readonly: true, unique: { enabled: true } },
113
+ },
114
+ {
115
+ name: 'employeeId',
116
+ title: `@${entityI18n}.fields.employee-id.title`,
117
+ groupId: 'basic-info',
118
+ options: listSortAndFilterOptions,
119
+ schema: {
120
+ dataType: 'string',
121
+ interface: {
122
+ type: AXPWidgetsCatalog.lookup,
123
+ options: {
124
+ look: 'select',
125
+ entity: 'HumanCapitalManagement.Employee',
126
+ textField: 'person.fullName',
127
+ valueField: 'id',
128
+ expose: [
129
+ { source: 'id', target: 'employee.id' },
130
+ { source: 'employeeCode', target: 'employee.employeeCode' },
131
+ { source: 'person.fullName', target: 'employee.person.fullName' },
132
+ ],
133
+ },
134
+ },
135
+ },
136
+ validations: [{ rule: 'required' }],
137
+ },
138
+ {
139
+ name: 'periodId',
140
+ title: `@${entityI18n}.fields.period-id.title`,
141
+ groupId: 'basic-info',
142
+ options: listSortAndFilterOptions,
143
+ schema: {
144
+ dataType: 'string',
145
+ interface: {
146
+ type: AXPWidgetsCatalog.lookup,
147
+ options: {
148
+ look: 'select',
149
+ entity: `${RootConfig.module.name}.${RootConfig.entities.timesheetPeriod.name}`,
150
+ textField: 'startDate',
151
+ valueField: 'id',
152
+ expose: [
153
+ { source: 'id', target: 'period.id' },
154
+ { source: 'startDate', target: 'period.startDate' },
155
+ { source: 'endDate', target: 'period.endDate' },
156
+ { source: 'statusId', target: 'period.statusId' },
157
+ ],
158
+ },
159
+ },
160
+ },
161
+ validations: [{ rule: 'required' }],
162
+ },
163
+ {
164
+ name: 'workItemId',
165
+ title: `@${entityI18n}.fields.work-item-id.title`,
166
+ groupId: 'basic-info',
167
+ options: listSortAndFilterOptions,
168
+ schema: {
169
+ dataType: 'string',
170
+ interface: {
171
+ type: AXPWidgetsCatalog.lookup,
172
+ options: {
173
+ look: 'select',
174
+ entity: `${RootConfig.module.name}.${RootConfig.entities.workItem.name}`,
175
+ textField: 'code',
176
+ valueField: 'id',
177
+ expose: [
178
+ { source: 'id', target: 'workItem.id' },
179
+ { source: 'code', target: 'workItem.code' },
180
+ { source: 'title', target: 'workItem.title' },
181
+ ],
182
+ },
183
+ },
184
+ },
185
+ validations: [{ rule: 'required' }],
186
+ },
187
+ {
188
+ name: 'projectId',
189
+ title: `@${entityI18n}.fields.project-id.title`,
190
+ groupId: 'basic-info',
191
+ options: listSortAndFilterOptions,
192
+ schema: {
193
+ dataType: 'string',
194
+ interface: {
195
+ type: AXPWidgetsCatalog.lookup,
196
+ options: {
197
+ look: 'select',
198
+ entity: 'ProjectManagement.Project',
199
+ textField: 'name',
200
+ valueField: 'id',
201
+ expose: [
202
+ { source: 'id', target: 'project.id' },
203
+ { source: 'title', target: 'project.title' },
204
+ ],
205
+ },
206
+ },
207
+ },
208
+ },
209
+ {
210
+ name: 'startedAt',
211
+ title: `@${entityI18n}.fields.started-at.title`,
212
+ groupId: 'timing',
213
+ options: listSortAndFilterOptions,
214
+ schema: {
215
+ dataType: 'date',
216
+ interface: { type: AXPWidgetsCatalog.dateTime, options: { format: 'datetime' } },
217
+ },
218
+ },
219
+ {
220
+ name: 'endedAt',
221
+ title: `@${entityI18n}.fields.ended-at.title`,
222
+ groupId: 'timing',
223
+ options: listSortAndFilterOptions,
224
+ schema: {
225
+ dataType: 'date',
226
+ interface: { type: AXPWidgetsCatalog.dateTime, options: { format: 'datetime' } },
227
+ },
228
+ },
229
+ {
230
+ name: 'durationSeconds',
231
+ title: `@${entityI18n}.fields.duration-seconds.title`,
232
+ groupId: 'timing',
233
+ options: listSortAndFilterOptions,
234
+ schema: {
235
+ dataType: 'number',
236
+ interface: { type: AXPWidgetsCatalog.number, options: { minValue: 0 } },
237
+ },
238
+ validations: [{ rule: 'required' }],
239
+ },
240
+ {
241
+ name: 'description',
242
+ title: '@general:terms.common.description',
243
+ groupId: 'details',
244
+ schema: {
245
+ dataType: 'string',
246
+ interface: { type: AXPWidgetsCatalog.largeText, options: { rows: 3 } },
247
+ },
248
+ },
249
+ {
250
+ name: 'isBillable',
251
+ title: `@${entityI18n}.fields.is-billable.title`,
252
+ groupId: 'details',
253
+ options: listSortAndFilterOptions,
254
+ schema: {
255
+ dataType: 'boolean',
256
+ defaultValue: true,
257
+ interface: { type: AXPWidgetsCatalog.toggle },
258
+ },
259
+ },
260
+ {
261
+ name: 'entryDate',
262
+ title: `@${entityI18n}.fields.entry-date.title`,
263
+ groupId: 'timing',
264
+ options: listSortAndFilterOptions,
265
+ schema: {
266
+ dataType: 'date',
267
+ interface: { type: AXPWidgetsCatalog.dateTime, options: { format: 'date' } },
268
+ },
269
+ validations: [{ rule: 'required' }],
270
+ },
271
+ {
272
+ name: 'timezone',
273
+ title: `@${entityI18n}.fields.timezone.title`,
274
+ groupId: 'timing',
275
+ schema: {
276
+ dataType: 'string',
277
+ defaultValue: `{{ settings.get('${AXPRegionalSetting.TimeZone}') }}`,
278
+ interface: {
279
+ type: AXPWidgetsCatalog.lookup,
280
+ options: {
281
+ entity: 'LocaleManagement.Timezones',
282
+ look: 'select',
283
+ allowSearch: true,
284
+ valueField: 'code',
285
+ textField: 'title',
286
+ filter: {
287
+ logic: 'and',
288
+ filters: [{ field: 'isActive', operator: { type: 'equal' }, value: true }],
289
+ },
290
+ },
291
+ },
292
+ },
293
+ validations: [{ rule: 'required' }],
294
+ },
295
+ ],
296
+ columns: [
297
+ { name: 'employeeId', options: { dataPath: 'employee.person.fullName' } },
298
+ { name: 'periodId', options: { dataPath: 'period.startDate' } },
299
+ { name: 'workItemId', options: { dataPath: 'workItem.code' } },
300
+ { name: 'projectId', options: { dataPath: 'project.title' } },
301
+ { name: 'entryDate' },
302
+ { name: 'durationSeconds' },
303
+ { name: 'isBillable' },
304
+ ],
305
+ interfaces: {
306
+ master: {
307
+ create: {
308
+ sections: [{ id: 'basic-info' }, { id: 'timing' }, { id: 'details' }],
309
+ properties: [
310
+ { name: 'employeeId', layout: { positions: { lg: { colSpan: 6 } } } },
311
+ { name: 'periodId', layout: { positions: { lg: { colSpan: 6 } } } },
312
+ { name: 'workItemId', layout: { positions: { lg: { colSpan: 6 } } } },
313
+ { name: 'projectId', layout: { positions: { lg: { colSpan: 6 } } } },
314
+ { name: 'entryDate', layout: { positions: { lg: { colSpan: 6 } } } },
315
+ { name: 'timezone', layout: { positions: { lg: { colSpan: 6 } } } },
316
+ { name: 'startedAt', layout: { positions: { lg: { colSpan: 6 } } } },
317
+ { name: 'endedAt', layout: { positions: { lg: { colSpan: 6 } } } },
318
+ { name: 'durationSeconds', layout: { positions: { lg: { colSpan: 6 } } } },
319
+ { name: 'isBillable', layout: { positions: { lg: { colSpan: 6 } } } },
320
+ { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },
321
+ ],
322
+ },
323
+ update: {
324
+ sections: [{ id: 'basic-info' }, { id: 'timing' }, { id: 'details' }],
325
+ properties: [
326
+ { name: 'employeeId', layout: { positions: { lg: { colSpan: 6 } } } },
327
+ { name: 'periodId', layout: { positions: { lg: { colSpan: 6 } } } },
328
+ { name: 'workItemId', layout: { positions: { lg: { colSpan: 6 } } } },
329
+ { name: 'projectId', layout: { positions: { lg: { colSpan: 6 } } } },
330
+ { name: 'entryDate', layout: { positions: { lg: { colSpan: 6 } } } },
331
+ { name: 'timezone', layout: { positions: { lg: { colSpan: 6 } } } },
332
+ { name: 'startedAt', layout: { positions: { lg: { colSpan: 6 } } } },
333
+ { name: 'endedAt', layout: { positions: { lg: { colSpan: 6 } } } },
334
+ { name: 'durationSeconds', layout: { positions: { lg: { colSpan: 6 } } } },
335
+ { name: 'isBillable', layout: { positions: { lg: { colSpan: 6 } } } },
336
+ { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },
337
+ ],
338
+ },
339
+ single: {
340
+ title: '{{ workItem.code }}',
341
+ sections: [{ id: 'basic-info' }, { id: 'timing' }, { id: 'details' }],
342
+ properties: [
343
+ { name: 'employeeId', layout: { positions: { lg: { colSpan: 6 } } } },
344
+ { name: 'periodId', layout: { positions: { lg: { colSpan: 6 } } } },
345
+ { name: 'workItemId', layout: { positions: { lg: { colSpan: 6 } } } },
346
+ { name: 'projectId', layout: { positions: { lg: { colSpan: 6 } } } },
347
+ { name: 'entryDate', layout: { positions: { lg: { colSpan: 6 } } } },
348
+ { name: 'durationSeconds', layout: { positions: { lg: { colSpan: 6 } } } },
349
+ { name: 'isBillable', layout: { positions: { lg: { colSpan: 6 } } } },
350
+ ],
351
+ actions: [...entityMasterRecordActions()],
352
+ },
353
+ list: {
354
+ actions: [...entityMasterCrudActions()],
355
+ views: [createAllQueryView({ sorts: [{ name: 'entryDate', dir: 'desc' }] })],
356
+ },
357
+ },
358
+ },
359
+ };
360
+ return entityDef;
361
+ }
362
+ //#endregion
363
+
364
+ /**
365
+ * Generated bundle index. Do not edit.
366
+ */
367
+
368
+ export { factoryTimeEntry };
369
+ //# sourceMappingURL=acorex-platform-module-timesheet-management-client-contracts-entities-time-entry.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-timesheet-management-client-contracts-entities-time-entry.mjs","sources":["../../../../libs/modules/timesheet-management/contracts/src/root-config.ts","../../../../libs/modules/timesheet-management/contracts/src/entities/time-entry/time-entry.entity.ts","../../../../libs/modules/timesheet-management/contracts/src/acorex-platform-module-timesheet-management-client-contracts-entities-time-entry.ts"],"sourcesContent":["//#region ---- Module Config ----\n\nconst config = {\n i18n: 'timesheet-management',\n module: 'TimesheetManagement',\n route: 'timesheet-management',\n};\n\nexport const RootConfig = {\n config,\n module: {\n name: config.module,\n route: config.route,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-clock',\n },\n entities: {\n workItem: {\n name: 'WorkItem',\n source: `${config.module}.WorkItem`,\n title: `@${config.i18n}:work-items.entities.work-item.title`,\n titlePlural: `@${config.i18n}:work-items.entities.work-item.plural`,\n icon: 'fa-light fa-list-check',\n },\n timesheetPeriod: {\n name: 'TimesheetPeriod',\n source: `${config.module}.TimesheetPeriod`,\n title: `@${config.i18n}:timesheet-periods.entities.timesheet-period.title`,\n titlePlural: `@${config.i18n}:timesheet-periods.entities.timesheet-period.plural`,\n icon: 'fa-light fa-calendar-week',\n },\n timeEntry: {\n name: 'TimeEntry',\n source: `${config.module}.TimeEntry`,\n title: `@${config.i18n}:time-entries.entities.time-entry.title`,\n titlePlural: `@${config.i18n}:time-entries.entities.time-entry.plural`,\n icon: 'fa-light fa-hourglass-half',\n },\n timesheetCorrection: {\n name: 'TimesheetCorrection',\n source: `${config.module}.TimesheetCorrection`,\n title: `@${config.i18n}:timesheet-corrections.entities.timesheet-correction.title`,\n titlePlural: `@${config.i18n}:timesheet-corrections.entities.timesheet-correction.plural`,\n icon: 'fa-light fa-pen-to-square',\n },\n timesheetPolicy: {\n name: 'TimesheetPolicy',\n source: `${config.module}.TimesheetPolicy`,\n title: `@${config.i18n}:timesheet-policies.entities.timesheet-policy.title`,\n titlePlural: `@${config.i18n}:timesheet-policies.entities.timesheet-policy.plural`,\n icon: 'fa-light fa-sliders',\n },\n },\n pages: {\n myTimesheet: {\n path: 'my-timesheet',\n title: `@${config.i18n}:pages.my-timesheet.title`,\n icon: 'fa-light fa-calendar-week',\n },\n approvalInbox: {\n path: 'approval-inbox',\n title: `@${config.i18n}:pages.approval-inbox.title`,\n icon: 'fa-light fa-inbox',\n },\n teamTimesheets: {\n path: 'team-timesheets',\n title: `@${config.i18n}:pages.team-timesheets.title`,\n icon: 'fa-light fa-users',\n },\n },\n};\n\n//#endregion\n","import { AXPRegionalSetting, AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';\nimport { AXPEntity, createAllQueryView, entityMasterCrudActions, entityMasterRecordActions } from '@acorex-platform/framework-shared/entity';\nimport { RootConfig } from '../../root-config';\n\n//#region ---- Constants ----\n\nconst i18n = RootConfig.config.i18n;\nconst entityI18n = `${i18n}:time-entries.entities.time-entry`;\n\nconst listSortAndFilterOptions = {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n};\n\n//#endregion\n\n//#region ---- Entity Factory ----\n\n/**\n * Time entry entity factory for individual logged work intervals.\n */\nexport async function factoryTimeEntry(): Promise<AXPEntity | null> {\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.timeEntry.name,\n title: RootConfig.entities.timeEntry.title,\n icon: RootConfig.entities.timeEntry.icon,\n formats: {\n individual: RootConfig.entities.timeEntry.title,\n plural: RootConfig.entities.timeEntry.titlePlural,\n searchResult: {\n title: '{{ workItem.code }}',\n description: '{{ entryDate | date:\"mediumDate\" }} — {{ durationSeconds }}s',\n },\n },\n plugins: [{ name: 'history' }],\n groups: [\n { id: 'basic-info', title: '@general:terms.interface.basic-info' },\n { id: 'timing', title: `@${entityI18n}.groups.timing` },\n { id: 'details', title: `@${entityI18n}.groups.details` },\n ],\n properties: [\n {\n name: 'id',\n title: '@general:terms.common.id',\n groupId: 'basic-info',\n schema: { dataType: 'uuid', visible: false, nullable: false, readonly: true, unique: { enabled: true } },\n },\n {\n name: 'employeeId',\n title: `@${entityI18n}.fields.employee-id.title`,\n groupId: 'basic-info',\n options: listSortAndFilterOptions,\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.lookup,\n options: {\n look: 'select',\n entity: 'HumanCapitalManagement.Employee',\n textField: 'person.fullName',\n valueField: 'id',\n expose: [\n { source: 'id', target: 'employee.id' },\n { source: 'employeeCode', target: 'employee.employeeCode' },\n { source: 'person.fullName', target: 'employee.person.fullName' },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'periodId',\n title: `@${entityI18n}.fields.period-id.title`,\n groupId: 'basic-info',\n options: listSortAndFilterOptions,\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.lookup,\n options: {\n look: 'select',\n entity: `${RootConfig.module.name}.${RootConfig.entities.timesheetPeriod.name}`,\n textField: 'startDate',\n valueField: 'id',\n expose: [\n { source: 'id', target: 'period.id' },\n { source: 'startDate', target: 'period.startDate' },\n { source: 'endDate', target: 'period.endDate' },\n { source: 'statusId', target: 'period.statusId' },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'workItemId',\n title: `@${entityI18n}.fields.work-item-id.title`,\n groupId: 'basic-info',\n options: listSortAndFilterOptions,\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.lookup,\n options: {\n look: 'select',\n entity: `${RootConfig.module.name}.${RootConfig.entities.workItem.name}`,\n textField: 'code',\n valueField: 'id',\n expose: [\n { source: 'id', target: 'workItem.id' },\n { source: 'code', target: 'workItem.code' },\n { source: 'title', target: 'workItem.title' },\n ],\n },\n },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'projectId',\n title: `@${entityI18n}.fields.project-id.title`,\n groupId: 'basic-info',\n options: listSortAndFilterOptions,\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.lookup,\n options: {\n look: 'select',\n entity: 'ProjectManagement.Project',\n textField: 'name',\n valueField: 'id',\n expose: [\n { source: 'id', target: 'project.id' },\n { source: 'title', target: 'project.title' },\n ],\n },\n },\n },\n },\n {\n name: 'startedAt',\n title: `@${entityI18n}.fields.started-at.title`,\n groupId: 'timing',\n options: listSortAndFilterOptions,\n schema: {\n dataType: 'date',\n interface: { type: AXPWidgetsCatalog.dateTime, options: { format: 'datetime' } },\n },\n },\n {\n name: 'endedAt',\n title: `@${entityI18n}.fields.ended-at.title`,\n groupId: 'timing',\n options: listSortAndFilterOptions,\n schema: {\n dataType: 'date',\n interface: { type: AXPWidgetsCatalog.dateTime, options: { format: 'datetime' } },\n },\n },\n {\n name: 'durationSeconds',\n title: `@${entityI18n}.fields.duration-seconds.title`,\n groupId: 'timing',\n options: listSortAndFilterOptions,\n schema: {\n dataType: 'number',\n interface: { type: AXPWidgetsCatalog.number, options: { minValue: 0 } },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'description',\n title: '@general:terms.common.description',\n groupId: 'details',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.largeText, options: { rows: 3 } },\n },\n },\n {\n name: 'isBillable',\n title: `@${entityI18n}.fields.is-billable.title`,\n groupId: 'details',\n options: listSortAndFilterOptions,\n schema: {\n dataType: 'boolean',\n defaultValue: true,\n interface: { type: AXPWidgetsCatalog.toggle },\n },\n },\n {\n name: 'entryDate',\n title: `@${entityI18n}.fields.entry-date.title`,\n groupId: 'timing',\n options: listSortAndFilterOptions,\n schema: {\n dataType: 'date',\n interface: { type: AXPWidgetsCatalog.dateTime, options: { format: 'date' } },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'timezone',\n title: `@${entityI18n}.fields.timezone.title`,\n groupId: 'timing',\n schema: {\n dataType: 'string',\n defaultValue: `{{ settings.get('${AXPRegionalSetting.TimeZone}') }}`,\n interface: {\n type: AXPWidgetsCatalog.lookup,\n options: {\n entity: 'LocaleManagement.Timezones',\n look: 'select',\n allowSearch: true,\n valueField: 'code',\n textField: 'title',\n filter: {\n logic: 'and',\n filters: [{ field: 'isActive', operator: { type: 'equal' }, value: true }],\n },\n },\n },\n },\n validations: [{ rule: 'required' }],\n },\n ],\n columns: [\n { name: 'employeeId', options: { dataPath: 'employee.person.fullName' } },\n { name: 'periodId', options: { dataPath: 'period.startDate' } },\n { name: 'workItemId', options: { dataPath: 'workItem.code' } },\n { name: 'projectId', options: { dataPath: 'project.title' } },\n { name: 'entryDate' },\n { name: 'durationSeconds' },\n { name: 'isBillable' },\n ],\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'basic-info' }, { id: 'timing' }, { id: 'details' }],\n properties: [\n { name: 'employeeId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'periodId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'workItemId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'projectId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'entryDate', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'timezone', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'startedAt', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'endedAt', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'durationSeconds', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'isBillable', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n update: {\n sections: [{ id: 'basic-info' }, { id: 'timing' }, { id: 'details' }],\n properties: [\n { name: 'employeeId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'periodId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'workItemId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'projectId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'entryDate', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'timezone', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'startedAt', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'endedAt', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'durationSeconds', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'isBillable', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'description', layout: { positions: { lg: { colSpan: 12 } } } },\n ],\n },\n single: {\n title: '{{ workItem.code }}',\n sections: [{ id: 'basic-info' }, { id: 'timing' }, { id: 'details' }],\n properties: [\n { name: 'employeeId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'periodId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'workItemId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'projectId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'entryDate', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'durationSeconds', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'isBillable', layout: { positions: { lg: { colSpan: 6 } } } },\n ],\n actions: [...entityMasterRecordActions()],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView({ sorts: [{ name: 'entryDate', dir: 'desc' }] })],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entity-entry.time-entry';\n"],"names":[],"mappings":"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"}