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.
- package/dist/src/entities/enums/client_affiliate_action_enum.d.ts +8 -0
- package/dist/src/entities/enums/client_affiliate_action_enum.js +17 -0
- package/dist/src/entities/enums/intermediary_bank_action_enum.d.ts +8 -0
- package/dist/src/entities/enums/intermediary_bank_action_enum.js +17 -0
- package/dist/src/entities/enums/to_do_list_action_enum.d.ts +8 -0
- package/dist/src/entities/enums/to_do_list_action_enum.js +17 -0
- package/dist/src/entities/flow-configs/client_affiliate_flow.config.d.ts +6 -0
- package/dist/src/entities/flow-configs/client_affiliate_flow.config.js +70 -0
- package/dist/src/entities/flow-configs/intermediary_bank_flow.config.d.ts +6 -0
- package/dist/src/entities/flow-configs/intermediary_bank_flow.config.js +70 -0
- package/dist/src/entities/flow-configs/to_do_list_flow.config.d.ts +6 -0
- package/dist/src/entities/flow-configs/to_do_list_flow.config.js +92 -0
- package/dist/src/entities/index.d.ts +6 -0
- package/dist/src/entities/index.js +6 -0
- package/dist/src/entities/model/client_affiliate.entity.model.d.ts +16 -0
- package/dist/src/entities/model/client_affiliate.entity.model.js +67 -5
- package/dist/src/entities/model/intermediary_bank.entity.model.d.ts +16 -0
- package/dist/src/entities/model/intermediary_bank.entity.model.js +62 -0
- package/dist/src/entities/model/to_do_list.entity.model.d.ts +15 -0
- package/dist/src/entities/model/to_do_list.entity.model.js +62 -0
- package/package.json +1 -1
|
@@ -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,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,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
|
|
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 ?
|
|
72
|
+
return gstNumber ? utils_2.CodeValidatorUtil.isValidGST(gstNumber) : true;
|
|
69
73
|
}
|
|
70
74
|
static isValidPan(panNumber) {
|
|
71
|
-
return panNumber ?
|
|
75
|
+
return panNumber ? utils_2.CodeValidatorUtil.isValidPAN(panNumber) : true;
|
|
72
76
|
}
|
|
73
77
|
static isValidTan(tanNumber) {
|
|
74
|
-
return tanNumber ?
|
|
78
|
+
return tanNumber ? utils_2.CodeValidatorUtil.isValidTAN(tanNumber) : true;
|
|
75
79
|
}
|
|
76
80
|
static validateDocumentNoDocumentFile(data, deleteDetails) {
|
|
77
|
-
return (0,
|
|
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 = [
|