law-common 10.77.0 → 11.0.0

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 (43) hide show
  1. package/README.md +1 -1
  2. package/dist/src/api/index.d.ts +2 -0
  3. package/dist/src/api/index.js +2 -0
  4. package/dist/src/api/interface/leave_approval.create.dto.interface.d.ts +5 -0
  5. package/dist/src/api/interface/leave_approval.create.dto.interface.js +2 -0
  6. package/dist/src/api/interface/leave_approval.update.dto.interface.d.ts +18 -0
  7. package/dist/src/api/interface/leave_approval.update.dto.interface.js +16 -0
  8. package/dist/src/entities/enums/configuration-key.enum.d.ts +2 -1
  9. package/dist/src/entities/enums/configuration-key.enum.js +2 -0
  10. package/dist/src/entities/enums/cron-jobs-name.enum.d.ts +2 -1
  11. package/dist/src/entities/enums/cron-jobs-name.enum.js +1 -0
  12. package/dist/src/entities/enums/leave.action.enum.d.ts +3 -2
  13. package/dist/src/entities/enums/leave.action.enum.js +6 -2
  14. package/dist/src/entities/enums/leave_approval_status_enum.d.ts +13 -0
  15. package/dist/src/entities/enums/leave_approval_status_enum.js +17 -0
  16. package/dist/src/entities/flow-configs/base-flow-config.enums.d.ts +74 -0
  17. package/dist/src/entities/flow-configs/base-flow-config.enums.js +79 -0
  18. package/dist/src/entities/flow-configs/base-flow-config.factory.d.ts +116 -0
  19. package/dist/src/entities/flow-configs/base-flow-config.factory.js +120 -0
  20. package/dist/src/entities/flow-configs/leave.flow.config.d.ts +5 -1
  21. package/dist/src/entities/flow-configs/leave.flow.config.js +41 -26
  22. package/dist/src/entities/flow-configs/leave_approval_flow.config.d.ts +6 -0
  23. package/dist/src/entities/flow-configs/leave_approval_flow.config.js +146 -0
  24. package/dist/src/entities/index.d.ts +4 -0
  25. package/dist/src/entities/index.js +4 -0
  26. package/dist/src/entities/interface/entity.utils.interface.d.ts +6 -3
  27. package/dist/src/entities/interface/entity.utils.interface.js +1 -0
  28. package/dist/src/entities/interface/leave_approval.entity.interface.d.ts +10 -0
  29. package/dist/src/entities/interface/leave_approval.entity.interface.js +2 -0
  30. package/dist/src/entities/model/entity.model.interface.js +2 -0
  31. package/dist/src/entities/model/entity_history.entity.model.js +1 -1
  32. package/dist/src/entities/model/leave.entity.model.d.ts +12 -2
  33. package/dist/src/entities/model/leave.entity.model.js +28 -3
  34. package/dist/src/entities/model/leave_approval.entity.model.d.ts +42 -0
  35. package/dist/src/entities/model/leave_approval.entity.model.js +123 -0
  36. package/dist/src/entities/model/state.entity.model.js +1 -1
  37. package/dist/src/entities/model/user.entity.model.d.ts +5 -1
  38. package/dist/src/entities/model/user.entity.model.js +17 -0
  39. package/dist/src/entities/model/vendor.entity.model.js +1 -1
  40. package/dist/src/entities/model/vendor_invoice.entity.model.js +1 -1
  41. package/dist/src/entities/model/work-from-home.entity.model.js +1 -1
  42. package/dist/src/utils/entity.flow.util.js +5 -0
  43. package/package.json +42 -41
@@ -11,11 +11,11 @@ exports.leaveFlowConfig = {
11
11
  // permissions: ["LEAVE_READ_ORG"],
12
12
  // next: () => LeaveStatusEnum.PENDING_APPROVAL,
13
13
  // },
14
- [leave_action_enum_1.LeaveActionEnum.EDIT]: {
15
- permissions: ["LEAVE_UPDATE_SELF", "LEAVE_UPDATE_ORG"],
16
- next: () => leave_status_enum_1.LeaveStatusEnum.PENDING_APPROVAL,
17
- description: "Allows the employee to edit the leave request while it is still awaiting approval.",
18
- },
14
+ // [LeaveActionEnum.EDIT]: {
15
+ // permissions: ["LEAVE_UPDATE_SELF", "LEAVE_UPDATE_ORG"],
16
+ // next: () => LeaveStatusEnum.PENDING_APPROVAL,
17
+ // description: "Allows the employee to edit the leave request while it is still awaiting approval.",
18
+ // },
19
19
  [leave_action_enum_1.LeaveActionEnum.APPROVE]: {
20
20
  permissions: ["LEAVE_APPROVER_ORG"],
21
21
  next: () => leave_status_enum_1.LeaveStatusEnum.APPROVED,
@@ -31,6 +31,16 @@ exports.leaveFlowConfig = {
31
31
  next: () => leave_status_enum_1.LeaveStatusEnum.DELETED,
32
32
  description: "Deletes the leave request entirely before it has been approved.",
33
33
  },
34
+ [leave_action_enum_1.LeaveActionEnum.LEAVE_APPROVAL_APPROVE]: {
35
+ permissions: ["LEAVE_APPROVER_ORG"],
36
+ next: (context) => { var _a; return ((_a = context.leaveEntity) === null || _a === void 0 ? void 0 : _a.getOverallStatusByLeaveApprovals()) || context.leaveEntity.status; },
37
+ description: "Approves the leave request. The employee's leave will be marked as approved.",
38
+ },
39
+ [leave_action_enum_1.LeaveActionEnum.LEAVE_APPROVAL_REJECT]: {
40
+ permissions: ["LEAVE_APPROVER_ORG"],
41
+ next: (context) => { var _a; return ((_a = context.leaveEntity) === null || _a === void 0 ? void 0 : _a.getOverallStatusByLeaveApprovals()) || context.leaveEntity.status; },
42
+ description: "Rejects the leave request. The employee will be notified of the rejection.",
43
+ },
34
44
  },
35
45
  },
