law-common 13.0.3-beta.3 → 13.0.3-beta.4

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.
@@ -0,0 +1,8 @@
1
+ export declare enum ClientAffiliateActionEnum {
2
+ CREATE = "CREATE",
3
+ UPDATE = "UPDATE",
4
+ DELETE = "DELETE",
5
+ DEACTIVATE = "DEACTIVATE",
6
+ ACTIVATE = "ACTIVATE",
7
+ RESTORE = "RESTORE"
8
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClientAffiliateActionEnum = void 0;
4
+ var ClientAffiliateActionEnum;
5
+ (function (ClientAffiliateActionEnum) {
6
+ ClientAffiliateActionEnum["CREATE"] = "CREATE";
7
+ ClientAffiliateActionEnum["UPDATE"] = "UPDATE";
8
+ ClientAffiliateActionEnum["DELETE"] = "DELETE";
9
+ ClientAffiliateActionEnum["DEACTIVATE"] = "DEACTIVATE";
10
+ ClientAffiliateActionEnum["ACTIVATE"] = "ACTIVATE";
11
+ ClientAffiliateActionEnum["RESTORE"] = "RESTORE";
12
+ // APPROVE = "APPROVE",
13
+ // REJECT = "REJECT",
14
+ // RECALL = "RECALL",
15
+ // REQUEST_CHANGES = "REQUEST_CHANGES",
16
+ // CHANGES_DONE = "CHANGES_DONE",
17
+ })(ClientAffiliateActionEnum || (exports.ClientAffiliateActionEnum = ClientAffiliateActionEnum = {}));
@@ -0,0 +1,8 @@
1
+ export declare enum IntermediaryBankActionEnum {
2
+ CREATE = "CREATE",
3
+ UPDATE = "UPDATE",
4
+ DELETE = "DELETE",
5
+ DEACTIVATE = "DEACTIVATE",
6
+ ACTIVATE = "ACTIVATE",
7
+ RESTORE = "RESTORE"
8
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IntermediaryBankActionEnum = void 0;
4
+ var IntermediaryBankActionEnum;
5
+ (function (IntermediaryBankActionEnum) {
6
+ IntermediaryBankActionEnum["CREATE"] = "CREATE";
7
+ IntermediaryBankActionEnum["UPDATE"] = "UPDATE";
8
+ IntermediaryBankActionEnum["DELETE"] = "DELETE";
9
+ IntermediaryBankActionEnum["DEACTIVATE"] = "DEACTIVATE";
10
+ IntermediaryBankActionEnum["ACTIVATE"] = "ACTIVATE";
11
+ IntermediaryBankActionEnum["RESTORE"] = "RESTORE";
12
+ // APPROVE = "APPROVE",
13
+ // REJECT = "REJECT",
14
+ // RECALL = "RECALL",
15
+ // REQUEST_CHANGES = "REQUEST_CHANGES",
16
+ // CHANGES_DONE = "CHANGES_DONE",
17
+ })(IntermediaryBankActionEnum || (exports.IntermediaryBankActionEnum = IntermediaryBankActionEnum = {}));
@@ -0,0 +1,8 @@
1
+ export declare enum ToDoListActionEnum {
2
+ CREATE = "CREATE",
3
+ UPDATE = "UPDATE",
4
+ DELETE = "DELETE",
5
+ DEACTIVATE = "DEACTIVATE",
6
+ ACTIVATE = "ACTIVATE",
7
+ RESTORE = "RESTORE"
8
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ToDoListActionEnum = void 0;
4
+ var ToDoListActionEnum;
5
+ (function (ToDoListActionEnum) {
6
+ ToDoListActionEnum["CREATE"] = "CREATE";
7
+ ToDoListActionEnum["UPDATE"] = "UPDATE";
8
+ ToDoListActionEnum["DELETE"] = "DELETE";
9
+ ToDoListActionEnum["DEACTIVATE"] = "DEACTIVATE";
10
+ ToDoListActionEnum["ACTIVATE"] = "ACTIVATE";
11
+ ToDoListActionEnum["RESTORE"] = "RESTORE";
12
+ // APPROVE = "APPROVE",
13
+ // REJECT = "REJECT",
14
+ // RECALL = "RECALL",
15
+ // REQUEST_CHANGES = "REQUEST_CHANGES",
16
+ // CHANGES_DONE = "CHANGES_DONE",
17
+ })(ToDoListActionEnum || (exports.ToDoListActionEnum = ToDoListActionEnum = {}));
@@ -0,0 +1,6 @@
1
+ import { FlowConfig } from "./flow-config.type";
2
+ import { ClientAffiliateActionEnum } from "../enums/client_affiliate_action_enum";
3
+ import { ClientAffiliateStatusEnum } from "../enums/client_affiliate_status_enum";
4
+ export interface IClientAffiliateFlowConfigContextData {
5
+ }
6
+ export declare const clientAffiliateFlowConfig: FlowConfig<ClientAffiliateStatusEnum, ClientAffiliateActionEnum, IClientAffiliateFlowConfigContextData>;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clientAffiliateFlowConfig = void 0;
4
+ const base_flow_config_factory_1 = require("./base-flow-config.factory");
5
+ const client_affiliate_action_enum_1 = require("../enums/client_affiliate_action_enum");
6
+ const client_affiliate_status_enum_1 = require("../enums/client_affiliate_status_enum");
7
+ const CLIENT_AFFILIATE_CREATE_PERMISSION = ["CLIENT_AFFILIATE_CREATE"];
8
+ const CLIENT_AFFILIATE_UPDATE_PERMISSION = ["CLIENT_AFFILIATE_UPDATE"];
9
+ const CLIENT_AFFILIATE_DELETE_PERMISSION = ["CLIENT_AFFILIATE_DELETE"];
10
+ const CLIENT_AFFILIATE_DEACTIVATE_PERMISSION = ["CLIENT_AFFILIATE_DEACTIVATE"];
11
+ const CLIENT_AFFILIATE_ACTIVATE_PERMISSION = ["CLIENT_AFFILIATE_ACTIVATE"];
12
+ const CLIENT_AFFILIATE_RESTORE_PERMISSION = ["CLIENT_AFFILIATE_RESTORE"];
13
+ const ACTION_MAP = {
14
+ [client_affiliate_action_enum_1.ClientAffiliateActionEnum.CREATE]: {
15
+ reachableStatues: [client_affiliate_status_enum_1.ClientAffiliateStatusEnum.APPROVED],
16
+ permissions: CLIENT_AFFILIATE_CREATE_PERMISSION,
17
+ },
18
+ [client_affiliate_action_enum_1.ClientAffiliateActionEnum.UPDATE]: {
19
+ reachableStatues: [client_affiliate_status_enum_1.ClientAffiliateStatusEnum.APPROVED],
20
+ permissions: CLIENT_AFFILIATE_UPDATE_PERMISSION,
21
+ },
22
+ [client_affiliate_action_enum_1.ClientAffiliateActionEnum.DELETE]: {
23
+ reachableStatues: [client_affiliate_status_enum_1.ClientAffiliateStatusEnum.DELETED],
24
+ permissions: CLIENT_AFFILIATE_DELETE_PERMISSION,
25
+ },
26
+ [client_affiliate_action_enum_1.ClientAffiliateActionEnum.DEACTIVATE]: {
27
+ reachableStatues: [client_affiliate_status_enum_1.ClientAffiliateStatusEnum.DEACTIVATED],
28
+ permissions: CLIENT_AFFILIATE_DEACTIVATE_PERMISSION,
29
+ },
30
+ [client_affiliate_action_enum_1.ClientAffiliateActionEnum.ACTIVATE]: {
31
+ reachableStatues: [client_affiliate_status_enum_1.ClientAffiliateStatusEnum.APPROVED],
32
+ permissions: CLIENT_AFFILIATE_ACTIVATE_PERMISSION,
33
+ },
34
+ [client_affiliate_action_enum_1.ClientAffiliateActionEnum.RESTORE]: {
35
+ reachableStatues: [client_affiliate_status_enum_1.ClientAffiliateStatusEnum.APPROVED],
36
+ permissions: CLIENT_AFFILIATE_RESTORE_PERMISSION,
37
+ },
38
+ };
39
+ const { createActionConfig } = (0, base_flow_config_factory_1.createFlowConfigFactory)()(ACTION_MAP);
40
+ // APPROVED status transitions
41
+ const transitionApprovedStatusUpdateAction = createActionConfig(client_affiliate_action_enum_1.ClientAffiliateActionEnum.UPDATE, client_affiliate_status_enum_1.ClientAffiliateStatusEnum.APPROVED);
42
+ const transitionApprovedStatusDeleteAction = createActionConfig(client_affiliate_action_enum_1.ClientAffiliateActionEnum.DELETE, client_affiliate_status_enum_1.ClientAffiliateStatusEnum.DELETED);
43
+ const transitionApprovedStatusDeactivateAction = createActionConfig(client_affiliate_action_enum_1.ClientAffiliateActionEnum.DEACTIVATE, client_affiliate_status_enum_1.ClientAffiliateStatusEnum.DEACTIVATED);
44
+ // DEACTIVATED status transitions
45
+ const transitionDeactivatedStatusDeleteAction = createActionConfig(client_affiliate_action_enum_1.ClientAffiliateActionEnum.DELETE, client_affiliate_status_enum_1.ClientAffiliateStatusEnum.DELETED);
46
+ const transitionDeactivatedStatusActivateAction = createActionConfig(client_affiliate_action_enum_1.ClientAffiliateActionEnum.ACTIVATE, client_affiliate_status_enum_1.ClientAffiliateStatusEnum.APPROVED);
47
+ // DELETED status transitions
48
+ const transitionDeletedStatusUpdateAction = createActionConfig(client_affiliate_action_enum_1.ClientAffiliateActionEnum.UPDATE, client_affiliate_status_enum_1.ClientAffiliateStatusEnum.APPROVED);
49
+ const transitionDeletedStatusRestoreAction = createActionConfig(client_affiliate_action_enum_1.ClientAffiliateActionEnum.RESTORE, client_affiliate_status_enum_1.ClientAffiliateStatusEnum.APPROVED);
50
+ exports.clientAffiliateFlowConfig = {
51
+ [client_affiliate_status_enum_1.ClientAffiliateStatusEnum.APPROVED]: {
52
+ actions: {
53
+ [client_affiliate_action_enum_1.ClientAffiliateActionEnum.UPDATE]: transitionApprovedStatusUpdateAction,
54
+ [client_affiliate_action_enum_1.ClientAffiliateActionEnum.DELETE]: transitionApprovedStatusDeleteAction,
55
+ [client_affiliate_action_enum_1.ClientAffiliateActionEnum.DEACTIVATE]: transitionApprovedStatusDeactivateAction,
56
+ },
57
+ },
58
+ [client_affiliate_status_enum_1.ClientAffiliateStatusEnum.DEACTIVATED]: {
59
+ actions: {
60
+ [client_affiliate_action_enum_1.ClientAffiliateActionEnum.DELETE]: transitionDeactivatedStatusDeleteAction,
61
+ [client_affiliate_action_enum_1.ClientAffiliateActionEnum.ACTIVATE]: transitionDeactivatedStatusActivateAction,
62
+ },
63
+ },
64
+ [client_affiliate_status_enum_1.ClientAffiliateStatusEnum.DELETED]: {
65
+ actions: {
66
+ [client_affiliate_action_enum_1.ClientAffiliateActionEnum.UPDATE]: transitionDeletedStatusUpdateAction,
67
+ [client_affiliate_action_enum_1.ClientAffiliateActionEnum.RESTORE]: transitionDeletedStatusRestoreAction,
68
+ },
69
+ },
70
+ };
@@ -0,0 +1,6 @@
1
+ import { FlowConfig } from "./flow-config.type";
2
+ import { IntermediaryBankActionEnum } from "../enums/intermediary_bank_action_enum";
3
+ import { IntermediaryBankStatusEnum } from "../enums/intermediary_bank_status_enum";
4
+ export interface IIntermediaryBankFlowConfigContextData {
5
+ }
6
+ export declare const intermediaryBankFlowConfig: FlowConfig<IntermediaryBankStatusEnum, IntermediaryBankActionEnum, IIntermediaryBankFlowConfigContextData>;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.intermediaryBankFlowConfig = void 0;
4
+ const base_flow_config_factory_1 = require("./base-flow-config.factory");
5
+ const intermediary_bank_action_enum_1 = require("../enums/intermediary_bank_action_enum");
6
+ const intermediary_bank_status_enum_1 = require("../enums/intermediary_bank_status_enum");
7
+ const INTERMEDIARY_BANK_CREATE_PERMISSION = ["INTERMEDIARY_BANK_CREATE"];
8
+ const INTERMEDIARY_BANK_UPDATE_PERMISSION = ["INTERMEDIARY_BANK_UPDATE"];
9
+ const INTERMEDIARY_BANK_DELETE_PERMISSION = ["INTERMEDIARY_BANK_DELETE"];
10
+ const INTERMEDIARY_BANK_DEACTIVATE_PERMISSION = ["INTERMEDIARY_BANK_DEACTIVATE"];
11
+ const INTERMEDIARY_BANK_ACTIVATE_PERMISSION = ["INTERMEDIARY_BANK_ACTIVATE"];
12
+ const INTERMEDIARY_BANK_RESTORE_PERMISSION = ["INTERMEDIARY_BANK_RESTORE"];
13
+ const ACTION_MAP = {
14
+ [intermediary_bank_action_enum_1.IntermediaryBankActionEnum.CREATE]: {
15
+ reachableStatues: [intermediary_bank_status_enum_1.IntermediaryBankStatusEnum.APPROVED],
16
+ permissions: INTERMEDIARY_BANK_CREATE_PERMISSION,
17
+ },
18
+ [intermediary_bank_action_enum_1.IntermediaryBankActionEnum.UPDATE]: {
19
+ reachableStatues: [intermediary_bank_status_enum_1.IntermediaryBankStatusEnum.APPROVED],
20
+ permissions: INTERMEDIARY_BANK_UPDATE_PERMISSION,
21
+ },
22
+ [intermediary_bank_action_enum_1.IntermediaryBankActionEnum.DELETE]: {
23
+ reachableStatues: [intermediary_bank_status_enum_1.IntermediaryBankStatusEnum.DELETED],
24
+ permissions: INTERMEDIARY_BANK_DELETE_PERMISSION,
25
+ },
26
+ [intermediary_bank_action_enum_1.IntermediaryBankActionEnum.DEACTIVATE]: {
27
+ reachableStatues: [intermediary_bank_status_enum_1.IntermediaryBankStatusEnum.DEACTIVATED],
28
+ permissions: INTERMEDIARY_BANK_DEACTIVATE_PERMISSION,
29
+ },
30
+ [intermediary_bank_action_enum_1.IntermediaryBankActionEnum.ACTIVATE]: {
31
+ reachableStatues: [intermediary_bank_status_enum_1.IntermediaryBankStatusEnum.APPROVED],
32
+ permissions: INTERMEDIARY_BANK_ACTIVATE_PERMISSION,
33
+ },
34
+ [intermediary_bank_action_enum_1.IntermediaryBankActionEnum.RESTORE]: {
35
+ reachableStatues: [intermediary_bank_status_enum_1.IntermediaryBankStatusEnum.APPROVED],
36
+ permissions: INTERMEDIARY_BANK_RESTORE_PERMISSION,
37
+ },
38
+ };
39
+ const { createActionConfig } = (0, base_flow_config_factory_1.createFlowConfigFactory)()(ACTION_MAP);
40
+ // APPROVED status transitions
41
+ const transitionApprovedStatusUpdateAction = createActionConfig(intermediary_bank_action_enum_1.IntermediaryBankActionEnum.UPDATE, intermediary_bank_status_enum_1.IntermediaryBankStatusEnum.APPROVED);
42
+ const transitionApprovedStatusDeleteAction = createActionConfig(intermediary_bank_action_enum_1.IntermediaryBankActionEnum.DELETE, intermediary_bank_status_enum_1.IntermediaryBankStatusEnum.DELETED);
43
+ const transitionApprovedStatusDeactivateAction = createActionConfig(intermediary_bank_action_enum_1.IntermediaryBankActionEnum.DEACTIVATE, intermediary_bank_status_enum_1.IntermediaryBankStatusEnum.DEACTIVATED);
44
+ // DEACTIVATED status transitions
45
+ const transitionDeactivatedStatusDeleteAction = createActionConfig(intermediary_bank_action_enum_1.IntermediaryBankActionEnum.DELETE, intermediary_bank_status_enum_1.IntermediaryBankStatusEnum.DELETED);
46
+ const transitionDeactivatedStatusActivateAction = createActionConfig(intermediary_bank_action_enum_1.IntermediaryBankActionEnum.ACTIVATE, intermediary_bank_status_enum_1.IntermediaryBankStatusEnum.APPROVED);
47
+ // DELETED status transitions
48
+ const transitionDeletedStatusUpdateAction = createActionConfig(intermediary_bank_action_enum_1.IntermediaryBankActionEnum.UPDATE, intermediary_bank_status_enum_1.IntermediaryBankStatusEnum.APPROVED);
49
+ const transitionDeletedStatusRestoreAction = createActionConfig(intermediary_bank_action_enum_1.IntermediaryBankActionEnum.RESTORE, intermediary_bank_status_enum_1.IntermediaryBankStatusEnum.APPROVED);
50
+ exports.intermediaryBankFlowConfig = {
51
+ [intermediary_bank_status_enum_1.IntermediaryBankStatusEnum.APPROVED]: {
52
+ actions: {
53
+ [intermediary_bank_action_enum_1.IntermediaryBankActionEnum.UPDATE]: transitionApprovedStatusUpdateAction,
54
+ [intermediary_bank_action_enum_1.IntermediaryBankActionEnum.DELETE]: transitionApprovedStatusDeleteAction,
55
+ [intermediary_bank_action_enum_1.IntermediaryBankActionEnum.DEACTIVATE]: transitionApprovedStatusDeactivateAction,
56
+ },
57
+ },
58
+ [intermediary_bank_status_enum_1.IntermediaryBankStatusEnum.DEACTIVATED]: {
59
+ actions: {
60
+ [intermediary_bank_action_enum_1.IntermediaryBankActionEnum.DELETE]: transitionDeactivatedStatusDeleteAction,
61
+ [intermediary_bank_action_enum_1.IntermediaryBankActionEnum.ACTIVATE]: transitionDeactivatedStatusActivateAction,
62
+ },
63
+ },
64
+ [intermediary_bank_status_enum_1.IntermediaryBankStatusEnum.DELETED]: {
65
+ actions: {
66
+ [intermediary_bank_action_enum_1.IntermediaryBankActionEnum.UPDATE]: transitionDeletedStatusUpdateAction,
67
+ [intermediary_bank_action_enum_1.IntermediaryBankActionEnum.RESTORE]: transitionDeletedStatusRestoreAction,
68
+ },
69
+ },
70
+ };
@@ -0,0 +1,6 @@
1
+ import { FlowConfig } from "./flow-config.type";
2
+ import { ToDoListActionEnum } from "../enums/to_do_list_action_enum";
3
+ import { ToDoListStatusEnum } from "../enums/to_do_list_status_enum";
4
+ export interface IToDoListFlowConfigContextData {
5
+ }
6
+ export declare const toDoListFlowConfig: FlowConfig<ToDoListStatusEnum, ToDoListActionEnum, IToDoListFlowConfigContextData>;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toDoListFlowConfig = void 0;
4
+ const base_flow_config_factory_1 = require("./base-flow-config.factory");
5
+ const to_do_list_action_enum_1 = require("../enums/to_do_list_action_enum");
6
+ const to_do_list_status_enum_1 = require("../enums/to_do_list_status_enum");
7
+ /**
8
+ * to_do_list is the one entity in this set whose CRUD authority is scoped rather than flat. Its
9
+ * endpoints gate on three names per action - ORG, PROJECT and SELF - and the permission arrays below
10
+ * mirror `to-do-list.controller.ts` exactly, so the flow config and the endpoint guards agree:
11
+ *
12
+ * @Post() TO_DO_LIST_CREATE_ORG, _CREATE_PROJECT, _CREATE_SELF
13
+ * @Patch(":id") TO_DO_LIST_UPDATE_ORG, _UPDATE_PROJECT, _UPDATE_SELF
14
+ * @Delete(":id") TO_DO_LIST_DELETE_ORG, _DELETE_PROJECT
15
+ *
16
+ * DELETE carries only two: TO_DO_LIST_DELETE_SELF has never been seeded, so a user whose only
17
+ * to-do-list authority is over their own rows cannot delete. That matches today's behaviour and is
18
+ * preserved rather than fixed here.
19
+ *
20
+ * DEACTIVATE / ACTIVATE / RESTORE are unscoped - LW-826 seeded them flat - so those keep single-name
21
+ * arrays. Mixing the two shapes in one config is deliberate: each action names the rows that exist.
22
+ *
23
+ * The arrays are read with `.some()` by `getNextStatus`, which is the right semantics - holding any
24
+ * one of the scoped names authorises the action, and the service still narrows *which rows* via its
25
+ * own permissionToFilterMap. Note that `EntityActionFlowResolverV2._getPermittedActions` instead
26
+ * throws when a user matches more than one name for an action, so `getAvailableActions` is not usable
27
+ * for this entity until that is addressed - see the LW-827 comment for this entity.
28
+ */
29
+ const TO_DO_LIST_CREATE_PERMISSION = ["TO_DO_LIST_CREATE_ORG", "TO_DO_LIST_CREATE_PROJECT", "TO_DO_LIST_CREATE_SELF"];
30
+ const TO_DO_LIST_UPDATE_PERMISSION = ["TO_DO_LIST_UPDATE_ORG", "TO_DO_LIST_UPDATE_PROJECT", "TO_DO_LIST_UPDATE_SELF"];
31
+ const TO_DO_LIST_DELETE_PERMISSION = ["TO_DO_LIST_DELETE_ORG", "TO_DO_LIST_DELETE_PROJECT"];
32
+ const TO_DO_LIST_DEACTIVATE_PERMISSION = ["TO_DO_LIST_DEACTIVATE"];
33
+ const TO_DO_LIST_ACTIVATE_PERMISSION = ["TO_DO_LIST_ACTIVATE"];
34
+ const TO_DO_LIST_RESTORE_PERMISSION = ["TO_DO_LIST_RESTORE"];
35
+ const ACTION_MAP = {
36
+ [to_do_list_action_enum_1.ToDoListActionEnum.CREATE]: {
37
+ reachableStatues: [to_do_list_status_enum_1.ToDoListStatusEnum.APPROVED],
38
+ permissions: TO_DO_LIST_CREATE_PERMISSION,
39
+ },
40
+ [to_do_list_action_enum_1.ToDoListActionEnum.UPDATE]: {
41
+ reachableStatues: [to_do_list_status_enum_1.ToDoListStatusEnum.APPROVED],
42
+ permissions: TO_DO_LIST_UPDATE_PERMISSION,
43
+ },
44
+ [to_do_list_action_enum_1.ToDoListActionEnum.DELETE]: {
45
+ reachableStatues: [to_do_list_status_enum_1.ToDoListStatusEnum.DELETED],
46
+ permissions: TO_DO_LIST_DELETE_PERMISSION,
47
+ },
48
+ [to_do_list_action_enum_1.ToDoListActionEnum.DEACTIVATE]: {
49
+ reachableStatues: [to_do_list_status_enum_1.ToDoListStatusEnum.DEACTIVATED],
50
+ permissions: TO_DO_LIST_DEACTIVATE_PERMISSION,
51
+ },
52
+ [to_do_list_action_enum_1.ToDoListActionEnum.ACTIVATE]: {
53
+ reachableStatues: [to_do_list_status_enum_1.ToDoListStatusEnum.APPROVED],
54
+ permissions: TO_DO_LIST_ACTIVATE_PERMISSION,
55
+ },
56
+ [to_do_list_action_enum_1.ToDoListActionEnum.RESTORE]: {
57
+ reachableStatues: [to_do_list_status_enum_1.ToDoListStatusEnum.APPROVED],
58
+ permissions: TO_DO_LIST_RESTORE_PERMISSION,
59
+ },
60
+ };
61
+ const { createActionConfig } = (0, base_flow_config_factory_1.createFlowConfigFactory)()(ACTION_MAP);
62
+ // APPROVED status transitions
63
+ const transitionApprovedStatusUpdateAction = createActionConfig(to_do_list_action_enum_1.ToDoListActionEnum.UPDATE, to_do_list_status_enum_1.ToDoListStatusEnum.APPROVED);
64
+ const transitionApprovedStatusDeleteAction = createActionConfig(to_do_list_action_enum_1.ToDoListActionEnum.DELETE, to_do_list_status_enum_1.ToDoListStatusEnum.DELETED);
65
+ const transitionApprovedStatusDeactivateAction = createActionConfig(to_do_list_action_enum_1.ToDoListActionEnum.DEACTIVATE, to_do_list_status_enum_1.ToDoListStatusEnum.DEACTIVATED);
66
+ // DEACTIVATED status transitions
67
+ const transitionDeactivatedStatusDeleteAction = createActionConfig(to_do_list_action_enum_1.ToDoListActionEnum.DELETE, to_do_list_status_enum_1.ToDoListStatusEnum.DELETED);
68
+ const transitionDeactivatedStatusActivateAction = createActionConfig(to_do_list_action_enum_1.ToDoListActionEnum.ACTIVATE, to_do_list_status_enum_1.ToDoListStatusEnum.APPROVED);
69
+ // DELETED status transitions
70
+ const transitionDeletedStatusUpdateAction = createActionConfig(to_do_list_action_enum_1.ToDoListActionEnum.UPDATE, to_do_list_status_enum_1.ToDoListStatusEnum.APPROVED);
71
+ const transitionDeletedStatusRestoreAction = createActionConfig(to_do_list_action_enum_1.ToDoListActionEnum.RESTORE, to_do_list_status_enum_1.ToDoListStatusEnum.APPROVED);
72
+ exports.toDoListFlowConfig = {
73
+ [to_do_list_status_enum_1.ToDoListStatusEnum.APPROVED]: {
74
+ actions: {
75
+ [to_do_list_action_enum_1.ToDoListActionEnum.UPDATE]: transitionApprovedStatusUpdateAction,
76
+ [to_do_list_action_enum_1.ToDoListActionEnum.DELETE]: transitionApprovedStatusDeleteAction,
77
+ [to_do_list_action_enum_1.ToDoListActionEnum.DEACTIVATE]: transitionApprovedStatusDeactivateAction,
78
+ },
79
+ },
80
+ [to_do_list_status_enum_1.ToDoListStatusEnum.DEACTIVATED]: {
81
+ actions: {
82
+ [to_do_list_action_enum_1.ToDoListActionEnum.DELETE]: transitionDeactivatedStatusDeleteAction,
83
+ [to_do_list_action_enum_1.ToDoListActionEnum.ACTIVATE]: transitionDeactivatedStatusActivateAction,
84
+ },
85
+ },
86
+ [to_do_list_status_enum_1.ToDoListStatusEnum.DELETED]: {
87
+ actions: {
88
+ [to_do_list_action_enum_1.ToDoListActionEnum.UPDATE]: transitionDeletedStatusUpdateAction,
89
+ [to_do_list_action_enum_1.ToDoListActionEnum.RESTORE]: transitionDeletedStatusRestoreAction,
90
+ },
91
+ },
92
+ };
@@ -64,7 +64,9 @@ export * from "./interface/office_location.entity.interface";
64
64
  export * from "./interface/field-constraint/office_location_field_constraints.interface";
65
65
  export * from "./interface/bank.entity.interface";
66
66
  export * from "./interface/field-constraint/bank_field_constraints.interface";
67
+ export * from "./enums/client_affiliate_action_enum";
67
68
  export * from "./enums/client_affiliate_status_enum";
69
+ export * from "./flow-configs/client_affiliate_flow.config";
68
70
  export * from "./interface/client_affiliate.entity.interface";
69
71
  export * from "./interface/field-constraint/client_affiliate_field_constraints.interface";
70
72
  export * from "./interface/permission.entity.interface";
@@ -112,7 +114,9 @@ export * from "./interface/country.entity.interface";
112
114
  export * from "./enums/billing_invoice_type_enum";
113
115
  export * from "./interface/billing_timesheet.entity.interface";
114
116
  export * from "./interface/field-constraint/billing_timesheet_field_constraints.interface";
117
+ export * from "./enums/intermediary_bank_action_enum";
115
118
  export * from "./enums/intermediary_bank_status_enum";
119
+ export * from "./flow-configs/intermediary_bank_flow.config";
116
120
  export * from "./interface/intermediary_bank.entity.interface";
117
121
  export * from "./interface/field-constraint/intermediary_bank_field_constraints.interface";
118
122
  export * from "./interface/address_book.entity.interface";
@@ -134,7 +138,9 @@ export * from "./enums/cron_jobs_status_enum";
134
138
  export * from "./enums/timezone.enum";
135
139
  export * from "./interface/cron_jobs.entity.interface";
136
140
  export * from "./interface/field-constraint/cron_jobs_field_constraints.interface";
141
+ export * from "./enums/to_do_list_action_enum";
137
142
  export * from "./enums/to_do_list_status_enum";
143
+ export * from "./flow-configs/to_do_list_flow.config";
138
144
  export * from "./interface/to_do_list.entity.interface";
139
145
  export * from "./interface/field-constraint/to_do_list_field_constraints.interface";
140
146
  export * from "./model/configuration.entity.model";
@@ -80,7 +80,9 @@ __exportStar(require("./interface/office_location.entity.interface"), exports);
80
80
  __exportStar(require("./interface/field-constraint/office_location_field_constraints.interface"), exports);
81
81
  __exportStar(require("./interface/bank.entity.interface"), exports);
82
82
  __exportStar(require("./interface/field-constraint/bank_field_constraints.interface"), exports);
83
+ __exportStar(require("./enums/client_affiliate_action_enum"), exports);
83
84
  __exportStar(require("./enums/client_affiliate_status_enum"), exports);
85
+ __exportStar(require("./flow-configs/client_affiliate_flow.config"), exports);
84
86
  __exportStar(require("./interface/client_affiliate.entity.interface"), exports);
85
87
  __exportStar(require("./interface/field-constraint/client_affiliate_field_constraints.interface"), exports);
86
88
  __exportStar(require("./interface/permission.entity.interface"), exports);
@@ -128,7 +130,9 @@ __exportStar(require("./interface/country.entity.interface"), exports);
128
130
  __exportStar(require("./enums/billing_invoice_type_enum"), exports);
129
131
  __exportStar(require("./interface/billing_timesheet.entity.interface"), exports);
130
132
  __exportStar(require("./interface/field-constraint/billing_timesheet_field_constraints.interface"), exports);
133
+ __exportStar(require("./enums/intermediary_bank_action_enum"), exports);
131
134
  __exportStar(require("./enums/intermediary_bank_status_enum"), exports);
135
+ __exportStar(require("./flow-configs/intermediary_bank_flow.config"), exports);
132
136
  __exportStar(require("./interface/intermediary_bank.entity.interface"), exports);
133
137
  __exportStar(require("./interface/field-constraint/intermediary_bank_field_constraints.interface"), exports);
134
138
  __exportStar(require("./interface/address_book.entity.interface"), exports);
@@ -150,7 +154,9 @@ __exportStar(require("./enums/cron_jobs_status_enum"), exports);
150
154
  __exportStar(require("./enums/timezone.enum"), exports);
151
155
  __exportStar(require("./interface/cron_jobs.entity.interface"), exports);
152
156
  __exportStar(require("./interface/field-constraint/cron_jobs_field_constraints.interface"), exports);
157
+ __exportStar(require("./enums/to_do_list_action_enum"), exports);
153
158
  __exportStar(require("./enums/to_do_list_status_enum"), exports);
159
+ __exportStar(require("./flow-configs/to_do_list_flow.config"), exports);
154
160
  __exportStar(require("./interface/to_do_list.entity.interface"), exports);
155
161
  __exportStar(require("./interface/field-constraint/to_do_list_field_constraints.interface"), exports);
156
162
  __exportStar(require("./model/configuration.entity.model"), exports);
@@ -1,3 +1,8 @@
1
+ import { ClientAffiliateActionEnum } from "../enums/client_affiliate_action_enum";
2
+ import { IClientAffiliateFlowConfigContextData } from "../flow-configs/client_affiliate_flow.config";
3
+ import { IUserEntity } from "../interface/user.entity.interface";
4
+ import { IRowActions } from "./interface/row-actions.interface";
5
+ import { UserEntityModel } from "./user.entity.model";
1
6
  import { ClientAffiliateStatusEnum, EntityEnum, IClientAffiliateEntity, Nullable } from "../../entities";
2
7
  import { IDtoValidationError, Result } from "../../misc";
3
8
  import { DeleteDocumentDetails, DocumentFields } from "../../utils";
@@ -39,4 +44,15 @@ export declare class ClientAffiliateEntityModel extends BaseEntityModel<EntityEn
39
44
  static isValidTan(tanNumber: string | null): boolean;
40
45
  static validateDocumentNoDocumentFile(data: DocumentFields<typeof ClientAffiliateEntityModel.CLIENT_AFFILIATE_ENTITY_DOCUMENT_TYPES>, deleteDetails?: DeleteDocumentDetails<typeof ClientAffiliateEntityModel.CLIENT_AFFILIATE_ENTITY_DOCUMENT_TYPES>): Result<void, IDtoValidationError[]>;
41
46
  get debitNoteAddress(): string;
47
+ getNextStatus(currentUser: IUserEntity, action: ClientAffiliateActionEnum, clientAffiliateFlowConfigContextData: IClientAffiliateFlowConfigContextData): ClientAffiliateStatusEnum;
48
+ getAvailableActions(currentUser: UserEntityModel, config?: {
49
+ combinedActions?: Record<string, {
50
+ combineActions: ClientAffiliateActionEnum[];
51
+ label: string;
52
+ }>;
53
+ customLabels?: Partial<Record<ClientAffiliateActionEnum, string>>;
54
+ }): IRowActions<EntityEnum.CLIENT_AFFILIATE>[];
55
+ getUpdateActionVisibility(currentUser: UserEntityModel): {
56
+ [key: string]: () => boolean;
57
+ };
42
58
  }
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ClientAffiliateEntityModel = void 0;
4
- const entities_1 = require("../../entities");
4
+ const error_key_enum_1 = require("../../enums/error.key.enum");
5
+ const exceptions_1 = require("../../exceptions");
5
6
  const utils_1 = require("../../utils");
7
+ const client_affiliate_flow_config_1 = require("../flow-configs/client_affiliate_flow.config");
8
+ const entities_1 = require("../../entities");
9
+ const utils_2 = require("../../utils");
6
10
  const base_entity_model_1 = require("./base.entity.model");
7
11
  class ClientAffiliateEntityModel extends base_entity_model_1.BaseEntityModel {
8
12
  constructor() {
@@ -65,20 +69,78 @@ class ClientAffiliateEntityModel extends base_entity_model_1.BaseEntityModel {
65
69
  return result;
66
70
  }
67
71
  static isValidGST(gstNumber) {
68
- return gstNumber ? utils_1.CodeValidatorUtil.isValidGST(gstNumber) : true;
72
+ return gstNumber ? utils_2.CodeValidatorUtil.isValidGST(gstNumber) : true;
69
73
  }
70
74
  static isValidPan(panNumber) {
71
- return panNumber ? utils_1.CodeValidatorUtil.isValidPAN(panNumber) : true;
75
+ return panNumber ? utils_2.CodeValidatorUtil.isValidPAN(panNumber) : true;
72
76
  }
73
77
  static isValidTan(tanNumber) {
74
- return tanNumber ? utils_1.CodeValidatorUtil.isValidTAN(tanNumber) : true;
78
+ return tanNumber ? utils_2.CodeValidatorUtil.isValidTAN(tanNumber) : true;
75
79
  }
76
80
  static validateDocumentNoDocumentFile(data, deleteDetails) {
77
- return (0, utils_1.validateDocumentPairs)(ClientAffiliateEntityModel.CLIENT_AFFILIATE_ENTITY_DOCUMENT_TYPES, data, deleteDetails);
81
+ return (0, utils_2.validateDocumentPairs)(ClientAffiliateEntityModel.CLIENT_AFFILIATE_ENTITY_DOCUMENT_TYPES, data, deleteDetails);
78
82
  }
79
83
  get debitNoteAddress() {
80
84
  return `${this.addressLineOne || ""}, ${this.addressLineTwo || ""}, ${this.city || ""}, ${this.country || ""}, ${this.zipCode || ""}`;
81
85
  }
86
+ getNextStatus(currentUser, action, clientAffiliateFlowConfigContextData) {
87
+ if (!this.status) {
88
+ throw new exceptions_1.AppBadRequestException({
89
+ key: error_key_enum_1.ErrorKeyEnum.STATUS,
90
+ message: [`Status not found: ${this.status}`],
91
+ });
92
+ }
93
+ const flowForStatus = client_affiliate_flow_config_1.clientAffiliateFlowConfig[this.status];
94
+ if (!flowForStatus) {
95
+ throw new exceptions_1.AppBadRequestException({
96
+ key: error_key_enum_1.ErrorKeyEnum.STATUS,
97
+ message: [`No flow configuration found for status: ${this.status}`],
98
+ });
99
+ }
100
+ if (!action) {
101
+ throw new exceptions_1.AppBadRequestException({
102
+ key: error_key_enum_1.ErrorKeyEnum.ACTION_DATA,
103
+ message: ["actionData is required"],
104
+ });
105
+ }
106
+ const matchingPermissionConfig = flowForStatus.actions[action];
107
+ if (!matchingPermissionConfig) {
108
+ throw new exceptions_1.AppBadRequestException({
109
+ key: error_key_enum_1.ErrorKeyEnum.ACTION,
110
+ message: [`Action '${action}' is not valid for the current status.`],
111
+ });
112
+ }
113
+ if (!currentUser.permissions || currentUser.permissions.length === 0) {
114
+ throw new exceptions_1.AppBadRequestException({
115
+ key: error_key_enum_1.ErrorKeyEnum.PERMISSIONS,
116
+ message: ["Permission not available for currentUser"],
117
+ });
118
+ }
119
+ const hasPermission = matchingPermissionConfig.permissions.some((permission) => currentUser.permissions.includes(permission));
120
+ if (!hasPermission) {
121
+ throw new exceptions_1.AppBadRequestException({
122
+ key: error_key_enum_1.ErrorKeyEnum.PERMISSION,
123
+ message: [`Current user does not have permission to ${action} client affiliate`],
124
+ });
125
+ }
126
+ const nextStatus = matchingPermissionConfig.next(clientAffiliateFlowConfigContextData);
127
+ return nextStatus;
128
+ }
129
+ getAvailableActions(currentUser, config) {
130
+ var _a;
131
+ const params = {
132
+ flowConfig: client_affiliate_flow_config_1.clientAffiliateFlowConfig,
133
+ currentStatus: this.status,
134
+ userPermissions: (_a = currentUser.permissions) !== null && _a !== void 0 ? _a : [],
135
+ visibilityData: this.getUpdateActionVisibility.bind(this, currentUser),
136
+ combinedActions: config === null || config === void 0 ? void 0 : config.combinedActions,
137
+ customLabels: config === null || config === void 0 ? void 0 : config.customLabels,
138
+ };
139
+ return utils_1.EntityActionFlowResolverV2.getAvailableActionsData(params);
140
+ }
141
+ getUpdateActionVisibility(currentUser) {
142
+ return {};
143
+ }
82
144
  }
83
145
  exports.ClientAffiliateEntityModel = ClientAffiliateEntityModel;
84
146
  ClientAffiliateEntityModel.CLIENT_AFFILIATE_ENTITY_DOCUMENT_TYPES = ["pan", "tan", "gst"];
@@ -1,3 +1,8 @@
1
+ import { IntermediaryBankActionEnum } from "../enums/intermediary_bank_action_enum";
2
+ import { IIntermediaryBankFlowConfigContextData } from "../flow-configs/intermediary_bank_flow.config";
3
+ import { IUserEntity } from "../interface/user.entity.interface";
4
+ import { IRowActions } from "./interface/row-actions.interface";
5
+ import { UserEntityModel } from "./user.entity.model";
1
6
  import { CurrencyEnum } from "../../enums";
2
7
  import { IntermediaryBankStatusEnum } from "../enums/intermediary_bank_status_enum";
3
8
  import { EntityEnum } from "../interface/entity.utils.interface";
@@ -19,4 +24,15 @@ export declare class IntermediaryBankEntityModel extends BaseEntityModel<EntityE
19
24
  constructor();
20
25
  getRelationConfigs(): any[];
21
26
  static fromEntity(entity: IIntermediaryBankEntity): IntermediaryBankEntityModel;
27
+ getNextStatus(currentUser: IUserEntity, action: IntermediaryBankActionEnum, intermediaryBankFlowConfigContextData: IIntermediaryBankFlowConfigContextData): IntermediaryBankStatusEnum;
28
+ getAvailableActions(currentUser: UserEntityModel, config?: {
29
+ combinedActions?: Record<string, {
30
+ combineActions: IntermediaryBankActionEnum[];
31
+ label: string;
32
+ }>;
33
+ customLabels?: Partial<Record<IntermediaryBankActionEnum, string>>;
34
+ }): IRowActions<EntityEnum.INTERMEDIARY_BANK>[];
35
+ getUpdateActionVisibility(currentUser: UserEntityModel): {
36
+ [key: string]: () => boolean;
37
+ };
22
38
  }
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IntermediaryBankEntityModel = void 0;
4
+ const error_key_enum_1 = require("../../enums/error.key.enum");
5
+ const exceptions_1 = require("../../exceptions");
6
+ const utils_1 = require("../../utils");
7
+ const intermediary_bank_flow_config_1 = require("../flow-configs/intermediary_bank_flow.config");
4
8
  const enums_1 = require("../../enums");
5
9
  const intermediary_bank_status_enum_1 = require("../enums/intermediary_bank_status_enum");
6
10
  const entity_utils_interface_1 = require("../interface/entity.utils.interface");
@@ -29,5 +33,63 @@ class IntermediaryBankEntityModel extends base_entity_model_1.BaseEntityModel {
29
33
  Object.assign(model, entity);
30
34
  return model;
31
35
  }
36
+ getNextStatus(currentUser, action, intermediaryBankFlowConfigContextData) {
37
+ if (!this.status) {
38
+ throw new exceptions_1.AppBadRequestException({
39
+ key: error_key_enum_1.ErrorKeyEnum.STATUS,
40
+ message: [`Status not found: ${this.status}`],
41
+ });
42
+ }
43
+ const flowForStatus = intermediary_bank_flow_config_1.intermediaryBankFlowConfig[this.status];
44
+ if (!flowForStatus) {
45
+ throw new exceptions_1.AppBadRequestException({
46
+ key: error_key_enum_1.ErrorKeyEnum.STATUS,
47
+ message: [`No flow configuration found for status: ${this.status}`],
48
+ });
49
+ }
50
+ if (!action) {
51
+ throw new exceptions_1.AppBadRequestException({
52
+ key: error_key_enum_1.ErrorKeyEnum.ACTION_DATA,
53
+ message: ["actionData is required"],
54
+ });
55
+ }
56
+ const matchingPermissionConfig = flowForStatus.actions[action];
57
+ if (!matchingPermissionConfig) {
58
+ throw new exceptions_1.AppBadRequestException({
59
+ key: error_key_enum_1.ErrorKeyEnum.ACTION,
60
+ message: [`Action '${action}' is not valid for the current status.`],
61
+ });
62
+ }
63
+ if (!currentUser.permissions || currentUser.permissions.length === 0) {
64
+ throw new exceptions_1.AppBadRequestException({
65
+ key: error_key_enum_1.ErrorKeyEnum.PERMISSIONS,
66
+ message: ["Permission not available for currentUser"],
67
+ });
68
+ }
69
+ const hasPermission = matchingPermissionConfig.permissions.some((permission) => currentUser.permissions.includes(permission));
70
+ if (!hasPermission) {
71
+ throw new exceptions_1.AppBadRequestException({
72
+ key: error_key_enum_1.ErrorKeyEnum.PERMISSION,
73
+ message: [`Current user does not have permission to ${action} intermediary bank`],
74
+ });
75
+ }
76
+ const nextStatus = matchingPermissionConfig.next(intermediaryBankFlowConfigContextData);
77
+ return nextStatus;
78
+ }
79
+ getAvailableActions(currentUser, config) {
80
+ var _a;
81
+ const params = {
82
+ flowConfig: intermediary_bank_flow_config_1.intermediaryBankFlowConfig,
83
+ currentStatus: this.status,
84
+ userPermissions: (_a = currentUser.permissions) !== null && _a !== void 0 ? _a : [],
85
+ visibilityData: this.getUpdateActionVisibility.bind(this, currentUser),
86
+ combinedActions: config === null || config === void 0 ? void 0 : config.combinedActions,
87
+ customLabels: config === null || config === void 0 ? void 0 : config.customLabels,
88
+ };
89
+ return utils_1.EntityActionFlowResolverV2.getAvailableActionsData(params);
90
+ }
91
+ getUpdateActionVisibility(currentUser) {
92
+ return {};
93
+ }
32
94
  }
33
95
  exports.IntermediaryBankEntityModel = IntermediaryBankEntityModel;
@@ -1,3 +1,7 @@
1
+ import { ToDoListActionEnum } from "../enums/to_do_list_action_enum";
2
+ import { IToDoListFlowConfigContextData } from "../flow-configs/to_do_list_flow.config";
3
+ import { IUserEntity } from "../interface/user.entity.interface";
4
+ import { IRowActions } from "./interface/row-actions.interface";
1
5
  import { ToDoListStatusEnum } from "../enums/to_do_list_status_enum";
2
6
  import { EntityEnum } from "../interface/entity.utils.interface";
3
7
  import { RelationConfigs } from "../interface/relation-config.interface";
@@ -22,4 +26,15 @@ export declare class ToDoListEntityModel extends BaseEntityModel<EntityEnum.TO_D
22
26
  static relationConfigs: RelationConfigs<[EntityEnum.PROJECT, EntityEnum.USER], EntityEnum.TO_DO_LIST>;
23
27
  static fromEntity(entity: IToDoListEntity): ToDoListEntityModel;
24
28
  getRelationConfigs(): [import("../interface/relation-config.interface").IRelationConfig<EntityEnum.PROJECT, EntityEnum.TO_DO_LIST>, import("../interface/relation-config.interface").IRelationConfig<EntityEnum.USER, EntityEnum.TO_DO_LIST>];
29
+ getNextStatus(currentUser: IUserEntity, action: ToDoListActionEnum, toDoListFlowConfigContextData: IToDoListFlowConfigContextData): ToDoListStatusEnum;
30
+ getAvailableActions(currentUser: UserEntityModel, config?: {
31
+ combinedActions?: Record<string, {
32
+ combineActions: ToDoListActionEnum[];
33
+ label: string;
34
+ }>;
35
+ customLabels?: Partial<Record<ToDoListActionEnum, string>>;
36
+ }): IRowActions<EntityEnum.TO_DO_LIST>[];
37
+ getUpdateActionVisibility(currentUser: UserEntityModel): {
38
+ [key: string]: () => boolean;
39
+ };
25
40
  }
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ToDoListEntityModel = void 0;
4
+ const error_key_enum_1 = require("../../enums/error.key.enum");
5
+ const exceptions_1 = require("../../exceptions");
6
+ const utils_1 = require("../../utils");
7
+ const to_do_list_flow_config_1 = require("../flow-configs/to_do_list_flow.config");
4
8
  const to_do_list_status_enum_1 = require("../enums/to_do_list_status_enum");
