@escapenavigator/types 2.1.29 → 2.2.0

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.
@@ -14,6 +14,16 @@ const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
15
  const languages_enum_1 = require("../shared/enum/languages.enum");
16
16
  const order_status_enum_1 = require("./enum/order-status.enum");
17
+ /**
18
+ * Таблица CRM хранит фильтры в URL с `arrayFormat: 'comma'`, и одиночный
19
+ * выбор восстанавливается скаляром (`?questroomsIds=5` → `5`). Без этого
20
+ * `/orders/count` отвечал 400 «must be an array» (ESCAPE-NAVIGATOR-APP-12).
21
+ */
22
+ const toArray = (value) => {
23
+ if (value === undefined || value === null || value === '')
24
+ return undefined;
25
+ return typeof value === 'string' || typeof value === 'number' ? [value] : value;
26
+ };
17
27
  class QueryOrderDto {
18
28
  }
19
29
  exports.QueryOrderDto = QueryOrderDto;
@@ -86,12 +96,14 @@ __decorate([
86
96
  ], QueryOrderDto.prototype, "players", void 0);
87
97
  __decorate([
88
98
  (0, class_validator_1.IsOptional)(),
99
+ (0, class_transformer_1.Transform)(({ value }) => toArray(value)),
89
100
  (0, class_validator_1.IsArray)(),
90
101
  (0, class_transformer_1.Expose)(),
91
102
  __metadata("design:type", Array)
92
103
  ], QueryOrderDto.prototype, "questroomsIds", void 0);
