@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
@@ -0,0 +1,231 @@
1
+ import { AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';
2
+ import { createAllQueryView, entityMasterCrudActions, entityMasterRecordActions } from '@acorex-platform/framework-shared/entity';
3
+ import { R as RootConfig } from './acorex-platform-module-timesheet-management-client-contracts-entity-catalog-acorex-platform-module-timesheet-management-client-contracts-entity-catalog-BbB3MCCl.mjs';
4
+
5
+ //#region ---- Constants ----
6
+ const i18n = RootConfig.config.i18n;
7
+ const entityI18n = `${i18n}:work-items.entities.work-item`;
8
+ const listSortAndFilterOptions = {
9
+ sort: { enabled: true },
10
+ filter: { advance: { enabled: true }, inline: { enabled: true } },
11
+ };
12
+ const WORK_ITEM_SOURCE_TYPE_OPTIONS = [
13
+ { id: 'Internal', title: `@${entityI18n}.fields.source-type.options.internal` },
14
+ { id: 'Jira', title: `@${entityI18n}.fields.source-type.options.jira` },
15
+ { id: 'Task', title: `@${entityI18n}.fields.source-type.options.task` },
16
+ ];
17
+ //#endregion
18
+ //#region ---- Entity Factory ----
19
+ /**
20
+ * Work item entity factory for billable/non-billable time tracking references.
21
+ */
22
+ async function factoryWorkItem() {
23
+ const entityDef = {
24
+ module: RootConfig.module.name,
25
+ name: RootConfig.entities.workItem.name,
26
+ title: RootConfig.entities.workItem.title,
27
+ icon: RootConfig.entities.workItem.icon,
28
+ formats: {
29
+ individual: RootConfig.entities.workItem.title,
30
+ plural: RootConfig.entities.workItem.titlePlural,
31
+ searchResult: {
32
+ title: '{{ code }}',
33
+ description: '{{ title }}',
34
+ },
35
+ },
36
+ plugins: [
37
+ { name: 'history' },
38
+ { name: 'unique-fields', options: { fields: 'code', scope: 'tenant' } },
39
+ ],
40
+ groups: [
41
+ { id: 'basic-info', title: '@general:terms.interface.basic-info' },
42
+ { id: 'source', title: `@${entityI18n}.groups.source` },
43
+ { id: 'assignment', title: `@${entityI18n}.groups.assignment` },
44
+ { id: 'settings', title: '@general:terms.interface.settings' },
45
+ ],
46
+ properties: [
47
+ {
48
+ name: 'id',
49
+ title: '@general:terms.common.id',
50
+ groupId: 'basic-info',
51
+ schema: { dataType: 'uuid', visible: false, nullable: false, readonly: true, unique: { enabled: true } },
52
+ },
53
+ {
54
+ name: 'code',
55
+ title: `@${entityI18n}.fields.code.title`,
56
+ groupId: 'basic-info',
57
+ options: listSortAndFilterOptions,
58
+ schema: {
59
+ dataType: 'string',
60
+ unique: { enabled: true },
61
+ interface: { type: AXPWidgetsCatalog.text },
62
+ },
63
+ validations: [{ rule: 'required' }],
64
+ },
65
+ {
66
+ name: 'title',
67
+ title: '@general:terms.common.title',
68
+ groupId: 'basic-info',
69
+ options: listSortAndFilterOptions,
70
+ schema: {
71
+ dataType: 'string',
72
+ interface: { type: AXPWidgetsCatalog.text, options: { multiLanguage: true } },
73
+ },
74
+ validations: [{ rule: 'required' }],
75
+ },
76
+ {
77
+ name: 'sourceType',
78
+ title: `@${entityI18n}.fields.source-type.title`,
79
+ groupId: 'source',
80
+ options: listSortAndFilterOptions,
81
+ schema: {
82
+ dataType: 'string',
83
+ defaultValue: 'Internal',
84
+ interface: {
85
+ type: AXPWidgetsCatalog.select,
86
+ options: { items: WORK_ITEM_SOURCE_TYPE_OPTIONS },
87
+ },
88
+ },
89
+ validations: [{ rule: 'required' }],
90
+ },
91
+ {
92
+ name: 'sourceRef',
93
+ title: `@${entityI18n}.fields.source-ref.title`,
94
+ groupId: 'source',
95
+ schema: {
96
+ dataType: 'string',
97
+ interface: { type: AXPWidgetsCatalog.largeText, options: { rows: 4 } },
98
+ },
99
+ },
100
+ {
101
+ name: 'isBillableDefault',
102
+ title: `@${entityI18n}.fields.is-billable-default.title`,
103
+ groupId: 'settings',
104
+ options: listSortAndFilterOptions,
105
+ schema: {
106
+ dataType: 'boolean',
107
+ defaultValue: true,
108
+ interface: { type: AXPWidgetsCatalog.toggle },
109
+ },
110
+ },
111
+ {
112
+ name: 'isActive',
113
+ title: `@${entityI18n}.fields.is-active.title`,
114
+ groupId: 'settings',
115
+ options: listSortAndFilterOptions,
116
+ schema: {
117
+ dataType: 'boolean',
118
+ defaultValue: true,
119
+ interface: { type: AXPWidgetsCatalog.toggle },
120
+ },
121
+ },
122
+ {
123
+ name: 'employeeId',
124
+ title: `@${entityI18n}.fields.employee-id.title`,
125
+ groupId: 'assignment',
126
+ options: listSortAndFilterOptions,
127
+ schema: {
128
+ dataType: 'string',
129
+ interface: {
130
+ type: AXPWidgetsCatalog.lookup,
131
+ options: {
132
+ look: 'select',
133
+ entity: 'HumanCapitalManagement.Employee',
134
+ textField: 'person.fullName',
135
+ valueField: 'id',
136
+ expose: [
137
+ { source: 'id', target: 'employee.id' },
138
+ { source: 'employeeCode', target: 'employee.employeeCode' },
139
+ { source: 'person.fullName', target: 'employee.person.fullName' },
140
+ ],
141
+ },
142
+ },
143
+ },
144
+ },
145
+ {
146
+ name: 'projectId',
147
+ title: `@${entityI18n}.fields.project-id.title`,
148
+ groupId: 'assignment',
149
+ options: listSortAndFilterOptions,
150
+ schema: {
151
+ dataType: 'string',
152
+ interface: {
153
+ type: AXPWidgetsCatalog.lookup,
154
+ options: {
155
+ look: 'select',
156
+ entity: 'ProjectManagement.Project',
157
+ textField: 'name',
158
+ valueField: 'id',
159
+ expose: [
160
+ { source: 'id', target: 'project.id' },
161
+ { source: 'title', target: 'project.title' },
162
+ ],
163
+ },
164
+ },
165
+ },
166
+ },
167
+ ],
168
+ columns: [
169
+ { name: 'code' },
170
+ { name: 'title' },
171
+ { name: 'sourceType' },
172
+ { name: 'employeeId', options: { dataPath: 'employee.person.fullName' } },
173
+ { name: 'projectId', options: { dataPath: 'project.title' } },
174
+ { name: 'isBillableDefault' },
175
+ { name: 'isActive' },
176
+ ],
177
+ interfaces: {
178
+ master: {
179
+ create: {
180
+ sections: [{ id: 'basic-info' }, { id: 'source' }, { id: 'assignment' }, { id: 'settings' }],
181
+ properties: [
182
+ { name: 'code', layout: { positions: { lg: { colSpan: 6 } } } },
183
+ { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },
184
+ { name: 'sourceType', layout: { positions: { lg: { colSpan: 6 } } } },
185
+ { name: 'sourceRef', layout: { positions: { lg: { colSpan: 12 } } } },
186
+ { name: 'employeeId', layout: { positions: { lg: { colSpan: 6 } } } },
187
+ { name: 'projectId', layout: { positions: { lg: { colSpan: 6 } } } },
188
+ { name: 'isBillableDefault', layout: { positions: { lg: { colSpan: 6 } } } },
189
+ { name: 'isActive', layout: { positions: { lg: { colSpan: 6 } } } },
190
+ ],
191
+ },
192
+ update: {
193
+ sections: [{ id: 'basic-info' }, { id: 'source' }, { id: 'assignment' }, { id: 'settings' }],
194
+ properties: [
195
+ { name: 'code', layout: { positions: { lg: { colSpan: 6 } } } },
196
+ { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },
197
+ { name: 'sourceType', layout: { positions: { lg: { colSpan: 6 } } } },
198
+ { name: 'sourceRef', layout: { positions: { lg: { colSpan: 12 } } } },
199
+ { name: 'employeeId', layout: { positions: { lg: { colSpan: 6 } } } },
200
+ { name: 'projectId', layout: { positions: { lg: { colSpan: 6 } } } },
201
+ { name: 'isBillableDefault', layout: { positions: { lg: { colSpan: 6 } } } },
202
+ { name: 'isActive', layout: { positions: { lg: { colSpan: 6 } } } },
203
+ ],
204
+ },
205
+ single: {
206
+ title: '{{ code }}',
207
+ sections: [{ id: 'basic-info' }, { id: 'source' }, { id: 'assignment' }, { id: 'settings' }],
208
+ properties: [
209
+ { name: 'code', layout: { positions: { lg: { colSpan: 6 } } } },
210
+ { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },
211
+ { name: 'sourceType', layout: { positions: { lg: { colSpan: 6 } } } },
212
+ { name: 'employeeId', layout: { positions: { lg: { colSpan: 6 } } } },
213
+ { name: 'projectId', layout: { positions: { lg: { colSpan: 6 } } } },
214
+ { name: 'isBillableDefault', layout: { positions: { lg: { colSpan: 6 } } } },
215
+ { name: 'isActive', layout: { positions: { lg: { colSpan: 6 } } } },
216
+ ],
217
+ actions: [...entityMasterRecordActions()],
218
+ },
219
+ list: {
220
+ actions: [...entityMasterCrudActions()],
221
+ views: [createAllQueryView({ sorts: [{ name: 'code', dir: 'asc' }] })],
222
+ },
223
+ },
224
+ },
225
+ };
226
+ return entityDef;
227
+ }
228
+ //#endregion
229
+
230
+ export { factoryWorkItem };
231
+ //# sourceMappingURL=acorex-platform-module-timesheet-management-client-contracts-entity-catalog-work-item.entity-DilF7u50.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-timesheet-management-client-contracts-entity-catalog-work-item.entity-DilF7u50.mjs","sources":["../../../../libs/modules/timesheet-management/contracts/src/entities/work-item/work-item.entity.ts"],"sourcesContent":["import { 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}:work-items.entities.work-item`;\n\nconst listSortAndFilterOptions = {\n sort: { enabled: true },\n filter: { advance: { enabled: true }, inline: { enabled: true } },\n};\n\nconst WORK_ITEM_SOURCE_TYPE_OPTIONS = [\n { id: 'Internal', title: `@${entityI18n}.fields.source-type.options.internal` },\n { id: 'Jira', title: `@${entityI18n}.fields.source-type.options.jira` },\n { id: 'Task', title: `@${entityI18n}.fields.source-type.options.task` },\n];\n\n//#endregion\n\n//#region ---- Entity Factory ----\n\n/**\n * Work item entity factory for billable/non-billable time tracking references.\n */\nexport async function factoryWorkItem(): Promise<AXPEntity | null> {\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.workItem.name,\n title: RootConfig.entities.workItem.title,\n icon: RootConfig.entities.workItem.icon,\n formats: {\n individual: RootConfig.entities.workItem.title,\n plural: RootConfig.entities.workItem.titlePlural,\n searchResult: {\n title: '{{ code }}',\n description: '{{ title }}',\n },\n },\n plugins: [\n { name: 'history' },\n { name: 'unique-fields', options: { fields: 'code', scope: 'tenant' } },\n ],\n groups: [\n { id: 'basic-info', title: '@general:terms.interface.basic-info' },\n { id: 'source', title: `@${entityI18n}.groups.source` },\n { id: 'assignment', title: `@${entityI18n}.groups.assignment` },\n { id: 'settings', title: '@general:terms.interface.settings' },\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: 'code',\n title: `@${entityI18n}.fields.code.title`,\n groupId: 'basic-info',\n options: listSortAndFilterOptions,\n schema: {\n dataType: 'string',\n unique: { enabled: true },\n interface: { type: AXPWidgetsCatalog.text },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'title',\n title: '@general:terms.common.title',\n groupId: 'basic-info',\n options: listSortAndFilterOptions,\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.text, options: { multiLanguage: true } },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'sourceType',\n title: `@${entityI18n}.fields.source-type.title`,\n groupId: 'source',\n options: listSortAndFilterOptions,\n schema: {\n dataType: 'string',\n defaultValue: 'Internal',\n interface: {\n type: AXPWidgetsCatalog.select,\n options: { items: WORK_ITEM_SOURCE_TYPE_OPTIONS },\n },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'sourceRef',\n title: `@${entityI18n}.fields.source-ref.title`,\n groupId: 'source',\n schema: {\n dataType: 'string',\n interface: { type: AXPWidgetsCatalog.largeText, options: { rows: 4 } },\n },\n },\n {\n name: 'isBillableDefault',\n title: `@${entityI18n}.fields.is-billable-default.title`,\n groupId: 'settings',\n options: listSortAndFilterOptions,\n schema: {\n dataType: 'boolean',\n defaultValue: true,\n interface: { type: AXPWidgetsCatalog.toggle },\n },\n },\n {\n name: 'isActive',\n title: `@${entityI18n}.fields.is-active.title`,\n groupId: 'settings',\n options: listSortAndFilterOptions,\n schema: {\n dataType: 'boolean',\n defaultValue: true,\n interface: { type: AXPWidgetsCatalog.toggle },\n },\n },\n {\n name: 'employeeId',\n title: `@${entityI18n}.fields.employee-id.title`,\n groupId: 'assignment',\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 },\n {\n name: 'projectId',\n title: `@${entityI18n}.fields.project-id.title`,\n groupId: 'assignment',\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 columns: [\n { name: 'code' },\n { name: 'title' },\n { name: 'sourceType' },\n { name: 'employeeId', options: { dataPath: 'employee.person.fullName' } },\n { name: 'projectId', options: { dataPath: 'project.title' } },\n { name: 'isBillableDefault' },\n { name: 'isActive' },\n ],\n interfaces: {\n master: {\n create: {\n sections: [{ id: 'basic-info' }, { id: 'source' }, { id: 'assignment' }, { id: 'settings' }],\n properties: [\n { name: 'code', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'sourceType', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'sourceRef', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'employeeId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'projectId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'isBillableDefault', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'isActive', layout: { positions: { lg: { colSpan: 6 } } } },\n ],\n },\n update: {\n sections: [{ id: 'basic-info' }, { id: 'source' }, { id: 'assignment' }, { id: 'settings' }],\n properties: [\n { name: 'code', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'sourceType', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'sourceRef', layout: { positions: { lg: { colSpan: 12 } } } },\n { name: 'employeeId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'projectId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'isBillableDefault', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'isActive', layout: { positions: { lg: { colSpan: 6 } } } },\n ],\n },\n single: {\n title: '{{ code }}',\n sections: [{ id: 'basic-info' }, { id: 'source' }, { id: 'assignment' }, { id: 'settings' }],\n properties: [\n { name: 'code', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'title', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'sourceType', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'employeeId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'projectId', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'isBillableDefault', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'isActive', layout: { positions: { lg: { colSpan: 6 } } } },\n ],\n actions: [...entityMasterRecordActions()],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [createAllQueryView({ sorts: [{ name: 'code', dir: 'asc' }] })],\n },\n },\n },\n };\n\n return entityDef;\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { t as timesheetManagementLocalEntityCatalog } from './acorex-platform-module-timesheet-management-client-contracts-entity-catalog-acorex-platform-module-timesheet-management-client-contracts-entity-catalog-BbB3MCCl.mjs';
2
+ //# sourceMappingURL=acorex-platform-module-timesheet-management-client-contracts-entity-catalog.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-timesheet-management-client-contracts-entity-catalog.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-timesheet-management-client-contracts.mjs","sources":["../../../../libs/modules/timesheet-management/contracts/src/root-config.ts","../../../../libs/modules/timesheet-management/contracts/src/permission.keys.ts","../../../../libs/modules/timesheet-management/contracts/src/menu.keys.ts","../../../../libs/modules/timesheet-management/contracts/src/features.keys.ts","../../../../libs/modules/timesheet-management/contracts/src/commands.keys.ts","../../../../libs/modules/timesheet-management/contracts/src/timesheet-period-status.constants.ts","../../../../libs/modules/timesheet-management/contracts/src/entities/time-entry/time-entry.types.ts","../../../../libs/modules/timesheet-management/contracts/src/entities/timesheet-correction/timesheet-correction.types.ts","../../../../libs/modules/timesheet-management/contracts/src/entities/timesheet-period/timesheet-period.types.ts","../../../../libs/modules/timesheet-management/contracts/src/entities/timesheet-policy/timesheet-policy.types.ts","../../../../libs/modules/timesheet-management/contracts/src/entities/work-item/work-item.types.ts","../../../../libs/modules/timesheet-management/contracts/src/acorex-platform-module-timesheet-management-client-contracts.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","/**\n * Projects & Work capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPProjectsWorkPermissionKeys = {\n Access: 'ProjectsWork:Permission:Access',\n MaintainProjects: 'ProjectsWork:Permission:MaintainProjects',\n MaintainTasks: 'ProjectsWork:Permission:MaintainTasks',\n ViewAllTasks: 'ProjectsWork:Permission:ViewAllTasks',\n MaintainTimesheets: 'ProjectsWork:Permission:MaintainTimesheets',\n ManageTimesheetActions: 'ProjectsWork:Permission:ManageTimesheetActions',\n ViewTimesheetReports: 'ProjectsWork:Permission:ViewTimesheetReports',\n Setup: 'ProjectsWork:Permission:Setup',\n} as const;\n\n/**\n * @deprecated Prefer {@link AXPProjectsWorkPermissionKeys}.\n * Legacy nested shape kept so existing imports compile during migration.\n */\nexport const AXMTimesheetManagementPermissions = {\n TimesheetManagement: {\n WorkItem: {\n Management: AXPProjectsWorkPermissionKeys.Setup,\n View: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n Create: AXPProjectsWorkPermissionKeys.Setup,\n Update: AXPProjectsWorkPermissionKeys.Setup,\n Delete: AXPProjectsWorkPermissionKeys.Setup,\n },\n TimesheetPeriod: {\n Management: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n View: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n Create: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n Update: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n Delete: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n TeamView: AXPProjectsWorkPermissionKeys.ManageTimesheetActions,\n Approve: AXPProjectsWorkPermissionKeys.ManageTimesheetActions,\n AdminAdjust: AXPProjectsWorkPermissionKeys.ManageTimesheetActions,\n },\n TimeEntry: {\n Management: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n View: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n Create: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n Update: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n Delete: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n },\n TimesheetCorrection: {\n Management: AXPProjectsWorkPermissionKeys.ManageTimesheetActions,\n View: AXPProjectsWorkPermissionKeys.ManageTimesheetActions,\n Approve: AXPProjectsWorkPermissionKeys.ManageTimesheetActions,\n },\n TimesheetPolicy: {\n Management: AXPProjectsWorkPermissionKeys.Setup,\n View: AXPProjectsWorkPermissionKeys.Setup,\n },\n TimesheetReport: {\n View: AXPProjectsWorkPermissionKeys.ViewTimesheetReports,\n Export: AXPProjectsWorkPermissionKeys.ViewTimesheetReports,\n },\n },\n} as const;\n","//#region ---- Menu Keys ----\n\nexport const AXMTimesheetManagementMenuKeys = {\n Root: 'TimesheetManagement:Menu',\n MyTimesheet: 'TimesheetManagement:Menu:MyTimesheet',\n PeriodHistory: 'TimesheetManagement:Menu:PeriodHistory',\n ApprovalInbox: 'TimesheetManagement:Menu:ApprovalInbox',\n TeamTimesheets: 'TimesheetManagement:Menu:TeamTimesheets',\n WorkItems: 'TimesheetManagement:Menu:WorkItems',\n Reports: 'TimesheetManagement:Menu:Reports',\n Configuration: 'TimesheetManagement:Menu:Configuration',\n Policies: 'TimesheetManagement:Menu:Policies',\n};\n\n//#endregion\n","//#region ---- Feature Keys ----\n\nexport const AXMTimesheetManagementFeatureKeys = {\n TimesheetEntry: 'TimesheetManagement:Feature:Timesheet.Entry',\n TimesheetApproval: 'TimesheetManagement:Feature:Timesheet.Approval',\n TimesheetReporting: 'TimesheetManagement:Feature:Timesheet.Reporting',\n};\n\n//#endregion\n","//#region ---- Command Keys ----\n\nexport const AXMTimesheetManagementCommandKeys = {\n WorkItemResolveFromJira: 'TimesheetManagement.WorkItem:ResolveFromJiraIssue',\n TimeEntryCreate: 'TimesheetManagement.TimeEntry:Create',\n TimeEntryUpdate: 'TimesheetManagement.TimeEntry:Update',\n TimeEntryDelete: 'TimesheetManagement.TimeEntry:Delete',\n TimesheetPeriodSubmit: 'TimesheetManagement.TimesheetPeriod:Submit',\n TimesheetPeriodApprove: 'TimesheetManagement.TimesheetPeriod:Approve',\n TimesheetPeriodReject: 'TimesheetManagement.TimesheetPeriod:Reject',\n TimesheetPeriodReopen: 'TimesheetManagement.TimesheetPeriod:Reopen',\n TimesheetPeriodLock: 'TimesheetManagement.TimesheetPeriod:Lock',\n TimesheetPeriodAdminAdjust: 'TimesheetManagement.TimesheetPeriod:AdminAdjust',\n};\n\n//#endregion\n","import { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\n\n//#region ---- Timesheet period open statuses ----\n\n/** Statuses that block creating another open period for the same employee and date range. */\nexport const AXMTimesheetPeriodOpenStatusIds = [\n AXPSystemStatusType.Draft,\n AXPSystemStatusType.WaitingApproval,\n] as const;\n\n/** Statuses where time entries cannot be edited. */\nexport const AXMTimesheetPeriodLockedStatusId = 'locked' as const;\n\nexport const AXMTimesheetPeriodLockedStatusIds = [\n AXPSystemStatusType.Approved,\n AXMTimesheetPeriodLockedStatusId,\n] as const;\n\n//#endregion\n","import type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\nimport type { AXMTimesheetWorkItemSnapshot } from '../work-item/work-item.types';\n\n//#region ---- Time Entry Types ----\n\nexport interface AXMTimesheetManagementTimeEntryEntityModel extends AXPEntityModel<string> {\n employeeId: string;\n employee?: { id: string; employeeCode?: string; person?: { fullName?: string } };\n periodId: string;\n period?: { id: string; startDate?: string; endDate?: string; statusId?: string };\n workItemId: string;\n workItem?: { id: string; code?: string; title?: string };\n projectId?: string;\n project?: { id: string; title?: string };\n startedAt?: string;\n endedAt?: string;\n durationSeconds: number;\n description?: string;\n isBillable: boolean;\n entryDate: string;\n timezone: string;\n workItemSnapshot?: AXMTimesheetWorkItemSnapshot;\n}\n\n//#endregion\n","import type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\nimport { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\n\n//#region ---- Timesheet Correction Types ----\n\nexport type AXMTimesheetCorrectionStatusId =\n | typeof AXPSystemStatusType.WaitingApproval\n | typeof AXPSystemStatusType.Approved\n | typeof AXPSystemStatusType.Rejected;\n\nexport interface AXMTimesheetCorrectionChange {\n timeEntryId: string;\n field: string;\n oldValue: unknown;\n newValue: unknown;\n}\n\nexport interface AXMTimesheetManagementTimesheetCorrectionEntityModel extends AXPEntityModel<string> {\n periodId: string;\n period?: { id: string; startDate?: string; endDate?: string };\n requestedById: string;\n reason: string;\n statusId: AXMTimesheetCorrectionStatusId;\n changes: AXMTimesheetCorrectionChange[];\n reviewedById?: string;\n reviewedAt?: string;\n}\n\n//#endregion\n","import type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\nimport { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\n\n//#region ---- Timesheet Period Types ----\n\nexport type AXMTimesheetPeriodType = 'Weekly' | 'Biweekly' | 'Monthly';\n\nexport type AXMTimesheetPeriodStatusId =\n | typeof AXPSystemStatusType.Draft\n | typeof AXPSystemStatusType.WaitingApproval\n | typeof AXPSystemStatusType.Approved\n | typeof AXPSystemStatusType.Rejected\n | 'locked';\n\nexport interface AXMTimesheetManagementTimesheetPeriodEntityModel extends AXPEntityModel<string> {\n employeeId: string;\n employee?: { id: string; employeeCode?: string; person?: { fullName?: string } };\n periodType: AXMTimesheetPeriodType;\n startDate: string;\n endDate: string;\n statusId: AXMTimesheetPeriodStatusId;\n submittedAt?: string;\n approvedAt?: string;\n approvedById?: string;\n rejectedAt?: string;\n rejectionReason?: string;\n lockedAt?: string;\n totalSeconds?: number;\n timezone: string;\n}\n\n//#endregion\n","import type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\nimport type { AXMTimesheetPeriodType } from '../timesheet-period/timesheet-period.types';\n\n//#region ---- Timesheet Policy Types ----\n\nexport type AXMTimesheetOverlapPolicy = 'reject' | 'warn';\n\nexport interface AXMTimesheetManagementTimesheetPolicyEntityModel extends AXPEntityModel<string> {\n name: string;\n maxDailyHours?: number;\n maxWeeklyHours?: number;\n requireDescription: boolean;\n allowFutureDates: boolean;\n overlapPolicy: AXMTimesheetOverlapPolicy;\n periodTypeDefault: AXMTimesheetPeriodType;\n isDefault: boolean;\n}\n\n//#endregion\n","import type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n\n//#region ---- Work Item Types ----\n\nexport type AXMTimesheetWorkItemSourceType = 'Internal' | 'Jira' | 'Task';\n\nexport interface AXMTimesheetWorkItemSourceRef {\n system: 'internal' | 'jira' | 'task';\n jiraInstanceId?: string;\n jiraIssueId?: string;\n jiraIssueKey?: string;\n taskId?: string;\n internalCode?: string;\n}\n\nexport interface AXMTimesheetWorkItemSnapshot {\n title: string;\n subtitle?: string;\n projectKey?: string;\n statusName?: string;\n capturedAt: string;\n}\n\nexport interface AXMTimesheetManagementWorkItemEntityModel extends AXPEntityModel<string> {\n code: string;\n title: AXPMultiLanguageString;\n sourceType: AXMTimesheetWorkItemSourceType;\n sourceRef?: AXMTimesheetWorkItemSourceRef;\n snapshot?: AXMTimesheetWorkItemSnapshot;\n isBillableDefault: boolean;\n isActive: boolean;\n employeeId?: string;\n employee?: { id: string; employeeCode?: string; person?: { fullName?: string } };\n projectId?: string;\n project?: { id: string; title?: string };\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAAA;AAEA,MAAM,MAAM,GAAG;AACb,IAAA,IAAI,EAAE,sBAAsB;AAC5B,IAAA,MAAM,EAAE,qBAAqB;AAC7B,IAAA,KAAK,EAAE,sBAAsB;CAC9B;AAEM,MAAM,UAAU,GAAG;IACxB,MAAM;AACN,IAAA,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC,MAAM;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK;AACnB,QAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,aAAA,CAAe;AACrC,QAAA,IAAI,EAAE,mBAAmB;AAC1B,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,SAAA,CAAW;AACnC,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,oCAAA,CAAsC;AAC5D,YAAA,WAAW,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,qCAAA,CAAuC;AACnE,YAAA,IAAI,EAAE,wBAAwB;AAC/B,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,IAAI,EAAE,iBAAiB;AACvB,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,gBAAA,CAAkB;AAC1C,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,kDAAA,CAAoD;AAC1E,YAAA,WAAW,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,mDAAA,CAAqD;AACjF,YAAA,IAAI,EAAE,2BAA2B;AAClC,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,UAAA,CAAY;AACpC,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,uCAAA,CAAyC;AAC/D,YAAA,WAAW,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,wCAAA,CAA0C;AACtE,YAAA,IAAI,EAAE,4BAA4B;AACnC,SAAA;AACD,QAAA,mBAAmB,EAAE;AACnB,YAAA,IAAI,EAAE,qBAAqB;AAC3B,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,oBAAA,CAAsB;AAC9C,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,0DAAA,CAA4D;AAClF,YAAA,WAAW,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,2DAAA,CAA6D;AACzF,YAAA,IAAI,EAAE,2BAA2B;AAClC,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,IAAI,EAAE,iBAAiB;AACvB,YAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,MAAM,CAAA,gBAAA,CAAkB;AAC1C,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,mDAAA,CAAqD;AAC3E,YAAA,WAAW,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,oDAAA,CAAsD;AAClF,YAAA,IAAI,EAAE,qBAAqB;AAC5B,SAAA;AACF,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,yBAAA,CAA2B;AACjD,YAAA,IAAI,EAAE,2BAA2B;AAClC,SAAA;AACD,QAAA,aAAa,EAAE;AACb,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,2BAAA,CAA6B;AACnD,YAAA,IAAI,EAAE,mBAAmB;AAC1B,SAAA;AACD,QAAA,cAAc,EAAE;AACd,YAAA,IAAI,EAAE,iBAAiB;AACvB,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,4BAAA,CAA8B;AACpD,YAAA,IAAI,EAAE,mBAAmB;AAC1B,SAAA;AACF,KAAA;;AAGH;;ACxEA;;;AAGG;AACI,MAAM,6BAA6B,GAAG;AAC3C,IAAA,MAAM,EAAE,gCAAgC;AACxC,IAAA,gBAAgB,EAAE,0CAA0C;AAC5D,IAAA,aAAa,EAAE,uCAAuC;AACtD,IAAA,YAAY,EAAE,sCAAsC;AACpD,IAAA,kBAAkB,EAAE,4CAA4C;AAChE,IAAA,sBAAsB,EAAE,gDAAgD;AACxE,IAAA,oBAAoB,EAAE,8CAA8C;AACpE,IAAA,KAAK,EAAE,+BAA+B;;AAGxC;;;AAGG;AACI,MAAM,iCAAiC,GAAG;AAC/C,IAAA,mBAAmB,EAAE;AACnB,QAAA,QAAQ,EAAE;YACR,UAAU,EAAE,6BAA6B,CAAC,KAAK;YAC/C,IAAI,EAAE,6BAA6B,CAAC,kBAAkB;YACtD,MAAM,EAAE,6BAA6B,CAAC,KAAK;YAC3C,MAAM,EAAE,6BAA6B,CAAC,KAAK;YAC3C,MAAM,EAAE,6BAA6B,CAAC,KAAK;AAC5C,SAAA;AACD,QAAA,eAAe,EAAE;YACf,UAAU,EAAE,6BAA6B,CAAC,kBAAkB;YAC5D,IAAI,EAAE,6BAA6B,CAAC,kBAAkB;YACtD,MAAM,EAAE,6BAA6B,CAAC,kBAAkB;YACxD,MAAM,EAAE,6BAA6B,CAAC,kBAAkB;YACxD,MAAM,EAAE,6BAA6B,CAAC,kBAAkB;YACxD,QAAQ,EAAE,6BAA6B,CAAC,sBAAsB;YAC9D,OAAO,EAAE,6BAA6B,CAAC,sBAAsB;YAC7D,WAAW,EAAE,6BAA6B,CAAC,sBAAsB;AAClE,SAAA;AACD,QAAA,SAAS,EAAE;YACT,UAAU,EAAE,6BAA6B,CAAC,kBAAkB;YAC5D,IAAI,EAAE,6BAA6B,CAAC,kBAAkB;YACtD,MAAM,EAAE,6BAA6B,CAAC,kBAAkB;YACxD,MAAM,EAAE,6BAA6B,CAAC,kBAAkB;YACxD,MAAM,EAAE,6BAA6B,CAAC,kBAAkB;AACzD,SAAA;AACD,QAAA,mBAAmB,EAAE;YACnB,UAAU,EAAE,6BAA6B,CAAC,sBAAsB;YAChE,IAAI,EAAE,6BAA6B,CAAC,sBAAsB;YAC1D,OAAO,EAAE,6BAA6B,CAAC,sBAAsB;AAC9D,SAAA;AACD,QAAA,eAAe,EAAE;YACf,UAAU,EAAE,6BAA6B,CAAC,KAAK;YAC/C,IAAI,EAAE,6BAA6B,CAAC,KAAK;AAC1C,SAAA;AACD,QAAA,eAAe,EAAE;YACf,IAAI,EAAE,6BAA6B,CAAC,oBAAoB;YACxD,MAAM,EAAE,6BAA6B,CAAC,oBAAoB;AAC3D,SAAA;AACF,KAAA;;;AC1DH;AAEO,MAAM,8BAA8B,GAAG;AAC5C,IAAA,IAAI,EAAE,0BAA0B;AAChC,IAAA,WAAW,EAAE,sCAAsC;AACnD,IAAA,aAAa,EAAE,wCAAwC;AACvD,IAAA,aAAa,EAAE,wCAAwC;AACvD,IAAA,cAAc,EAAE,yCAAyC;AACzD,IAAA,SAAS,EAAE,oCAAoC;AAC/C,IAAA,OAAO,EAAE,kCAAkC;AAC3C,IAAA,aAAa,EAAE,wCAAwC;AACvD,IAAA,QAAQ,EAAE,mCAAmC;;AAG/C;;ACdA;AAEO,MAAM,iCAAiC,GAAG;AAC/C,IAAA,cAAc,EAAE,6CAA6C;AAC7D,IAAA,iBAAiB,EAAE,gDAAgD;AACnE,IAAA,kBAAkB,EAAE,iDAAiD;;AAGvE;;ACRA;AAEO,MAAM,iCAAiC,GAAG;AAC/C,IAAA,uBAAuB,EAAE,mDAAmD;AAC5E,IAAA,eAAe,EAAE,sCAAsC;AACvD,IAAA,eAAe,EAAE,sCAAsC;AACvD,IAAA,eAAe,EAAE,sCAAsC;AACvD,IAAA,qBAAqB,EAAE,4CAA4C;AACnE,IAAA,sBAAsB,EAAE,6CAA6C;AACrE,IAAA,qBAAqB,EAAE,4CAA4C;AACnE,IAAA,qBAAqB,EAAE,4CAA4C;AACnE,IAAA,mBAAmB,EAAE,0CAA0C;AAC/D,IAAA,0BAA0B,EAAE,iDAAiD;;AAG/E;;ACbA;AAEA;AACO,MAAM,+BAA+B,GAAG;AAC7C,IAAA,mBAAmB,CAAC,KAAK;AACzB,IAAA,mBAAmB,CAAC,eAAe;;AAGrC;AACO,MAAM,gCAAgC,GAAG;AAEzC,MAAM,iCAAiC,GAAG;AAC/C,IAAA,mBAAmB,CAAC,QAAQ;IAC5B,gCAAgC;;AAGlC;;ACMA;;ACIA;;ACGA;;ACbA;;ACoBA;;ACtCA;;AAEG;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-timesheet-management-client-contracts.mjs","sources":["../../../../libs/modules/timesheet-management/contracts/src/root-config.ts","../../../../libs/modules/timesheet-management/contracts/src/permission.keys.ts","../../../../libs/modules/timesheet-management/contracts/src/menu.keys.ts","../../../../libs/modules/timesheet-management/contracts/src/features.keys.ts","../../../../libs/modules/timesheet-management/contracts/src/commands.keys.ts","../../../../libs/modules/timesheet-management/contracts/src/timesheet-period-status.constants.ts","../../../../libs/modules/timesheet-management/contracts/src/entities/time-entry/time-entry.types.ts","../../../../libs/modules/timesheet-management/contracts/src/entities/timesheet-correction/timesheet-correction.types.ts","../../../../libs/modules/timesheet-management/contracts/src/entities/timesheet-period/timesheet-period.types.ts","../../../../libs/modules/timesheet-management/contracts/src/entities/timesheet-policy/timesheet-policy.types.ts","../../../../libs/modules/timesheet-management/contracts/src/entities/work-item/work-item.types.ts","../../../../libs/modules/timesheet-management/contracts/src/acorex-platform-module-timesheet-management-client-contracts.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","/**\n * Projects & Work capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPProjectsWorkPermissionKeys = {\n Access: 'ProjectsWork:Permission:Access',\n MaintainProjects: 'ProjectsWork:Permission:MaintainProjects',\n MaintainTasks: 'ProjectsWork:Permission:MaintainTasks',\n ViewAllTasks: 'ProjectsWork:Permission:ViewAllTasks',\n MaintainTimesheets: 'ProjectsWork:Permission:MaintainTimesheets',\n ManageTimesheetActions: 'ProjectsWork:Permission:ManageTimesheetActions',\n ViewTimesheetReports: 'ProjectsWork:Permission:ViewTimesheetReports',\n Setup: 'ProjectsWork:Permission:Setup',\n} as const;\n\n/**\n * @deprecated Prefer {@link AXPProjectsWorkPermissionKeys}.\n * Legacy nested shape kept so existing imports compile during migration.\n */\nexport const AXMTimesheetManagementPermissions = {\n TimesheetManagement: {\n WorkItem: {\n Management: AXPProjectsWorkPermissionKeys.Setup,\n View: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n Create: AXPProjectsWorkPermissionKeys.Setup,\n Update: AXPProjectsWorkPermissionKeys.Setup,\n Delete: AXPProjectsWorkPermissionKeys.Setup,\n },\n TimesheetPeriod: {\n Management: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n View: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n Create: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n Update: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n Delete: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n TeamView: AXPProjectsWorkPermissionKeys.ManageTimesheetActions,\n Approve: AXPProjectsWorkPermissionKeys.ManageTimesheetActions,\n AdminAdjust: AXPProjectsWorkPermissionKeys.ManageTimesheetActions,\n },\n TimeEntry: {\n Management: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n View: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n Create: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n Update: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n Delete: AXPProjectsWorkPermissionKeys.MaintainTimesheets,\n },\n TimesheetCorrection: {\n Management: AXPProjectsWorkPermissionKeys.ManageTimesheetActions,\n View: AXPProjectsWorkPermissionKeys.ManageTimesheetActions,\n Approve: AXPProjectsWorkPermissionKeys.ManageTimesheetActions,\n },\n TimesheetPolicy: {\n Management: AXPProjectsWorkPermissionKeys.Setup,\n View: AXPProjectsWorkPermissionKeys.Setup,\n },\n TimesheetReport: {\n View: AXPProjectsWorkPermissionKeys.ViewTimesheetReports,\n Export: AXPProjectsWorkPermissionKeys.ViewTimesheetReports,\n },\n },\n} as const;\n","//#region ---- Menu Keys ----\n\nexport const AXMTimesheetManagementMenuKeys = {\n Root: 'TimesheetManagement:Menu',\n MyTimesheet: 'TimesheetManagement:Menu:MyTimesheet',\n PeriodHistory: 'TimesheetManagement:Menu:PeriodHistory',\n ApprovalInbox: 'TimesheetManagement:Menu:ApprovalInbox',\n TeamTimesheets: 'TimesheetManagement:Menu:TeamTimesheets',\n WorkItems: 'TimesheetManagement:Menu:WorkItems',\n Reports: 'TimesheetManagement:Menu:Reports',\n Configuration: 'TimesheetManagement:Menu:Configuration',\n Policies: 'TimesheetManagement:Menu:Policies',\n};\n\n//#endregion\n","//#region ---- Feature Keys ----\n\nexport const AXMTimesheetManagementFeatureKeys = {\n TimesheetEntry: 'TimesheetManagement:Feature:Timesheet.Entry',\n TimesheetApproval: 'TimesheetManagement:Feature:Timesheet.Approval',\n TimesheetReporting: 'TimesheetManagement:Feature:Timesheet.Reporting',\n};\n\n//#endregion\n","//#region ---- Command Keys ----\n\nexport const AXMTimesheetManagementCommandKeys = {\n WorkItemResolveFromJira: 'TimesheetManagement.WorkItem:ResolveFromJiraIssue',\n TimeEntryCreate: 'TimesheetManagement.TimeEntry:Create',\n TimeEntryUpdate: 'TimesheetManagement.TimeEntry:Update',\n TimeEntryDelete: 'TimesheetManagement.TimeEntry:Delete',\n TimesheetPeriodSubmit: 'TimesheetManagement.TimesheetPeriod:Submit',\n TimesheetPeriodApprove: 'TimesheetManagement.TimesheetPeriod:Approve',\n TimesheetPeriodReject: 'TimesheetManagement.TimesheetPeriod:Reject',\n TimesheetPeriodReopen: 'TimesheetManagement.TimesheetPeriod:Reopen',\n TimesheetPeriodLock: 'TimesheetManagement.TimesheetPeriod:Lock',\n TimesheetPeriodAdminAdjust: 'TimesheetManagement.TimesheetPeriod:AdminAdjust',\n};\n\n//#endregion\n","import { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\n\n//#region ---- Timesheet period open statuses ----\n\n/** Statuses that block creating another open period for the same employee and date range. */\nexport const AXMTimesheetPeriodOpenStatusIds = [\n AXPSystemStatusType.Draft,\n AXPSystemStatusType.WaitingApproval,\n] as const;\n\n/** Statuses where time entries cannot be edited. */\nexport const AXMTimesheetPeriodLockedStatusId = 'locked' as const;\n\nexport const AXMTimesheetPeriodLockedStatusIds = [\n AXPSystemStatusType.Approved,\n AXMTimesheetPeriodLockedStatusId,\n] as const;\n\n//#endregion\n","import type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\nimport type { AXMTimesheetWorkItemSnapshot } from '../work-item/work-item.types';\n\n//#region ---- Time Entry Types ----\n\nexport interface AXMTimesheetManagementTimeEntryEntityModel extends AXPEntityModel<string> {\n employeeId: string;\n employee?: { id: string; employeeCode?: string; person?: { fullName?: string } };\n periodId: string;\n period?: { id: string; startDate?: string; endDate?: string; statusId?: string };\n workItemId: string;\n workItem?: { id: string; code?: string; title?: string };\n projectId?: string;\n project?: { id: string; title?: string };\n startedAt?: string;\n endedAt?: string;\n durationSeconds: number;\n description?: string;\n isBillable: boolean;\n entryDate: string;\n timezone: string;\n workItemSnapshot?: AXMTimesheetWorkItemSnapshot;\n}\n\n//#endregion\n","import type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\nimport { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\n\n//#region ---- Timesheet Correction Types ----\n\nexport type AXMTimesheetCorrectionStatusId =\n | typeof AXPSystemStatusType.WaitingApproval\n | typeof AXPSystemStatusType.Approved\n | typeof AXPSystemStatusType.Rejected;\n\nexport interface AXMTimesheetCorrectionChange {\n timeEntryId: string;\n field: string;\n oldValue: unknown;\n newValue: unknown;\n}\n\nexport interface AXMTimesheetManagementTimesheetCorrectionEntityModel extends AXPEntityModel<string> {\n periodId: string;\n period?: { id: string; startDate?: string; endDate?: string };\n requestedById: string;\n reason: string;\n statusId: AXMTimesheetCorrectionStatusId;\n changes: AXMTimesheetCorrectionChange[];\n reviewedById?: string;\n reviewedAt?: string;\n}\n\n//#endregion\n","import type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\nimport { AXPSystemStatusType } from '@acorex-platform/framework-shared/core';\n\n//#region ---- Timesheet Period Types ----\n\nexport type AXMTimesheetPeriodType = 'Weekly' | 'Biweekly' | 'Monthly';\n\nexport type AXMTimesheetPeriodStatusId =\n | typeof AXPSystemStatusType.Draft\n | typeof AXPSystemStatusType.WaitingApproval\n | typeof AXPSystemStatusType.Approved\n | typeof AXPSystemStatusType.Rejected\n | 'locked';\n\nexport interface AXMTimesheetManagementTimesheetPeriodEntityModel extends AXPEntityModel<string> {\n employeeId: string;\n employee?: { id: string; employeeCode?: string; person?: { fullName?: string } };\n periodType: AXMTimesheetPeriodType;\n startDate: string;\n endDate: string;\n statusId: AXMTimesheetPeriodStatusId;\n submittedAt?: string;\n approvedAt?: string;\n approvedById?: string;\n rejectedAt?: string;\n rejectionReason?: string;\n lockedAt?: string;\n totalSeconds?: number;\n timezone: string;\n}\n\n//#endregion\n","import type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\nimport type { AXMTimesheetPeriodType } from '../timesheet-period/timesheet-period.types';\n\n//#region ---- Timesheet Policy Types ----\n\nexport type AXMTimesheetOverlapPolicy = 'reject' | 'warn';\n\nexport interface AXMTimesheetManagementTimesheetPolicyEntityModel extends AXPEntityModel<string> {\n name: string;\n maxDailyHours?: number;\n maxWeeklyHours?: number;\n requireDescription: boolean;\n allowFutureDates: boolean;\n overlapPolicy: AXMTimesheetOverlapPolicy;\n periodTypeDefault: AXMTimesheetPeriodType;\n isDefault: boolean;\n}\n\n//#endregion\n","import type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport type { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\n\n//#region ---- Work Item Types ----\n\nexport type AXMTimesheetWorkItemSourceType = 'Internal' | 'Jira' | 'Task';\n\nexport interface AXMTimesheetWorkItemSourceRef {\n system: 'internal' | 'jira' | 'task';\n jiraInstanceId?: string;\n jiraIssueId?: string;\n jiraIssueKey?: string;\n taskId?: string;\n internalCode?: string;\n}\n\nexport interface AXMTimesheetWorkItemSnapshot {\n title: string;\n subtitle?: string;\n projectKey?: string;\n statusName?: string;\n capturedAt: string;\n}\n\nexport interface AXMTimesheetManagementWorkItemEntityModel extends AXPEntityModel<string> {\n code: string;\n title: AXPMultiLanguageString;\n sourceType: AXMTimesheetWorkItemSourceType;\n sourceRef?: AXMTimesheetWorkItemSourceRef;\n snapshot?: AXMTimesheetWorkItemSnapshot;\n isBillableDefault: boolean;\n isActive: boolean;\n employeeId?: string;\n employee?: { id: string; employeeCode?: string; person?: { fullName?: string } };\n projectId?: string;\n project?: { id: string; title?: string };\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-timesheet-management-client-create-time-entry.command-DS2EVLym.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/time-entry/commands/create-time-entry.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 { RootConfig } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport type { AXMTimesheetManagementTimeEntryEntityModel } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport type { AXMTimesheetManagementTimesheetPeriodEntityModel } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport { AXMTimesheetValidationService } from '../../timesheet-period/timesheet-validation.service';\n\n//#region ---- Types ----\n\nexport type CreateTimeEntryInput = Omit<AXMTimesheetManagementTimeEntryEntityModel, 'id'>;\n\n//#endregion\n\n/**\n * Creates a time entry after validating the parent timesheet period is editable.\n */\n@Injectable({ providedIn: 'root' })\nexport class CreateTimeEntryCommand implements AXPCommand<CreateTimeEntryInput, AXMTimesheetManagementTimeEntryEntityModel> {\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(\n input: CreateTimeEntryInput,\n ): AXPCommandExecuteResultPromise<AXMTimesheetManagementTimeEntryEntityModel> {\n try {\n await this.assertPeriodEditable(input.periodId);\n\n const dataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timeEntry.name)\n .data<string, AXMTimesheetManagementTimeEntryEntityModel>();\n\n const id = await dataAccessor.create(input);\n const entity = await dataAccessor.byKey(id);\n if (!entity) {\n return { success: false, message: { text: 'Time entry not found after creation.' } };\n }\n\n return { success: true, kind: 'object', data: entity };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create time entry.';\n console.error('[CreateTimeEntryCommand] Error:', error);\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n\n //#region ---- Private helpers ----\n\n private async assertPeriodEditable(periodId: string): Promise<void> {\n const periodAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timesheetPeriod.name)\n .data<string, AXMTimesheetManagementTimesheetPeriodEntityModel>();\n\n const period = await periodAccessor.byKey(periodId);\n if (!period) {\n throw new Error('Timesheet period not found.');\n }\n this.validationService.assertPeriodAllowsTimeEntryEdits(period);\n }\n\n //#endregion\n}\n"],"names":[],"mappings":";;;;;;AAcA;AAEA;;AAEG;MAEU,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AA+C3E,IAAA;;;IAzCC,MAAM,OAAO,CACX,KAA2B,EAAA;AAE3B,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC;AAE/C,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC;AACvB,iBAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI;AACrE,iBAAA,IAAI,EAAsD;YAE7D,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,sCAAsC,EAAE,EAAE;YACtF;AAEA,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;QACxD;QAAE,OAAO,KAAc,EAAE;AACvB,YAAA,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,8BAA8B;AACvF,YAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC;AACvD,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACvD;IACF;;;IAMQ,MAAM,oBAAoB,CAAC,QAAgB,EAAA;AACjD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC;AACzB,aAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI;AAC3E,aAAA,IAAI,EAA4D;QAEnE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC;QACnD,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;QAChD;AACA,QAAA,IAAI,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,MAAM,CAAC;IACjE;8GAhDW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,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,sBAAsB,cADT,MAAM,EAAA,CAAA,CAAA;;2FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-timesheet-management-client-create-time-entry.command-DS2EVLym.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/time-entry/commands/create-time-entry.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 { RootConfig } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport type { AXMTimesheetManagementTimeEntryEntityModel } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport type { AXMTimesheetManagementTimesheetPeriodEntityModel } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport { AXMTimesheetValidationService } from '../../timesheet-period/timesheet-validation.service';\n\n//#region ---- Types ----\n\nexport type CreateTimeEntryInput = Omit<AXMTimesheetManagementTimeEntryEntityModel, 'id'>;\n\n//#endregion\n\n/**\n * Creates a time entry after validating the parent timesheet period is editable.\n */\n@Injectable({ providedIn: 'root' })\nexport class CreateTimeEntryCommand implements AXPCommand<CreateTimeEntryInput, AXMTimesheetManagementTimeEntryEntityModel> {\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(\n input: CreateTimeEntryInput,\n ): AXPCommandExecuteResultPromise<AXMTimesheetManagementTimeEntryEntityModel> {\n try {\n await this.assertPeriodEditable(input.periodId);\n\n const dataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timeEntry.name)\n .data<string, AXMTimesheetManagementTimeEntryEntityModel>();\n\n const id = await dataAccessor.create(input);\n const entity = await dataAccessor.byKey(id);\n if (!entity) {\n return { success: false, message: { text: 'Time entry not found after creation.' } };\n }\n\n return { success: true, kind: 'object', data: entity };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create time entry.';\n console.error('[CreateTimeEntryCommand] Error:', error);\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n\n //#region ---- Private helpers ----\n\n private async assertPeriodEditable(periodId: string): Promise<void> {\n const periodAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timesheetPeriod.name)\n .data<string, AXMTimesheetManagementTimesheetPeriodEntityModel>();\n\n const period = await periodAccessor.byKey(periodId);\n if (!period) {\n throw new Error('Timesheet period not found.');\n }\n this.validationService.assertPeriodAllowsTimeEntryEdits(period);\n }\n\n //#endregion\n}\n"],"names":[],"mappings":";;;;;;AAcA;AAEA;;AAEG;MAEU,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AA+C3E,IAAA;;;IAzCC,MAAM,OAAO,CACX,KAA2B,EAAA;AAE3B,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC;AAE/C,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC;AACvB,iBAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI;AACrE,iBAAA,IAAI,EAAsD;YAE7D,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,sCAAsC,EAAE,EAAE;YACtF;AAEA,YAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;QACxD;QAAE,OAAO,KAAc,EAAE;AACvB,YAAA,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,8BAA8B;AACvF,YAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC;AACvD,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACvD;IACF;;;IAMQ,MAAM,oBAAoB,CAAC,QAAgB,EAAA;AACjD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC;AACzB,aAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI;AAC3E,aAAA,IAAI,EAA4D;QAEnE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC;QACnD,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;QAChD;AACA,QAAA,IAAI,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,MAAM,CAAC;IACjE;8GAhDW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,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,sBAAsB,cADT,MAAM,EAAA,CAAA,CAAA;;2FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-timesheet-management-client-delete-time-entry.command-5_ItHpnx.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/time-entry/commands/delete-time-entry.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 { RootConfig } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport type { AXMTimesheetManagementTimeEntryEntityModel } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport type { AXMTimesheetManagementTimesheetPeriodEntityModel } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport { AXMTimesheetValidationService } from '../../timesheet-period/timesheet-validation.service';\n\n//#region ---- Types ----\n\nexport interface DeleteTimeEntryInput {\n id: string;\n}\n\n//#endregion\n\n/**\n * Deletes a time entry after validating the parent timesheet period is editable.\n */\n@Injectable({ providedIn: 'root' })\nexport class DeleteTimeEntryCommand implements AXPCommand<DeleteTimeEntryInput, 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: DeleteTimeEntryInput): AXPCommandExecuteResultPromise<void> {\n try {\n const dataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timeEntry.name)\n .data<string, AXMTimesheetManagementTimeEntryEntityModel>();\n\n const existing = await dataAccessor.byKey(input.id);\n if (!existing) {\n return { success: false, message: { text: 'Time entry not found.' } };\n }\n\n await this.assertPeriodEditable(existing.periodId);\n await dataAccessor.delete(input.id);\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to delete time entry.';\n console.error('[DeleteTimeEntryCommand] Error:', error);\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n\n //#region ---- Private helpers ----\n\n private async assertPeriodEditable(periodId: string): Promise<void> {\n const periodAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timesheetPeriod.name)\n .data<string, AXMTimesheetManagementTimesheetPeriodEntityModel>();\n\n const period = await periodAccessor.byKey(periodId);\n if (!period) {\n throw new Error('Timesheet period not found.');\n }\n this.validationService.assertPeriodAllowsTimeEntryEdits(period);\n }\n\n //#endregion\n}\n"],"names":[],"mappings":";;;;;;AAgBA;AAEA;;AAEG;MAEU,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AA6C3E,IAAA;;;IAvCC,MAAM,OAAO,CAAC,KAA2B,EAAA;AACvC,QAAA,IAAI;AACF,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC;AACvB,iBAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI;AACrE,iBAAA,IAAI,EAAsD;YAE7D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,EAAE;YACvE;YAEA,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAClD,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAEnC,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,8BAA8B;AACvF,YAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC;AACvD,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACvD;IACF;;;IAMQ,MAAM,oBAAoB,CAAC,QAAgB,EAAA;AACjD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC;AACzB,aAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI;AAC3E,aAAA,IAAI,EAA4D;QAEnE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC;QACnD,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;QAChD;AACA,QAAA,IAAI,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,MAAM,CAAC;IACjE;8GA9CW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,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,sBAAsB,cADT,MAAM,EAAA,CAAA,CAAA;;2FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-timesheet-management-client-delete-time-entry.command-5_ItHpnx.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/time-entry/commands/delete-time-entry.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 { RootConfig } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport type { AXMTimesheetManagementTimeEntryEntityModel } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport type { AXMTimesheetManagementTimesheetPeriodEntityModel } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport { AXMTimesheetValidationService } from '../../timesheet-period/timesheet-validation.service';\n\n//#region ---- Types ----\n\nexport interface DeleteTimeEntryInput {\n id: string;\n}\n\n//#endregion\n\n/**\n * Deletes a time entry after validating the parent timesheet period is editable.\n */\n@Injectable({ providedIn: 'root' })\nexport class DeleteTimeEntryCommand implements AXPCommand<DeleteTimeEntryInput, 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: DeleteTimeEntryInput): AXPCommandExecuteResultPromise<void> {\n try {\n const dataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timeEntry.name)\n .data<string, AXMTimesheetManagementTimeEntryEntityModel>();\n\n const existing = await dataAccessor.byKey(input.id);\n if (!existing) {\n return { success: false, message: { text: 'Time entry not found.' } };\n }\n\n await this.assertPeriodEditable(existing.periodId);\n await dataAccessor.delete(input.id);\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to delete time entry.';\n console.error('[DeleteTimeEntryCommand] Error:', error);\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n\n //#region ---- Private helpers ----\n\n private async assertPeriodEditable(periodId: string): Promise<void> {\n const periodAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timesheetPeriod.name)\n .data<string, AXMTimesheetManagementTimesheetPeriodEntityModel>();\n\n const period = await periodAccessor.byKey(periodId);\n if (!period) {\n throw new Error('Timesheet period not found.');\n }\n this.validationService.assertPeriodAllowsTimeEntryEdits(period);\n }\n\n //#endregion\n}\n"],"names":[],"mappings":";;;;;;AAgBA;AAEA;;AAEG;MAEU,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AA6C3E,IAAA;;;IAvCC,MAAM,OAAO,CAAC,KAA2B,EAAA;AACvC,QAAA,IAAI;AACF,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC;AACvB,iBAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI;AACrE,iBAAA,IAAI,EAAsD;YAE7D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,QAAQ,EAAE;AACb,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,EAAE;YACvE;YAEA,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAClD,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAEnC,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,8BAA8B;AACvF,YAAA,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC;AACvD,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACvD;IACF;;;IAMQ,MAAM,oBAAoB,CAAC,QAAgB,EAAA;AACjD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC;AACzB,aAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI;AAC3E,aAAA,IAAI,EAA4D;QAEnE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC;QACnD,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC;QAChD;AACA,QAAA,IAAI,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,MAAM,CAAC;IACjE;8GA9CW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,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,sBAAsB,cADT,MAAM,EAAA,CAAA,CAAA;;2FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}
@@ -0,0 +1,33 @@
1
+ import { provideLocalEntityCatalog } from '@acorex-platform/framework-client/layout/entity';
2
+ import { RootConfig } from '@acorex-platform/module-timesheet-management-client/contracts';
3
+ export { timesheetManagementLocalEntityCatalog } from '@acorex-platform/module-timesheet-management-client/contracts/entity-catalog';
4
+
5
+ //#region ----- Imports -----
6
+ //#endregion
7
+ //#region ----- Provide local entities -----
8
+ /**
9
+ * Registers timesheet-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 provideTimesheetManagementLocalEntities() {
15
+ return provideLocalEntityCatalog({
16
+ moduleName: RootConfig.module.name,
17
+ loaders: {
18
+ [RootConfig.entities.timeEntry.name]: () => import('@acorex-platform/module-timesheet-management-client/contracts/entities/time-entry').then((m) => m.factoryTimeEntry()),
19
+ [RootConfig.entities.timesheetCorrection.name]: () => import('@acorex-platform/module-timesheet-management-client/contracts/entities/timesheet-correction').then((m) => m.factoryTimesheetCorrection()),
20
+ [RootConfig.entities.timesheetPeriod.name]: () => import('@acorex-platform/module-timesheet-management-client/contracts/entities/timesheet-period').then((m) => m.factoryTimesheetPeriod()),
21
+ [RootConfig.entities.timesheetPolicy.name]: () => import('@acorex-platform/module-timesheet-management-client/contracts/entities/timesheet-policy').then((m) => m.factoryTimesheetPolicy()),
22
+ [RootConfig.entities.workItem.name]: () => import('@acorex-platform/module-timesheet-management-client/contracts/entities/work-item').then((m) => m.factoryWorkItem()),
23
+ },
24
+ });
25
+ }
26
+ //#endregion
27
+
28
+ /**
29
+ * Generated bundle index. Do not edit.
30
+ */
31
+
32
+ export { provideTimesheetManagementLocalEntities };
33
+ //# sourceMappingURL=acorex-platform-module-timesheet-management-client-local-entities.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-timesheet-management-client-local-entities.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/provide-local-entities.ts","../../../../libs/modules/timesheet-management/client/src/lib/acorex-platform-module-timesheet-management-client-local-entities.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { provideLocalEntityCatalog } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-timesheet-management-client/contracts';\n\n//#endregion\n\n//#region ----- Provide local entities -----\n\n/**\n * Registers timesheet-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 provideTimesheetManagementLocalEntities() {\n return provideLocalEntityCatalog({\n moduleName: RootConfig.module.name,\n loaders: {\n [RootConfig.entities.timeEntry.name]: () =>\n import('@acorex-platform/module-timesheet-management-client/contracts/entities/time-entry').then((m) => m.factoryTimeEntry()),\n [RootConfig.entities.timesheetCorrection.name]: () =>\n import('@acorex-platform/module-timesheet-management-client/contracts/entities/timesheet-correction').then((m) => m.factoryTimesheetCorrection()),\n [RootConfig.entities.timesheetPeriod.name]: () =>\n import('@acorex-platform/module-timesheet-management-client/contracts/entities/timesheet-period').then((m) => m.factoryTimesheetPeriod()),\n [RootConfig.entities.timesheetPolicy.name]: () =>\n import('@acorex-platform/module-timesheet-management-client/contracts/entities/timesheet-policy').then((m) => m.factoryTimesheetPolicy()),\n [RootConfig.entities.workItem.name]: () =>\n import('@acorex-platform/module-timesheet-management-client/contracts/entities/work-item').then((m) => m.factoryWorkItem()),\n },\n });\n}\n\nexport { timesheetManagementLocalEntityCatalog } from '@acorex-platform/module-timesheet-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,uCAAuC,GAAA;AACrD,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,SAAS,CAAC,IAAI,GAAG,MACpC,OAAO,mFAAmF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC;AAC/H,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,GAAG,MAC9C,OAAO,6FAA6F,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,0BAA0B,EAAE,CAAC;AACnJ,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,GAAG,MAC1C,OAAO,yFAAyF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,sBAAsB,EAAE,CAAC;AAC3I,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,GAAG,MAC1C,OAAO,yFAAyF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,sBAAsB,EAAE,CAAC;AAC3I,YAAA,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,MACnC,OAAO,kFAAkF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,CAAC;AAC9H,SAAA;AACF,KAAA,CAAC;AACJ;AAIA;;ACnCA;;AAEG;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-timesheet-management-client-lock-timesheet-period.command-D7V7SWUK.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/timesheet-period/commands/lock-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 { AXMTimesheetPeriodLockedStatusId, 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 LockTimesheetPeriodInput {\n id: string;\n}\n\n//#endregion\n\n/**\n * Locks an approved timesheet period to prevent further edits.\n */\n@Injectable({ providedIn: 'root' })\nexport class LockTimesheetPeriodCommand implements AXPCommand<LockTimesheetPeriodInput, 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: LockTimesheetPeriodInput): 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.assertCanLock(period);\n\n await dataAccessor.update(input.id, {\n statusId: AXMTimesheetPeriodLockedStatusId,\n lockedAt: new Date().toISOString(),\n });\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to lock timesheet period.';\n console.error('[LockTimesheetPeriodCommand] Error:', error);\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n}\n"],"names":[],"mappings":";;;;;;AAeA;AAEA;;AAEG;MAEU,0BAA0B,CAAA;AADvC,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAiC3E,IAAA;;;IA3BC,MAAM,OAAO,CAAC,KAA+B,EAAA;AAC3C,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,aAAa,CAAC,MAAM,CAAC;AAE5C,YAAA,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE;AAClC,gBAAA,QAAQ,EAAE,gCAAgC;AAC1C,gBAAA,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACnC,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,kCAAkC;AAC3F,YAAA,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC;AAC3D,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACvD;IACF;8GAlCW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,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,0BAA0B,cADb,MAAM,EAAA,CAAA,CAAA;;2FACnB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-timesheet-management-client-lock-timesheet-period.command-D7V7SWUK.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/timesheet-period/commands/lock-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 { AXMTimesheetPeriodLockedStatusId, 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 LockTimesheetPeriodInput {\n id: string;\n}\n\n//#endregion\n\n/**\n * Locks an approved timesheet period to prevent further edits.\n */\n@Injectable({ providedIn: 'root' })\nexport class LockTimesheetPeriodCommand implements AXPCommand<LockTimesheetPeriodInput, 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: LockTimesheetPeriodInput): 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.assertCanLock(period);\n\n await dataAccessor.update(input.id, {\n statusId: AXMTimesheetPeriodLockedStatusId,\n lockedAt: new Date().toISOString(),\n });\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to lock timesheet period.';\n console.error('[LockTimesheetPeriodCommand] Error:', error);\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n}\n"],"names":[],"mappings":";;;;;;AAeA;AAEA;;AAEG;MAEU,0BAA0B,CAAA;AADvC,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAiC3E,IAAA;;;IA3BC,MAAM,OAAO,CAAC,KAA+B,EAAA;AAC3C,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,aAAa,CAAC,MAAM,CAAC;AAE5C,YAAA,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE;AAClC,gBAAA,QAAQ,EAAE,gCAAgC;AAC1C,gBAAA,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACnC,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,kCAAkC;AAC3F,YAAA,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC;AAC3D,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACvD;IACF;8GAlCW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,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,0BAA0B,cADb,MAAM,EAAA,CAAA,CAAA;;2FACnB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-timesheet-management-client-my-timesheet-grid.query-DlDY3tdF.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/reporting/queries/my-timesheet-grid.query.ts"],"sourcesContent":["import { 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 { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { Injectable, inject } from '@angular/core';\nimport { groupBy, sumBy } from 'lodash';\nimport { RootConfig } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport type { AXMTimesheetManagementTimeEntryEntityModel } 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 AXMMyTimesheetGridQueryInput {\n employeeId: string;\n periodId?: string;\n startDate?: string;\n endDate?: string;\n}\n\nexport interface AXMMyTimesheetGridDayCell {\n date: string;\n totalSeconds: number;\n entries: AXMTimesheetManagementTimeEntryEntityModel[];\n}\n\nexport interface AXMMyTimesheetGridQueryResult {\n period: AXMTimesheetManagementTimesheetPeriodEntityModel | null;\n days: AXMMyTimesheetGridDayCell[];\n totalSeconds: number;\n}\n\n//#endregion\n\n/**\n * Returns a weekly grid of time entries for the current employee and period.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMMyTimesheetGridQuery\n implements AXPQuery<AXMMyTimesheetGridQueryInput, AXMMyTimesheetGridQueryResult>\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: AXMMyTimesheetGridQueryInput,\n ): AXPQueryFetchResultPromise<AXMMyTimesheetGridQueryResult> {\n try {\n const periodAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timesheetPeriod.name)\n .data<string, AXMTimesheetManagementTimesheetPeriodEntityModel>();\n\n let period: AXMTimesheetManagementTimesheetPeriodEntityModel | null = null;\n\n if (input.periodId) {\n period = await periodAccessor.byKey(input.periodId);\n } else {\n const periodFilters: AXDataSourceFilterOption[] = [\n { field: 'employeeId', operator: { type: 'equal' }, value: input.employeeId },\n ];\n if (input.startDate) {\n periodFilters.push({ field: 'startDate', operator: { type: 'equal' }, value: input.startDate });\n }\n\n const periods = await periodAccessor.query({\n skip: 0,\n take: 1,\n sort: [{ field: 'startDate', dir: 'desc' }],\n filter: {\n logic: 'and',\n filters: periodFilters,\n },\n });\n period = periods.items[0] ?? null;\n }\n\n if (!period) {\n return runtimeQuerySuccessObject({ period: null, days: [], totalSeconds: 0 });\n }\n\n const entryAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timeEntry.name)\n .data<string, AXMTimesheetManagementTimeEntryEntityModel>();\n\n const entriesResult = await entryAccessor.query({\n skip: 0,\n take: 1000,\n filter: {\n logic: 'and',\n filters: [\n { field: 'employeeId', operator: { type: 'equal' }, value: input.employeeId },\n { field: 'periodId', operator: { type: 'equal' }, value: period.id },\n ],\n },\n });\n\n const grouped = groupBy(entriesResult.items, (row) => row.entryDate);\n const days = Object.keys(grouped)\n .sort()\n .map((date) => ({\n date,\n totalSeconds: sumBy(grouped[date], (row) => row.durationSeconds ?? 0),\n entries: grouped[date],\n }));\n\n return runtimeQuerySuccessObject({\n period,\n days,\n totalSeconds: sumBy(entriesResult.items, (row) => row.durationSeconds ?? 0),\n });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load my timesheet grid.',\n );\n }\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-timesheet-management-client-my-timesheet-grid.query-DlDY3tdF.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/reporting/queries/my-timesheet-grid.query.ts"],"sourcesContent":["import { 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 { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { Injectable, inject } from '@angular/core';\nimport { groupBy, sumBy } from 'lodash';\nimport { RootConfig } from '@acorex-platform/module-timesheet-management-client/contracts';\nimport type { AXMTimesheetManagementTimeEntryEntityModel } 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 AXMMyTimesheetGridQueryInput {\n employeeId: string;\n periodId?: string;\n startDate?: string;\n endDate?: string;\n}\n\nexport interface AXMMyTimesheetGridDayCell {\n date: string;\n totalSeconds: number;\n entries: AXMTimesheetManagementTimeEntryEntityModel[];\n}\n\nexport interface AXMMyTimesheetGridQueryResult {\n period: AXMTimesheetManagementTimesheetPeriodEntityModel | null;\n days: AXMMyTimesheetGridDayCell[];\n totalSeconds: number;\n}\n\n//#endregion\n\n/**\n * Returns a weekly grid of time entries for the current employee and period.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMMyTimesheetGridQuery\n implements AXPQuery<AXMMyTimesheetGridQueryInput, AXMMyTimesheetGridQueryResult>\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: AXMMyTimesheetGridQueryInput,\n ): AXPQueryFetchResultPromise<AXMMyTimesheetGridQueryResult> {\n try {\n const periodAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timesheetPeriod.name)\n .data<string, AXMTimesheetManagementTimesheetPeriodEntityModel>();\n\n let period: AXMTimesheetManagementTimesheetPeriodEntityModel | null = null;\n\n if (input.periodId) {\n period = await periodAccessor.byKey(input.periodId);\n } else {\n const periodFilters: AXDataSourceFilterOption[] = [\n { field: 'employeeId', operator: { type: 'equal' }, value: input.employeeId },\n ];\n if (input.startDate) {\n periodFilters.push({ field: 'startDate', operator: { type: 'equal' }, value: input.startDate });\n }\n\n const periods = await periodAccessor.query({\n skip: 0,\n take: 1,\n sort: [{ field: 'startDate', dir: 'desc' }],\n filter: {\n logic: 'and',\n filters: periodFilters,\n },\n });\n period = periods.items[0] ?? null;\n }\n\n if (!period) {\n return runtimeQuerySuccessObject({ period: null, days: [], totalSeconds: 0 });\n }\n\n const entryAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.timeEntry.name)\n .data<string, AXMTimesheetManagementTimeEntryEntityModel>();\n\n const entriesResult = await entryAccessor.query({\n skip: 0,\n take: 1000,\n filter: {\n logic: 'and',\n filters: [\n { field: 'employeeId', operator: { type: 'equal' }, value: input.employeeId },\n { field: 'periodId', operator: { type: 'equal' }, value: period.id },\n ],\n },\n });\n\n const grouped = groupBy(entriesResult.items, (row) => row.entryDate);\n const days = Object.keys(grouped)\n .sort()\n .map((date) => ({\n date,\n totalSeconds: sumBy(grouped[date], (row) => row.durationSeconds ?? 0),\n entries: grouped[date],\n }));\n\n return runtimeQuerySuccessObject({\n period,\n days,\n totalSeconds: sumBy(entriesResult.items, (row) => row.durationSeconds ?? 0),\n });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Failed to load my timesheet grid.',\n );\n }\n }\n\n //#endregion\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-timesheet-management-client-reject-timesheet-period.command-CONxKPNm.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/timesheet-period/commands/reject-timesheet-period.command.ts"],"sourcesContent":["\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult, AXPSystemStatusType } 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 RejectTimesheetPeriodInput {\n id: string;\n rejectionReason?: string;\n}\n\n//#endregion\n\n/**\n * Rejects a timesheet period that is awaiting approval.\n */\n@Injectable({ providedIn: 'root' })\nexport class RejectTimesheetPeriodCommand implements AXPCommand<RejectTimesheetPeriodInput, 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: RejectTimesheetPeriodInput): 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.assertCanReject(period);\n\n if (isEmpty(input.rejectionReason?.trim())) {\n return { success: false, message: { text: 'A rejection reason is required.' } };\n }\n\n await dataAccessor.update(input.id, {\n statusId: AXPSystemStatusType.Rejected,\n rejectedAt: new Date().toISOString(),\n rejectionReason: input.rejectionReason?.trim(),\n });\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to reject timesheet period.';\n console.error('[RejectTimesheetPeriodCommand] Error:', error);\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n}\n"],"names":[],"mappings":";;;;;;;;AAmBA;AAEA;;AAEG;MAEU,4BAA4B,CAAA;AADzC,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAsC3E,IAAA;;;IAhCC,MAAM,OAAO,CAAC,KAAiC,EAAA;AAC7C,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,eAAe,CAAC,MAAM,CAAC;YAE9C,IAAI,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE;AAC1C,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,iCAAiC,EAAE,EAAE;YACjF;AAEA,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,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE;AAC/C,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,oCAAoC;AAC7F,YAAA,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC;AAC7D,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACvD;IACF;8GAvCW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA5B,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,4BAA4B,cADf,MAAM,EAAA,CAAA,CAAA;;2FACnB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-timesheet-management-client-reject-timesheet-period.command-CONxKPNm.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/timesheet-period/commands/reject-timesheet-period.command.ts"],"sourcesContent":["\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult, AXPSystemStatusType } 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 RejectTimesheetPeriodInput {\n id: string;\n rejectionReason?: string;\n}\n\n//#endregion\n\n/**\n * Rejects a timesheet period that is awaiting approval.\n */\n@Injectable({ providedIn: 'root' })\nexport class RejectTimesheetPeriodCommand implements AXPCommand<RejectTimesheetPeriodInput, 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: RejectTimesheetPeriodInput): 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.assertCanReject(period);\n\n if (isEmpty(input.rejectionReason?.trim())) {\n return { success: false, message: { text: 'A rejection reason is required.' } };\n }\n\n await dataAccessor.update(input.id, {\n statusId: AXPSystemStatusType.Rejected,\n rejectedAt: new Date().toISOString(),\n rejectionReason: input.rejectionReason?.trim(),\n });\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to reject timesheet period.';\n console.error('[RejectTimesheetPeriodCommand] Error:', error);\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n}\n"],"names":[],"mappings":";;;;;;;;AAmBA;AAEA;;AAEG;MAEU,4BAA4B,CAAA;AADzC,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAsC3E,IAAA;;;IAhCC,MAAM,OAAO,CAAC,KAAiC,EAAA;AAC7C,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,eAAe,CAAC,MAAM,CAAC;YAE9C,IAAI,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE;AAC1C,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,iCAAiC,EAAE,EAAE;YACjF;AAEA,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,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE;AAC/C,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,oCAAoC;AAC7F,YAAA,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC;AAC7D,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACvD;IACF;8GAvCW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA5B,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,4BAA4B,cADf,MAAM,EAAA,CAAA,CAAA;;2FACnB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-timesheet-management-client-reopen-timesheet-period.command-DRr_c67L.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/timesheet-period/commands/reopen-timesheet-period.command.ts"],"sourcesContent":["\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult, AXPSystemStatusType } 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';\nimport { AXMTimesheetValidationService } from '../timesheet-validation.service';\n\n//#region ---- Types ----\n\nexport interface ReopenTimesheetPeriodInput {\n id: string;\n}\n\n//#endregion\n\n/**\n * Reopens a rejected or approved timesheet period back to draft.\n */\n@Injectable({ providedIn: 'root' })\nexport class ReopenTimesheetPeriodCommand implements AXPCommand<ReopenTimesheetPeriodInput, 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: ReopenTimesheetPeriodInput): 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.assertCanReopen(period);\n\n await dataAccessor.update(input.id, {\n statusId: AXPSystemStatusType.Draft,\n submittedAt: undefined,\n approvedAt: undefined,\n approvedById: undefined,\n rejectedAt: undefined,\n rejectionReason: undefined,\n lockedAt: undefined,\n });\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to reopen timesheet period.';\n console.error('[ReopenTimesheetPeriodCommand] Error:', error);\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n}\n"],"names":[],"mappings":";;;;;;;AAiBA;AAEA;;AAEG;MAEU,4BAA4B,CAAA;AADzC,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAsC3E,IAAA;;;IAhCC,MAAM,OAAO,CAAC,KAAiC,EAAA;AAC7C,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,eAAe,CAAC,MAAM,CAAC;AAE9C,YAAA,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE;gBAClC,QAAQ,EAAE,mBAAmB,CAAC,KAAK;AACnC,gBAAA,WAAW,EAAE,SAAS;AACtB,gBAAA,UAAU,EAAE,SAAS;AACrB,gBAAA,YAAY,EAAE,SAAS;AACvB,gBAAA,UAAU,EAAE,SAAS;AACrB,gBAAA,eAAe,EAAE,SAAS;AAC1B,gBAAA,QAAQ,EAAE,SAAS;AACpB,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,oCAAoC;AAC7F,YAAA,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC;AAC7D,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACvD;IACF;8GAvCW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA5B,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,4BAA4B,cADf,MAAM,EAAA,CAAA,CAAA;;2FACnB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-timesheet-management-client-reopen-timesheet-period.command-DRr_c67L.mjs","sources":["../../../../libs/modules/timesheet-management/client/src/lib/features/timesheet-period/commands/reopen-timesheet-period.command.ts"],"sourcesContent":["\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult, AXPSystemStatusType } 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';\nimport { AXMTimesheetValidationService } from '../timesheet-validation.service';\n\n//#region ---- Types ----\n\nexport interface ReopenTimesheetPeriodInput {\n id: string;\n}\n\n//#endregion\n\n/**\n * Reopens a rejected or approved timesheet period back to draft.\n */\n@Injectable({ providedIn: 'root' })\nexport class ReopenTimesheetPeriodCommand implements AXPCommand<ReopenTimesheetPeriodInput, 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: ReopenTimesheetPeriodInput): 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.assertCanReopen(period);\n\n await dataAccessor.update(input.id, {\n statusId: AXPSystemStatusType.Draft,\n submittedAt: undefined,\n approvedAt: undefined,\n approvedById: undefined,\n rejectedAt: undefined,\n rejectionReason: undefined,\n lockedAt: undefined,\n });\n\n return { success: true, kind: 'object', data: undefined };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to reopen timesheet period.';\n console.error('[ReopenTimesheetPeriodCommand] Error:', error);\n return { success: false, message: { text: message } };\n }\n }\n\n //#endregion\n}\n"],"names":[],"mappings":";;;;;;;AAiBA;AAEA;;AAEG;MAEU,4BAA4B,CAAA;AADzC,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAsC3E,IAAA;;;IAhCC,MAAM,OAAO,CAAC,KAAiC,EAAA;AAC7C,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,eAAe,CAAC,MAAM,CAAC;AAE9C,YAAA,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE;gBAClC,QAAQ,EAAE,mBAAmB,CAAC,KAAK;AACnC,gBAAA,WAAW,EAAE,SAAS;AACtB,gBAAA,UAAU,EAAE,SAAS;AACrB,gBAAA,YAAY,EAAE,SAAS;AACvB,gBAAA,UAAU,EAAE,SAAS;AACrB,gBAAA,eAAe,EAAE,SAAS;AAC1B,gBAAA,QAAQ,EAAE,SAAS;AACpB,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,oCAAoC;AAC7F,YAAA,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC;AAC7D,YAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACvD;IACF;8GAvCW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA5B,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,4BAA4B,cADf,MAAM,EAAA,CAAA,CAAA;;2FACnB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}