law-common 12.6.3-beta.2 → 12.6.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 TaskActionEnum {
2
+ CREATE = "create",
3
+ UPDATE = "update",
4
+ DELETE = "delete",
5
+ DEACTIVATE = "deactivate",
6
+ ACTIVATE = "activate",
7
+ RESTORE = "restore"
8
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskActionEnum = void 0;
4
+ var TaskActionEnum;
5
+ (function (TaskActionEnum) {
6
+ TaskActionEnum["CREATE"] = "create";
7
+ TaskActionEnum["UPDATE"] = "update";
8
+ TaskActionEnum["DELETE"] = "delete";
9
+ TaskActionEnum["DEACTIVATE"] = "deactivate";
10
+ TaskActionEnum["ACTIVATE"] = "activate";
11
+ TaskActionEnum["RESTORE"] = "restore";
12
+ })(TaskActionEnum || (exports.TaskActionEnum = TaskActionEnum = {}));
@@ -1,8 +1,3 @@
1
- export declare enum TaskStatusEnum {
2
- active = "active",
3
- deactive = "deactive",
4
- deleted = "deleted"
5
- }
6
1
  export declare enum TaskTypeEnum {
7
2
  billable = "billable",
8
3
  non_billable = "non_billable"
@@ -1,12 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TaskTypeEnum = exports.TaskStatusEnum = void 0;
4
- var TaskStatusEnum;
5
- (function (TaskStatusEnum) {
6
- TaskStatusEnum["active"] = "active";
7
- TaskStatusEnum["deactive"] = "deactive";
8
- TaskStatusEnum["deleted"] = "deleted";
9
- })(TaskStatusEnum || (exports.TaskStatusEnum = TaskStatusEnum = {}));
3
+ exports.TaskTypeEnum = void 0;
10
4
  var TaskTypeEnum;
11
5
  (function (TaskTypeEnum) {
12
6
  TaskTypeEnum["billable"] = "billable";
@@ -0,0 +1,5 @@
1
+ export declare enum TaskStatusEnum {
2
+ active = "active",
3
+ deactive = "deactive",
4
+ deleted = "deleted"
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TaskStatusEnum = void 0;
4
+ var TaskStatusEnum;
5
+ (function (TaskStatusEnum) {
6
+ TaskStatusEnum["active"] = "active";
7
+ TaskStatusEnum["deactive"] = "deactive";
8
+ TaskStatusEnum["deleted"] = "deleted";
9
+ })(TaskStatusEnum || (exports.TaskStatusEnum = TaskStatusEnum = {}));
@@ -0,0 +1,6 @@
1
+ import { TaskActionEnum } from "../enums/task.action.enum";
2
+ import { TaskStatusEnum } from "../enums/task_status.enum";
3
+ import { FlowConfig } from "./flow-config.type";
4
+ export interface ITaskFlowConfigContextData {
5
+ }
6
+ export declare const taskFlowConfig: FlowConfig<TaskStatusEnum, TaskActionEnum, ITaskFlowConfigContextData>;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.taskFlowConfig = void 0;
4
+ const task_action_enum_1 = require("../enums/task.action.enum");
5
+ const task_status_enum_1 = require("../enums/task_status.enum");
6
+ const base_flow_config_factory_1 = require("./base-flow-config.factory");
7
+ const WORK_TEMPLATES_CREATE_PERMISSION = ["WORK_TEMPLATES_CREATE"];
8
+ const WORK_TEMPLATES_UPDATE_PERMISSION = ["WORK_TEMPLATES_UPDATE"];
9
+ const WORK_TEMPLATES_DELETE_PERMISSION = ["WORK_TEMPLATES_DELETE"];
10
+ const WORK_TEMPLATES_DEACTIVATE_PERMISSION = ["WORK_TEMPLATES_DEACTIVATE"];
11
+ const WORK_TEMPLATES_ACTIVATE_PERMISSION = ["WORK_TEMPLATES_ACTIVATE"];
12
+ const WORK_TEMPLATES_RESTORE_PERMISSION = ["WORK_TEMPLATES_RESTORE"];
13
+ const ACTION_MAP = {
14
+ [task_action_enum_1.TaskActionEnum.CREATE]: {
15
+ reachableStatues: [task_status_enum_1.TaskStatusEnum.active],
16
+ permissions: WORK_TEMPLATES_CREATE_PERMISSION,
17
+ },
18
+ [task_action_enum_1.TaskActionEnum.UPDATE]: {
19
+ reachableStatues: [task_status_enum_1.TaskStatusEnum.active],
20
+ permissions: WORK_TEMPLATES_UPDATE_PERMISSION,
21
+ },
22
+ [task_action_enum_1.TaskActionEnum.DELETE]: {
23
+ reachableStatues: [task_status_enum_1.TaskStatusEnum.deleted],
24
+ permissions: WORK_TEMPLATES_DELETE_PERMISSION,
25
+ },
26
+ [task_action_enum_1.TaskActionEnum.DEACTIVATE]: {
27
+ reachableStatues: [task_status_enum_1.TaskStatusEnum.deactive],
28
+ permissions: WORK_TEMPLATES_DEACTIVATE_PERMISSION,
29
+ },
30
+ [task_action_enum_1.TaskActionEnum.ACTIVATE]: {
31
+ reachableStatues: [task_status_enum_1.TaskStatusEnum.active],
32
+ permissions: WORK_TEMPLATES_ACTIVATE_PERMISSION,
33
+ },
34
+ [task_action_enum_1.TaskActionEnum.RESTORE]: {
35
+ reachableStatues: [task_status_enum_1.TaskStatusEnum.active],
36
+ permissions: WORK_TEMPLATES_RESTORE_PERMISSION,
37
+ },
38
+ };
39
+ const { createActionConfig } = (0, base_flow_config_factory_1.createFlowConfigFactory)()(ACTION_MAP);
40
+ // active status transition
41
+ const transitionActiveStatusUpdateAction = createActionConfig(task_action_enum_1.TaskActionEnum.UPDATE, task_status_enum_1.TaskStatusEnum.active);
42
+ const transitionActiveStatusDeleteAction = createActionConfig(task_action_enum_1.TaskActionEnum.DELETE, task_status_enum_1.TaskStatusEnum.deleted);
43
+ const transitionActiveStatusDeactiveAction = createActionConfig(task_action_enum_1.TaskActionEnum.DEACTIVATE, task_status_enum_1.TaskStatusEnum.deactive);
44
+ // deactive status transition
45
+ const transitionDeactivetedStatusDeleteAction = createActionConfig(task_action_enum_1.TaskActionEnum.DELETE, task_status_enum_1.TaskStatusEnum.deleted);
46
+ const transitionDeactivatedStatusActivateAction = createActionConfig(task_action_enum_1.TaskActionEnum.ACTIVATE, task_status_enum_1.TaskStatusEnum.active);
47
+ // deleted status transitions
48
+ const transitionDeletedStatusUpdateAction = createActionConfig(task_action_enum_1.TaskActionEnum.UPDATE, task_status_enum_1.TaskStatusEnum.active);
49
+ const transitionDeletedStatusRestoreAction = createActionConfig(task_action_enum_1.TaskActionEnum.RESTORE, task_status_enum_1.TaskStatusEnum.active);
50
+ exports.taskFlowConfig = {
51
+ [task_status_enum_1.TaskStatusEnum.active]: {
52
+ actions: {
53
+ // update
54
+ [task_action_enum_1.TaskActionEnum.UPDATE]: transitionActiveStatusUpdateAction,
55
+ // delete
56
+ [task_action_enum_1.TaskActionEnum.DELETE]: transitionActiveStatusDeleteAction,
57
+ // deactivate
58
+ [task_action_enum_1.TaskActionEnum.DEACTIVATE]: transitionActiveStatusDeactiveAction,
59
+ },
60
+ },
61
+ [task_status_enum_1.TaskStatusEnum.deactive]: {
62
+ actions: {
63
+ // delete
64
+ [task_action_enum_1.TaskActionEnum.DELETE]: transitionDeactivetedStatusDeleteAction,
65
+ // activate
66
+ [task_action_enum_1.TaskActionEnum.ACTIVATE]: transitionDeactivatedStatusActivateAction,
67
+ },
68
+ },
69
+ [task_status_enum_1.TaskStatusEnum.deleted]: {
70
+ actions: {
71
+ // update
72
+ [task_action_enum_1.TaskActionEnum.UPDATE]: transitionDeletedStatusUpdateAction,
73
+ // restore
74
+ [task_action_enum_1.TaskActionEnum.RESTORE]: transitionDeletedStatusRestoreAction,
75
+ },
76
+ },
77
+ };
@@ -269,3 +269,6 @@ export * from "./enums/industry_status_enum";
269
269
  export * from "./flow-configs/industry_flow.config";
270
270
  export * from "./interface/industry.entity.interface";
271
271
  export * from "./model/industry.entity.model";
272
+ export * from "./enums/task.action.enum";
273
+ export * from "./enums/task_status.enum";
274
+ export * from "./flow-configs/task_flow.config";
@@ -286,3 +286,6 @@ __exportStar(require("./enums/industry_status_enum"), exports);
286
286
  __exportStar(require("./flow-configs/industry_flow.config"), exports);
287
287
  __exportStar(require("./interface/industry.entity.interface"), exports);
288
288
  __exportStar(require("./model/industry.entity.model"), exports);
289
+ __exportStar(require("./enums/task.action.enum"), exports);
290
+ __exportStar(require("./enums/task_status.enum"), exports);
291
+ __exportStar(require("./flow-configs/task_flow.config"), exports);
@@ -1,14 +1,15 @@
1
+ import { IndustryStatusEnum } from "../enums/industry_status_enum";
1
2
  import { IEntityAuditColumn } from "./entity-audit-columns.interface";
2
3
  import { IEntityCreateDto, IEntityFilterData, IEntityUpdateDto, Nullable } from "./entity.utils.interface";
3
- import { IndustryStatusEnum } from "../enums/industry_status_enum";
4
4
  export interface IIndustryEntity extends IEntityAuditColumn {
5
5
  id: number;
6
6
  name: string;
7
7
  description?: Nullable<string>;
8
8
  status: IndustryStatusEnum;
9
9
  }
10
- export interface IIndustryEntityCreateDto extends IEntityCreateDto<IIndustryEntity> {
10
+ export type IIndustryCreateDtoExculde = "status";
11
+ export interface IIndustryEntityCreateDto extends Omit<IEntityCreateDto<IIndustryEntity>, IIndustryCreateDtoExculde> {
11
12
  }
12
- export interface IIndustryEntityUpdateDto extends IEntityUpdateDto<IIndustryEntity> {
13
+ export interface IIndustryEntityUpdateDto extends Omit<IEntityUpdateDto<IIndustryEntity>, IIndustryCreateDtoExculde> {
13
14
  }
14
15
  export type IIndustryEntityFilterData = IEntityFilterData<IIndustryEntity>;
@@ -1,4 +1,5 @@
1
- import { TaskStatusEnum, TaskTypeEnum } from "../enums/task.entity.enum";
1
+ import { TaskTypeEnum } from "../enums/task.entity.enum";
2
+ import { TaskStatusEnum } from "../enums/task_status.enum";
2
3
  import { IEntityAuditColumn } from "./entity-audit-columns.interface";
3
4
  import { IEntityFilterData } from "./entity.utils.interface";
4
5
  export interface ITaskEntity extends IEntityAuditColumn {
@@ -1,7 +1,14 @@
1
- import { TaskStatusEnum, TaskTypeEnum } from "../enums/task.entity.enum";
1
+ import { TaskActionEnum } from "../enums/task.action.enum";
2
+ import { TaskTypeEnum } from "../enums/task.entity.enum";
3
+ import { TaskStatusEnum } from "../enums/task_status.enum";
4
+ import { ITaskFlowConfigContextData } from "../flow-configs/task_flow.config";
2
5
  import { EntityEnum } from "../interface/entity.utils.interface";
6
+ import { RelationConfigs } from "../interface/relation-config.interface";
3
7
  import { ITaskEntity } from "../interface/task.entity.interface";
8
+ import { IUserEntity } from "../interface/user.entity.interface";
4
9
  import { BaseEntityModel } from "./base.entity.model";
10
+ import { IRowActions } from "./interface/row-actions.interface";
11
+ import { UserEntityModel } from "./user.entity.model";
5
12
  export declare class TaskEntityModel extends BaseEntityModel<EntityEnum.TASK> implements ITaskEntity {
6
13
  id: number;
7
14
  name: string;
@@ -13,5 +20,17 @@ export declare class TaskEntityModel extends BaseEntityModel<EntityEnum.TASK> im
13
20
  createdOn: number;
14
21
  updatedOn: number;
15
22
  static fromEntity(entity: ITaskEntity): TaskEntityModel;
23
+ static relationConfigs: RelationConfigs<[], EntityEnum.TASK>;
16
24
  getRelationConfigs(): any[];
25
+ getNextStatus(currentUser: IUserEntity, action: TaskActionEnum, taskFlowConfigContextData: ITaskFlowConfigContextData): TaskStatusEnum;
26
+ getAvailableActions(currentUser: UserEntityModel, config?: {
27
+ combinedActions?: Record<string, {
28
+ combineActions: TaskActionEnum[];
29
+ label: string;
30
+ }>;
31
+ customLabels?: Partial<Record<TaskActionEnum, string>>;
32
+ }): IRowActions<EntityEnum.TASK>[];
33
+ getUpdateActionVisibility(currentUser: UserEntityModel): {
34
+ [key: string]: () => boolean;
35
+ };
17
36
  }
@@ -1,7 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TaskEntityModel = void 0;
4
+ const enums_1 = require("../../enums");
5
+ const exceptions_1 = require("../../exceptions");
6
+ const utils_1 = require("../../utils");
4
7
  const task_entity_enum_1 = require("../enums/task.entity.enum");
8
+ const task_status_enum_1 = require("../enums/task_status.enum");
9
+ const task_flow_config_1 = require("../flow-configs/task_flow.config");
5
10
  const entity_utils_interface_1 = require("../interface/entity.utils.interface");
6
11
  const base_entity_model_1 = require("./base.entity.model");
7
12
  class TaskEntityModel extends base_entity_model_1.BaseEntityModel {
@@ -10,7 +15,7 @@ class TaskEntityModel extends base_entity_model_1.BaseEntityModel {
10
15
  this.id = 0;
11
16
  this.name = "";
12
17
  this.description = "";
13
- this.status = task_entity_enum_1.TaskStatusEnum.active;
18
+ this.status = task_status_enum_1.TaskStatusEnum.active;
14
19
  this.type = task_entity_enum_1.TaskTypeEnum.billable;
15
20
  this.createdBy = 0;
16
21
  this.updatedBy = 0;
@@ -25,5 +30,64 @@ class TaskEntityModel extends base_entity_model_1.BaseEntityModel {
25
30
  getRelationConfigs() {
26
31
  return this.constructor.prototype.constructor.relationConfigs || [];
27
32
  }
33
+ getNextStatus(currentUser, action, taskFlowConfigContextData) {
34
+ if (!this.status) {
35
+ throw new exceptions_1.AppBadRequestException({
36
+ key: enums_1.ErrorKeyEnum.STATUS,
37
+ message: [`Status not found: ${this.status}`],
38
+ });
39
+ }
40
+ const flowForStatus = task_flow_config_1.taskFlowConfig[this.status];
41
+ if (!flowForStatus) {
42
+ throw new exceptions_1.AppBadRequestException({
43
+ key: enums_1.ErrorKeyEnum.STATUS,
44
+ message: [`No flow configuration found for status: ${this.status}`],
45
+ });
46
+ }
47
+ if (!action) {
48
+ throw new exceptions_1.AppBadRequestException({
49
+ key: enums_1.ErrorKeyEnum.ACTION_DATA,
50
+ message: ["actionData is required"],
51
+ });
52
+ }
53
+ const matchingPermissionConfig = flowForStatus.actions[action];
54
+ if (!matchingPermissionConfig) {
55
+ throw new exceptions_1.AppBadRequestException({
56
+ key: enums_1.ErrorKeyEnum.ACTION,
57
+ message: [`Action '${action}' is not valid for the current status.`],
58
+ });
59
+ }
60
+ if (!currentUser.permissions || currentUser.permissions.length === 0) {
61
+ throw new exceptions_1.AppBadRequestException({
62
+ key: enums_1.ErrorKeyEnum.PERMISSIONS,
63
+ message: ["Permission not available for currentUser"],
64
+ });
65
+ }
66
+ const hasPermission = matchingPermissionConfig.permissions.some((permission) => currentUser.permissions.includes(permission));
67
+ if (!hasPermission) {
68
+ throw new exceptions_1.AppBadRequestException({
69
+ key: enums_1.ErrorKeyEnum.PERMISSION,
70
+ message: [`Current user does not have permission to ${action} vendorAdvance`],
71
+ });
72
+ }
73
+ const nextStatus = matchingPermissionConfig.next(taskFlowConfigContextData);
74
+ return nextStatus;
75
+ }
76
+ getAvailableActions(currentUser, config) {
77
+ var _a;
78
+ const params = {
79
+ flowConfig: task_flow_config_1.taskFlowConfig,
80
+ currentStatus: this.status,
81
+ userPermissions: (_a = currentUser.permissions) !== null && _a !== void 0 ? _a : [],
82
+ visibilityData: this.getUpdateActionVisibility.bind(this, currentUser),
83
+ combinedActions: config === null || config === void 0 ? void 0 : config.combinedActions,
84
+ customLabels: config === null || config === void 0 ? void 0 : config.customLabels,
85
+ };
86
+ return utils_1.EntityActionFlowResolverV2.getAvailableActionsData(params);
87
+ }
88
+ getUpdateActionVisibility(currentUser) {
89
+ return {};
90
+ }
28
91
  }
29
92
  exports.TaskEntityModel = TaskEntityModel;
93
+ TaskEntityModel.relationConfigs = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "law-common",
3
- "version": "12.6.3-beta.2",
3
+ "version": "12.6.3-beta.4",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "files": [