law-common 10.75.0 → 10.75.1-beta.10
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.
- package/dist/src/api/index.d.ts +2 -0
- package/dist/src/api/index.js +2 -0
- package/dist/src/api/interface/leave_approval.create.dto.interface.d.ts +5 -0
- package/dist/src/api/interface/leave_approval.create.dto.interface.js +2 -0
- package/dist/src/api/interface/leave_approval.update.dto.interface.d.ts +18 -0
- package/dist/src/api/interface/leave_approval.update.dto.interface.js +13 -0
- package/dist/src/entities/enums/leave_approval_status_enum.d.ts +13 -0
- package/dist/src/entities/enums/leave_approval_status_enum.js +17 -0
- package/dist/src/entities/flow-configs/base-flow-config.enums.d.ts +74 -0
- package/dist/src/entities/flow-configs/base-flow-config.enums.js +79 -0
- package/dist/src/entities/flow-configs/base-flow-config.factory.d.ts +116 -0
- package/dist/src/entities/flow-configs/base-flow-config.factory.js +120 -0
- package/dist/src/entities/flow-configs/leave_approval_flow.config.d.ts +6 -0
- package/dist/src/entities/flow-configs/leave_approval_flow.config.js +243 -0
- package/dist/src/entities/index.d.ts +4 -0
- package/dist/src/entities/index.js +4 -0
- package/dist/src/entities/interface/entity.utils.interface.d.ts +6 -3
- package/dist/src/entities/interface/entity.utils.interface.js +1 -0
- package/dist/src/entities/interface/leave_approval.entity.interface.d.ts +10 -0
- package/dist/src/entities/interface/leave_approval.entity.interface.js +2 -0
- package/dist/src/entities/model/entity.model.interface.js +2 -0
- package/dist/src/entities/model/leave.entity.model.d.ts +9 -1
- package/dist/src/entities/model/leave.entity.model.js +9 -0
- package/dist/src/entities/model/leave_approval.entity.model.d.ts +38 -0
- package/dist/src/entities/model/leave_approval.entity.model.js +111 -0
- package/dist/src/entities/model/user.entity.model.d.ts +5 -1
- package/dist/src/entities/model/user.entity.model.js +13 -0
- package/dist/src/utils/entity.flow.util.js +3 -0
- package/package.json +3 -2
package/dist/src/api/index.d.ts
CHANGED
|
@@ -97,3 +97,5 @@ export * from "./interface/client_quote_rate.update.dto.interface";
|
|
|
97
97
|
export * from "./interface/project-revenue-split.create.dto";
|
|
98
98
|
export * from "./interface/entity_history.create.dto.interface";
|
|
99
99
|
export * from "./interface/entity_history.update.dto.interface";
|
|
100
|
+
export * from "./interface/leave_approval.create.dto.interface";
|
|
101
|
+
export * from "./interface/leave_approval.update.dto.interface";
|
package/dist/src/api/index.js
CHANGED
|
@@ -117,3 +117,5 @@ __exportStar(require("./interface/client_quote_rate.update.dto.interface"), expo
|
|
|
117
117
|
__exportStar(require("./interface/project-revenue-split.create.dto"), exports);
|
|
118
118
|
__exportStar(require("./interface/entity_history.create.dto.interface"), exports);
|
|
119
119
|
__exportStar(require("./interface/entity_history.update.dto.interface"), exports);
|
|
120
|
+
__exportStar(require("./interface/leave_approval.create.dto.interface"), exports);
|
|
121
|
+
__exportStar(require("./interface/leave_approval.update.dto.interface"), exports);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { IEntityCreateDto } from "../../entities";
|
|
2
|
+
import { ILeaveApprovalEntity } from "../../entities/interface/leave_approval.entity.interface";
|
|
3
|
+
export type ILeaveApprovalCreateExclude = "status";
|
|
4
|
+
export interface ILeaveApprovalCreateDto extends Omit<IEntityCreateDto<ILeaveApprovalEntity>, ILeaveApprovalCreateExclude> {
|
|
5
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DeepPartialButRequired } from "./api.utils.interface";
|
|
2
|
+
import { ILeaveApprovalCreateDto } from "./leave_approval.create.dto.interface";
|
|
3
|
+
export type ILeaveApprovalUpdateDto = DeepPartialButRequired<ILeaveApprovalCreateDto, never> & {
|
|
4
|
+
actionData: ILeaveApprovalActionDataDto;
|
|
5
|
+
};
|
|
6
|
+
export interface ILeaveApprovalActionDataDto {
|
|
7
|
+
action: LeaveApprovalActionEnum;
|
|
8
|
+
remark?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare enum LeaveApprovalActionEnum {
|
|
11
|
+
UPDATE = "update",
|
|
12
|
+
DELETE = "delete",
|
|
13
|
+
CREATE = "create",
|
|
14
|
+
APPROVE = "approve",
|
|
15
|
+
REJECT = "reject",
|
|
16
|
+
RECALL = "recall",
|
|
17
|
+
DEACTIVATE = "deactivate"
|
|
18
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LeaveApprovalActionEnum = void 0;
|
|
4
|
+
var LeaveApprovalActionEnum;
|
|
5
|
+
(function (LeaveApprovalActionEnum) {
|
|
6
|
+
LeaveApprovalActionEnum["UPDATE"] = "update";
|
|
7
|
+
LeaveApprovalActionEnum["DELETE"] = "delete";
|
|
8
|
+
LeaveApprovalActionEnum["CREATE"] = "create";
|
|
9
|
+
LeaveApprovalActionEnum["APPROVE"] = "approve";
|
|
10
|
+
LeaveApprovalActionEnum["REJECT"] = "reject";
|
|
11
|
+
LeaveApprovalActionEnum["RECALL"] = "recall";
|
|
12
|
+
LeaveApprovalActionEnum["DEACTIVATE"] = "deactivate";
|
|
13
|
+
})(LeaveApprovalActionEnum || (exports.LeaveApprovalActionEnum = LeaveApprovalActionEnum = {}));
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare enum LeaveApprovalStatusEnum {
|
|
2
|
+
DEACTIVATED = "DEACTIVATED",
|
|
3
|
+
CREATED = "CREATED",
|
|
4
|
+
UPDATED = "UPDATED",
|
|
5
|
+
DELETED = "DELETED",
|
|
6
|
+
APPROVED = "APPROVED",
|
|
7
|
+
REJECTED = "REJECTED",
|
|
8
|
+
CREATE_APPROVAL_PENDING = "CREATE_APPROVAL_PENDING",
|
|
9
|
+
UPDATE_APPROVAL_PENDING = "UPDATE_APPROVAL_PENDING",
|
|
10
|
+
DELETE_APPROVAL_PENDING = "DELETE_APPROVAL_PENDING",
|
|
11
|
+
RESOLVED_REJECTED = "RESOLVED_REJECTED",
|
|
12
|
+
ESCALATED = "ESCALATED"
|
|
13
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LeaveApprovalStatusEnum = void 0;
|
|
4
|
+
var LeaveApprovalStatusEnum;
|
|
5
|
+
(function (LeaveApprovalStatusEnum) {
|
|
6
|
+
LeaveApprovalStatusEnum["DEACTIVATED"] = "DEACTIVATED";
|
|
7
|
+
LeaveApprovalStatusEnum["CREATED"] = "CREATED";
|
|
8
|
+
LeaveApprovalStatusEnum["UPDATED"] = "UPDATED";
|
|
9
|
+
LeaveApprovalStatusEnum["DELETED"] = "DELETED";
|
|
10
|
+
LeaveApprovalStatusEnum["APPROVED"] = "APPROVED";
|
|
11
|
+
LeaveApprovalStatusEnum["REJECTED"] = "REJECTED";
|
|
12
|
+
LeaveApprovalStatusEnum["CREATE_APPROVAL_PENDING"] = "CREATE_APPROVAL_PENDING";
|
|
13
|
+
LeaveApprovalStatusEnum["UPDATE_APPROVAL_PENDING"] = "UPDATE_APPROVAL_PENDING";
|
|
14
|
+
LeaveApprovalStatusEnum["DELETE_APPROVAL_PENDING"] = "DELETE_APPROVAL_PENDING";
|
|
15
|
+
LeaveApprovalStatusEnum["RESOLVED_REJECTED"] = "RESOLVED_REJECTED";
|
|
16
|
+
LeaveApprovalStatusEnum["ESCALATED"] = "ESCALATED";
|
|
17
|
+
})(LeaveApprovalStatusEnum || (exports.LeaveApprovalStatusEnum = LeaveApprovalStatusEnum = {}));
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base action enum shared across all entity flow configs.
|
|
3
|
+
*
|
|
4
|
+
* Entity-specific action enums should re-use these values for common actions
|
|
5
|
+
* and declare additional values for entity-specific actions.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* // Extending with entity-specific actions
|
|
9
|
+
* export enum VendorActionEnum {
|
|
10
|
+
* // — base actions (re-declare to keep enum self-contained) —
|
|
11
|
+
* VIEW = BaseFlowActionEnum.VIEW,
|
|
12
|
+
* CREATE = BaseFlowActionEnum.CREATE,
|
|
13
|
+
* UPDATE = BaseFlowActionEnum.UPDATE,
|
|
14
|
+
* DELETE = BaseFlowActionEnum.DELETE,
|
|
15
|
+
* APPROVE = BaseFlowActionEnum.APPROVE,
|
|
16
|
+
* REJECT = BaseFlowActionEnum.REJECT,
|
|
17
|
+
* RECALL = BaseFlowActionEnum.RECALL,
|
|
18
|
+
* DEACTIVATE = BaseFlowActionEnum.DEACTIVATE,
|
|
19
|
+
* // — entity-specific additions —
|
|
20
|
+
* SUBMIT = "submit",
|
|
21
|
+
* ESCALATE = "escalate",
|
|
22
|
+
* }
|
|
23
|
+
*/
|
|
24
|
+
export declare enum BaseFlowActionEnum {
|
|
25
|
+
VIEW = "view",
|
|
26
|
+
CREATE = "create",
|
|
27
|
+
UPDATE = "update",
|
|
28
|
+
DELETE = "delete",
|
|
29
|
+
APPROVE = "approve",
|
|
30
|
+
REJECT = "reject",
|
|
31
|
+
RECALL = "recall",
|
|
32
|
+
DEACTIVATE = "deactivate"
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Base status enum shared across all entity flow configs.
|
|
36
|
+
*
|
|
37
|
+
* Entity-specific status enums should re-use these values for common statuses
|
|
38
|
+
* and declare additional values for entity-specific statuses.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* // Extending with entity-specific statuses
|
|
42
|
+
* export enum VendorStatusEnum {
|
|
43
|
+
* // — base statuses —
|
|
44
|
+
* ACTIVE = BaseFlowStatusEnum.ACTIVE,
|
|
45
|
+
* INACTIVE = BaseFlowStatusEnum.INACTIVE,
|
|
46
|
+
* DEACTIVATED = BaseFlowStatusEnum.DEACTIVATED,
|
|
47
|
+
* CREATED = BaseFlowStatusEnum.CREATED,
|
|
48
|
+
* UPDATED = BaseFlowStatusEnum.UPDATED,
|
|
49
|
+
* DELETED = BaseFlowStatusEnum.DELETED,
|
|
50
|
+
* APPROVED = BaseFlowStatusEnum.APPROVED,
|
|
51
|
+
* REJECTED = BaseFlowStatusEnum.REJECTED,
|
|
52
|
+
* RESOLVED_REJECTED = BaseFlowStatusEnum.RESOLVED_REJECTED,
|
|
53
|
+
* CREATE_APPROVAL_PENDING = BaseFlowStatusEnum.CREATE_APPROVAL_PENDING,
|
|
54
|
+
* UPDATE_APPROVAL_PENDING = BaseFlowStatusEnum.UPDATE_APPROVAL_PENDING,
|
|
55
|
+
* DELETE_APPROVAL_PENDING = BaseFlowStatusEnum.DELETE_APPROVAL_PENDING,
|
|
56
|
+
* // — entity-specific additions —
|
|
57
|
+
* UNDER_REVIEW = "UNDER_REVIEW",
|
|
58
|
+
* SUBMITTED = "SUBMITTED",
|
|
59
|
+
* }
|
|
60
|
+
*/
|
|
61
|
+
export declare enum BaseFlowStatusEnum {
|
|
62
|
+
ACTIVE = "ACTIVE",
|
|
63
|
+
INACTIVE = "INACTIVE",
|
|
64
|
+
DEACTIVATED = "DEACTIVATED",
|
|
65
|
+
CREATED = "CREATED",
|
|
66
|
+
UPDATED = "UPDATED",
|
|
67
|
+
DELETED = "DELETED",
|
|
68
|
+
APPROVED = "APPROVED",
|
|
69
|
+
REJECTED = "REJECTED",
|
|
70
|
+
RESOLVED_REJECTED = "RESOLVED_REJECTED",
|
|
71
|
+
CREATE_APPROVAL_PENDING = "CREATE_APPROVAL_PENDING",
|
|
72
|
+
UPDATE_APPROVAL_PENDING = "UPDATE_APPROVAL_PENDING",
|
|
73
|
+
DELETE_APPROVAL_PENDING = "DELETE_APPROVAL_PENDING"
|
|
74
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseFlowStatusEnum = exports.BaseFlowActionEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Base action enum shared across all entity flow configs.
|
|
6
|
+
*
|
|
7
|
+
* Entity-specific action enums should re-use these values for common actions
|
|
8
|
+
* and declare additional values for entity-specific actions.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* // Extending with entity-specific actions
|
|
12
|
+
* export enum VendorActionEnum {
|
|
13
|
+
* // — base actions (re-declare to keep enum self-contained) —
|
|
14
|
+
* VIEW = BaseFlowActionEnum.VIEW,
|
|
15
|
+
* CREATE = BaseFlowActionEnum.CREATE,
|
|
16
|
+
* UPDATE = BaseFlowActionEnum.UPDATE,
|
|
17
|
+
* DELETE = BaseFlowActionEnum.DELETE,
|
|
18
|
+
* APPROVE = BaseFlowActionEnum.APPROVE,
|
|
19
|
+
* REJECT = BaseFlowActionEnum.REJECT,
|
|
20
|
+
* RECALL = BaseFlowActionEnum.RECALL,
|
|
21
|
+
* DEACTIVATE = BaseFlowActionEnum.DEACTIVATE,
|
|
22
|
+
* // — entity-specific additions —
|
|
23
|
+
* SUBMIT = "submit",
|
|
24
|
+
* ESCALATE = "escalate",
|
|
25
|
+
* }
|
|
26
|
+
*/
|
|
27
|
+
var BaseFlowActionEnum;
|
|
28
|
+
(function (BaseFlowActionEnum) {
|
|
29
|
+
BaseFlowActionEnum["VIEW"] = "view";
|
|
30
|
+
BaseFlowActionEnum["CREATE"] = "create";
|
|
31
|
+
BaseFlowActionEnum["UPDATE"] = "update";
|
|
32
|
+
BaseFlowActionEnum["DELETE"] = "delete";
|
|
33
|
+
BaseFlowActionEnum["APPROVE"] = "approve";
|
|
34
|
+
BaseFlowActionEnum["REJECT"] = "reject";
|
|
35
|
+
BaseFlowActionEnum["RECALL"] = "recall";
|
|
36
|
+
BaseFlowActionEnum["DEACTIVATE"] = "deactivate";
|
|
37
|
+
})(BaseFlowActionEnum || (exports.BaseFlowActionEnum = BaseFlowActionEnum = {}));
|
|
38
|
+
/**
|
|
39
|
+
* Base status enum shared across all entity flow configs.
|
|
40
|
+
*
|
|
41
|
+
* Entity-specific status enums should re-use these values for common statuses
|
|
42
|
+
* and declare additional values for entity-specific statuses.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* // Extending with entity-specific statuses
|
|
46
|
+
* export enum VendorStatusEnum {
|
|
47
|
+
* // — base statuses —
|
|
48
|
+
* ACTIVE = BaseFlowStatusEnum.ACTIVE,
|
|
49
|
+
* INACTIVE = BaseFlowStatusEnum.INACTIVE,
|
|
50
|
+
* DEACTIVATED = BaseFlowStatusEnum.DEACTIVATED,
|
|
51
|
+
* CREATED = BaseFlowStatusEnum.CREATED,
|
|
52
|
+
* UPDATED = BaseFlowStatusEnum.UPDATED,
|
|
53
|
+
* DELETED = BaseFlowStatusEnum.DELETED,
|
|
54
|
+
* APPROVED = BaseFlowStatusEnum.APPROVED,
|
|
55
|
+
* REJECTED = BaseFlowStatusEnum.REJECTED,
|
|
56
|
+
* RESOLVED_REJECTED = BaseFlowStatusEnum.RESOLVED_REJECTED,
|
|
57
|
+
* CREATE_APPROVAL_PENDING = BaseFlowStatusEnum.CREATE_APPROVAL_PENDING,
|
|
58
|
+
* UPDATE_APPROVAL_PENDING = BaseFlowStatusEnum.UPDATE_APPROVAL_PENDING,
|
|
59
|
+
* DELETE_APPROVAL_PENDING = BaseFlowStatusEnum.DELETE_APPROVAL_PENDING,
|
|
60
|
+
* // — entity-specific additions —
|
|
61
|
+
* UNDER_REVIEW = "UNDER_REVIEW",
|
|
62
|
+
* SUBMITTED = "SUBMITTED",
|
|
63
|
+
* }
|
|
64
|
+
*/
|
|
65
|
+
var BaseFlowStatusEnum;
|
|
66
|
+
(function (BaseFlowStatusEnum) {
|
|
67
|
+
BaseFlowStatusEnum["ACTIVE"] = "ACTIVE";
|
|
68
|
+
BaseFlowStatusEnum["INACTIVE"] = "INACTIVE";
|
|
69
|
+
BaseFlowStatusEnum["DEACTIVATED"] = "DEACTIVATED";
|
|
70
|
+
BaseFlowStatusEnum["CREATED"] = "CREATED";
|
|
71
|
+
BaseFlowStatusEnum["UPDATED"] = "UPDATED";
|
|
72
|
+
BaseFlowStatusEnum["DELETED"] = "DELETED";
|
|
73
|
+
BaseFlowStatusEnum["APPROVED"] = "APPROVED";
|
|
74
|
+
BaseFlowStatusEnum["REJECTED"] = "REJECTED";
|
|
75
|
+
BaseFlowStatusEnum["RESOLVED_REJECTED"] = "RESOLVED_REJECTED";
|
|
76
|
+
BaseFlowStatusEnum["CREATE_APPROVAL_PENDING"] = "CREATE_APPROVAL_PENDING";
|
|
77
|
+
BaseFlowStatusEnum["UPDATE_APPROVAL_PENDING"] = "UPDATE_APPROVAL_PENDING";
|
|
78
|
+
BaseFlowStatusEnum["DELETE_APPROVAL_PENDING"] = "DELETE_APPROVAL_PENDING";
|
|
79
|
+
})(BaseFlowStatusEnum || (exports.BaseFlowStatusEnum = BaseFlowStatusEnum = {}));
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic flow-config factory.
|
|
3
|
+
*
|
|
4
|
+
* Provides a reusable, type-safe `createActionConfig` helper for any entity
|
|
5
|
+
* flow configuration. Eliminates boilerplate type plumbing (ActionStatusMap,
|
|
6
|
+
* StateStatusForAction, createTransition) that would otherwise be duplicated
|
|
7
|
+
* in every flow config file.
|
|
8
|
+
*
|
|
9
|
+
* ---
|
|
10
|
+
* **Usage — basic**
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { createFlowConfigFactory } from "./base-flow-config.factory";
|
|
13
|
+
*
|
|
14
|
+
* const ACTION_MAP = {
|
|
15
|
+
* [MyActionEnum.APPROVE]: { statuses: [MyStatusEnum.APPROVED] as const, permissions: ["MY_APPROVE"] },
|
|
16
|
+
* [MyActionEnum.REJECT]: { statuses: [MyStatusEnum.REJECTED] as const, permissions: ["MY_REJECT"] },
|
|
17
|
+
* } satisfies ActionMap<MyActionEnum, MyStatusEnum>;
|
|
18
|
+
*
|
|
19
|
+
* const { createActionConfig } = createFlowConfigFactory<IMyContextData>()(ACTION_MAP);
|
|
20
|
+
*
|
|
21
|
+
* const transition = createActionConfig(MyStatusEnum.APPROVED, MyActionEnum.APPROVE);
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* ---
|
|
25
|
+
* **Usage — overriding a transition permission**
|
|
26
|
+
* ```typescript
|
|
27
|
+
* createActionConfig(MyStatusEnum.APPROVED, MyActionEnum.APPROVE, ["CUSTOM_APPROVE_PERM"]);
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* ---
|
|
31
|
+
* **Usage — context-driven (multi-outcome) transition**
|
|
32
|
+
* ```typescript
|
|
33
|
+
* createActionConfig(
|
|
34
|
+
* (ctx: IMyContextData) => ctx.fast ? MyStatusEnum.APPROVED : MyStatusEnum.PENDING,
|
|
35
|
+
* MyActionEnum.APPROVE,
|
|
36
|
+
* );
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* ---
|
|
40
|
+
* **Usage — subset narrowing**
|
|
41
|
+
* Restrict the compiler to a subset of the action's possible target statuses:
|
|
42
|
+
* ```typescript
|
|
43
|
+
* createActionConfig<MyActionEnum.APPROVE, MyStatusEnum.APPROVED>(
|
|
44
|
+
* MyStatusEnum.APPROVED,
|
|
45
|
+
* MyActionEnum.APPROVE,
|
|
46
|
+
* );
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* ---
|
|
50
|
+
* **Extending base enums**
|
|
51
|
+
* TypeScript enums cannot be inherited, but entity-specific enums can
|
|
52
|
+
* re-declare base values and add new ones:
|
|
53
|
+
* ```typescript
|
|
54
|
+
* import { BaseFlowActionEnum, BaseFlowStatusEnum } from "./base-flow-config.enums";
|
|
55
|
+
*
|
|
56
|
+
* export enum VendorActionEnum {
|
|
57
|
+
* VIEW = BaseFlowActionEnum.VIEW,
|
|
58
|
+
* CREATE = BaseFlowActionEnum.CREATE,
|
|
59
|
+
* UPDATE = BaseFlowActionEnum.UPDATE,
|
|
60
|
+
* DELETE = BaseFlowActionEnum.DELETE,
|
|
61
|
+
* APPROVE = BaseFlowActionEnum.APPROVE,
|
|
62
|
+
* REJECT = BaseFlowActionEnum.REJECT,
|
|
63
|
+
* RECALL = BaseFlowActionEnum.RECALL,
|
|
64
|
+
* DEACTIVATE = BaseFlowActionEnum.DEACTIVATE,
|
|
65
|
+
* SUBMIT = "submit", // ← extension
|
|
66
|
+
* }
|
|
67
|
+
*
|
|
68
|
+
* export enum VendorStatusEnum {
|
|
69
|
+
* ACTIVE = BaseFlowStatusEnum.ACTIVE,
|
|
70
|
+
* // ... all base statuses ...
|
|
71
|
+
* SUBMITTED = "SUBMITTED", // ← extension
|
|
72
|
+
* }
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
/**
|
|
76
|
+
* Shape of a single entry in the action map.
|
|
77
|
+
* `statuses` must be a `const` tuple so TypeScript preserves the exact union
|
|
78
|
+
* of reachable statuses for subset-narrowing in `createActionConfig`.
|
|
79
|
+
*/
|
|
80
|
+
export type ActionMapEntry<S extends string> = {
|
|
81
|
+
readonly statuses: readonly S[];
|
|
82
|
+
readonly permissions: string[];
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Full action map: one entry per action value.
|
|
86
|
+
* Use `satisfies ActionMap<MyActionEnum, MyStatusEnum>` on your map literal
|
|
87
|
+
* so that the compiler catches missing/misspelled keys while still preserving
|
|
88
|
+
* the precise `as const` tuple types for subset-narrowing.
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* const ACTION_MAP = {
|
|
92
|
+
* [MyActionEnum.APPROVE]: { statuses: [MyStatusEnum.APPROVED] as const, permissions: ["MY_APPROVE"] },
|
|
93
|
+
* } satisfies ActionMap<MyActionEnum, MyStatusEnum>;
|
|
94
|
+
*/
|
|
95
|
+
export type ActionMap<A extends string, S extends string> = {
|
|
96
|
+
readonly [key in A]: ActionMapEntry<S>;
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Curried factory — call with the context-data type first, then pass the
|
|
100
|
+
* action map. This two-step pattern lets TypeScript infer the precise action
|
|
101
|
+
* map type (preserving `as const` tuple narrowing) while still allowing the
|
|
102
|
+
* caller to set the context-data type explicitly.
|
|
103
|
+
*
|
|
104
|
+
* @template CTX - Shape of the context object passed to function-based
|
|
105
|
+
* transition resolvers. Use `never` for flows where `next()`
|
|
106
|
+
* needs no runtime data (equivalent to `() => status`).
|
|
107
|
+
*
|
|
108
|
+
* @returns A function that accepts an `ActionMap` and returns `createActionConfig`.
|
|
109
|
+
*/
|
|
110
|
+
export declare function createFlowConfigFactory<CTX = never>(): <A extends string, S extends string, AM extends ActionMap<A, S>>(actionMap: AM) => {
|
|
111
|
+
createActionConfig: <Act extends A, Subset extends { [key in A]: AM[key]["statuses"]; }[Act][number] = { [key in A]: AM[key]["statuses"]; }[Act][number]>(action: Act, nextStatus: Subset | ((context: CTX) => Subset), overridePermissions?: string[]) => {
|
|
112
|
+
permissions: string[];
|
|
113
|
+
next: (context: CTX) => Subset;
|
|
114
|
+
};
|
|
115
|
+
createTransition: <Act extends A, Subset_1 extends { [key in A]: AM[key]["statuses"]; }[Act][number] = { [key in A]: AM[key]["statuses"]; }[Act][number]>(transition: Subset_1 | ((context: CTX) => Subset_1)) => (context: CTX) => Subset_1;
|
|
116
|
+
};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Generic flow-config factory.
|
|
4
|
+
*
|
|
5
|
+
* Provides a reusable, type-safe `createActionConfig` helper for any entity
|
|
6
|
+
* flow configuration. Eliminates boilerplate type plumbing (ActionStatusMap,
|
|
7
|
+
* StateStatusForAction, createTransition) that would otherwise be duplicated
|
|
8
|
+
* in every flow config file.
|
|
9
|
+
*
|
|
10
|
+
* ---
|
|
11
|
+
* **Usage — basic**
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { createFlowConfigFactory } from "./base-flow-config.factory";
|
|
14
|
+
*
|
|
15
|
+
* const ACTION_MAP = {
|
|
16
|
+
* [MyActionEnum.APPROVE]: { statuses: [MyStatusEnum.APPROVED] as const, permissions: ["MY_APPROVE"] },
|
|
17
|
+
* [MyActionEnum.REJECT]: { statuses: [MyStatusEnum.REJECTED] as const, permissions: ["MY_REJECT"] },
|
|
18
|
+
* } satisfies ActionMap<MyActionEnum, MyStatusEnum>;
|
|
19
|
+
*
|
|
20
|
+
* const { createActionConfig } = createFlowConfigFactory<IMyContextData>()(ACTION_MAP);
|
|
21
|
+
*
|
|
22
|
+
* const transition = createActionConfig(MyStatusEnum.APPROVED, MyActionEnum.APPROVE);
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* ---
|
|
26
|
+
* **Usage — overriding a transition permission**
|
|
27
|
+
* ```typescript
|
|
28
|
+
* createActionConfig(MyStatusEnum.APPROVED, MyActionEnum.APPROVE, ["CUSTOM_APPROVE_PERM"]);
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* ---
|
|
32
|
+
* **Usage — context-driven (multi-outcome) transition**
|
|
33
|
+
* ```typescript
|
|
34
|
+
* createActionConfig(
|
|
35
|
+
* (ctx: IMyContextData) => ctx.fast ? MyStatusEnum.APPROVED : MyStatusEnum.PENDING,
|
|
36
|
+
* MyActionEnum.APPROVE,
|
|
37
|
+
* );
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* ---
|
|
41
|
+
* **Usage — subset narrowing**
|
|
42
|
+
* Restrict the compiler to a subset of the action's possible target statuses:
|
|
43
|
+
* ```typescript
|
|
44
|
+
* createActionConfig<MyActionEnum.APPROVE, MyStatusEnum.APPROVED>(
|
|
45
|
+
* MyStatusEnum.APPROVED,
|
|
46
|
+
* MyActionEnum.APPROVE,
|
|
47
|
+
* );
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* ---
|
|
51
|
+
* **Extending base enums**
|
|
52
|
+
* TypeScript enums cannot be inherited, but entity-specific enums can
|
|
53
|
+
* re-declare base values and add new ones:
|
|
54
|
+
* ```typescript
|
|
55
|
+
* import { BaseFlowActionEnum, BaseFlowStatusEnum } from "./base-flow-config.enums";
|
|
56
|
+
*
|
|
57
|
+
* export enum VendorActionEnum {
|
|
58
|
+
* VIEW = BaseFlowActionEnum.VIEW,
|
|
59
|
+
* CREATE = BaseFlowActionEnum.CREATE,
|
|
60
|
+
* UPDATE = BaseFlowActionEnum.UPDATE,
|
|
61
|
+
* DELETE = BaseFlowActionEnum.DELETE,
|
|
62
|
+
* APPROVE = BaseFlowActionEnum.APPROVE,
|
|
63
|
+
* REJECT = BaseFlowActionEnum.REJECT,
|
|
64
|
+
* RECALL = BaseFlowActionEnum.RECALL,
|
|
65
|
+
* DEACTIVATE = BaseFlowActionEnum.DEACTIVATE,
|
|
66
|
+
* SUBMIT = "submit", // ← extension
|
|
67
|
+
* }
|
|
68
|
+
*
|
|
69
|
+
* export enum VendorStatusEnum {
|
|
70
|
+
* ACTIVE = BaseFlowStatusEnum.ACTIVE,
|
|
71
|
+
* // ... all base statuses ...
|
|
72
|
+
* SUBMITTED = "SUBMITTED", // ← extension
|
|
73
|
+
* }
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
77
|
+
exports.createFlowConfigFactory = createFlowConfigFactory;
|
|
78
|
+
/**
|
|
79
|
+
* Curried factory — call with the context-data type first, then pass the
|
|
80
|
+
* action map. This two-step pattern lets TypeScript infer the precise action
|
|
81
|
+
* map type (preserving `as const` tuple narrowing) while still allowing the
|
|
82
|
+
* caller to set the context-data type explicitly.
|
|
83
|
+
*
|
|
84
|
+
* @template CTX - Shape of the context object passed to function-based
|
|
85
|
+
* transition resolvers. Use `never` for flows where `next()`
|
|
86
|
+
* needs no runtime data (equivalent to `() => status`).
|
|
87
|
+
*
|
|
88
|
+
* @returns A function that accepts an `ActionMap` and returns `createActionConfig`.
|
|
89
|
+
*/
|
|
90
|
+
function createFlowConfigFactory() {
|
|
91
|
+
return function (actionMap) {
|
|
92
|
+
const createTransition = (transition) => (context) => {
|
|
93
|
+
if (typeof transition === "function") {
|
|
94
|
+
return transition(context);
|
|
95
|
+
}
|
|
96
|
+
return transition;
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Builds a single typed action-config entry for use inside a
|
|
100
|
+
* `FlowConfig` status block.
|
|
101
|
+
*
|
|
102
|
+
* @param nextStatus Fixed target status, or a function `(ctx) => status`
|
|
103
|
+
* for context-driven transitions.
|
|
104
|
+
* @param action The action this config is for (used to look up
|
|
105
|
+
* default permissions from `actionMap`).
|
|
106
|
+
* @param overridePermissions Optional permission list that replaces the
|
|
107
|
+
* default from `actionMap[action].permissions`.
|
|
108
|
+
*
|
|
109
|
+
* @typeParam Act Specific action enum member (narrows `StatusForAction`).
|
|
110
|
+
* @typeParam Subset Subset of reachable statuses to enforce at this
|
|
111
|
+
* (currentStatus, action) pair. Must be a subtype of
|
|
112
|
+
* `StatusForAction<Act>`.
|
|
113
|
+
*/
|
|
114
|
+
const createActionConfig = (action, nextStatus, overridePermissions) => ({
|
|
115
|
+
permissions: overridePermissions !== null && overridePermissions !== void 0 ? overridePermissions : actionMap[action].permissions,
|
|
116
|
+
next: createTransition(nextStatus),
|
|
117
|
+
});
|
|
118
|
+
return { createActionConfig, createTransition };
|
|
119
|
+
};
|
|
120
|
+
}
|
|
@@ -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,243 @@
|
|
|
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_CREATE_PERMISSION = ["LEAVE_APPROVAL_CREATE"];
|
|
8
|
+
const LEAVE_APPROVAL_UPDATE_PERMISSION = ["LEAVE_APPROVAL_UPDATE"];
|
|
9
|
+
const LEAVE_APPROVAL_DELETE_PERMISSION = ["LEAVE_APPROVAL_DELETE"];
|
|
10
|
+
const LEAVE_APPROVAL_APPROVE_PERMISSION = ["LEAVE_APPROVAL_APPROVE"];
|
|
11
|
+
const LEAVE_APPROVAL_REJECT_PERMISSION = ["LEAVE_APPROVAL_REJECT"];
|
|
12
|
+
const LEAVE_APPROVAL_RECALL_PERMISSION = ["LEAVE_APPROVAL_RECALL"];
|
|
13
|
+
const LEAVE_APPROVAL_DEACTIVATE_PERMISSION = ["LEAVE_APPROVAL_DEACTIVATE"];
|
|
14
|
+
const ACTION_MAP = {
|
|
15
|
+
[api_1.LeaveApprovalActionEnum.CREATE]: {
|
|
16
|
+
statuses: [leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATE_APPROVAL_PENDING, leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED],
|
|
17
|
+
permissions: LEAVE_APPROVAL_CREATE_PERMISSION,
|
|
18
|
+
},
|
|
19
|
+
[api_1.LeaveApprovalActionEnum.UPDATE]: {
|
|
20
|
+
statuses: [leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATE_APPROVAL_PENDING, leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATED, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATE_APPROVAL_PENDING],
|
|
21
|
+
permissions: LEAVE_APPROVAL_UPDATE_PERMISSION,
|
|
22
|
+
},
|
|
23
|
+
[api_1.LeaveApprovalActionEnum.DELETE]: {
|
|
24
|
+
statuses: [leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETE_APPROVAL_PENDING, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETED],
|
|
25
|
+
permissions: LEAVE_APPROVAL_DELETE_PERMISSION,
|
|
26
|
+
},
|
|
27
|
+
[api_1.LeaveApprovalActionEnum.APPROVE]: {
|
|
28
|
+
statuses: [leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED, leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATED, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETED],
|
|
29
|
+
permissions: LEAVE_APPROVAL_APPROVE_PERMISSION,
|
|
30
|
+
},
|
|
31
|
+
[api_1.LeaveApprovalActionEnum.REJECT]: {
|
|
32
|
+
statuses: [
|
|
33
|
+
leave_approval_status_enum_1.LeaveApprovalStatusEnum.REJECTED,
|
|
34
|
+
leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED,
|
|
35
|
+
leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATED,
|
|
36
|
+
leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED,
|
|
37
|
+
leave_approval_status_enum_1.LeaveApprovalStatusEnum.RESOLVED_REJECTED,
|
|
38
|
+
],
|
|
39
|
+
permissions: LEAVE_APPROVAL_REJECT_PERMISSION,
|
|
40
|
+
},
|
|
41
|
+
[api_1.LeaveApprovalActionEnum.RECALL]: {
|
|
42
|
+
statuses: [leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED, leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATED, leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED],
|
|
43
|
+
permissions: LEAVE_APPROVAL_RECALL_PERMISSION,
|
|
44
|
+
},
|
|
45
|
+
[api_1.LeaveApprovalActionEnum.DEACTIVATE]: {
|
|
46
|
+
statuses: [leave_approval_status_enum_1.LeaveApprovalStatusEnum.DEACTIVATED],
|
|
47
|
+
permissions: LEAVE_APPROVAL_DEACTIVATE_PERMISSION,
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
const { createActionConfig } = (0, base_flow_config_factory_1.createFlowConfigFactory)()(ACTION_MAP);
|
|
51
|
+
// DEACTIVATED status transitions
|
|
52
|
+
const transitionDeactivatedStatusCreateAction = createActionConfig(api_1.LeaveApprovalActionEnum.CREATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATE_APPROVAL_PENDING);
|
|
53
|
+
const transitionDeactivatedStatusUpdateAction = createActionConfig(api_1.LeaveApprovalActionEnum.UPDATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATE_APPROVAL_PENDING);
|
|
54
|
+
const transitionDeactivatedStatusDeleteAction = createActionConfig(api_1.LeaveApprovalActionEnum.DELETE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETE_APPROVAL_PENDING);
|
|
55
|
+
const transitionDeactivatedStatusApproveAction = createActionConfig(api_1.LeaveApprovalActionEnum.APPROVE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED);
|
|
56
|
+
const transitionDeactivatedStatusRejectAction = createActionConfig(api_1.LeaveApprovalActionEnum.REJECT, leave_approval_status_enum_1.LeaveApprovalStatusEnum.REJECTED);
|
|
57
|
+
const transitionDeactivatedStatusRecallAction = createActionConfig(api_1.LeaveApprovalActionEnum.RECALL, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED);
|
|
58
|
+
const transitionDeactivatedStatusDeactivateAction = createActionConfig(api_1.LeaveApprovalActionEnum.DEACTIVATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DEACTIVATED);
|
|
59
|
+
// CREATED status transitions
|
|
60
|
+
const transitionCreatedStatusCreateAction = createActionConfig(api_1.LeaveApprovalActionEnum.CREATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATE_APPROVAL_PENDING);
|
|
61
|
+
const transitionCreatedStatusUpdateAction = createActionConfig(api_1.LeaveApprovalActionEnum.UPDATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATED);
|
|
62
|
+
const transitionCreatedStatusDeleteAction = createActionConfig(api_1.LeaveApprovalActionEnum.DELETE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETE_APPROVAL_PENDING);
|
|
63
|
+
const transitionCreatedStatusApproveAction = createActionConfig(api_1.LeaveApprovalActionEnum.APPROVE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED);
|
|
64
|
+
const transitionCreatedStatusRejectAction = createActionConfig(api_1.LeaveApprovalActionEnum.REJECT, leave_approval_status_enum_1.LeaveApprovalStatusEnum.REJECTED);
|
|
65
|
+
const transitionCreatedStatusRecallAction = createActionConfig(api_1.LeaveApprovalActionEnum.RECALL, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED);
|
|
66
|
+
const transitionCreatedStatusDeactivateAction = createActionConfig(api_1.LeaveApprovalActionEnum.DEACTIVATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DEACTIVATED);
|
|
67
|
+
// UPDATED status transitions
|
|
68
|
+
const transitionUpdatedStatusCreateAction = createActionConfig(api_1.LeaveApprovalActionEnum.CREATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATE_APPROVAL_PENDING);
|
|
69
|
+
const transitionUpdatedStatusUpdateAction = createActionConfig(api_1.LeaveApprovalActionEnum.UPDATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATE_APPROVAL_PENDING);
|
|
70
|
+
const transitionUpdatedStatusDeleteAction = createActionConfig(api_1.LeaveApprovalActionEnum.DELETE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETE_APPROVAL_PENDING);
|
|
71
|
+
const transitionUpdatedStatusApproveAction = createActionConfig(api_1.LeaveApprovalActionEnum.APPROVE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED);
|
|
72
|
+
const transitionUpdatedStatusRejectAction = createActionConfig(api_1.LeaveApprovalActionEnum.REJECT, leave_approval_status_enum_1.LeaveApprovalStatusEnum.REJECTED);
|
|
73
|
+
const transitionUpdatedStatusRecallAction = createActionConfig(api_1.LeaveApprovalActionEnum.RECALL, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED);
|
|
74
|
+
const transitionUpdatedStatusDeactivateAction = createActionConfig(api_1.LeaveApprovalActionEnum.DEACTIVATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DEACTIVATED);
|
|
75
|
+
// DELETED status transitions
|
|
76
|
+
const transitionDeletedStatusCreateAction = createActionConfig(api_1.LeaveApprovalActionEnum.CREATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATE_APPROVAL_PENDING);
|
|
77
|
+
const transitionDeletedStatusUpdateAction = createActionConfig(api_1.LeaveApprovalActionEnum.UPDATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATE_APPROVAL_PENDING);
|
|
78
|
+
const transitionDeletedStatusDeleteAction = createActionConfig(api_1.LeaveApprovalActionEnum.DELETE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETE_APPROVAL_PENDING);
|
|
79
|
+
const transitionDeletedStatusApproveAction = createActionConfig(api_1.LeaveApprovalActionEnum.APPROVE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED);
|
|
80
|
+
const transitionDeletedStatusRejectAction = createActionConfig(api_1.LeaveApprovalActionEnum.REJECT, leave_approval_status_enum_1.LeaveApprovalStatusEnum.REJECTED);
|
|
81
|
+
const transitionDeletedStatusRecallAction = createActionConfig(api_1.LeaveApprovalActionEnum.RECALL, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED);
|
|
82
|
+
const transitionDeletedStatusDeactivateAction = createActionConfig(api_1.LeaveApprovalActionEnum.DEACTIVATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DEACTIVATED);
|
|
83
|
+
// APPROVED status transitions
|
|
84
|
+
const transitionApprovedStatusCreateAction = createActionConfig(api_1.LeaveApprovalActionEnum.CREATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATE_APPROVAL_PENDING);
|
|
85
|
+
const transitionApprovedStatusUpdateAction = createActionConfig(api_1.LeaveApprovalActionEnum.UPDATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATE_APPROVAL_PENDING);
|
|
86
|
+
const transitionApprovedStatusDeleteAction = createActionConfig(api_1.LeaveApprovalActionEnum.DELETE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETE_APPROVAL_PENDING);
|
|
87
|
+
const transitionApprovedStatusApproveAction = createActionConfig(api_1.LeaveApprovalActionEnum.APPROVE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED);
|
|
88
|
+
const transitionApprovedStatusRejectAction = createActionConfig(api_1.LeaveApprovalActionEnum.REJECT, leave_approval_status_enum_1.LeaveApprovalStatusEnum.REJECTED);
|
|
89
|
+
const transitionApprovedStatusRecallAction = createActionConfig(api_1.LeaveApprovalActionEnum.RECALL, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED);
|
|
90
|
+
const transitionApprovedStatusDeactivateAction = createActionConfig(api_1.LeaveApprovalActionEnum.DEACTIVATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DEACTIVATED);
|
|
91
|
+
// REJECTED status transitions
|
|
92
|
+
const transitionRejectedStatusCreateAction = createActionConfig(api_1.LeaveApprovalActionEnum.CREATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATE_APPROVAL_PENDING);
|
|
93
|
+
const transitionRejectedStatusUpdateAction = createActionConfig(api_1.LeaveApprovalActionEnum.UPDATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATE_APPROVAL_PENDING);
|
|
94
|
+
const transitionRejectedStatusDeleteAction = createActionConfig(api_1.LeaveApprovalActionEnum.DELETE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETE_APPROVAL_PENDING);
|
|
95
|
+
const transitionRejectedStatusApproveAction = createActionConfig(api_1.LeaveApprovalActionEnum.APPROVE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED);
|
|
96
|
+
const transitionRejectedStatusRejectAction = createActionConfig(api_1.LeaveApprovalActionEnum.REJECT, leave_approval_status_enum_1.LeaveApprovalStatusEnum.REJECTED);
|
|
97
|
+
const transitionRejectedStatusRecallAction = createActionConfig(api_1.LeaveApprovalActionEnum.RECALL, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED);
|
|
98
|
+
const transitionRejectedStatusDeactivateAction = createActionConfig(api_1.LeaveApprovalActionEnum.DEACTIVATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DEACTIVATED);
|
|
99
|
+
// CREATE_APPROVAL_PENDING status transitions
|
|
100
|
+
const transitionCreateApprovalPendingStatusCreateAction = createActionConfig(api_1.LeaveApprovalActionEnum.CREATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATE_APPROVAL_PENDING);
|
|
101
|
+
const transitionCreateApprovalPendingStatusUpdateAction = createActionConfig(api_1.LeaveApprovalActionEnum.UPDATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATE_APPROVAL_PENDING);
|
|
102
|
+
const transitionCreateApprovalPendingStatusDeleteAction = createActionConfig(api_1.LeaveApprovalActionEnum.DELETE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETED);
|
|
103
|
+
const transitionCreateApprovalPendingStatusApproveAction = createActionConfig(api_1.LeaveApprovalActionEnum.APPROVE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED);
|
|
104
|
+
const transitionCreateApprovalPendingStatusRejectAction = createActionConfig(api_1.LeaveApprovalActionEnum.REJECT, leave_approval_status_enum_1.LeaveApprovalStatusEnum.REJECTED);
|
|
105
|
+
const transitionCreateApprovalPendingStatusRecallAction = createActionConfig(api_1.LeaveApprovalActionEnum.RECALL, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED);
|
|
106
|
+
const transitionCreateApprovalPendingStatusDeactivateAction = createActionConfig(api_1.LeaveApprovalActionEnum.DEACTIVATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DEACTIVATED);
|
|
107
|
+
// UPDATE_APPROVAL_PENDING status transitions
|
|
108
|
+
const transitionUpdateApprovalPendingStatusCreateAction = createActionConfig(api_1.LeaveApprovalActionEnum.CREATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATE_APPROVAL_PENDING);
|
|
109
|
+
const transitionUpdateApprovalPendingStatusUpdateAction = createActionConfig(api_1.LeaveApprovalActionEnum.UPDATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATE_APPROVAL_PENDING);
|
|
110
|
+
const transitionUpdateApprovalPendingStatusDeleteAction = createActionConfig(api_1.LeaveApprovalActionEnum.DELETE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETE_APPROVAL_PENDING);
|
|
111
|
+
const transitionUpdateApprovalPendingStatusApproveAction = createActionConfig(api_1.LeaveApprovalActionEnum.APPROVE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED);
|
|
112
|
+
const transitionUpdateApprovalPendingStatusRejectAction = createActionConfig(api_1.LeaveApprovalActionEnum.REJECT, leave_approval_status_enum_1.LeaveApprovalStatusEnum.REJECTED);
|
|
113
|
+
const transitionUpdateApprovalPendingStatusRecallAction = createActionConfig(api_1.LeaveApprovalActionEnum.RECALL, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED);
|
|
114
|
+
const transitionUpdateApprovalPendingStatusDeactivateAction = createActionConfig(api_1.LeaveApprovalActionEnum.DEACTIVATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DEACTIVATED);
|
|
115
|
+
// DELETE_APPROVAL_PENDING status transitions
|
|
116
|
+
const transitionDeleteApprovalPendingStatusCreateAction = createActionConfig(api_1.LeaveApprovalActionEnum.CREATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATE_APPROVAL_PENDING);
|
|
117
|
+
const transitionDeleteApprovalPendingStatusUpdateAction = createActionConfig(api_1.LeaveApprovalActionEnum.UPDATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATE_APPROVAL_PENDING);
|
|
118
|
+
const transitionDeleteApprovalPendingStatusDeleteAction = createActionConfig(api_1.LeaveApprovalActionEnum.DELETE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETE_APPROVAL_PENDING);
|
|
119
|
+
const transitionDeleteApprovalPendingStatusApproveAction = createActionConfig(api_1.LeaveApprovalActionEnum.APPROVE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETED);
|
|
120
|
+
const transitionDeleteApprovalPendingStatusRejectAction = createActionConfig(api_1.LeaveApprovalActionEnum.REJECT, leave_approval_status_enum_1.LeaveApprovalStatusEnum.REJECTED);
|
|
121
|
+
const transitionDeleteApprovalPendingStatusRecallAction = createActionConfig(api_1.LeaveApprovalActionEnum.RECALL, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED);
|
|
122
|
+
const transitionDeleteApprovalPendingStatusDeactivateAction = createActionConfig(api_1.LeaveApprovalActionEnum.DEACTIVATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DEACTIVATED);
|
|
123
|
+
// RESOLVED_REJECTED status transitions
|
|
124
|
+
const transitionResolvedRejectedStatusCreateAction = createActionConfig(api_1.LeaveApprovalActionEnum.CREATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED);
|
|
125
|
+
const transitionResolvedRejectedStatusUpdateAction = createActionConfig(api_1.LeaveApprovalActionEnum.UPDATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATED);
|
|
126
|
+
const transitionResolvedRejectedStatusDeleteAction = createActionConfig(api_1.LeaveApprovalActionEnum.DELETE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETED);
|
|
127
|
+
const transitionResolvedRejectedStatusApproveAction = createActionConfig(api_1.LeaveApprovalActionEnum.APPROVE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED);
|
|
128
|
+
const transitionResolvedRejectedStatusRejectAction = createActionConfig(api_1.LeaveApprovalActionEnum.REJECT, leave_approval_status_enum_1.LeaveApprovalStatusEnum.REJECTED);
|
|
129
|
+
const transitionResolvedRejectedStatusRecallAction = createActionConfig(api_1.LeaveApprovalActionEnum.RECALL, leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATED);
|
|
130
|
+
const transitionResolvedRejectedStatusDeactivateAction = createActionConfig(api_1.LeaveApprovalActionEnum.DEACTIVATE, leave_approval_status_enum_1.LeaveApprovalStatusEnum.DEACTIVATED);
|
|
131
|
+
exports.leaveApprovalFlowConfig = {
|
|
132
|
+
[leave_approval_status_enum_1.LeaveApprovalStatusEnum.DEACTIVATED]: {
|
|
133
|
+
actions: {
|
|
134
|
+
// [LeaveApprovalActionEnum.CREATE]: transitionDeactivatedStatusCreateAction,
|
|
135
|
+
[api_1.LeaveApprovalActionEnum.UPDATE]: transitionDeactivatedStatusUpdateAction,
|
|
136
|
+
[api_1.LeaveApprovalActionEnum.DELETE]: transitionDeactivatedStatusDeleteAction,
|
|
137
|
+
// [LeaveApprovalActionEnum.APPROVE]: transitionDeactivatedStatusApproveAction,
|
|
138
|
+
// [LeaveApprovalActionEnum.REJECT]: transitionDeactivatedStatusRejectAction,
|
|
139
|
+
// [LeaveApprovalActionEnum.RECALL]: transitionDeactivatedStatusRecallAction,
|
|
140
|
+
// [LeaveApprovalActionEnum.DEACTIVATE]: transitionDeactivatedStatusDeactivateAction,
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
[leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATED]: {
|
|
144
|
+
actions: {
|
|
145
|
+
// [LeaveApprovalActionEnum.CREATE]: transitionCreatedStatusCreateAction,
|
|
146
|
+
[api_1.LeaveApprovalActionEnum.UPDATE]: transitionCreatedStatusUpdateAction,
|
|
147
|
+
[api_1.LeaveApprovalActionEnum.DELETE]: transitionCreatedStatusDeleteAction,
|
|
148
|
+
// [LeaveApprovalActionEnum.APPROVE]: transitionCreatedStatusApproveAction,
|
|
149
|
+
// [LeaveApprovalActionEnum.REJECT]: transitionCreatedStatusRejectAction,
|
|
150
|
+
// [LeaveApprovalActionEnum.RECALL]: transitionCreatedStatusRecallAction,
|
|
151
|
+
[api_1.LeaveApprovalActionEnum.DEACTIVATE]: transitionCreatedStatusDeactivateAction,
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
[leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATED]: {
|
|
155
|
+
actions: {
|
|
156
|
+
// [LeaveApprovalActionEnum.CREATE]: transitionUpdatedStatusCreateAction,
|
|
157
|
+
[api_1.LeaveApprovalActionEnum.UPDATE]: transitionUpdatedStatusUpdateAction,
|
|
158
|
+
[api_1.LeaveApprovalActionEnum.DELETE]: transitionUpdatedStatusDeleteAction,
|
|
159
|
+
// [LeaveApprovalActionEnum.APPROVE]: transitionUpdatedStatusApproveAction,
|
|
160
|
+
// [LeaveApprovalActionEnum.REJECT]: transitionUpdatedStatusRejectAction,
|
|
161
|
+
// [LeaveApprovalActionEnum.RECALL]: transitionUpdatedStatusRecallAction,
|
|
162
|
+
[api_1.LeaveApprovalActionEnum.DEACTIVATE]: transitionUpdatedStatusDeactivateAction,
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
[leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETED]: {
|
|
166
|
+
actions: {
|
|
167
|
+
// [LeaveApprovalActionEnum.VIEW]: transitionDeletedStatusViewAction,
|
|
168
|
+
// [LeaveApprovalActionEnum.CREATE]: transitionDeletedStatusCreateAction,
|
|
169
|
+
// [LeaveApprovalActionEnum.UPDATE]: transitionDeletedStatusUpdateAction,
|
|
170
|
+
// [LeaveApprovalActionEnum.DELETE]: transitionDeletedStatusDeleteAction,
|
|
171
|
+
// [LeaveApprovalActionEnum.APPROVE]: transitionDeletedStatusApproveAction,
|
|
172
|
+
// [LeaveApprovalActionEnum.REJECT]: transitionDeletedStatusRejectAction,
|
|
173
|
+
// [LeaveApprovalActionEnum.RECALL]: transitionDeletedStatusRecallAction,
|
|
174
|
+
// [LeaveApprovalActionEnum.DEACTIVATE]: transitionDeletedStatusDeactivateAction,
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
[leave_approval_status_enum_1.LeaveApprovalStatusEnum.APPROVED]: {
|
|
178
|
+
actions: {
|
|
179
|
+
// [LeaveApprovalActionEnum.CREATE]: transitionApprovedStatusCreateAction,
|
|
180
|
+
[api_1.LeaveApprovalActionEnum.UPDATE]: transitionApprovedStatusUpdateAction,
|
|
181
|
+
[api_1.LeaveApprovalActionEnum.DELETE]: transitionApprovedStatusDeleteAction,
|
|
182
|
+
// [LeaveApprovalActionEnum.APPROVE]: transitionApprovedStatusApproveAction,
|
|
183
|
+
// [LeaveApprovalActionEnum.REJECT]: transitionApprovedStatusRejectAction,
|
|
184
|
+
// [LeaveApprovalActionEnum.RECALL]: transitionApprovedStatusRecallAction,
|
|
185
|
+
[api_1.LeaveApprovalActionEnum.DEACTIVATE]: transitionApprovedStatusDeactivateAction,
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
[leave_approval_status_enum_1.LeaveApprovalStatusEnum.REJECTED]: {
|
|
189
|
+
actions: {
|
|
190
|
+
// [LeaveApprovalActionEnum.CREATE]: transitionRejectedStatusCreateAction,
|
|
191
|
+
[api_1.LeaveApprovalActionEnum.UPDATE]: transitionRejectedStatusUpdateAction,
|
|
192
|
+
[api_1.LeaveApprovalActionEnum.DELETE]: transitionRejectedStatusDeleteAction,
|
|
193
|
+
// [LeaveApprovalActionEnum.APPROVE]: transitionRejectedStatusApproveAction,
|
|
194
|
+
// [LeaveApprovalActionEnum.REJECT]: transitionRejectedStatusRejectAction,
|
|
195
|
+
// [LeaveApprovalActionEnum.RECALL]: transitionRejectedStatusRecallAction,
|
|
196
|
+
[api_1.LeaveApprovalActionEnum.DEACTIVATE]: transitionRejectedStatusDeactivateAction,
|
|
197
|
+
},
|
|
198
|
+
},
|
|
199
|
+
[leave_approval_status_enum_1.LeaveApprovalStatusEnum.CREATE_APPROVAL_PENDING]: {
|
|
200
|
+
actions: {
|
|
201
|
+
// [LeaveApprovalActionEnum.CREATE]: transitionCreateApprovalPendingStatusCreateAction,
|
|
202
|
+
// [LeaveApprovalActionEnum.UPDATE]: transitionCreateApprovalPendingStatusUpdateAction,
|
|
203
|
+
// [LeaveApprovalActionEnum.DELETE]: transitionCreateApprovalPendingStatusDeleteAction,
|
|
204
|
+
[api_1.LeaveApprovalActionEnum.APPROVE]: transitionCreateApprovalPendingStatusApproveAction,
|
|
205
|
+
[api_1.LeaveApprovalActionEnum.REJECT]: transitionCreateApprovalPendingStatusRejectAction,
|
|
206
|
+
// [LeaveApprovalActionEnum.RECALL]: transitionCreateApprovalPendingStatusRecallAction,
|
|
207
|
+
// [LeaveApprovalActionEnum.DEACTIVATE]: transitionCreateApprovalPendingStatusDeactivateAction,
|
|
208
|
+
},
|
|
209
|
+
},
|
|
210
|
+
[leave_approval_status_enum_1.LeaveApprovalStatusEnum.UPDATE_APPROVAL_PENDING]: {
|
|
211
|
+
actions: {
|
|
212
|
+
// [LeaveApprovalActionEnum.CREATE]: transitionUpdateApprovalPendingStatusCreateAction,
|
|
213
|
+
[api_1.LeaveApprovalActionEnum.UPDATE]: transitionUpdateApprovalPendingStatusUpdateAction,
|
|
214
|
+
// [LeaveApprovalActionEnum.DELETE]: transitionUpdateApprovalPendingStatusDeleteAction,
|
|
215
|
+
[api_1.LeaveApprovalActionEnum.APPROVE]: transitionUpdateApprovalPendingStatusApproveAction,
|
|
216
|
+
[api_1.LeaveApprovalActionEnum.REJECT]: transitionUpdateApprovalPendingStatusRejectAction,
|
|
217
|
+
[api_1.LeaveApprovalActionEnum.RECALL]: transitionUpdateApprovalPendingStatusRecallAction,
|
|
218
|
+
// [LeaveApprovalActionEnum.DEACTIVATE]: transitionUpdateApprovalPendingStatusDeactivateAction,
|
|
219
|
+
},
|
|
220
|
+
},
|
|
221
|
+
[leave_approval_status_enum_1.LeaveApprovalStatusEnum.DELETE_APPROVAL_PENDING]: {
|
|
222
|
+
actions: {
|
|
223
|
+
// [LeaveApprovalActionEnum.CREATE]: transitionDeleteApprovalPendingStatusCreateAction,
|
|
224
|
+
// [LeaveApprovalActionEnum.UPDATE]: transitionDeleteApprovalPendingStatusUpdateAction,
|
|
225
|
+
// [LeaveApprovalActionEnum.DELETE]: transitionDeleteApprovalPendingStatusDeleteAction,
|
|
226
|
+
[api_1.LeaveApprovalActionEnum.APPROVE]: transitionDeleteApprovalPendingStatusApproveAction,
|
|
227
|
+
[api_1.LeaveApprovalActionEnum.REJECT]: transitionDeleteApprovalPendingStatusRejectAction,
|
|
228
|
+
[api_1.LeaveApprovalActionEnum.RECALL]: transitionDeleteApprovalPendingStatusRecallAction,
|
|
229
|
+
// [LeaveApprovalActionEnum.DEACTIVATE]: transitionDeleteApprovalPendingStatusDeactivateAction,
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
[leave_approval_status_enum_1.LeaveApprovalStatusEnum.RESOLVED_REJECTED]: {
|
|
233
|
+
actions: {
|
|
234
|
+
// [LeaveApprovalActionEnum.CREATE]: transitionResolvedRejectedStatusCreateAction,
|
|
235
|
+
[api_1.LeaveApprovalActionEnum.UPDATE]: transitionResolvedRejectedStatusUpdateAction,
|
|
236
|
+
[api_1.LeaveApprovalActionEnum.DELETE]: transitionResolvedRejectedStatusDeleteAction,
|
|
237
|
+
// [LeaveApprovalActionEnum.APPROVE]: transitionResolvedRejectedStatusApproveAction,
|
|
238
|
+
// [LeaveApprovalActionEnum.REJECT]: transitionResolvedRejectedStatusRejectAction,
|
|
239
|
+
// [LeaveApprovalActionEnum.RECALL]: transitionResolvedRejectedStatusRecallAction,
|
|
240
|
+
[api_1.LeaveApprovalActionEnum.DEACTIVATE]: transitionResolvedRejectedStatusDeactivateAction,
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
};
|
|
@@ -217,3 +217,7 @@ export * from "./enums/entity_history_status_enum";
|
|
|
217
217
|
export * from "./interface/entity_history.entity.interface";
|
|
218
218
|
export * from "./flow-configs/entity_history_flow.config";
|
|
219
219
|
export * from "./model/entity_history.entity.model";
|
|
220
|
+
export * from "./enums/leave_approval_status_enum";
|
|
221
|
+
export * from "./flow-configs/leave_approval_flow.config";
|
|
222
|
+
export * from "./interface/leave_approval.entity.interface";
|
|
223
|
+
export * from "./model/leave_approval.entity.model";
|
|
@@ -233,3 +233,7 @@ __exportStar(require("./enums/entity_history_status_enum"), exports);
|
|
|
233
233
|
__exportStar(require("./interface/entity_history.entity.interface"), exports);
|
|
234
234
|
__exportStar(require("./flow-configs/entity_history_flow.config"), exports);
|
|
235
235
|
__exportStar(require("./model/entity_history.entity.model"), exports);
|
|
236
|
+
__exportStar(require("./enums/leave_approval_status_enum"), exports);
|
|
237
|
+
__exportStar(require("./flow-configs/leave_approval_flow.config"), exports);
|
|
238
|
+
__exportStar(require("./interface/leave_approval.entity.interface"), exports);
|
|
239
|
+
__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 { OfficeLocationEntityModel } from "../model/office_location.entity.model";
|
|
@@ -103,6 +104,7 @@ import { IHolidayEntity } from "./holiday.entity.interface";
|
|
|
103
104
|
import { IIndustryEntity } from "./industry.entity.interface";
|
|
104
105
|
import { IIntermediaryBankEntity } from "./intermediary_bank.entity.interface";
|
|
105
106
|
import { ILeaveCountVirtualEntity, ILeaveEntity } from "./leave.entity.interface";
|
|
107
|
+
import { ILeaveApprovalEntity } from "./leave_approval.entity.interface";
|
|
106
108
|
import { ILeaveHistoryEntity } from "./leave_history.entity.interface";
|
|
107
109
|
import { IOfficeLocationEntity } from "./office.location.entity";
|
|
108
110
|
import { IOrganizationEntity } from "./organization.entity.interface";
|
|
@@ -240,7 +242,8 @@ export declare enum EntityEnum {
|
|
|
240
242
|
VENDOR_HISTORY = "vendor_history",
|
|
241
243
|
CLIENT_QUOTE = "client_quote",
|
|
242
244
|
CLIENT_QUOTE_RATE = "client_quote_rate",
|
|
243
|
-
ENTITY_HISTORY = "entity_history"
|
|
245
|
+
ENTITY_HISTORY = "entity_history",
|
|
246
|
+
LEAVE_APPROVAL = "leave_approval"
|
|
244
247
|
}
|
|
245
248
|
export type EntityRelations = {
|
|
246
249
|
[K in EntityEnum | VirtualEntityEnum]: K;
|
|
@@ -265,7 +268,7 @@ export type IBaseEntityApiResponse<T> = {
|
|
|
265
268
|
[key in EntityEnum | VirtualEntityEnum]?: AggregationFields<EnumToModel<key>>[];
|
|
266
269
|
};
|
|
267
270
|
};
|
|
268
|
-
export type EnumEntityType<T extends EntityEnum | VirtualEntityEnum> = (T extends EntityEnum.BILLING ? IBillingEntity : T extends EntityEnum.BILLING_HISTORY ? IBillingHistoryEntity : 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) & {
|
|
271
|
+
export type EnumEntityType<T extends EntityEnum | VirtualEntityEnum> = (T extends EntityEnum.BILLING ? IBillingEntity : T extends EntityEnum.BILLING_HISTORY ? IBillingHistoryEntity : 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.ENTITY_HISTORY ? IEntityHistoryEntity : T extends EntityEnum.LEAVE_APPROVAL ? ILeaveApprovalEntity : never) & {
|
|
269
272
|
id: number;
|
|
270
273
|
};
|
|
271
274
|
export type EntityRelationConfig<T extends EntityEnum | VirtualEntityEnum> = {
|
|
@@ -391,7 +394,7 @@ export declare enum VirtualEntityEnum {
|
|
|
391
394
|
}
|
|
392
395
|
export type IHistoryConstraintSearchResponse<T> = IBaseResponse<IHistoryEntitySearchByConstraintResponse<T>[]>;
|
|
393
396
|
export type IHistoryConstraintSearchServiceResponse<T> = IHistoryEntitySearchByConstraintResponse<T>[];
|
|
394
|
-
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.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;
|
|
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.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.ENTITY_HISTORY ? EntityHistoryEntityModel : T extends EntityEnum.LEAVE_APPROVAL ? LeaveApprovalEntityModel : UserEntityModel;
|
|
395
398
|
export type EntityMap = {
|
|
396
399
|
[key in EntityEnum | VirtualEntityEnum]: EnumToModel<key>[];
|
|
397
400
|
} & {
|
|
@@ -99,6 +99,7 @@ var EntityEnum;
|
|
|
99
99
|
EntityEnum["CLIENT_QUOTE"] = "client_quote";
|
|
100
100
|
EntityEnum["CLIENT_QUOTE_RATE"] = "client_quote_rate";
|
|
101
101
|
EntityEnum["ENTITY_HISTORY"] = "entity_history";
|
|
102
|
+
EntityEnum["LEAVE_APPROVAL"] = "leave_approval";
|
|
102
103
|
})(EntityEnum || (exports.EntityEnum = EntityEnum = {}));
|
|
103
104
|
var VirtualEntityEnum;
|
|
104
105
|
(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
|
+
}
|
|
@@ -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 office_location_entity_model_1 = require("./office_location.entity.model");
|
|
@@ -174,6 +175,7 @@ exports.entityEnumToEntityModel = {
|
|
|
174
175
|
[entity_utils_interface_1.EntityEnum.PROJECT_REVENUE_SPLIT_MAPPING]: project_revenue_split_mapping_model_1.ProjectRevenueSplitMappingEntityModel.fromEntity,
|
|
175
176
|
[entity_utils_interface_1.EntityEnum.BILLING_PROFILE]: billing_profile_entity_model_1.BillingProfileEntityModel.fromEntity,
|
|
176
177
|
[entity_utils_interface_1.EntityEnum.ENTITY_HISTORY]: entity_history_entity_model_1.EntityHistoryEntityModel.fromEntity,
|
|
178
|
+
[entity_utils_interface_1.EntityEnum.LEAVE_APPROVAL]: leave_approval_entity_model_1.LeaveApprovalEntityModel.fromEntity,
|
|
177
179
|
};
|
|
178
180
|
function entityMapToModels(entityMap) {
|
|
179
181
|
for (const entityName in entityMap) {
|
|
@@ -9,6 +9,7 @@ import { ILeaveEntity } from "../interface/leave.entity.interface";
|
|
|
9
9
|
import { RelationConfigs } from "../interface/relation-config.interface";
|
|
10
10
|
import { BaseEntityModel } from "./base.entity.model";
|
|
11
11
|
import { IRowActions } from "./interface/row-actions.interface";
|
|
12
|
+
import { LeaveApprovalEntityModel } from "./leave_approval.entity.model";
|
|
12
13
|
import { LeaveCountVirtualEntityModel } from "./leave_count.entity.model";
|
|
13
14
|
import { UserEntityModel } from "./user.entity.model";
|
|
14
15
|
export declare class LeaveEntityModel extends BaseEntityModel<EntityEnum.LEAVE> implements ILeaveEntity {
|
|
@@ -29,6 +30,7 @@ export declare class LeaveEntityModel extends BaseEntityModel<EntityEnum.LEAVE>
|
|
|
29
30
|
createdByUser?: UserEntityModel;
|
|
30
31
|
updatedByUser?: UserEntityModel;
|
|
31
32
|
user?: UserEntityModel;
|
|
33
|
+
leaveApprovals?: LeaveApprovalEntityModel[];
|
|
32
34
|
static fromEntity(data: ILeaveEntity): LeaveEntityModel;
|
|
33
35
|
getLeaveDuration(excludeWeekdays?: Weekday[], excludeDates?: DateCodeModel[]): number;
|
|
34
36
|
static getLeaveDuration(leaves: LeaveEntityModel[], excludeWeekdays?: Weekday[], excludeDates?: DateCodeModel[], leaveStatusEnum?: LeaveStatusEnum[]): number;
|
|
@@ -42,7 +44,13 @@ export declare class LeaveEntityModel extends BaseEntityModel<EntityEnum.LEAVE>
|
|
|
42
44
|
isHolidaySucceeds(holidays: DateCodeModel[]): boolean;
|
|
43
45
|
isHolidayPrecedes(holidays: DateCodeModel[]): boolean;
|
|
44
46
|
getRelationConfigs(): any[];
|
|
45
|
-
static relationConfigs: RelationConfigs<[
|
|
47
|
+
static relationConfigs: RelationConfigs<[
|
|
48
|
+
VirtualEntityEnum.LEAVE_COUNT,
|
|
49
|
+
EntityEnum.USER,
|
|
50
|
+
EntityEnum.USER,
|
|
51
|
+
EntityEnum.USER,
|
|
52
|
+
EntityEnum.LEAVE_APPROVAL
|
|
53
|
+
], EntityEnum.LEAVE>;
|
|
46
54
|
static fromApiEntity(apiEntity: ILeaveEntity): LeaveEntityModel;
|
|
47
55
|
static getPendingApprovalStatuses(): LeaveStatusEnum[];
|
|
48
56
|
getStatusLabel(): string;
|
|
@@ -301,4 +301,13 @@ LeaveEntityModel.relationConfigs = [
|
|
|
301
301
|
key: "employeeId",
|
|
302
302
|
},
|
|
303
303
|
},
|
|
304
|
+
{
|
|
305
|
+
name: entity_utils_interface_1.EntityEnum.LEAVE_APPROVAL,
|
|
306
|
+
relation: relation_type_enum_1.RelationType.MANY,
|
|
307
|
+
key: "leaveApprovals",
|
|
308
|
+
mapKeyConfig: {
|
|
309
|
+
relationKey: "leaveId",
|
|
310
|
+
key: "id",
|
|
311
|
+
},
|
|
312
|
+
},
|
|
304
313
|
];
|
|
@@ -0,0 +1,38 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LeaveApprovalEntityModel = void 0;
|
|
4
|
+
const entity_utils_interface_1 = require("../interface/entity.utils.interface");
|
|
5
|
+
const base_entity_model_1 = require("./base.entity.model");
|
|
6
|
+
const relation_type_enum_1 = require("../enums/relation-type.enum");
|
|
7
|
+
const exceptions_1 = require("../../exceptions");
|
|
8
|
+
const error_key_enum_1 = require("../../enums/error.key.enum");
|
|
9
|
+
const utils_1 = require("../../utils");
|
|
10
|
+
const leave_approval_status_enum_1 = require("../enums/leave_approval_status_enum");
|
|
11
|
+
const leave_approval_flow_config_1 = require("../flow-configs/leave_approval_flow.config");
|
|
12
|
+
class LeaveApprovalEntityModel extends base_entity_model_1.BaseEntityModel {
|
|
13
|
+
constructor() {
|
|
14
|
+
super(...arguments);
|
|
15
|
+
this.id = 0;
|
|
16
|
+
this.leaveId = 0;
|
|
17
|
+
this.approverId = 0;
|
|
18
|
+
this.status = leave_approval_status_enum_1.LeaveApprovalStatusEnum.DEACTIVATED;
|
|
19
|
+
this.createdOn = 0;
|
|
20
|
+
this.updatedOn = 0;
|
|
21
|
+
this.createdBy = 0;
|
|
22
|
+
this.updatedBy = 0;
|
|
23
|
+
}
|
|
24
|
+
static fromEntity(entity) {
|
|
25
|
+
const result = new LeaveApprovalEntityModel(entity_utils_interface_1.EntityEnum.LEAVE_APPROVAL);
|
|
26
|
+
Object.assign(result, entity);
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
getRelationConfigs() {
|
|
30
|
+
return this.constructor.prototype.constructor.relationConfigs || [];
|
|
31
|
+
}
|
|
32
|
+
getNextStatus(currentUser, action, leaveApprovalFlowConfigContextData) {
|
|
33
|
+
if (!this.status) {
|
|
34
|
+
throw new exceptions_1.AppBadRequestException({
|
|
35
|
+
key: error_key_enum_1.ErrorKeyEnum.STATUS,
|
|
36
|
+
message: [`Status not found: ${this.status}`],
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
const flowForStatus = leave_approval_flow_config_1.leaveApprovalFlowConfig[this.status];
|
|
40
|
+
if (!flowForStatus) {
|
|
41
|
+
throw new exceptions_1.AppBadRequestException({
|
|
42
|
+
key: error_key_enum_1.ErrorKeyEnum.STATUS,
|
|
43
|
+
message: [`No flow configuration found for status: ${this.status}`],
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
if (!action) {
|
|
47
|
+
throw new exceptions_1.AppBadRequestException({
|
|
48
|
+
key: error_key_enum_1.ErrorKeyEnum.ACTION_DATA,
|
|
49
|
+
message: ["actionData is required"],
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
const matchingPermissionConfig = flowForStatus.actions[action];
|
|
53
|
+
if (!matchingPermissionConfig) {
|
|
54
|
+
throw new exceptions_1.AppBadRequestException({
|
|
55
|
+
key: error_key_enum_1.ErrorKeyEnum.ACTION,
|
|
56
|
+
message: [`Action '${action}' is not valid for the current status.`],
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
if (!currentUser.permissions || currentUser.permissions.length === 0) {
|
|
60
|
+
throw new exceptions_1.AppBadRequestException({
|
|
61
|
+
key: error_key_enum_1.ErrorKeyEnum.PERMISSIONS,
|
|
62
|
+
message: ["Permission not available for currentUser"],
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
const hasPermission = matchingPermissionConfig.permissions.some((permission) => currentUser.permissions.includes(permission));
|
|
66
|
+
if (!hasPermission) {
|
|
67
|
+
throw new exceptions_1.AppBadRequestException({
|
|
68
|
+
key: error_key_enum_1.ErrorKeyEnum.PERMISSION,
|
|
69
|
+
message: [`Current user does not have permission to ${action} leaveApproval. Required permissions: ${matchingPermissionConfig.permissions.join(", ")}`],
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
const nextStatus = matchingPermissionConfig.next(leaveApprovalFlowConfigContextData);
|
|
73
|
+
return nextStatus;
|
|
74
|
+
}
|
|
75
|
+
getAvailableActions(currentUser, config) {
|
|
76
|
+
var _a;
|
|
77
|
+
const params = {
|
|
78
|
+
flowConfig: leave_approval_flow_config_1.leaveApprovalFlowConfig,
|
|
79
|
+
currentStatus: this.status,
|
|
80
|
+
userPermissions: (_a = currentUser.permissions) !== null && _a !== void 0 ? _a : [],
|
|
81
|
+
// visibilityData: this.getUpdateActionVisibility.bind(this, currentUser),
|
|
82
|
+
combinedActions: config === null || config === void 0 ? void 0 : config.combinedActions,
|
|
83
|
+
customLabels: config === null || config === void 0 ? void 0 : config.customLabels,
|
|
84
|
+
};
|
|
85
|
+
return utils_1.EntityActionFlowResolverV2.getAvailableActionsData(params);
|
|
86
|
+
}
|
|
87
|
+
getUpdateActionVisibility(currentUser) {
|
|
88
|
+
return {};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.LeaveApprovalEntityModel = LeaveApprovalEntityModel;
|
|
92
|
+
LeaveApprovalEntityModel.relationConfigs = [
|
|
93
|
+
{
|
|
94
|
+
name: entity_utils_interface_1.EntityEnum.LEAVE,
|
|
95
|
+
relation: relation_type_enum_1.RelationType.ONE,
|
|
96
|
+
key: "leave",
|
|
97
|
+
mapKeyConfig: {
|
|
98
|
+
relationKey: "id",
|
|
99
|
+
key: "leaveId",
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: entity_utils_interface_1.EntityEnum.USER,
|
|
104
|
+
relation: relation_type_enum_1.RelationType.ONE,
|
|
105
|
+
key: "user",
|
|
106
|
+
mapKeyConfig: {
|
|
107
|
+
relationKey: "id",
|
|
108
|
+
key: "approverId",
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
];
|
|
@@ -3,6 +3,8 @@ import { EntityEnum, Nullable } from "../interface/entity.utils.interface";
|
|
|
3
3
|
import { RelationConfigs } from "../interface/relation-config.interface";
|
|
4
4
|
import { IUserEntity } from "../interface/user.entity.interface";
|
|
5
5
|
import { BaseEntityModel } from "./base.entity.model";
|
|
6
|
+
import { ProjectUserMappingEntityModel } from "./project-user-mapping.entity.model";
|
|
7
|
+
import { ProjectEntityModel } from "./project.entity.model";
|
|
6
8
|
import { RoleEntityModel } from "./role.entity.model";
|
|
7
9
|
export declare class UserEntityModel extends BaseEntityModel<EntityEnum.USER> implements IUserEntity {
|
|
8
10
|
id: number;
|
|
@@ -45,9 +47,11 @@ export declare class UserEntityModel extends BaseEntityModel<EntityEnum.USER> im
|
|
|
45
47
|
createdOn: number;
|
|
46
48
|
updatedOn: number;
|
|
47
49
|
roleModel: RoleEntityModel;
|
|
48
|
-
|
|
50
|
+
projecUserMappings: ProjectUserMappingEntityModel[];
|
|
51
|
+
static relationConfigs: RelationConfigs<[EntityEnum.ROLE, EntityEnum.PROJECT_USER_MAPPING], EntityEnum.USER>;
|
|
49
52
|
getRelationConfigs(): any[];
|
|
50
53
|
static fromEntity(entity: IUserEntity): UserEntityModel;
|
|
51
54
|
get roleEntityModel(): RoleEntityModel;
|
|
52
55
|
hasPermission(permissionName: string): boolean;
|
|
56
|
+
get projects(): ProjectEntityModel[];
|
|
53
57
|
}
|
|
@@ -28,6 +28,7 @@ class UserEntityModel extends base_entity_model_1.BaseEntityModel {
|
|
|
28
28
|
// role key already exists on user entity
|
|
29
29
|
// hence, name written as role model
|
|
30
30
|
this.roleModel = {};
|
|
31
|
+
this.projecUserMappings = [];
|
|
31
32
|
}
|
|
32
33
|
getRelationConfigs() {
|
|
33
34
|
return this.constructor.prototype.constructor.relationConfigs || [];
|
|
@@ -43,6 +44,9 @@ class UserEntityModel extends base_entity_model_1.BaseEntityModel {
|
|
|
43
44
|
hasPermission(permissionName) {
|
|
44
45
|
return this.roleEntityModel.rolePermissionEntityModels.some((model) => { var _a; return ((_a = model.permission) === null || _a === void 0 ? void 0 : _a.name) === permissionName; });
|
|
45
46
|
}
|
|
47
|
+
get projects() {
|
|
48
|
+
return this.projecUserMappings.map((mapping) => mapping.project).filter((project) => !!project);
|
|
49
|
+
}
|
|
46
50
|
}
|
|
47
51
|
exports.UserEntityModel = UserEntityModel;
|
|
48
52
|
UserEntityModel.relationConfigs = [
|
|
@@ -55,4 +59,13 @@ UserEntityModel.relationConfigs = [
|
|
|
55
59
|
key: "role",
|
|
56
60
|
},
|
|
57
61
|
},
|
|
62
|
+
{
|
|
63
|
+
name: entity_utils_interface_1.EntityEnum.PROJECT_USER_MAPPING,
|
|
64
|
+
relation: relation_type_enum_1.RelationType.MANY,
|
|
65
|
+
key: "projecUserMappings",
|
|
66
|
+
mapKeyConfig: {
|
|
67
|
+
relationKey: "userId",
|
|
68
|
+
key: "id",
|
|
69
|
+
},
|
|
70
|
+
},
|
|
58
71
|
];
|
|
@@ -249,13 +249,16 @@ class EntityActionFlowResolverV2 {
|
|
|
249
249
|
return [];
|
|
250
250
|
}
|
|
251
251
|
const actionConfig = (_b = (_a = entityFlowConfig[currentStatus]) === null || _a === void 0 ? void 0 : _a.actions) !== null && _b !== void 0 ? _b : {};
|
|
252
|
+
console.log("Available actions for status", currentStatus, Object.keys(actionConfig));
|
|
252
253
|
return EntityActionFlowResolverV2._getPermittedActions(actionConfig, userPermissions, data);
|
|
253
254
|
}
|
|
254
255
|
static _getPermittedActions(actionConfig, userPermissions, data) {
|
|
256
|
+
console.log("Checking permitted actions with user permissions", userPermissions);
|
|
255
257
|
return Object.entries(actionConfig)
|
|
256
258
|
.filter(([actionKey, config]) => {
|
|
257
259
|
var _a;
|
|
258
260
|
const actionRequiredPermissions = (_a = config === null || config === void 0 ? void 0 : config.permissions) !== null && _a !== void 0 ? _a : [];
|
|
261
|
+
console.log(`Checking action ${actionKey} with required permissions ${actionRequiredPermissions.join(", ")} against user permissions`);
|
|
259
262
|
const matchingPermissions = actionRequiredPermissions.filter((permission) => userPermissions.includes(permission));
|
|
260
263
|
if (matchingPermissions.length > 1) {
|
|
261
264
|
throw new Error(`Multiple permissions found for action ${actionKey}: ${matchingPermissions.join(", ")}`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "law-common",
|
|
3
|
-
"version": "10.75.
|
|
3
|
+
"version": "10.75.1-beta.10",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
"test": "jest",
|
|
18
18
|
"format": "prettier --write .",
|
|
19
19
|
"check-format": "prettier --check .",
|
|
20
|
-
"pull:link": "git pull && npm run link"
|
|
20
|
+
"pull:link": "git pull && npm run link",
|
|
21
|
+
"check-version": "npm view law-common versions --json | jq -r '.[-1]'"
|
|
21
22
|
},
|
|
22
23
|
"keywords": [],
|
|
23
24
|
"author": "",
|