93
104
  __decorate([
94
105
  (0, class_validator_1.IsOptional)(),
106
+ (0, class_transformer_1.Transform)(({ value }) => toArray(value)),
95
107
  (0, class_validator_1.IsArray)(),
96
108
  (0, class_transformer_1.Expose)(),
97
109
  __metadata("design:type", Array)
@@ -103,6 +115,7 @@ __decorate([
103
115
  ], QueryOrderDto.prototype, "orderStatus", void 0);
104
116
  __decorate([
105
117
  (0, class_validator_1.IsOptional)(),
118
+ (0, class_transformer_1.Transform)(({ value }) => toArray(value)),
106
119
  (0, class_validator_1.IsArray)(),
107
120
  (0, class_transformer_1.Expose)(),
108
121
  __metadata("design:type", Array)
@@ -60,6 +60,8 @@ export declare class ProfileRO {
60
60
  slug: string;
61
61
  language: Languages;
62
62
  availableLanguages: Languages[];
63
+ /** IANA time zone used for company-local calendar periods. */
64
+ timeZone?: string;
63
65
  nowEscape: boolean;
64
66
  morty: boolean;
65
67
  refundsValidTo: number;
@@ -192,6 +192,10 @@ __decorate([
192
192
  (0, class_transformer_1.Expose)(),
193
193
  __metadata("design:type", Array)
194
194
  ], ProfileRO.prototype, "availableLanguages", void 0);
195
+ __decorate([
196
+ (0, class_transformer_1.Expose)(),
197
+ __metadata("design:type", String)
198
+ ], ProfileRO.prototype, "timeZone", void 0);
195
199
  __decorate([
196
200
  (0, class_transformer_1.Expose)(),
197
201
  __metadata("design:type", Boolean)
@@ -1,3 +1,4 @@
1
+ import { EmployeeAccessDto } from './employee-access.dto';
1
2
  export declare class CreateRoleDto {
2
3
  title: string;
3
4
  totalAccess: boolean;
@@ -35,4 +36,9 @@ export declare class CreateRoleDto {
35
36
  canDeleteClients: boolean;
36
37
  canDeletePayments: boolean;
37
38
  canSeeEmployeeReport: boolean;
39
+ /**
40
+ * Granular access to employee sections. `undefined`/`null` deliberately
41
+ * keeps the legacy flags effective for roles created by older clients.
42
+ */
43
+ employeeAccess?: EmployeeAccessDto | null;
38
44
  }
@@ -13,6 +13,7 @@ exports.CreateRoleDto = void 0;
13
13
  const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
15
  const is_not_blank_1 = require("../shared/is-not-blank");
16
+ const employee_access_dto_1 = require("./employee-access.dto");
16
17
  class CreateRoleDto {
17
18
  }
18
19
  exports.CreateRoleDto = CreateRoleDto;
@@ -207,3 +208,10 @@ __decorate([
207
208
  (0, class_transformer_1.Expose)(),
208
209
  __metadata("design:type", Boolean)
209
210
  ], CreateRoleDto.prototype, "canSeeEmployeeReport", void 0);
211
+ __decorate([
212
+ (0, class_validator_1.IsOptional)(),
213
+ (0, class_validator_1.ValidateNested)(),
214
+ (0, class_transformer_1.Type)(() => employee_access_dto_1.EmployeeAccessDto),
215
+ (0, class_transformer_1.Expose)(),
216
+ __metadata("design:type", employee_access_dto_1.EmployeeAccessDto)
217
+ ], CreateRoleDto.prototype, "employeeAccess", void 0);
@@ -0,0 +1,27 @@
1
+ export declare enum EmployeeAccessScope {
2
+ SELF = "self",
3
+ ASSIGNED_LOCATIONS = "assignedLocations",
4
+ ALL = "all"
5
+ }
6
+ export type EmployeeCrudAccess = {
7
+ view: boolean;
8
+ create: boolean;
9
+ edit: boolean;
10
+ delete: boolean;
11
+ };
12
+ export type EmployeeScopedCrudAccess = EmployeeCrudAccess & {
13
+ scope: EmployeeAccessScope;
14
+ };
15
+ export type EmployeesAccess = EmployeeCrudAccess & {
16
+ manageAccess: boolean;
17
+ };
18
+ export type EmployeeAccess = {
19
+ employees: EmployeesAccess;
20
+ shifts: EmployeeScopedCrudAccess;
21
+ bonuses: EmployeeScopedCrudAccess;
22
+ fines: EmployeeScopedCrudAccess;
23
+ roles: EmployeeCrudAccess;
24
+ positions: EmployeeCrudAccess;
25
+ reports: EmployeeCrudAccess;
26
+ payroll: EmployeeScopedCrudAccess;
27
+ };
@@ -0,0 +1,27 @@
1
+ import { EmployeeAccess, EmployeeAccessScope, EmployeeCrudAccess, EmployeeScopedCrudAccess, EmployeesAccess } from './employee-access';
2
+ export declare class EmployeeCrudAccessDto implements EmployeeCrudAccess {
3
+ view: boolean;
4
+ create: boolean;
5
+ edit: boolean;
6
+ delete: boolean;
7
+ }
8
+ export declare class EmployeeScopedCrudAccessDto extends EmployeeCrudAccessDto implements EmployeeScopedCrudAccess {
9
+ scope: EmployeeAccessScope;
10
+ }
11
+ export declare class EmployeesAccessDto extends EmployeeCrudAccessDto implements EmployeesAccess {
12
+ /**
13
+ * Allows changing role, CRM access and assigned questrooms.
14
+ * Kept separate from editing ordinary employee fields.
15
+ */
16
+ manageAccess: boolean;
17
+ }
18
+ export declare class EmployeeAccessDto implements EmployeeAccess {
19
+ employees: EmployeesAccessDto;
20
+ shifts: EmployeeScopedCrudAccessDto;
21
+ bonuses: EmployeeScopedCrudAccessDto;
22
+ fines: EmployeeScopedCrudAccessDto;
23
+ roles: EmployeeCrudAccessDto;
24
+ positions: EmployeeCrudAccessDto;
25
+ reports: EmployeeCrudAccessDto;
26
+ payroll: EmployeeScopedCrudAccessDto;
27
+ }
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.EmployeeAccessDto = exports.EmployeesAccessDto = exports.EmployeeScopedCrudAccessDto = exports.EmployeeCrudAccessDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const employee_access_1 = require("./employee-access");
16
+ class EmployeeCrudAccessDto {
17
+ }
18
+ exports.EmployeeCrudAccessDto = EmployeeCrudAccessDto;
19
+ __decorate([
20
+ (0, class_validator_1.IsBoolean)(),
21
+ __metadata("design:type", Boolean)
22
+ ], EmployeeCrudAccessDto.prototype, "view", void 0);
23
+ __decorate([
24
+ (0, class_validator_1.IsBoolean)(),
25
+ __metadata("design:type", Boolean)
26
+ ], EmployeeCrudAccessDto.prototype, "create", void 0);
27
+ __decorate([
28
+ (0, class_validator_1.IsBoolean)(),
29
+ __metadata("design:type", Boolean)
30
+ ], EmployeeCrudAccessDto.prototype, "edit", void 0);
31
+ __decorate([
32
+ (0, class_validator_1.IsBoolean)(),
33
+ __metadata("design:type", Boolean)
34
+ ], EmployeeCrudAccessDto.prototype, "delete", void 0);
35
+ class EmployeeScopedCrudAccessDto extends EmployeeCrudAccessDto {
36
+ }
37
+ exports.EmployeeScopedCrudAccessDto = EmployeeScopedCrudAccessDto;
38
+ __decorate([
39
+ (0, class_validator_1.IsEnum)(employee_access_1.EmployeeAccessScope),
40
+ __metadata("design:type", String)
41
+ ], EmployeeScopedCrudAccessDto.prototype, "scope", void 0);
42
+ class EmployeesAccessDto extends EmployeeCrudAccessDto {
43
+ }
44
+ exports.EmployeesAccessDto = EmployeesAccessDto;
45
+ __decorate([
46
+ (0, class_validator_1.IsBoolean)(),
47
+ __metadata("design:type", Boolean)
48
+ ], EmployeesAccessDto.prototype, "manageAccess", void 0);
49
+ class EmployeeAccessDto {
50
+ }
51
+ exports.EmployeeAccessDto = EmployeeAccessDto;
52
+ __decorate([
53
+ (0, class_validator_1.IsDefined)(),
54
+ (0, class_validator_1.ValidateNested)(),
55
+ (0, class_transformer_1.Type)(() => EmployeesAccessDto),
56
+ __metadata("design:type", EmployeesAccessDto)
57
+ ], EmployeeAccessDto.prototype, "employees", void 0);
58
+ __decorate([
59
+ (0, class_validator_1.IsDefined)(),
60
+ (0, class_validator_1.ValidateNested)(),
61
+ (0, class_transformer_1.Type)(() => EmployeeScopedCrudAccessDto),
62
+ __metadata("design:type", EmployeeScopedCrudAccessDto)
63
+ ], EmployeeAccessDto.prototype, "shifts", void 0);
64
+ __decorate([
65
+ (0, class_validator_1.IsDefined)(),
66
+ (0, class_validator_1.ValidateNested)(),
67
+ (0, class_transformer_1.Type)(() => EmployeeScopedCrudAccessDto),
68
+ __metadata("design:type", EmployeeScopedCrudAccessDto)
69
+ ], EmployeeAccessDto.prototype, "bonuses", void 0);
70
+ __decorate([
71
+ (0, class_validator_1.IsDefined)(),
72
+ (0, class_validator_1.ValidateNested)(),
73
+ (0, class_transformer_1.Type)(() => EmployeeScopedCrudAccessDto),
74
+ __metadata("design:type", EmployeeScopedCrudAccessDto)
75
+ ], EmployeeAccessDto.prototype, "fines", void 0);
76
+ __decorate([
77
+ (0, class_validator_1.IsDefined)(),
78
+ (0, class_validator_1.ValidateNested)(),
79
+ (0, class_transformer_1.Type)(() => EmployeeCrudAccessDto),
80
+ __metadata("design:type", EmployeeCrudAccessDto)
81
+ ], EmployeeAccessDto.prototype, "roles", void 0);
82
+ __decorate([
83
+ (0, class_validator_1.IsDefined)(),
84
+ (0, class_validator_1.ValidateNested)(),
85
+ (0, class_transformer_1.Type)(() => EmployeeCrudAccessDto),
86
+ __metadata("design:type", EmployeeCrudAccessDto)
87
+ ], EmployeeAccessDto.prototype, "positions", void 0);
88
+ __decorate([
89
+ (0, class_validator_1.IsDefined)(),
90
+ (0, class_validator_1.ValidateNested)(),
91
+ (0, class_transformer_1.Type)(() => EmployeeCrudAccessDto),
92
+ __metadata("design:type", EmployeeCrudAccessDto)
93
+ ], EmployeeAccessDto.prototype, "reports", void 0);
94
+ __decorate([
95
+ (0, class_validator_1.IsDefined)(),
96
+ (0, class_validator_1.ValidateNested)(),
97
+ (0, class_transformer_1.Type)(() => EmployeeScopedCrudAccessDto),
98
+ __metadata("design:type", EmployeeScopedCrudAccessDto)
99
+ ], EmployeeAccessDto.prototype, "payroll", void 0);
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EmployeeAccessScope = void 0;
4
+ var EmployeeAccessScope;
5
+ (function (EmployeeAccessScope) {
6
+ EmployeeAccessScope["SELF"] = "self";
7
+ EmployeeAccessScope["ASSIGNED_LOCATIONS"] = "assignedLocations";
8
+ EmployeeAccessScope["ALL"] = "all";
9
+ })(EmployeeAccessScope || (exports.EmployeeAccessScope = EmployeeAccessScope = {}));
@@ -1,3 +1,4 @@
1
+ import { EmployeeAccess } from './employee-access';
1
2
  import { RoleLightRO } from './role-light.ro';
2
3
  export declare class RoleRO extends RoleLightRO {
3
4
  canEditUsersAccessAndTime: boolean;
@@ -38,4 +39,8 @@ export declare class RoleRO extends RoleLightRO {
38
39
  canDeleteClients: boolean;
39
40
  canDeletePayments: boolean;
40
41
  canSeeEmployeeReport: boolean;
42
+ /**
43
+ * Null means that permissions are resolved from legacy role flags.
44
+ */
45
+ employeeAccess?: EmployeeAccess | null;
41
46
  }
@@ -135,3 +135,7 @@ __decorate([
135
135
  (0, class_transformer_1.Expose)(),
136
136
  __metadata("design:type", Boolean)
137
137
  ], RoleRO.prototype, "canSeeEmployeeReport", void 0);
138
+ __decorate([
139
+ (0, class_transformer_1.Expose)(),
140
+ __metadata("design:type", Object)
141
+ ], RoleRO.prototype, "employeeAccess", void 0);
@@ -6,6 +6,7 @@ export * from './enum/salary-accrual-type.enum';
6
6
  export * from './query-salary-period.dto';
7
7
  export * from './run-salary-accruals.dto';
8
8
  export * from './salary-accrual.ro';
9
+ export * from './salary-debt.ro';
9
10
  export * from './salary-my.ro';
10
11
  export * from './salary-payout.ro';
11
12
  export * from './salary-preview.ro';
@@ -22,6 +22,7 @@ __exportStar(require("./enum/salary-accrual-type.enum"), exports);
22
22
  __exportStar(require("./query-salary-period.dto"), exports);
23
23
  __exportStar(require("./run-salary-accruals.dto"), exports);
24
24
  __exportStar(require("./salary-accrual.ro"), exports);
25
+ __exportStar(require("./salary-debt.ro"), exports);
25
26
  __exportStar(require("./salary-my.ro"), exports);
26
27
  __exportStar(require("./salary-payout.ro"), exports);
27
28
  __exportStar(require("./salary-preview.ro"), exports);
@@ -0,0 +1,6 @@
1
+ export type SalaryDebtRO = {
2
+ /** Recorded accruals and adjustments minus all salary payouts. */
3
+ totalDebt: number;
4
+ /** Positive part of totalDebt: the amount still payable to the employee. */
5
+ payable: number;
6
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -7,6 +7,8 @@ export type SalaryMyRO = {
7
7
  accrued: number;
8
8
  paid: number;
9
9
  balance: number;
10
+ /** All recorded accruals and payouts, independent of the selected period. */
11
+ totalDebt: number;
10
12
  accruals: SalaryAccrualRO[];
11
13
  payouts: SalaryPayoutRO[];
12
14
  };
@@ -27,5 +27,6 @@ export type SalaryPreviewRO = {
27
27
  balance: number;
28
28
  workMinutes: number;
29
29
  workDays: number;
30
+ shiftCount: number;
30
31
  whatIf: boolean;
31
32
  };
@@ -4,11 +4,15 @@ export type SalarySummaryRowRO = {
4
4
  schemeId: number | null;
5
5
  schemeTitle: string | null;
6
6
  calculated: number;
7
+ adjustments: number;
7
8
  accrued: number;
8
9
  paid: number;
9
10
  balance: number;
11
+ /** All recorded accruals and payouts, independent of the selected period. */
12
+ totalDebt: number;
10
13
  workMinutes: number;
11
14
  workDays: number;
15
+ shiftCount: number;
12
16
  };
13
17
  export type SalarySummaryRO = {
14
18
  from: string;
@@ -24,6 +28,7 @@ export type SalarySummaryRO = {
24
28
  accrued: number;
25
29
  paid: number;
26
30
  balance: number;
31
+ totalDebt: number;
27
32
  };
28
33
  };
29
34
  export type SalaryAccrualsRunRO = {