36
46
  [leave_status_enum_1.LeaveStatusEnum.EDIT_APPROVAL]: {
@@ -40,11 +50,11 @@ exports.leaveFlowConfig = {
40
50
  // permissions: ["LEAVE_CREATOR", "LEAVE_APPROVER_ORG"],
41
51
  // next: () => LeaveStatusEnum.EDIT_APPROVAL,
42
52
  // },
43
- [leave_action_enum_1.LeaveActionEnum.EDIT]: {
44
- permissions: ["LEAVE_UPDATE_SELF", "LEAVE_UPDATE_ORG"],
45
- next: () => leave_status_enum_1.LeaveStatusEnum.EDIT_APPROVAL,
46
- description: "Allows further edits to the leave request while the edit is pending approval.",
47
- },
53
+ // [LeaveActionEnum.EDIT]: {
54
+ // permissions: ["LEAVE_UPDATE_SELF", "LEAVE_UPDATE_ORG"],
55
+ // next: () => LeaveStatusEnum.EDIT_APPROVAL,
56
+ // description: "Allows further edits to the leave request while the edit is pending approval.",
57
+ // },
48
58
  [leave_action_enum_1.LeaveActionEnum.RECALL]: {
49
59
  permissions: ["LEAVE_UPDATE_SELF", "LEAVE_UPDATE_ORG"],
50
60
  next: () => leave_status_enum_1.LeaveStatusEnum.DELETE_APPROVAL, // Rolls back to previous state
@@ -69,11 +79,11 @@ exports.leaveFlowConfig = {
69
79
  // permissions: ["LEAVE_CREATOR"],
70
80
  // next: () => LeaveStatusEnum.DELETE_APPROVAL,
71
81
  // },
72
- [leave_action_enum_1.LeaveActionEnum.EDIT]: {
73
- permissions: ["LEAVE_UPDATE_SELF", "LEAVE_UPDATE_ORG"],
74
- next: () => leave_status_enum_1.LeaveStatusEnum.DELETE_APPROVAL,
75
- description: "Allows editing the leave request while the deletion is pending approval.",
76
- },
82
+ // [LeaveActionEnum.EDIT]: {
83
+ // permissions: ["LEAVE_UPDATE_SELF", "LEAVE_UPDATE_ORG"],
84
+ // next: () => LeaveStatusEnum.DELETE_APPROVAL,
85
+ // description: "Allows editing the leave request while the deletion is pending approval.",
86
+ // },
77
87
  [leave_action_enum_1.LeaveActionEnum.RECALL]: {
78
88
  permissions: ["LEAVE_UPDATE_SELF", "LEAVE_UPDATE_ORG"],
79
89
  next: () => leave_status_enum_1.LeaveStatusEnum.DELETED, // Rolls back to previous state
@@ -98,16 +108,21 @@ exports.leaveFlowConfig = {
98
108
  // permissions: ["LEAVE_CREATOR", "LEAVE_APPROVER_ORG"],
99
109
  // next: () => LeaveStatusEnum.APPROVED,
100
110
  // },
101
- [leave_action_enum_1.LeaveActionEnum.EDIT]: {
102
- permissions: ["LEAVE_UPDATE_SELF", "LEAVE_UPDATE_ORG"],
103
- next: () => leave_status_enum_1.LeaveStatusEnum.EDIT_APPROVAL,
104
- description: "Requests an edit to an already approved leave. The change will require re-approval.",
105
- },
111
+ // [LeaveActionEnum.EDIT]: {
112
+ // permissions: ["LEAVE_UPDATE_SELF", "LEAVE_UPDATE_ORG"],
113
+ // next: () => LeaveStatusEnum.EDIT_APPROVAL,
114
+ // description: "Requests an edit to an already approved leave. The change will require re-approval.",
115
+ // },
106
116
  [leave_action_enum_1.LeaveActionEnum.DELETE]: {
107
117
  permissions: ["LEAVE_DELETE_SELF"],
108
- next: () => leave_status_enum_1.LeaveStatusEnum.DELETE_APPROVAL,
118
+ next: () => leave_status_enum_1.LeaveStatusEnum.DELETED,
109
119
  description: "Requests deletion of an approved leave. The deletion will require approver confirmation.",
110
120
  },
121
+ // [LeaveActionEnum.APPROVE]: {
122
+ // permissions: ["LEAVE_APPROVER_ORG"],
123
+ // next: () => LeaveStatusEnum.APPROVED,
124
+ // description: "Allows approver to reaffirm approval on an already approved leave.",
125
+ // },
111
126
  },
112
127
  },
113
128
  // [LeaveStatusEnum.DELETED]: {
@@ -125,11 +140,11 @@ exports.leaveFlowConfig = {
125
140
  // permissions: ["LEAVE_CREATOR", "LEAVE_APPROVER_ORG"],
126
141
  // next: () => LeaveStatusEnum.RESOLVE_REJECTED,
127
142
  // },
128
- [leave_action_enum_1.LeaveActionEnum.EDIT]: {
129
- permissions: ["LEAVE_UPDATE_SELF", "LEAVE_UPDATE_ORG"],
130
- next: () => leave_status_enum_1.LeaveStatusEnum.EDIT_APPROVAL,
131
- description: "Allows the employee to edit and resubmit the leave request after it was rejected.",
132
- },
143
+ // [LeaveActionEnum.EDIT]: {
144
+ // permissions: ["LEAVE_UPDATE_SELF", "LEAVE_UPDATE_ORG"],
145
+ // next: () => LeaveStatusEnum.EDIT_APPROVAL,
146
+ // description: "Allows the employee to edit and resubmit the leave request after it was rejected.",
147
+ // },
133
148
  [leave_action_enum_1.LeaveActionEnum.DELETE]: {
134
149
  permissions: ["LEAVE_DELETE_SELF"],
135
150
  next: () => leave_status_enum_1.LeaveStatusEnum.DELETE_APPROVAL,
@@ -0,0 +1,6 @@
1
+ import { FlowConfig } from "./flow-config.type";
2
+ import { LeaveApprovalActionEnum } from "../../api";
3
+ import { LeaveApprovalStatusEnum } from "../enums/leave_approval_status_enum";
4
+ export interface ILeaveApprovalFlowConfigContextData {
5
+ }
6
+ export declare const leaveApprovalFlowConfig: FlowConfig<LeaveApprovalStatusEnum, LeaveApprovalActionEnum, ILeaveApprovalFlowConfigContextData>;
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.leaveApprovalFlowConfig = void 0;
4
+ const api_1 = require("../../api");
5
+ const leave_approval_status_enum_1 = require("../enums/leave_approval_status_enum");
6
+ const base_flow_config_factory_1 = require("./base-flow-config.factory");
7
+ const LEAVE_APPROVAL_UPDATE_PERMISSION = ["LEAVE_APPROVAL_UPDATE"];
8
+ const LEAVE_APPROVAL_DELETE_PERMISSION = ["LEAVE_APPROVAL_DELETE"];
9
+ const LEAVE_APPROVAL_APPROVE_PERMISSION = ["LEAVE_APPROVER_ORG"];
10
+ const LEAVE_APPROVAL_REJECT_PERMISSION = ["LEAVE_APPROVER_ORG"];
11
+ const LEAVE_APPROVAL_RECALL_PERMISSION = ["LEAVE_APPROVAL_RECALL"];
12
+ const LEAVE_APPROVAL_ESCALATION_APPROVE_PERMISSION = ["LEAVE_ESCALATION"];
13
+ const LEAVE_APPROVAL_ESCALATION_REJECT_PERMISSION = ["LEAVE_ESCALATION"];
14
+ const LEAVE_APPROVAL_ESCALATE_PERMISSION = ["LEAVE_ESCALATION"];
15
+ const ACTION_MAP = {
16
+ // [LeaveApprovalActionEnum.UPDATE]: {
17
+ // reachableStatues: [
18
+ // LeaveApprovalStatusEnum.UPDATE_APPROVAL_PENDING,
19
+ // LeaveApprovalStatusEnum.UPDATED,
20
+ // LeaveApprovalStatusEnum.CREATE_APPROVAL_PENDING,
21
+ // ] as const,
22
+ // permissions: LEAVE_APPROVAL_UPDATE_PERMISSION,
23
+ // },
24
+ [api_1.LeaveApprovalActionEnum.DELETE]: {
25
+ reachableStatues: [leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETE_APPROVAL_PENDING, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETED, leave_approval_status_enum_1.LeaveApprovalStatusEnum.ESCALATED],
26
+ permissions: LEAVE_APPROVAL_DELETE_PERMISSION,
27
+ },
28
+ [api_1.LeaveApprovalActionEnum.APPROVE]: {
29
+ reachableStatues: [
30
+ leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED,
31
+ leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED,
32
+ leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATED,
33
+ leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETED,
34
+ ],
35
+ permissions: LEAVE_APPROVAL_APPROVE_PERMISSION,
36
+ },
37
+ [api_1.LeaveApprovalActionEnum.REJECT]: {
38
+ reachableStatues: [
39
+ leave_approval_status_enum_1.LeaveApprovalStatusEnum.REJECTED,
40
+ leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED,
41
+ leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATED,
42
+ leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED,
43
+ leave_approval_status_enum_1.LeaveApprovalStatusEnum.RESOLVED_REJECTED,
44
+ ],
45
+ permissions: LEAVE_APPROVAL_REJECT_PERMISSION,
46
+ },
47
+ [api_1.LeaveApprovalActionEnum.RECALL]: {
48
+ reachableStatues: [leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED, leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATED, leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED],
49
+ permissions: LEAVE_APPROVAL_RECALL_PERMISSION,
50
+ },
51
+ [api_1.LeaveApprovalActionEnum.ESCALATION_APPROVE]: {
52
+ reachableStatues: [leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED],
53
+ permissions: LEAVE_APPROVAL_ESCALATION_APPROVE_PERMISSION,
54
+ },
55
+ [api_1.LeaveApprovalActionEnum.ESCALATION_REJECT]: {
56
+ reachableStatues: [leave_approval_status_enum_1.LeaveApprovalStatusEnum.REJECTED],
57
+ permissions: LEAVE_APPROVAL_ESCALATION_REJECT_PERMISSION,
58
+ },
59
+ [api_1.LeaveApprovalActionEnum.ESCALATE]: {
60
+ reachableStatues: [leave_approval_status_enum_1.LeaveApprovalStatusEnum.ESCALATED],
61
+ permissions: LEAVE_APPROVAL_ESCALATE_PERMISSION,
62
+ },
63
+ };
64
+ const { createActionConfig } = (0, base_flow_config_factory_1.createFlowConfigFactory)()(ACTION_MAP);
65
+ // APPROVED status transitions
66
+ // const transitionApprovedStatusUpdateAction = createActionConfig<LeaveApprovalActionEnum.UPDATE, LeaveApprovalStatusEnum.UPDATE_APPROVAL_PENDING>(
67
+ // LeaveApprovalActionEnum.UPDATE,
68
+ // LeaveApprovalStatusEnum.UPDATE_APPROVAL_PENDING,
69
+ // );
70
+ const transitionApprovedStatusDeleteAction = createActionConfig(api_1.LeaveApprovalActionEnum.DELETE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETED);
71
+ // REJECTED status transitions
72
+ // const transitionRejectedStatusUpdateAction = createActionConfig<LeaveApprovalActionEnum.UPDATE, LeaveApprovalStatusEnum.UPDATE_APPROVAL_PENDING>(
73
+ // LeaveApprovalActionEnum.UPDATE,
74
+ // LeaveApprovalStatusEnum.UPDATE_APPROVAL_PENDING,
75
+ // );
76
+ const transitionRejectedStatusDeleteAction = createActionConfig(api_1.LeaveApprovalActionEnum.DELETE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETE_APPROVAL_PENDING);
77
+ // CREATE_APPROVAL_PENDING status transitions
78
+ const transitionCreateApprovalPendingStatusDeleteAction = createActionConfig(api_1.LeaveApprovalActionEnum.DELETE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETED);
79
+ const transitionCreateApprovalPendingStatusApproveAction = createActionConfig(api_1.LeaveApprovalActionEnum.APPROVE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED);
80
+ const transitionCreateApprovalPendingStatusRejectAction = createActionConfig(api_1.LeaveApprovalActionEnum.REJECT, leave_approval_status_enum_1.LeaveApprovalStatusEnum.REJECTED);
81
+ const transitionCreateApprovalPendingStatusEscalationApproveAction = createActionConfig(api_1.LeaveApprovalActionEnum.ESCALATION_APPROVE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED);
82
+ const transitionCreateApprovalPendingStatusEscalationRejectAction = createActionConfig(api_1.LeaveApprovalActionEnum.ESCALATION_REJECT, leave_approval_status_enum_1.LeaveApprovalStatusEnum.REJECTED);
83
+ // UPDATE_APPROVAL_PENDING status transitions
84
+ // const transitionUpdateApprovalPendingStatusUpdateAction = createActionConfig(LeaveApprovalActionEnum.UPDATE, LeaveApprovalStatusEnum.UPDATE_APPROVAL_PENDING);
85
+ const transitionUpdateApprovalPendingStatusApproveAction = createActionConfig(api_1.LeaveApprovalActionEnum.APPROVE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED);
86
+ const transitionUpdateApprovalPendingStatusRejectAction = createActionConfig(api_1.LeaveApprovalActionEnum.REJECT, leave_approval_status_enum_1.LeaveApprovalStatusEnum.REJECTED);
87
+ const transitionUpdateApprovalPendingStatusRecallAction = createActionConfig(api_1.LeaveApprovalActionEnum.RECALL, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED);
88
+ // DELETE_APPROVAL_PENDING status transitions
89
+ const transitionDeleteApprovalPendingStatusApproveAction = createActionConfig(api_1.LeaveApprovalActionEnum.APPROVE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETED);
90
+ const transitionDeleteApprovalPendingStatusRejectAction = createActionConfig(api_1.LeaveApprovalActionEnum.REJECT, leave_approval_status_enum_1.LeaveApprovalStatusEnum.REJECTED);
91
+ const transitionDeleteApprovalPendingStatusRecallAction = createActionConfig(api_1.LeaveApprovalActionEnum.RECALL, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED);
92
+ // RESOLVED_REJECTED status transitions
93
+ // const transitionResolvedRejectedStatusUpdateAction = createActionConfig(LeaveApprovalActionEnum.UPDATE, LeaveApprovalStatusEnum.UPDATED);
94
+ const transitionResolvedRejectedStatusDeleteAction = createActionConfig(api_1.LeaveApprovalActionEnum.DELETE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETED);
95
+ exports.leaveApprovalFlowConfig = {
96
+ [leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED]: {
97
+ actions: {
98
+ // [LeaveApprovalActionEnum.UPDATE]: transitionApprovedStatusUpdateAction,
99
+ [api_1.LeaveApprovalActionEnum.DELETE]: transitionApprovedStatusDeleteAction,
100
+ },
101
+ },
102
+ [leave_approval_status_enum_1.LeaveApprovalStatusEnum.REJECTED]: {
103
+ actions: {
104
+ // [LeaveApprovalActionEnum.UPDATE]: transitionRejectedStatusUpdateAction,
105
+ [api_1.LeaveApprovalActionEnum.DELETE]: transitionRejectedStatusDeleteAction,
106
+ },
107
+ },
108
+ [leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATE_APPROVAL_PENDING]: {
109
+ actions: {
110
+ [api_1.LeaveApprovalActionEnum.APPROVE]: transitionCreateApprovalPendingStatusApproveAction,
111
+ [api_1.LeaveApprovalActionEnum.REJECT]: transitionCreateApprovalPendingStatusRejectAction,
112
+ [api_1.LeaveApprovalActionEnum.ESCALATION_APPROVE]: transitionCreateApprovalPendingStatusEscalationApproveAction,
113
+ [api_1.LeaveApprovalActionEnum.ESCALATION_REJECT]: transitionCreateApprovalPendingStatusEscalationRejectAction,
114
+ [api_1.LeaveApprovalActionEnum.DELETE]: transitionCreateApprovalPendingStatusDeleteAction,
115
+ [api_1.LeaveApprovalActionEnum.ESCALATE]: createActionConfig(api_1.LeaveApprovalActionEnum.ESCALATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.ESCALATED),
116
+ },
117
+ },
118
+ [leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATE_APPROVAL_PENDING]: {
119
+ actions: {
120
+ // [LeaveApprovalActionEnum.UPDATE]: transitionUpdateApprovalPendingStatusUpdateAction,
121
+ [api_1.LeaveApprovalActionEnum.APPROVE]: transitionUpdateApprovalPendingStatusApproveAction,
122
+ [api_1.LeaveApprovalActionEnum.REJECT]: transitionUpdateApprovalPendingStatusRejectAction,
123
+ [api_1.LeaveApprovalActionEnum.RECALL]: transitionUpdateApprovalPendingStatusRecallAction,
124
+ [api_1.LeaveApprovalActionEnum.ESCALATE]: createActionConfig(api_1.LeaveApprovalActionEnum.ESCALATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.ESCALATED),
125
+ },
126
+ },
127
+ [leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETE_APPROVAL_PENDING]: {
128
+ actions: {
129
+ [api_1.LeaveApprovalActionEnum.APPROVE]: transitionDeleteApprovalPendingStatusApproveAction,
130
+ [api_1.LeaveApprovalActionEnum.REJECT]: transitionDeleteApprovalPendingStatusRejectAction,
131
+ [api_1.LeaveApprovalActionEnum.RECALL]: transitionDeleteApprovalPendingStatusRecallAction,
132
+ [api_1.LeaveApprovalActionEnum.ESCALATE]: createActionConfig(api_1.LeaveApprovalActionEnum.ESCALATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.ESCALATED),
133
+ },
134
+ },
135
+ [leave_approval_status_enum_1.LeaveApprovalStatusEnum.RESOLVED_REJECTED]: {
136
+ actions: {
137
+ // [LeaveApprovalActionEnum.UPDATE]: transitionResolvedRejectedStatusUpdateAction,
138
+ [api_1.LeaveApprovalActionEnum.DELETE]: transitionResolvedRejectedStatusDeleteAction,
139
+ },
140
+ },
141
+ [leave_approval_status_enum_1.LeaveApprovalStatusEnum.ESCALATED]: {
142
+ actions: {
143
+ [api_1.LeaveApprovalActionEnum.DELETE]: createActionConfig(api_1.LeaveApprovalActionEnum.DELETE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.ESCALATED),
144
+ },
145
+ },
146
+ };
@@ -221,3 +221,7 @@ export * from "./enums/entity_history_status_enum";
221
221
  export * from "./flow-configs/entity_history_flow.config";
222
222
  export * from "./interface/entity_history.entity.interface";
223
223
  export * from "./model/entity_history.entity.model";
224
+ export * from "./enums/leave_approval_status_enum";
225
+ export * from "./flow-configs/leave_approval_flow.config";
226
+ export * from "./interface/leave_approval.entity.interface";
227
+ export * from "./model/leave_approval.entity.model";
@@ -237,3 +237,7 @@ __exportStar(require("./enums/entity_history_status_enum"), exports);
237
237
  __exportStar(require("./flow-configs/entity_history_flow.config"), exports);
238
238
  __exportStar(require("./interface/entity_history.entity.interface"), exports);
239
239
  __exportStar(require("./model/entity_history.entity.model"), exports);
240
+ __exportStar(require("./enums/leave_approval_status_enum"), exports);
241
+ __exportStar(require("./flow-configs/leave_approval_flow.config"), exports);
242
+ __exportStar(require("./interface/leave_approval.entity.interface"), exports);
243
+ __exportStar(require("./model/leave_approval.entity.model"), exports);
@@ -36,6 +36,7 @@ import { HolidayListEntityModel } from "../model/holiday_list.entity.model";
36
36
  import { IndustryEntityModel } from "../model/industry.entity.model";
37
37
  import { IntermediaryBankEntityModel } from "../model/intermediary-bank.entity.model";
38
38
  import { LeaveEntityModel } from "../model/leave.entity.model";
39
+ import { LeaveApprovalEntityModel } from "../model/leave_approval.entity.model";
39
40
  import { LeaveCountVirtualEntityModel } from "../model/leave_count.entity.model";
40
41
  import { LeaveHistoryEntityModel } from "../model/leave_history.entity.model";
41
42
  import { MovingTimesheetEntityModel } from "../model/moving-timesheet.entity.model";
@@ -104,6 +105,7 @@ import { IHolidayEntity } from "./holiday.entity.interface";
104
105
  import { IIndustryEntity } from "./industry.entity.interface";
105
106
  import { IIntermediaryBankEntity } from "./intermediary_bank.entity.interface";
106
107
  import { ILeaveCountVirtualEntity, ILeaveEntity } from "./leave.entity.interface";
108
+ import { ILeaveApprovalEntity } from "./leave_approval.entity.interface";
107
109
  import { ILeaveHistoryEntity } from "./leave_history.entity.interface";
108
110
  import { IMovingTimesheetEntity } from "./moving_timesheet.entity.interface";
109
111
  import { IOfficeLocationEntity } from "./office.location.entity";
@@ -243,7 +245,8 @@ export declare enum EntityEnum {
243
245
  VENDOR_HISTORY = "vendor_history",
244
246
  CLIENT_QUOTE = "client_quote",
245
247
  CLIENT_QUOTE_RATE = "client_quote_rate",
246
- ENTITY_HISTORY = "entity_history"
248
+ ENTITY_HISTORY = "entity_history",
249
+ LEAVE_APPROVAL = "leave_approval"
247
250
  }
248
251
  export type EntityRelations = {
249
252
  [K in EntityEnum | VirtualEntityEnum]: K;
@@ -268,7 +271,7 @@ export type IBaseEntityApiResponse<T> = {
268
271
  [key in EntityEnum | VirtualEntityEnum]?: AggregationFields<EnumToModel<key>>[];
269
272
  };
270
273
  };
271
- export type EnumEntityType<T extends EntityEnum | VirtualEntityEnum> = (T extends EntityEnum.BILLING ? IBillingEntity : T extends EntityEnum.BILLING_HISTORY ? IBillingHistoryEntity : T extends EntityEnum.MOVING_TIMESHEET ? IMovingTimesheetEntity : T extends EntityEnum.BILLING_TIMESHEET ? IBillingTimesheetEntity : T extends EntityEnum.BILLING_REIMBURSEMENT_EXPENSE ? IBillingReimbursementExpenseEntity : T extends EntityEnum.BILLING_TIMESHEET_HISTORY ? IBillingTimesheetHistoryEntity : T extends EntityEnum.BILLING_REIMBURESMENT_EXPENSE_HISTORY ? IBillingReimbursementExpenseHistoryEntity : T extends EntityEnum.TIMESHEET ? ITimesheetEntity : T extends EntityEnum.USER ? IUserEntity : T extends EntityEnum.PROJECT ? IProjectEntity : T extends EntityEnum.CLIENT ? IClientEntity : T extends EntityEnum.LEAVE ? ILeaveEntity : T extends EntityEnum.BANK ? IBankEntity : T extends EntityEnum.BILLING_TRANSACTION ? IBillingTransactionEntity : T extends EntityEnum.BILLING_TRANSACTION_HISTORY ? IBillingTransactionHistoryEntity : T extends EntityEnum.CLIENT_AFFILIATE ? IClientAffiliateEntity : T extends EntityEnum.CONFIGURATION ? IConfigurationEntity : T extends EntityEnum.HOLIDAY ? IHolidayEntity : T extends EntityEnum.HOLIDAY_LIST ? IHolidayListEntity : T extends EntityEnum.COUNTRY ? ICountryEntity : T extends EntityEnum.EXPENSE_TYPE ? IExpenseTypeEntity : T extends EntityEnum.INDUSTRY ? IIndustryEntity : T extends EntityEnum.INTERMEDIARY_BANK ? IIntermediaryBankEntity : T extends EntityEnum.OFFICE_LOCATION ? IOfficeLocationEntity : T extends EntityEnum.PERMISSION ? IPermissionEntity : T extends EntityEnum.ROLE ? IRoleEntity : T extends EntityEnum.TASK ? ITaskEntity : T extends EntityEnum.DESIGNATION ? IDesignationEntity : T extends EntityEnum.RATE ? IRateEntity : T extends EntityEnum.REIMBURSEMENT ? IReimbursementEntity : T extends EntityEnum.REIMBURSEMENT_EXPENSE ? IReimbursementExpenseEntity : T extends EntityEnum.REIMBURSEMENT_HISTORY ? IReimbursementHistoryEntity : T extends EntityEnum.WORK_FROM_HOME ? IWorkFromHomeEntity : T extends EntityEnum.ORGANIZATION ? IOrganizationEntity : T extends EntityEnum.PROJECT_USER_MAPPING ? IProjectUserMappingEntity : T extends EntityEnum.CLIENT_USER_MAPPING ? IClientUserMappingEntity : T extends EntityEnum.CLIENT_INTRODUCING_MAPPING ? IClientIntroducingMappingEntity : T extends EntityEnum.TO_DO_LIST ? IToDoListEntity : T extends EntityEnum.CRON_JOBS ? ICronJobsEntity : T extends EntityEnum.ROLE_PERMISSION_MAPPING ? IRolePermissionMappingEntity : T extends EntityEnum.BANK_HISTORY ? IBankHistoryEntity : T extends VirtualEntityEnum.LEAVE_COUNT ? ILeaveCountVirtualEntity : T extends EntityEnum.LEAVE_HISTORY ? ILeaveHistoryEntity : T extends EntityEnum.WORK_FROM_HOME_HISTORY ? IWorkFromHomeHistoryEntity : T extends EntityEnum.TIMESHEET_HISTORY ? ITimesheetHistoryEntity : T extends EntityEnum.ADDRESS_BOOK ? IAddressBookEntity : T extends EntityEnum.STATE ? IStateEntity : T extends EntityEnum.GST_RATE ? IGstRateEntity : T extends EntityEnum.ORGANIZATION_TYPE ? IOrganizationTypeEntity : T extends EntityEnum.TDS_RATE ? ITdsRateEntity : T extends EntityEnum.ORGANIZATION_TYPE_TDS_RATE_MAPPING ? IOrganizationTypeTdsRateMappingEntity : T extends EntityEnum.VOUCHER_TYPE ? IVoucherTypeEntity : T extends EntityEnum.TDS_RATE_VOUCHER_TYPE_MAPPING ? ITdsRateVoucherTypeMappingEntity : T extends EntityEnum.EXPENSE_HEAD ? IExpenseHeadEntity : T extends EntityEnum.DOCUMENT_UPLOAD ? IDocumentUploadEntity : T extends EntityEnum.VENDOR ? IVendorEntity : T extends EntityEnum.VENDOR_INVOICE ? IVendorInvoiceEntity : T extends EntityEnum.VENDOR_INVOICE_HISTORY ? IVendorInvoiceHistoryEntity : T extends EntityEnum.VENDOR_INVOICE_HISTORY ? IVendorInvoiceHistoryEntity : T extends EntityEnum.VENDOR_INVOICE_ITEM ? IVendorInvoiceItemEntity : T extends EntityEnum.VENDOR_INVOICE_ITEM_HISTORY ? IVendorInvoiceItemHistoryEntity : T extends EntityEnum.VENDOR_HISTORY ? IVendorHistoryEntity : T extends EntityEnum.WEBSITE_LEAD ? IWebsiteLeadEntity : T extends EntityEnum.WEBSITE_NEWSLETTER_SUBSCRIPTION ? IWebsiteNewsletterSubscriptionEntity : T extends EntityEnum.CLIENT_QUOTE ? IClientQuoteEntity : T extends EntityEnum.CLIENT_QUOTE_RATE ? IClientQuoteRateEntity : T extends EntityEnum.BILLING_PROFILE ? IBillingProfileEntity : T extends EntityEnum.PROJECT_REVENUE_SPLIT_MAPPING ? IProjectRevenueSplitMappingEntity : T extends EntityEnum.VENDOR_INVOICE_ITEM_HISTORY ? IVendorInvoiceItemHistoryEntity : T extends EntityEnum.VENDOR_HISTORY ? IVendorHistoryEntity : T extends EntityEnum.WEBSITE_LEAD ? IWebsiteLeadEntity : T extends EntityEnum.WEBSITE_NEWSLETTER_SUBSCRIPTION ? IWebsiteNewsletterSubscriptionEntity : T extends EntityEnum.CLIENT_QUOTE ? IClientQuoteEntity : T extends EntityEnum.CLIENT_QUOTE_RATE ? IClientQuoteRateEntity : T extends EntityEnum.ENTITY_HISTORY ? IEntityHistoryEntity : never) & {
274
+ export type EnumEntityType<T extends EntityEnum | VirtualEntityEnum> = (T extends EntityEnum.BILLING ? IBillingEntity : T extends EntityEnum.BILLING_HISTORY ? IBillingHistoryEntity : T extends EntityEnum.MOVING_TIMESHEET ? IMovingTimesheetEntity : T extends EntityEnum.BILLING_TIMESHEET ? IBillingTimesheetEntity : T extends EntityEnum.BILLING_REIMBURSEMENT_EXPENSE ? IBillingReimbursementExpenseEntity : T extends EntityEnum.BILLING_TIMESHEET_HISTORY ? IBillingTimesheetHistoryEntity : T extends EntityEnum.BILLING_REIMBURESMENT_EXPENSE_HISTORY ? IBillingReimbursementExpenseHistoryEntity : T extends EntityEnum.TIMESHEET ? ITimesheetEntity : T extends EntityEnum.USER ? IUserEntity : T extends EntityEnum.PROJECT ? IProjectEntity : T extends EntityEnum.CLIENT ? IClientEntity : T extends EntityEnum.LEAVE ? ILeaveEntity : T extends EntityEnum.BANK ? IBankEntity : T extends EntityEnum.BILLING_TRANSACTION ? IBillingTransactionEntity : T extends EntityEnum.BILLING_TRANSACTION_HISTORY ? IBillingTransactionHistoryEntity : T extends EntityEnum.CLIENT_AFFILIATE ? IClientAffiliateEntity : T extends EntityEnum.CONFIGURATION ? IConfigurationEntity : T extends EntityEnum.HOLIDAY ? IHolidayEntity : T extends EntityEnum.HOLIDAY_LIST ? IHolidayListEntity : T extends EntityEnum.COUNTRY ? ICountryEntity : T extends EntityEnum.EXPENSE_TYPE ? IExpenseTypeEntity : T extends EntityEnum.INDUSTRY ? IIndustryEntity : T extends EntityEnum.INTERMEDIARY_BANK ? IIntermediaryBankEntity : T extends EntityEnum.OFFICE_LOCATION ? IOfficeLocationEntity : T extends EntityEnum.PERMISSION ? IPermissionEntity : T extends EntityEnum.ROLE ? IRoleEntity : T extends EntityEnum.TASK ? ITaskEntity : T extends EntityEnum.DESIGNATION ? IDesignationEntity : T extends EntityEnum.RATE ? IRateEntity : T extends EntityEnum.REIMBURSEMENT ? IReimbursementEntity : T extends EntityEnum.REIMBURSEMENT_EXPENSE ? IReimbursementExpenseEntity : T extends EntityEnum.REIMBURSEMENT_HISTORY ? IReimbursementHistoryEntity : T extends EntityEnum.WORK_FROM_HOME ? IWorkFromHomeEntity : T extends EntityEnum.ORGANIZATION ? IOrganizationEntity : T extends EntityEnum.PROJECT_USER_MAPPING ? IProjectUserMappingEntity : T extends EntityEnum.CLIENT_USER_MAPPING ? IClientUserMappingEntity : T extends EntityEnum.CLIENT_INTRODUCING_MAPPING ? IClientIntroducingMappingEntity : T extends EntityEnum.TO_DO_LIST ? IToDoListEntity : T extends EntityEnum.CRON_JOBS ? ICronJobsEntity : T extends EntityEnum.ROLE_PERMISSION_MAPPING ? IRolePermissionMappingEntity : T extends EntityEnum.BANK_HISTORY ? IBankHistoryEntity : T extends VirtualEntityEnum.LEAVE_COUNT ? ILeaveCountVirtualEntity : T extends EntityEnum.LEAVE_HISTORY ? ILeaveHistoryEntity : T extends EntityEnum.WORK_FROM_HOME_HISTORY ? IWorkFromHomeHistoryEntity : T extends EntityEnum.TIMESHEET_HISTORY ? ITimesheetHistoryEntity : T extends EntityEnum.ADDRESS_BOOK ? IAddressBookEntity : T extends EntityEnum.STATE ? IStateEntity : T extends EntityEnum.GST_RATE ? IGstRateEntity : T extends EntityEnum.ORGANIZATION_TYPE ? IOrganizationTypeEntity : T extends EntityEnum.TDS_RATE ? ITdsRateEntity : T extends EntityEnum.ORGANIZATION_TYPE_TDS_RATE_MAPPING ? IOrganizationTypeTdsRateMappingEntity : T extends EntityEnum.VOUCHER_TYPE ? IVoucherTypeEntity : T extends EntityEnum.TDS_RATE_VOUCHER_TYPE_MAPPING ? ITdsRateVoucherTypeMappingEntity : T extends EntityEnum.EXPENSE_HEAD ? IExpenseHeadEntity : T extends EntityEnum.DOCUMENT_UPLOAD ? IDocumentUploadEntity : T extends EntityEnum.VENDOR ? IVendorEntity : T extends EntityEnum.VENDOR_INVOICE ? IVendorInvoiceEntity : T extends EntityEnum.VENDOR_INVOICE_HISTORY ? IVendorInvoiceHistoryEntity : T extends EntityEnum.VENDOR_INVOICE_HISTORY ? IVendorInvoiceHistoryEntity : T extends EntityEnum.VENDOR_INVOICE_ITEM ? IVendorInvoiceItemEntity : T extends EntityEnum.VENDOR_INVOICE_ITEM_HISTORY ? IVendorInvoiceItemHistoryEntity : T extends EntityEnum.VENDOR_HISTORY ? IVendorHistoryEntity : T extends EntityEnum.WEBSITE_LEAD ? IWebsiteLeadEntity : T extends EntityEnum.WEBSITE_NEWSLETTER_SUBSCRIPTION ? IWebsiteNewsletterSubscriptionEntity : T extends EntityEnum.CLIENT_QUOTE ? IClientQuoteEntity : T extends EntityEnum.CLIENT_QUOTE_RATE ? IClientQuoteRateEntity : T extends EntityEnum.BILLING_PROFILE ? IBillingProfileEntity : T extends EntityEnum.PROJECT_REVENUE_SPLIT_MAPPING ? IProjectRevenueSplitMappingEntity : T extends EntityEnum.VENDOR_INVOICE_ITEM_HISTORY ? IVendorInvoiceItemHistoryEntity : T extends EntityEnum.VENDOR_HISTORY ? IVendorHistoryEntity : T extends EntityEnum.WEBSITE_LEAD ? IWebsiteLeadEntity : T extends EntityEnum.WEBSITE_NEWSLETTER_SUBSCRIPTION ? IWebsiteNewsletterSubscriptionEntity : T extends EntityEnum.CLIENT_QUOTE ? IClientQuoteEntity : T extends EntityEnum.CLIENT_QUOTE_RATE ? IClientQuoteRateEntity : T extends EntityEnum.ENTITY_HISTORY ? IEntityHistoryEntity : T extends EntityEnum.LEAVE_APPROVAL ? ILeaveApprovalEntity : never) & {
272
275
  id: number;
273
276
  };
274
277
  export type EntityRelationConfig<T extends EntityEnum | VirtualEntityEnum> = {
@@ -394,7 +397,7 @@ export declare enum VirtualEntityEnum {
394
397
  }
395
398
  export type IHistoryConstraintSearchResponse<T> = IBaseResponse<IHistoryEntitySearchByConstraintResponse<T>[]>;
396
399
  export type IHistoryConstraintSearchServiceResponse<T> = IHistoryEntitySearchByConstraintResponse<T>[];
397
- export type EnumToModel<T extends EntityEnum | VirtualEntityEnum> = T extends EntityEnum.BILLING ? BillingEntityModel : T extends EntityEnum.BILLING_HISTORY ? BillingHistoryEntityModel : T extends EntityEnum.CLIENT ? ClientEntityModel : T extends EntityEnum.INTERMEDIARY_BANK ? IntermediaryBankEntityModel : T extends EntityEnum.PROJECT ? ProjectEntityModel : T extends EntityEnum.PROJECT_USER_MAPPING ? ProjectUserMappingEntityModel : T extends EntityEnum.REIMBURSEMENT ? ReimbursementEntityModel : T extends EntityEnum.REIMBURSEMENT_EXPENSE ? ReimbursementExpenseEntityModel : T extends EntityEnum.BILLING_REIMBURSEMENT_EXPENSE ? BillingReimbursementExpneseEntityModel : T extends EntityEnum.BILLING_REIMBURESMENT_EXPENSE_HISTORY ? BillingReimbursementExpenseHistoryEntityModel : T extends EntityEnum.LEAVE ? LeaveEntityModel : T extends EntityEnum.WORK_FROM_HOME ? WorkFromHomeEntityModel : T extends EntityEnum.HOLIDAY ? HolidayEntityModel : T extends VirtualEntityEnum.LEAVE_COUNT ? LeaveCountVirtualEntityModel : T extends EntityEnum.CLIENT_AFFILIATE ? ClientAffiliateEntityModel : T extends EntityEnum.BANK ? BankEntityModel : T extends EntityEnum.CONFIGURATION ? ConfigurationEntityModel : T extends EntityEnum.TASK ? TaskEntityModel : T extends EntityEnum.BILLING_TIMESHEET ? BillingTimesheetEntityModel : T extends EntityEnum.BILLING_TIMESHEET_HISTORY ? BillingTimesheetHistoryEntityModel : T extends EntityEnum.TIMESHEET ? TimesheetEntityModel : T extends EntityEnum.MOVING_TIMESHEET ? MovingTimesheetEntityModel : T extends EntityEnum.TIMESHEET_HISTORY ? TimesheetHistoryEntityModel : T extends EntityEnum.COUNTRY ? CountryEntityModel : T extends EntityEnum.BILLING_TRANSACTION ? BillingTransactionEntityModel : T extends EntityEnum.BILLING_TRANSACTION_HISTORY ? BillingTransactionHistoryEntityModel : T extends EntityEnum.ADDRESS_BOOK ? AddressBookEntityModel : T extends EntityEnum.STATE ? StateEntityModel : T extends EntityEnum.GST_RATE ? GstRateEntityModel : T extends EntityEnum.ORGANIZATION_TYPE ? OrganizationTypeEntityModel : T extends EntityEnum.TDS_RATE ? TdsRateEntityModel : T extends EntityEnum.ORGANIZATION_TYPE_TDS_RATE_MAPPING ? OrganizationTypeTdsRateMappingEntityModel : T extends EntityEnum.VOUCHER_TYPE ? VoucherTypeEntityModel : T extends EntityEnum.TDS_RATE_VOUCHER_TYPE_MAPPING ? TdsRateVoucherTypeMappingEntityModel : T extends EntityEnum.ORGANIZATION ? OrganizationEntityModel : T extends EntityEnum.INDUSTRY ? IndustryEntityModel : T extends EntityEnum.EXPENSE_TYPE ? ExpenseTypeEntityModel : T extends EntityEnum.DESIGNATION ? DesignationEntityModel : T extends EntityEnum.RATE ? RateEntityModel : T extends EntityEnum.ROLE ? RoleEntityModel : T extends EntityEnum.ROLE_PERMISSION_MAPPING ? RolePermissionMappingEntityModel : T extends EntityEnum.PERMISSION ? PermissionEntityModel : T extends EntityEnum.EXPENSE_HEAD ? ExpenseHeadEntityModel : T extends EntityEnum.DOCUMENT_UPLOAD ? DocumentUploadEntityModel : T extends EntityEnum.VENDOR ? VendorEntityModel : T extends EntityEnum.VENDOR_INVOICE ? VendorInvoiceEntityModel : T extends EntityEnum.VENDOR_INVOICE_HISTORY ? VendorInvoiceHistoryEntityModel : T extends EntityEnum.OFFICE_LOCATION ? OfficeLocationEntityModel : T extends EntityEnum.VENDOR_INVOICE_ITEM ? VendorInvoiceItemEntityModel : T extends EntityEnum.VENDOR_INVOICE_ITEM_HISTORY ? VendorInvoiceItemHistoryEntityModel : T extends EntityEnum.VENDOR_HISTORY ? VendorHistoryEntityModel : T extends EntityEnum.WEBSITE_LEAD ? WebsiteLeadEntityModel : T extends EntityEnum.WEBSITE_NEWSLETTER_SUBSCRIPTION ? WebsiteNewsletterSubscriptionEntityModel : T extends EntityEnum.WORK_FROM_HOME_HISTORY ? WorkFromHomeHistoryEntityModel : T extends EntityEnum.LEAVE_HISTORY ? LeaveHistoryEntityModel : T extends EntityEnum.BANK_HISTORY ? BankHistoryEntityModel : T extends EntityEnum.REIMBURSEMENT_HISTORY ? ReimbursementHistoryEntityModel : T extends EntityEnum.CLIENT_USER_MAPPING ? ClientUserMappingEntityModel : T extends EntityEnum.CLIENT_INTRODUCING_MAPPING ? ClientIntroducingMappingEntityModel : T extends EntityEnum.HOLIDAY_LIST ? HolidayListEntityModel : T extends EntityEnum.CRON_JOBS ? CronJobsEntityModel : T extends EntityEnum.TO_DO_LIST ? ToDoListEntityModel : T extends EntityEnum.CLIENT_QUOTE ? ClientQuoteEntityModel : T extends EntityEnum.CLIENT_QUOTE_RATE ? ClientQuoteRateEntityModel : T extends EntityEnum.BILLING_PROFILE ? BillingProfileEntityModel : T extends EntityEnum.PROJECT_REVENUE_SPLIT_MAPPING ? ProjectRevenueSplitMappingEntityModel : T extends EntityEnum.WEBSITE_LEAD ? WebsiteLeadEntityModel : T extends EntityEnum.WEBSITE_NEWSLETTER_SUBSCRIPTION ? WebsiteNewsletterSubscriptionEntityModel : T extends EntityEnum.CLIENT_QUOTE ? ClientQuoteEntityModel : T extends EntityEnum.CLIENT_QUOTE_RATE ? ClientQuoteRateEntityModel : T extends EntityEnum.DESIGNATION ? DesignationEntityModel : T extends EntityEnum.RATE ? RateEntityModel : T extends EntityEnum.ENTITY_HISTORY ? EntityHistoryEntityModel : UserEntityModel;
400
+ export type EnumToModel<T extends EntityEnum | VirtualEntityEnum> = T extends EntityEnum.BILLING ? BillingEntityModel : T extends EntityEnum.BILLING_HISTORY ? BillingHistoryEntityModel : T extends EntityEnum.CLIENT ? ClientEntityModel : T extends EntityEnum.INTERMEDIARY_BANK ? IntermediaryBankEntityModel : T extends EntityEnum.PROJECT ? ProjectEntityModel : T extends EntityEnum.PROJECT_USER_MAPPING ? ProjectUserMappingEntityModel : T extends EntityEnum.REIMBURSEMENT ? ReimbursementEntityModel : T extends EntityEnum.REIMBURSEMENT_EXPENSE ? ReimbursementExpenseEntityModel : T extends EntityEnum.BILLING_REIMBURSEMENT_EXPENSE ? BillingReimbursementExpneseEntityModel : T extends EntityEnum.BILLING_REIMBURESMENT_EXPENSE_HISTORY ? BillingReimbursementExpenseHistoryEntityModel : T extends EntityEnum.LEAVE ? LeaveEntityModel : T extends EntityEnum.WORK_FROM_HOME ? WorkFromHomeEntityModel : T extends EntityEnum.HOLIDAY ? HolidayEntityModel : T extends VirtualEntityEnum.LEAVE_COUNT ? LeaveCountVirtualEntityModel : T extends EntityEnum.CLIENT_AFFILIATE ? ClientAffiliateEntityModel : T extends EntityEnum.BANK ? BankEntityModel : T extends EntityEnum.CONFIGURATION ? ConfigurationEntityModel : T extends EntityEnum.TASK ? TaskEntityModel : T extends EntityEnum.BILLING_TIMESHEET ? BillingTimesheetEntityModel : T extends EntityEnum.BILLING_TIMESHEET_HISTORY ? BillingTimesheetHistoryEntityModel : T extends EntityEnum.TIMESHEET ? TimesheetEntityModel : T extends EntityEnum.MOVING_TIMESHEET ? MovingTimesheetEntityModel : T extends EntityEnum.TIMESHEET_HISTORY ? TimesheetHistoryEntityModel : T extends EntityEnum.COUNTRY ? CountryEntityModel : T extends EntityEnum.BILLING_TRANSACTION ? BillingTransactionEntityModel : T extends EntityEnum.BILLING_TRANSACTION_HISTORY ? BillingTransactionHistoryEntityModel : T extends EntityEnum.ADDRESS_BOOK ? AddressBookEntityModel : T extends EntityEnum.STATE ? StateEntityModel : T extends EntityEnum.GST_RATE ? GstRateEntityModel : T extends EntityEnum.ORGANIZATION_TYPE ? OrganizationTypeEntityModel : T extends EntityEnum.TDS_RATE ? TdsRateEntityModel : T extends EntityEnum.ORGANIZATION_TYPE_TDS_RATE_MAPPING ? OrganizationTypeTdsRateMappingEntityModel : T extends EntityEnum.VOUCHER_TYPE ? VoucherTypeEntityModel : T extends EntityEnum.TDS_RATE_VOUCHER_TYPE_MAPPING ? TdsRateVoucherTypeMappingEntityModel : T extends EntityEnum.ORGANIZATION ? OrganizationEntityModel : T extends EntityEnum.INDUSTRY ? IndustryEntityModel : T extends EntityEnum.EXPENSE_TYPE ? ExpenseTypeEntityModel : T extends EntityEnum.DESIGNATION ? DesignationEntityModel : T extends EntityEnum.RATE ? RateEntityModel : T extends EntityEnum.ROLE ? RoleEntityModel : T extends EntityEnum.ROLE_PERMISSION_MAPPING ? RolePermissionMappingEntityModel : T extends EntityEnum.PERMISSION ? PermissionEntityModel : T extends EntityEnum.EXPENSE_HEAD ? ExpenseHeadEntityModel : T extends EntityEnum.DOCUMENT_UPLOAD ? DocumentUploadEntityModel : T extends EntityEnum.VENDOR ? VendorEntityModel : T extends EntityEnum.VENDOR_INVOICE ? VendorInvoiceEntityModel : T extends EntityEnum.VENDOR_INVOICE_HISTORY ? VendorInvoiceHistoryEntityModel : T extends EntityEnum.OFFICE_LOCATION ? OfficeLocationEntityModel : T extends EntityEnum.VENDOR_INVOICE_ITEM ? VendorInvoiceItemEntityModel : T extends EntityEnum.VENDOR_INVOICE_ITEM_HISTORY ? VendorInvoiceItemHistoryEntityModel : T extends EntityEnum.VENDOR_HISTORY ? VendorHistoryEntityModel : T extends EntityEnum.WEBSITE_LEAD ? WebsiteLeadEntityModel : T extends EntityEnum.WEBSITE_NEWSLETTER_SUBSCRIPTION ? WebsiteNewsletterSubscriptionEntityModel : T extends EntityEnum.WORK_FROM_HOME_HISTORY ? WorkFromHomeHistoryEntityModel : T extends EntityEnum.LEAVE_HISTORY ? LeaveHistoryEntityModel : T extends EntityEnum.BANK_HISTORY ? BankHistoryEntityModel : T extends EntityEnum.REIMBURSEMENT_HISTORY ? ReimbursementHistoryEntityModel : T extends EntityEnum.CLIENT_USER_MAPPING ? ClientUserMappingEntityModel : T extends EntityEnum.CLIENT_INTRODUCING_MAPPING ? ClientIntroducingMappingEntityModel : T extends EntityEnum.HOLIDAY_LIST ? HolidayListEntityModel : T extends EntityEnum.CRON_JOBS ? CronJobsEntityModel : T extends EntityEnum.TO_DO_LIST ? ToDoListEntityModel : T extends EntityEnum.CLIENT_QUOTE ? ClientQuoteEntityModel : T extends EntityEnum.CLIENT_QUOTE_RATE ? ClientQuoteRateEntityModel : T extends EntityEnum.BILLING_PROFILE ? BillingProfileEntityModel : T extends EntityEnum.PROJECT_REVENUE_SPLIT_MAPPING ? ProjectRevenueSplitMappingEntityModel : T extends EntityEnum.WEBSITE_LEAD ? WebsiteLeadEntityModel : T extends EntityEnum.WEBSITE_NEWSLETTER_SUBSCRIPTION ? WebsiteNewsletterSubscriptionEntityModel : T extends EntityEnum.CLIENT_QUOTE ? ClientQuoteEntityModel : T extends EntityEnum.CLIENT_QUOTE_RATE ? ClientQuoteRateEntityModel : T extends EntityEnum.DESIGNATION ? DesignationEntityModel : T extends EntityEnum.RATE ? RateEntityModel : T extends EntityEnum.ENTITY_HISTORY ? EntityHistoryEntityModel : T extends EntityEnum.LEAVE_APPROVAL ? LeaveApprovalEntityModel : UserEntityModel;
398
401
  export type EntityMap = {
399
402
  [key in EntityEnum | VirtualEntityEnum]: EnumToModel<key>[];
400
403
  } & {
@@ -100,6 +100,7 @@ var EntityEnum;
100
100
  EntityEnum["CLIENT_QUOTE"] = "client_quote";
101
101
  EntityEnum["CLIENT_QUOTE_RATE"] = "client_quote_rate";
102
102
  EntityEnum["ENTITY_HISTORY"] = "entity_history";
103
+ EntityEnum["LEAVE_APPROVAL"] = "leave_approval";
103
104
  })(EntityEnum || (exports.EntityEnum = EntityEnum = {}));
104
105
  var VirtualEntityEnum;
105
106
  (function (VirtualEntityEnum) {
@@ -0,0 +1,10 @@
1
+ import { IEntityAuditColumn } from "./entity-audit-columns.interface";
2
+ import { Nullable } from "./entity.utils.interface";
3
+ import { LeaveApprovalStatusEnum } from "../enums/leave_approval_status_enum";
4
+ export interface ILeaveApprovalEntity extends IEntityAuditColumn {
5
+ id: number;
6
+ leaveId: number;
7
+ approverId: number;
8
+ status: LeaveApprovalStatusEnum;
9
+ reason?: Nullable<string>;
10
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -43,6 +43,7 @@ const holiday_list_entity_model_1 = require("./holiday_list.entity.model");
43
43
  const industry_entity_model_1 = require("./industry.entity.model");
44
44
  const intermediary_bank_entity_model_1 = require("./intermediary-bank.entity.model");
45
45
  const leave_entity_model_1 = require("./leave.entity.model");
46
+ const leave_approval_entity_model_1 = require("./leave_approval.entity.model");
46
47
  const leave_count_entity_model_1 = require("./leave_count.entity.model");
47
48
  const leave_history_entity_model_1 = require("./leave_history.entity.model");
48
49
  const moving_timesheet_entity_model_1 = require("./moving-timesheet.entity.model");
@@ -176,6 +177,7 @@ exports.entityEnumToEntityModel = {
176
177
  [entity_utils_interface_1.EntityEnum.PROJECT_REVENUE_SPLIT_MAPPING]: project_revenue_split_mapping_model_1.ProjectRevenueSplitMappingEntityModel.fromEntity,
177
178
  [entity_utils_interface_1.EntityEnum.BILLING_PROFILE]: billing_profile_entity_model_1.BillingProfileEntityModel.fromEntity,
178
179
  [entity_utils_interface_1.EntityEnum.ENTITY_HISTORY]: entity_history_entity_model_1.EntityHistoryEntityModel.fromEntity,
180
+ [entity_utils_interface_1.EntityEnum.LEAVE_APPROVAL]: leave_approval_entity_model_1.LeaveApprovalEntityModel.fromEntity,
179
181
  };
180
182
  function entityMapToModels(entityMap) {
181
183
  for (const entityName in entityMap) {
@@ -55,7 +55,7 @@ class EntityHistoryEntityModel extends base_entity_model_1.BaseEntityModel {
55
55
  if (!matchingPermissionConfig) {
56
56
  throw new exceptions_1.AppBadRequestException({
57
57
  key: error_key_enum_1.ErrorKeyEnum.ACTION,
58
- message: [`Action '${action}' is not valid for the current status.`],
58
+ message: [`Action '${action}' is not valid for the current status '${this.status}'.`],
59
59
  });
60
60
  }
61
61
  if (!currentUser.permissions || currentUser.permissions.length === 0) {
@@ -4,11 +4,13 @@ import { DurationTypeEnum } from "../enums/duration-type.enum";
4
4
  import { LeaveTypeEnum } from "../enums/leave-type.enum";
5
5
  import { LeaveActionEnum } from "../enums/leave.action.enum";
6
6
  import { LeaveStatusEnum } from "../enums/leave.status.enum";
7
+ import { ILeaveFlowConfigContextData } from "../flow-configs/leave.flow.config";
7
8
  import { EntityEnum, VirtualEntityEnum } from "../interface/entity.utils.interface";
8
9
  import { ILeaveEntity } from "../interface/leave.entity.interface";
9
10
  import { RelationConfigs } from "../interface/relation-config.interface";
10
11
  import { BaseEntityModel } from "./base.entity.model";
11
12
  import { IRowActions } from "./interface/row-actions.interface";
13
+ import { LeaveApprovalEntityModel } from "./leave_approval.entity.model";
12
14
  import { LeaveCountVirtualEntityModel } from "./leave_count.entity.model";
13
15
  import { UserEntityModel } from "./user.entity.model";
14
16
  export declare class LeaveEntityModel extends BaseEntityModel<EntityEnum.LEAVE> implements ILeaveEntity {
@@ -29,6 +31,7 @@ export declare class LeaveEntityModel extends BaseEntityModel<EntityEnum.LEAVE>
29
31
  createdByUser?: UserEntityModel;
30
32
  updatedByUser?: UserEntityModel;
31
33
  user?: UserEntityModel;
34
+ leaveApprovals?: LeaveApprovalEntityModel[];
32
35
  static fromEntity(data: ILeaveEntity): LeaveEntityModel;
33
36
  getLeaveDuration(excludeWeekdays?: Weekday[], excludeDates?: DateCodeModel[]): number;
34
37
  static getLeaveDuration(leaves: LeaveEntityModel[], excludeWeekdays?: Weekday[], excludeDates?: DateCodeModel[], leaveStatusEnum?: LeaveStatusEnum[]): number;
@@ -42,7 +45,13 @@ export declare class LeaveEntityModel extends BaseEntityModel<EntityEnum.LEAVE>
42
45
  isHolidaySucceeds(holidays: DateCodeModel[]): boolean;
43
46
  isHolidayPrecedes(holidays: DateCodeModel[]): boolean;
44
47
  getRelationConfigs(): any[];
45
- static relationConfigs: RelationConfigs<[VirtualEntityEnum.LEAVE_COUNT, EntityEnum.USER, EntityEnum.USER, EntityEnum.USER], EntityEnum.LEAVE>;
48
+ static relationConfigs: RelationConfigs<[
49
+ VirtualEntityEnum.LEAVE_COUNT,
50
+ EntityEnum.USER,
51
+ EntityEnum.USER,
52
+ EntityEnum.USER,
53
+ EntityEnum.LEAVE_APPROVAL
54
+ ], EntityEnum.LEAVE>;
46
55
  static fromApiEntity(apiEntity: ILeaveEntity): LeaveEntityModel;
47
56
  static getPendingApprovalStatuses(): LeaveStatusEnum[];
48
57
  getStatusLabel(): string;
@@ -70,7 +79,8 @@ export declare class LeaveEntityModel extends BaseEntityModel<EntityEnum.LEAVE>
70
79
  getUpdateActionVisibility(currentUser: UserEntityModel): {
71
80
  [key: string]: () => boolean;
72
81
  };
73
- getNextStatus(currentUser: UserEntityModel, dto: ILeaveUpdateDto): LeaveStatusEnum;
82
+ getNextStatus(currentUser: UserEntityModel, dto: ILeaveUpdateDto, leaveFlowContext?: ILeaveFlowConfigContextData): LeaveStatusEnum;
74
83
  mapStatusLabel(status: LeaveStatusEnum): string;
75
84
  static getFormattedStatus(status: LeaveStatusEnum): string;
85
+ getOverallStatusByLeaveApprovals(): LeaveStatusEnum;
76
86
  }
@@ -12,6 +12,7 @@ const relation_type_enum_1 = require("../enums/relation-type.enum");
12
12
  const leave_flow_config_1 = require("../flow-configs/leave.flow.config");
13
13
  const entity_utils_interface_1 = require("../interface/entity.utils.interface");
14
14
  const base_entity_model_1 = require("./base.entity.model");
15
+ const leave_approval_entity_model_1 = require("./leave_approval.entity.model");
15
16
  class LeaveEntityModel extends base_entity_model_1.BaseEntityModel {
16
17
  constructor() {
17
18
  super(...arguments);
@@ -190,7 +191,7 @@ class LeaveEntityModel extends base_entity_model_1.BaseEntityModel {
190
191
  LEAVE_DELETE_SELF: () => currentUser.id === this.createdBy,
191
192
  };
192
193
  }
193
- getNextStatus(currentUser, dto) {
194
+ getNextStatus(currentUser, dto, leaveFlowContext = {}) {
194
195
  if (!this.status) {
195
196
  throw new exceptions_1.AppBadRequestException({
196
197
  key: error_key_enum_1.ErrorKeyEnum.STATUS,
@@ -216,7 +217,7 @@ class LeaveEntityModel extends base_entity_model_1.BaseEntityModel {
216
217
  if (!matchingPermissionConfig) {
217
218
  throw new exceptions_1.AppBadRequestException({
218
219
  key: error_key_enum_1.ErrorKeyEnum.ACTION,
219
- message: [`Action '${dto.actionData.action}' is not valid for the current status.`],
220
+ message: [`Action '${dto.actionData.action}' is not valid for the current status '${this.status}'.`],
220
221
  });
221
222
  }
222
223
  // Here we compare users permission & permissions from matchingPermissionConfig
@@ -233,7 +234,7 @@ class LeaveEntityModel extends base_entity_model_1.BaseEntityModel {
233
234
  message: [`Current user does not have permission to ${dto.actionData.action} leave`],
234
235
  });
235
236
  }
236
- const nextStatus = matchingPermissionConfig.next({});
237
+ const nextStatus = matchingPermissionConfig.next(leaveFlowContext);
237
238
  return nextStatus;
238
239
  }
239
240
  mapStatusLabel(status) {
@@ -262,6 +263,21 @@ class LeaveEntityModel extends base_entity_model_1.BaseEntityModel {
262
263
  }
263
264
  return (0, string_util_1.formatString)(statusToReturn);
264
265
  }
266
+ getOverallStatusByLeaveApprovals() {
267
+ if (!this.leaveApprovals || this.leaveApprovals.length === 0) {
268
+ return this.status;
269
+ }
270
+ if (leave_approval_entity_model_1.LeaveApprovalEntityModel.areAllApproved(this.leaveApprovals)) {
271
+ return leave_status_enum_1.LeaveStatusEnum.APPROVED;
272
+ }
273
+ if (leave_approval_entity_model_1.LeaveApprovalEntityModel.isAnyRejected(this.leaveApprovals)) {
274
+ return leave_status_enum_1.LeaveStatusEnum.REJECTED;
275
+ }
276
+ if (leave_approval_entity_model_1.LeaveApprovalEntityModel.isAnyEscalated(this.leaveApprovals)) {
277
+ return leave_status_enum_1.LeaveStatusEnum.PENDING_APPROVAL;
278
+ }
279
+ return this.status;
280
+ }
265
281
  }
266
282
  exports.LeaveEntityModel = LeaveEntityModel;
267
283
  LeaveEntityModel.relationConfigs = [
@@ -301,4 +317,13 @@ LeaveEntityModel.relationConfigs = [
301
317
  key: "employeeId",
302
318
  },
303
319
  },
320
+ {
321
+ name: entity_utils_interface_1.EntityEnum.LEAVE_APPROVAL,
322
+ relation: relation_type_enum_1.RelationType.MANY,
323
+ key: "leaveApprovals",
324
+ mapKeyConfig: {
325
+ relationKey: "leaveId",
326
+ key: "id",
327
+ },
328
+ },
304
329
  ];
@@ -0,0 +1,42 @@
1
+ import { EntityEnum } from "../interface/entity.utils.interface";
2
+ import { BaseEntityModel } from "./base.entity.model";
3
+ import { RelationConfigs } from "../interface/relation-config.interface";
4
+ import { IUserEntity } from "../interface/user.entity.interface";
5
+ import { IRowActions } from "./interface/row-actions.interface";
6
+ import { ILeaveApprovalEntity } from "../interface/leave_approval.entity.interface";
7
+ import { LeaveApprovalStatusEnum } from "../enums/leave_approval_status_enum";
8
+ import { LeaveEntityModel } from "./leave.entity.model";
9
+ import { UserEntityModel } from "./user.entity.model";
10
+ import { LeaveApprovalActionEnum } from "../../api";
11
+ import { ILeaveApprovalFlowConfigContextData } from "../flow-configs/leave_approval_flow.config";
12
+ export declare class LeaveApprovalEntityModel extends BaseEntityModel<EntityEnum.LEAVE_APPROVAL> implements ILeaveApprovalEntity {
13
+ id: number;
14
+ leaveId: number;
15
+ approverId: number;
16
+ reason?: string;
17
+ status: LeaveApprovalStatusEnum;
18
+ createdOn: number;
19
+ updatedOn: number;
20
+ createdBy: number;
21
+ updatedBy: number;
22
+ leave?: LeaveEntityModel;
23
+ user?: UserEntityModel;
24
+ static relationConfigs: RelationConfigs<[EntityEnum.LEAVE, EntityEnum.USER], EntityEnum.LEAVE_APPROVAL>;
25
+ static fromEntity(entity: ILeaveApprovalEntity): LeaveApprovalEntityModel;
26
+ getRelationConfigs(): any[];
27
+ getNextStatus(currentUser: IUserEntity, action: LeaveApprovalActionEnum, leaveApprovalFlowConfigContextData: ILeaveApprovalFlowConfigContextData): LeaveApprovalStatusEnum;
28
+ getAvailableActions(currentUser: UserEntityModel, config?: {
29
+ combinedActions?: Record<string, {
30
+ combineActions: LeaveApprovalActionEnum[];
31
+ label: string;
32
+ }>;
33
+ customLabels?: Partial<Record<LeaveApprovalActionEnum, string>>;
34
+ }): IRowActions<EntityEnum.LEAVE_APPROVAL>[];
35
+ getUpdateActionVisibility(currentUser: UserEntityModel): {
36
+ [key: string]: () => boolean;
37
+ };
38
+ static areAllApproved(models: LeaveApprovalEntityModel[]): boolean;
39
+ static isAnyRejected(models: LeaveApprovalEntityModel[]): boolean;
40
+ static isAnyPending(models: LeaveApprovalEntityModel[]): boolean;
41
+ static isAnyEscalated(models: LeaveApprovalEntityModel[]): boolean;
42
+ }