5
9
  const relation_type_enum_1 = require("../enums/relation_type_enum");
6
10
  const entity_utils_interface_1 = require("../interface/entity.utils.interface");
@@ -28,6 +32,64 @@ class ToDoListEntityModel extends base_entity_model_1.BaseEntityModel {
28
32
  getRelationConfigs() {
29
33
  return ToDoListEntityModel.relationConfigs;
30
34
  }
35
+ getNextStatus(currentUser, action, toDoListFlowConfigContextData) {
36
+ if (!this.status) {
37
+ throw new exceptions_1.AppBadRequestException({
38
+ key: error_key_enum_1.ErrorKeyEnum.STATUS,
39
+ message: [`Status not found: ${this.status}`],
40
+ });
41
+ }
42
+ const flowForStatus = to_do_list_flow_config_1.toDoListFlowConfig[this.status];
43
+ if (!flowForStatus) {
44
+ throw new exceptions_1.AppBadRequestException({
45
+ key: error_key_enum_1.ErrorKeyEnum.STATUS,
46
+ message: [`No flow configuration found for status: ${this.status}`],
47
+ });
48
+ }
49
+ if (!action) {
50
+ throw new exceptions_1.AppBadRequestException({
51
+ key: error_key_enum_1.ErrorKeyEnum.ACTION_DATA,
52
+ message: ["actionData is required"],
53
+ });
54
+ }
55
+ const matchingPermissionConfig = flowForStatus.actions[action];
56
+ if (!matchingPermissionConfig) {
57
+ throw new exceptions_1.AppBadRequestException({
58
+ key: error_key_enum_1.ErrorKeyEnum.ACTION,
59
+ message: [`Action '${action}' is not valid for the current status.`],
60
+ });
61
+ }
62
+ if (!currentUser.permissions || currentUser.permissions.length === 0) {
63
+ throw new exceptions_1.AppBadRequestException({
64
+ key: error_key_enum_1.ErrorKeyEnum.PERMISSIONS,
65
+ message: ["Permission not available for currentUser"],
66
+ });
67
+ }
68
+ const hasPermission = matchingPermissionConfig.permissions.some((permission) => currentUser.permissions.includes(permission));
69
+ if (!hasPermission) {
70
+ throw new exceptions_1.AppBadRequestException({
71
+ key: error_key_enum_1.ErrorKeyEnum.PERMISSION,
72
+ message: [`Current user does not have permission to ${action} to do list`],
73
+ });
74
+ }
75
+ const nextStatus = matchingPermissionConfig.next(toDoListFlowConfigContextData);
76
+ return nextStatus;
77
+ }
78
+ getAvailableActions(currentUser, config) {
79
+ var _a;
80
+ const params = {
81
+ flowConfig: to_do_list_flow_config_1.toDoListFlowConfig,
82
+ currentStatus: this.status,
83
+ userPermissions: (_a = currentUser.permissions) !== null && _a !== void 0 ? _a : [],
84
+ visibilityData: this.getUpdateActionVisibility.bind(this, currentUser),
85
+ combinedActions: config === null || config === void 0 ? void 0 : config.combinedActions,
86
+ customLabels: config === null || config === void 0 ? void 0 : config.customLabels,
87
+ };
88
+ return utils_1.EntityActionFlowResolverV2.getAvailableActionsData(params);
89
+ }
90
+ getUpdateActionVisibility(currentUser) {
91
+ return {};
92
+ }
31
93
  }
32
94
  exports.ToDoListEntityModel = ToDoListEntityModel;
33
95
  ToDoListEntityModel.relationConfigs = [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "law-common",
3
- "version": "13.0.3-beta.3",
3
+ "version": "13.0.3-beta.4",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "files": [