law-common 12.6.3-beta.13 → 12.6.3-beta.14
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/designation.create.dto.interface.d.ts +5 -0
- package/dist/src/api/interface/designation.create.dto.interface.js +2 -0
- package/dist/src/api/interface/designation.update.dto.interface.d.ts +17 -0
- package/dist/src/api/interface/designation.update.dto.interface.js +18 -0
- package/dist/src/entities/enums/designation_status_enum.d.ts +5 -0
- package/dist/src/entities/enums/designation_status_enum.js +9 -0
- package/dist/src/entities/flow-configs/designation_flow.config.d.ts +6 -0
- package/dist/src/entities/flow-configs/designation_flow.config.js +70 -0
- package/dist/src/entities/index.d.ts +3 -0
- package/dist/src/entities/index.js +3 -0
- package/dist/src/entities/interface/designation.entity.interface.d.ts +5 -3
- package/dist/src/entities/interface/designation.entity.interface.js +3 -3
- package/dist/src/entities/interface/field-constraint/designation_field_constraints.interface.d.ts +13 -0
- package/dist/src/entities/interface/field-constraint/designation_field_constraints.interface.js +15 -0
- package/dist/src/entities/model/designation.entity.model.d.ts +25 -5
- package/dist/src/entities/model/designation.entity.model.js +91 -12
- package/package.json +1 -1
package/dist/src/api/index.d.ts
CHANGED
|
@@ -119,3 +119,5 @@ export * from "./interface/client_debit_note_particulars.create.dto.interface";
|
|
|
119
119
|
export * from "./interface/client_debit_note_particulars.update.dto.interface";
|
|
120
120
|
export * from "./interface/industry.create.dto.interface";
|
|
121
121
|
export * from "./interface/industry.update.dto.interface";
|
|
122
|
+
export * from "./interface/designation.create.dto.interface";
|
|
123
|
+
export * from "./interface/designation.update.dto.interface";
|
package/dist/src/api/index.js
CHANGED
|
@@ -139,3 +139,5 @@ __exportStar(require("./interface/client_debit_note_particulars.create.dto.inter
|
|
|
139
139
|
__exportStar(require("./interface/client_debit_note_particulars.update.dto.interface"), exports);
|
|
140
140
|
__exportStar(require("./interface/industry.create.dto.interface"), exports);
|
|
141
141
|
__exportStar(require("./interface/industry.update.dto.interface"), exports);
|
|
142
|
+
__exportStar(require("./interface/designation.create.dto.interface"), exports);
|
|
143
|
+
__exportStar(require("./interface/designation.update.dto.interface"), exports);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { IEntityCreateDto } from "../../entities";
|
|
2
|
+
import { IDesignationEntity } from "../../entities/interface/designation.entity.interface";
|
|
3
|
+
export type IDesignationCreateExclude = "description" | "order" | "status";
|
|
4
|
+
export interface IDesignationCreateDto extends Omit<IEntityCreateDto<IDesignationEntity>, IDesignationCreateExclude> {
|
|
5
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DeepPartialButRequired } from "./api.utils.interface";
|
|
2
|
+
import { IDesignationCreateDto } from "./designation.create.dto.interface";
|
|
3
|
+
export type IDesignationUpdateDto = DeepPartialButRequired<IDesignationCreateDto, never> & {
|
|
4
|
+
actionData: IDesignationActionDataDto;
|
|
5
|
+
};
|
|
6
|
+
export interface IDesignationActionDataDto {
|
|
7
|
+
action: DesignationActionEnum;
|
|
8
|
+
remark?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare enum DesignationActionEnum {
|
|
11
|
+
CREATE = "create",
|
|
12
|
+
UPDATE = "update",
|
|
13
|
+
DELETE = "delete",
|
|
14
|
+
DEACTIVATE = "deactivate",
|
|
15
|
+
ACTIVATE = "activate",
|
|
16
|
+
RESTORE = "restore"
|
|
17
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DesignationActionEnum = void 0;
|
|
4
|
+
var DesignationActionEnum;
|
|
5
|
+
(function (DesignationActionEnum) {
|
|
6
|
+
DesignationActionEnum["CREATE"] = "create";
|
|
7
|
+
DesignationActionEnum["UPDATE"] = "update";
|
|
8
|
+
DesignationActionEnum["DELETE"] = "delete";
|
|
9
|
+
DesignationActionEnum["DEACTIVATE"] = "deactivate";
|
|
10
|
+
DesignationActionEnum["ACTIVATE"] = "activate";
|
|
11
|
+
DesignationActionEnum["RESTORE"] = "restore";
|
|
12
|
+
// The following actions are for entity flow with approval process. Comment out if entity is automatically approved without approval process.
|
|
13
|
+
// REQUEST_CHANGES = "request_changes",
|
|
14
|
+
// REJECT = "reject",
|
|
15
|
+
// RECALL = "recall",
|
|
16
|
+
// APPROVE = "approve",
|
|
17
|
+
// CHANGES_DONE = "changes_done",
|
|
18
|
+
})(DesignationActionEnum || (exports.DesignationActionEnum = DesignationActionEnum = {}));
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DesignationStatusEnum = void 0;
|
|
4
|
+
var DesignationStatusEnum;
|
|
5
|
+
(function (DesignationStatusEnum) {
|
|
6
|
+
DesignationStatusEnum["APPROVED"] = "APPROVED";
|
|
7
|
+
DesignationStatusEnum["DEACTIVATED"] = "DEACTIVATED";
|
|
8
|
+
DesignationStatusEnum["DELETED"] = "DELETED";
|
|
9
|
+
})(DesignationStatusEnum || (exports.DesignationStatusEnum = DesignationStatusEnum = {}));
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { FlowConfig } from "./flow-config.type";
|
|
2
|
+
import { DesignationActionEnum } from "../../api";
|
|
3
|
+
import { DesignationStatusEnum } from "../enums/designation_status_enum";
|
|
4
|
+
export interface IDesignationFlowConfigContextData {
|
|
5
|
+
}
|
|
6
|
+
export declare const designationFlowConfig: FlowConfig<DesignationStatusEnum, DesignationActionEnum, IDesignationFlowConfigContextData>;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.designationFlowConfig = void 0;
|
|
4
|
+
const base_flow_config_factory_1 = require("./base-flow-config.factory");
|
|
5
|
+
const api_1 = require("../../api");
|
|
6
|
+
const designation_status_enum_1 = require("../enums/designation_status_enum");
|
|
7
|
+
const DESIGNATION_CREATE_PERMISSION = ["DESIGNATION_CREATE"];
|
|
8
|
+
const DESIGNATION_UPDATE_PERMISSION = ["DESIGNATION_UPDATE"];
|
|
9
|
+
const DESIGNATION_DELETE_PERMISSION = ["DESIGNATION_DELETE"];
|
|
10
|
+
const DESIGNATION_DEACTIVATE_PERMISSION = ["DESIGNATION_DEACTIVATE"];
|
|
11
|
+
const DESIGNATION_ACTIVATE_PERMISSION = ["DESIGNATION_ACTIVATE"];
|
|
12
|
+
const DESIGNATION_RESTORE_PERMISSION = ["DESIGNATION_RESTORE"];
|
|
13
|
+
const ACTION_MAP = {
|
|
14
|
+
[api_1.DesignationActionEnum.CREATE]: {
|
|
15
|
+
reachableStatues: [designation_status_enum_1.DesignationStatusEnum.APPROVED],
|
|
16
|
+
permissions: DESIGNATION_CREATE_PERMISSION,
|
|
17
|
+
},
|
|
18
|
+
[api_1.DesignationActionEnum.UPDATE]: {
|
|
19
|
+
reachableStatues: [designation_status_enum_1.DesignationStatusEnum.APPROVED],
|
|
20
|
+
permissions: DESIGNATION_UPDATE_PERMISSION,
|
|
21
|
+
},
|
|
22
|
+
[api_1.DesignationActionEnum.DELETE]: {
|
|
23
|
+
reachableStatues: [designation_status_enum_1.DesignationStatusEnum.DELETED],
|
|
24
|
+
permissions: DESIGNATION_DELETE_PERMISSION,
|
|
25
|
+
},
|
|
26
|
+
[api_1.DesignationActionEnum.DEACTIVATE]: {
|
|
27
|
+
reachableStatues: [designation_status_enum_1.DesignationStatusEnum.DEACTIVATED],
|
|
28
|
+
permissions: DESIGNATION_DEACTIVATE_PERMISSION,
|
|
29
|
+
},
|
|
30
|
+
[api_1.DesignationActionEnum.ACTIVATE]: {
|
|
31
|
+
reachableStatues: [designation_status_enum_1.DesignationStatusEnum.APPROVED],
|
|
32
|
+
permissions: DESIGNATION_ACTIVATE_PERMISSION,
|
|
33
|
+
},
|
|
34
|
+
[api_1.DesignationActionEnum.RESTORE]: {
|
|
35
|
+
reachableStatues: [designation_status_enum_1.DesignationStatusEnum.APPROVED],
|
|
36
|
+
permissions: DESIGNATION_RESTORE_PERMISSION,
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
const { createActionConfig } = (0, base_flow_config_factory_1.createFlowConfigFactory)()(ACTION_MAP);
|
|
40
|
+
// APPROVED status transitions
|
|
41
|
+
const transitionApprovedStatusUpdateAction = createActionConfig(api_1.DesignationActionEnum.UPDATE, designation_status_enum_1.DesignationStatusEnum.APPROVED);
|
|
42
|
+
const transitionApprovedStatusDeleteAction = createActionConfig(api_1.DesignationActionEnum.DELETE, designation_status_enum_1.DesignationStatusEnum.DELETED);
|
|
43
|
+
const transitionApprovedStatusDeactivateAction = createActionConfig(api_1.DesignationActionEnum.DEACTIVATE, designation_status_enum_1.DesignationStatusEnum.DEACTIVATED);
|
|
44
|
+
// DEACTIVATED status transitions
|
|
45
|
+
const transitionDeactivatedStatusDeleteAction = createActionConfig(api_1.DesignationActionEnum.DELETE, designation_status_enum_1.DesignationStatusEnum.DELETED);
|
|
46
|
+
const transitionDeactivatedStatusActivateAction = createActionConfig(api_1.DesignationActionEnum.ACTIVATE, designation_status_enum_1.DesignationStatusEnum.APPROVED);
|
|
47
|
+
// DELETED status transitions
|
|
48
|
+
const transitionDeletedStatusUpdateAction = createActionConfig(api_1.DesignationActionEnum.UPDATE, designation_status_enum_1.DesignationStatusEnum.APPROVED);
|
|
49
|
+
const transitionDeletedStatusRestoreAction = createActionConfig(api_1.DesignationActionEnum.RESTORE, designation_status_enum_1.DesignationStatusEnum.APPROVED);
|
|
50
|
+
exports.designationFlowConfig = {
|
|
51
|
+
[designation_status_enum_1.DesignationStatusEnum.APPROVED]: {
|
|
52
|
+
actions: {
|
|
53
|
+
[api_1.DesignationActionEnum.UPDATE]: transitionApprovedStatusUpdateAction,
|
|
54
|
+
[api_1.DesignationActionEnum.DELETE]: transitionApprovedStatusDeleteAction,
|
|
55
|
+
[api_1.DesignationActionEnum.DEACTIVATE]: transitionApprovedStatusDeactivateAction,
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
[designation_status_enum_1.DesignationStatusEnum.DEACTIVATED]: {
|
|
59
|
+
actions: {
|
|
60
|
+
[api_1.DesignationActionEnum.DELETE]: transitionDeactivatedStatusDeleteAction,
|
|
61
|
+
[api_1.DesignationActionEnum.ACTIVATE]: transitionDeactivatedStatusActivateAction,
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
[designation_status_enum_1.DesignationStatusEnum.DELETED]: {
|
|
65
|
+
actions: {
|
|
66
|
+
[api_1.DesignationActionEnum.UPDATE]: transitionDeletedStatusUpdateAction,
|
|
67
|
+
[api_1.DesignationActionEnum.RESTORE]: transitionDeletedStatusRestoreAction,
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
};
|
|
@@ -274,3 +274,6 @@ export * from "./enums/task_status_enum";
|
|
|
274
274
|
export * from "./flow-configs/task_flow.config";
|
|
275
275
|
export * from "./interface/field-constraint/industry_field_constraints.interface";
|
|
276
276
|
export * from "./interface/field-constraint/task_field_constraints.interface";
|
|
277
|
+
export * from "./enums/designation_status_enum";
|
|
278
|
+
export * from "./flow-configs/designation_flow.config";
|
|
279
|
+
export * from "./interface/field-constraint/designation_field_constraints.interface";
|
|
@@ -291,3 +291,6 @@ __exportStar(require("./enums/task_status_enum"), exports);
|
|
|
291
291
|
__exportStar(require("./flow-configs/task_flow.config"), exports);
|
|
292
292
|
__exportStar(require("./interface/field-constraint/industry_field_constraints.interface"), exports);
|
|
293
293
|
__exportStar(require("./interface/field-constraint/task_field_constraints.interface"), exports);
|
|
294
|
+
__exportStar(require("./enums/designation_status_enum"), exports);
|
|
295
|
+
__exportStar(require("./flow-configs/designation_flow.config"), exports);
|
|
296
|
+
__exportStar(require("./interface/field-constraint/designation_field_constraints.interface"), exports);
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { IEntityAuditColumn } from "./entity-audit-columns.interface";
|
|
2
|
-
import { IApiEntity, IEntityCreateDto, IEntityFilterData, IEntityUpdateDto } from "./entity.utils.interface";
|
|
2
|
+
import { IApiEntity, IEntityCreateDto, IEntityFilterData, IEntityUpdateDto, Nullable } from "./entity.utils.interface";
|
|
3
|
+
import { DesignationStatusEnum } from "../enums/designation_status_enum";
|
|
3
4
|
export interface IDesignationEntity extends IEntityAuditColumn {
|
|
4
5
|
id: number;
|
|
5
6
|
name: string;
|
|
6
|
-
description?: string
|
|
7
|
-
order?: number
|
|
7
|
+
description?: Nullable<string>;
|
|
8
|
+
order?: Nullable<number>;
|
|
9
|
+
status: DesignationStatusEnum;
|
|
8
10
|
}
|
|
9
11
|
export interface IDesignationEntityCreateDto extends IEntityCreateDto<IDesignationEntity> {
|
|
10
12
|
}
|
package/dist/src/entities/interface/field-constraint/designation_field_constraints.interface.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IEntityAuditColumn } from "../entity-audit-columns.interface";
|
|
2
|
+
import { IDesignationEntity } from "../designation.entity.interface";
|
|
3
|
+
import { IFieldMinMaxConstraint } from "./utils";
|
|
4
|
+
export type IDesignationFieldLengthConstraintsExclude = "status" | "id" | keyof IEntityAuditColumn;
|
|
5
|
+
/**
|
|
6
|
+
* since some fields are optional, but we still need their
|
|
7
|
+
* min & max length constraints, we need to make them required in this type
|
|
8
|
+
* hence we are using -? to make all properties required in this type
|
|
9
|
+
*/
|
|
10
|
+
export type IDesignationFieldMinMaxConstraints = {
|
|
11
|
+
[K in keyof Omit<IDesignationEntity, IDesignationFieldLengthConstraintsExclude>]-?: IFieldMinMaxConstraint;
|
|
12
|
+
};
|
|
13
|
+
export declare const designationFieldMinMaxConstraints: IDesignationFieldMinMaxConstraints;
|
package/dist/src/entities/interface/field-constraint/designation_field_constraints.interface.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.designationFieldMinMaxConstraints = void 0;
|
|
4
|
+
exports.designationFieldMinMaxConstraints = {
|
|
5
|
+
name: {
|
|
6
|
+
min: 2,
|
|
7
|
+
max: 128,
|
|
8
|
+
},
|
|
9
|
+
description: {
|
|
10
|
+
max: 255,
|
|
11
|
+
},
|
|
12
|
+
order: {
|
|
13
|
+
max: 100,
|
|
14
|
+
},
|
|
15
|
+
};
|
|
@@ -1,19 +1,39 @@
|
|
|
1
|
-
import { IDesignationEntity } from "../interface/designation.entity.interface";
|
|
2
1
|
import { EntityEnum } from "../interface/entity.utils.interface";
|
|
3
|
-
import { RelationConfigs } from "../interface/relation-config.interface";
|
|
4
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 { UserEntityModel } from "./user.entity.model";
|
|
6
|
+
import { IRowActions } from "./interface/row-actions.interface";
|
|
7
|
+
import { IDesignationEntity } from "../interface/designation.entity.interface";
|
|
8
|
+
import { DesignationStatusEnum } from "../enums/designation_status_enum";
|
|
9
|
+
import { ClientQuoteRateEntityModel } from "./client_quote_rate.entity.model";
|
|
10
|
+
import { DesignationActionEnum } from "../../api";
|
|
11
|
+
import { IDesignationFlowConfigContextData } from "../flow-configs/designation_flow.config";
|
|
5
12
|
import { RateEntityModel } from "./rate.model";
|
|
6
13
|
export declare class DesignationEntityModel extends BaseEntityModel<EntityEnum.DESIGNATION> implements IDesignationEntity {
|
|
7
14
|
id: number;
|
|
8
15
|
name: string;
|
|
9
16
|
description?: string;
|
|
10
17
|
order?: number;
|
|
11
|
-
|
|
18
|
+
status: DesignationStatusEnum;
|
|
12
19
|
createdOn: number;
|
|
13
|
-
updatedBy: number;
|
|
14
20
|
updatedOn: number;
|
|
21
|
+
createdBy: number;
|
|
22
|
+
updatedBy: number;
|
|
23
|
+
clientQuoteRates?: ClientQuoteRateEntityModel[];
|
|
15
24
|
rate?: RateEntityModel[];
|
|
25
|
+
static relationConfigs: RelationConfigs<[EntityEnum.CLIENT_QUOTE_RATE, EntityEnum.RATE], EntityEnum.DESIGNATION>;
|
|
16
26
|
static fromEntity(entity: IDesignationEntity): DesignationEntityModel;
|
|
17
27
|
getRelationConfigs(): any[];
|
|
18
|
-
|
|
28
|
+
getNextStatus(currentUser: IUserEntity, action: DesignationActionEnum, designationFlowConfigContextData: IDesignationFlowConfigContextData): DesignationStatusEnum;
|
|
29
|
+
getAvailableActions(currentUser: UserEntityModel, config?: {
|
|
30
|
+
combinedActions?: Record<string, {
|
|
31
|
+
combineActions: DesignationActionEnum[];
|
|
32
|
+
label: string;
|
|
33
|
+
}>;
|
|
34
|
+
customLabels?: Partial<Record<DesignationActionEnum, string>>;
|
|
35
|
+
}): IRowActions<EntityEnum.DESIGNATION>[];
|
|
36
|
+
getUpdateActionVisibility(currentUser: UserEntityModel): {
|
|
37
|
+
[key: string]: () => boolean;
|
|
38
|
+
};
|
|
19
39
|
}
|
|
@@ -1,29 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DesignationEntityModel = void 0;
|
|
4
|
-
const relation_type_enum_1 = require("../enums/relation-type.enum");
|
|
5
4
|
const entity_utils_interface_1 = require("../interface/entity.utils.interface");
|
|
6
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 designation_status_enum_1 = require("../enums/designation_status_enum");
|
|
11
|
+
const designation_flow_config_1 = require("../flow-configs/designation_flow.config");
|
|
7
12
|
class DesignationEntityModel extends base_entity_model_1.BaseEntityModel {
|
|
8
13
|
constructor() {
|
|
9
14
|
super(...arguments);
|
|
10
15
|
this.id = 0;
|
|
11
16
|
this.name = "";
|
|
12
|
-
this.
|
|
17
|
+
this.status = designation_status_enum_1.DesignationStatusEnum.APPROVED;
|
|
13
18
|
this.createdOn = 0;
|
|
14
|
-
this.updatedBy = 0;
|
|
15
19
|
this.updatedOn = 0;
|
|
20
|
+
this.createdBy = 0;
|
|
21
|
+
this.updatedBy = 0;
|
|
16
22
|
this.rate = [];
|
|
17
23
|
}
|
|
18
|
-
// constructor(data: IDesignationApiEntity) {
|
|
19
|
-
// this.id = data.id;
|
|
20
|
-
// this.name = data.name;
|
|
21
|
-
// this.description = data.description;
|
|
22
|
-
// this.createdBy = data.createdBy;
|
|
23
|
-
// this.createdOn = data.createdOn;
|
|
24
|
-
// this.updatedBy = data.updatedBy;
|
|
25
|
-
// this.updatedOn = data.updatedOn;
|
|
26
|
-
// }
|
|
27
24
|
static fromEntity(entity) {
|
|
28
25
|
const result = new DesignationEntityModel(entity_utils_interface_1.EntityEnum.DESIGNATION);
|
|
29
26
|
Object.assign(result, entity);
|
|
@@ -32,9 +29,91 @@ class DesignationEntityModel extends base_entity_model_1.BaseEntityModel {
|
|
|
32
29
|
getRelationConfigs() {
|
|
33
30
|
return this.constructor.prototype.constructor.relationConfigs || [];
|
|
34
31
|
}
|
|
32
|
+
// get clientQuotes(): ClientQuoteEntityModel[] | undefined {
|
|
33
|
+
// // many_to_many -> many_to_many verified
|
|
34
|
+
// // {'designation->client_quote_rate': 'one_to_many', 'client_quote_rate->client_quote': 'many_to_one'}
|
|
35
|
+
// // ['designation', 'client_quote_rate'] -> one_to_many
|
|
36
|
+
// // ['client_quote_rate', 'client_quote'] -> many_to_one
|
|
37
|
+
// return this.clientQuoteRates
|
|
38
|
+
// ?.flatMap((clientQuoteRate) => clientQuoteRate.clientQuote)
|
|
39
|
+
// .filter((clientQuote): clientQuote is ClientQuoteEntityModel => !!clientQuote)
|
|
40
|
+
// .reduce((accumulator: ClientQuoteEntityModel[], current) => {
|
|
41
|
+
// if (!accumulator.some((clientQuote) => clientQuote.id === current.id)) {
|
|
42
|
+
// accumulator.push(current);
|
|
43
|
+
// }
|
|
44
|
+
// return accumulator;
|
|
45
|
+
// }, []);
|
|
46
|
+
// }
|
|
47
|
+
getNextStatus(currentUser, action, designationFlowConfigContextData) {
|
|
48
|
+
if (!this.status) {
|
|
49
|
+
throw new exceptions_1.AppBadRequestException({
|
|
50
|
+
key: error_key_enum_1.ErrorKeyEnum.STATUS,
|
|
51
|
+
message: [`Status not found: ${this.status}`],
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
const flowForStatus = designation_flow_config_1.designationFlowConfig[this.status];
|
|
55
|
+
if (!flowForStatus) {
|
|
56
|
+
throw new exceptions_1.AppBadRequestException({
|
|
57
|
+
key: error_key_enum_1.ErrorKeyEnum.STATUS,
|
|
58
|
+
message: [`No flow configuration found for status: ${this.status}`],
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
if (!action) {
|
|
62
|
+
throw new exceptions_1.AppBadRequestException({
|
|
63
|
+
key: error_key_enum_1.ErrorKeyEnum.ACTION_DATA,
|
|
64
|
+
message: ["actionData is required"],
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
const matchingPermissionConfig = flowForStatus.actions[action];
|
|
68
|
+
if (!matchingPermissionConfig) {
|
|
69
|
+
throw new exceptions_1.AppBadRequestException({
|
|
70
|
+
key: error_key_enum_1.ErrorKeyEnum.ACTION,
|
|
71
|
+
message: [`Action '${action}' is not valid for the current status.`],
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
if (!currentUser.permissions || currentUser.permissions.length === 0) {
|
|
75
|
+
throw new exceptions_1.AppBadRequestException({
|
|
76
|
+
key: error_key_enum_1.ErrorKeyEnum.PERMISSIONS,
|
|
77
|
+
message: ["Permission not available for currentUser"],
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
const hasPermission = matchingPermissionConfig.permissions.some((permission) => currentUser.permissions.includes(permission));
|
|
81
|
+
if (!hasPermission) {
|
|
82
|
+
throw new exceptions_1.AppBadRequestException({
|
|
83
|
+
key: error_key_enum_1.ErrorKeyEnum.PERMISSION,
|
|
84
|
+
message: [`Current user does not have permission to ${action} designation`],
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
const nextStatus = matchingPermissionConfig.next(designationFlowConfigContextData);
|
|
88
|
+
return nextStatus;
|
|
89
|
+
}
|
|
90
|
+
getAvailableActions(currentUser, config) {
|
|
91
|
+
var _a;
|
|
92
|
+
const params = {
|
|
93
|
+
flowConfig: designation_flow_config_1.designationFlowConfig,
|
|
94
|
+
currentStatus: this.status,
|
|
95
|
+
userPermissions: (_a = currentUser.permissions) !== null && _a !== void 0 ? _a : [],
|
|
96
|
+
visibilityData: this.getUpdateActionVisibility.bind(this, currentUser),
|
|
97
|
+
combinedActions: config === null || config === void 0 ? void 0 : config.combinedActions,
|
|
98
|
+
customLabels: config === null || config === void 0 ? void 0 : config.customLabels,
|
|
99
|
+
};
|
|
100
|
+
return utils_1.EntityActionFlowResolverV2.getAvailableActionsData(params);
|
|
101
|
+
}
|
|
102
|
+
getUpdateActionVisibility(currentUser) {
|
|
103
|
+
return {};
|
|
104
|
+
}
|
|
35
105
|
}
|
|
36
106
|
exports.DesignationEntityModel = DesignationEntityModel;
|
|
37
107
|
DesignationEntityModel.relationConfigs = [
|
|
108
|
+
{
|
|
109
|
+
name: entity_utils_interface_1.EntityEnum.CLIENT_QUOTE_RATE,
|
|
110
|
+
relation: relation_type_enum_1.RelationType.MANY,
|
|
111
|
+
key: "clientQuoteRates",
|
|
112
|
+
mapKeyConfig: {
|
|
113
|
+
relationKey: "resourceType",
|
|
114
|
+
key: "name",
|
|
115
|
+
},
|
|
116
|
+
},
|
|
38
117
|
{
|
|
39
118
|
name: entity_utils_interface_1.EntityEnum.RATE,
|
|
40
119
|
relation: relation_type_enum_1.RelationType.MANY,
|