@escapenavigator/types 2.0.33 → 2.0.37

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.
Files changed (144) hide show
  1. package/dist/admin/aggregator-order/create-aggregator-order.dto.d.ts +1 -0
  2. package/dist/agregator/agregator-questroom.ro.d.ts +2 -0
  3. package/dist/agregator/agregator-questroom.ro.js +5 -0
  4. package/dist/certificate-sale/certificate-sale.ro.d.ts +6 -0
  5. package/dist/certificate-sale/certificate-sale.ro.js +4 -0
  6. package/dist/certificate-uploaded/certificate-uploaded.ro.d.ts +1 -1
  7. package/dist/client/client-form.dto.d.ts +5 -0
  8. package/dist/client/client-form.dto.js +9 -8
  9. package/dist/client/client.ro.d.ts +13 -0
  10. package/dist/client/client.ro.js +21 -0
  11. package/dist/constants/uploading/upload-bookeo-certificate-rows.js +2 -2
  12. package/dist/constants/uploading/upload-certificate-rows.js +1 -1
  13. package/dist/location/create-location.dto.d.ts +2 -0
  14. package/dist/location/create-location.dto.js +7 -0
  15. package/dist/location/location-light.ro.d.ts +3 -1
  16. package/dist/location/location-light.ro.js +6 -1
  17. package/dist/location/update-location-for-admin.dto.d.ts +2 -0
  18. package/dist/location/update-location-for-admin.dto.js +7 -0
  19. package/dist/log/log-title.enum.d.ts +3 -0
  20. package/dist/log/log-title.enum.js +3 -0
  21. package/dist/loyalty/adjust-bonus.dto.d.ts +14 -0
  22. package/dist/loyalty/adjust-bonus.dto.js +35 -0
  23. package/dist/loyalty/assign-client-tier.dto.d.ts +9 -0
  24. package/dist/loyalty/assign-client-tier.dto.js +29 -0
  25. package/dist/loyalty/client-loyalty.ro.d.ts +30 -0
  26. package/dist/loyalty/client-loyalty.ro.js +71 -0
  27. package/dist/loyalty/enum/loyalty-bonus-type.enum.d.ts +13 -0
  28. package/dist/loyalty/enum/loyalty-bonus-type.enum.js +17 -0
  29. package/dist/loyalty/enum/loyalty-history-mode.enum.d.ts +18 -0
  30. package/dist/loyalty/enum/loyalty-history-mode.enum.js +22 -0
  31. package/dist/loyalty/enum/loyalty-metric.enum.d.ts +12 -0
  32. package/dist/loyalty/enum/loyalty-metric.enum.js +16 -0
  33. package/dist/loyalty/enum/loyalty-program-type.enum.d.ts +12 -0
  34. package/dist/loyalty/enum/loyalty-program-type.enum.js +16 -0
  35. package/dist/loyalty/enum/loyalty-stacking.enum.d.ts +14 -0
  36. package/dist/loyalty/enum/loyalty-stacking.enum.js +18 -0
  37. package/dist/loyalty/enum/loyalty-tier-color.enum.d.ts +16 -0
  38. package/dist/loyalty/enum/loyalty-tier-color.enum.js +20 -0
  39. package/dist/loyalty/enum/loyalty-tier-source.enum.d.ts +13 -0
  40. package/dist/loyalty/enum/loyalty-tier-source.enum.js +17 -0
  41. package/dist/loyalty/loyalty-bonus.ro.d.ts +20 -0
  42. package/dist/loyalty/loyalty-bonus.ro.js +55 -0
  43. package/dist/loyalty/loyalty-presets.d.ts +45 -0
  44. package/dist/loyalty/loyalty-presets.js +30 -0
  45. package/dist/loyalty/loyalty-preview.dto.d.ts +19 -0
  46. package/dist/loyalty/loyalty-preview.dto.js +64 -0
  47. package/dist/loyalty/loyalty-preview.ro.d.ts +20 -0
  48. package/dist/loyalty/loyalty-preview.ro.js +53 -0
  49. package/dist/loyalty/loyalty-settings.dto.d.ts +51 -0
  50. package/dist/loyalty/loyalty-settings.dto.js +103 -0
  51. package/dist/loyalty/loyalty-settings.ro.d.ts +33 -0
  52. package/dist/loyalty/loyalty-settings.ro.js +67 -0
  53. package/dist/loyalty/loyalty-tier.dto.d.ts +33 -0
  54. package/dist/loyalty/loyalty-tier.dto.js +69 -0
  55. package/dist/loyalty/loyalty-tier.ro.d.ts +12 -0
  56. package/dist/loyalty/loyalty-tier.ro.js +42 -0
  57. package/dist/loyalty/pay-with-bonus.dto.d.ts +10 -0
  58. package/dist/loyalty/pay-with-bonus.dto.js +36 -0
  59. package/dist/openapi/order-groups/openapi-batch-create-preorder.dto.d.ts +3 -3
  60. package/dist/openapi/orders/openapi-order.ro.d.ts +12 -0
  61. package/dist/openapi/orders/openapi-order.ro.js +8 -0
  62. package/dist/openapi/profiles/enum/openapi-certificate-status.enum.d.ts +29 -0
  63. package/dist/openapi/profiles/enum/openapi-certificate-status.enum.js +38 -0
  64. package/dist/openapi/profiles/openapi-annul-certificate.dto.d.ts +3 -0
  65. package/dist/openapi/profiles/openapi-annul-certificate.dto.js +29 -0
  66. package/dist/openapi/profiles/openapi-certificate.ro.d.ts +33 -0
  67. package/dist/openapi/profiles/openapi-certificate.ro.js +195 -0
  68. package/dist/openapi/profiles/openapi-create-certificate.dto.d.ts +24 -0
  69. package/dist/openapi/profiles/openapi-create-certificate.dto.js +208 -0
  70. package/dist/openapi/slots/openapi-widget-slot.ro.d.ts +3 -0
  71. package/dist/openapi/slots/openapi-widget-slot.ro.js +24 -2
  72. package/dist/order/order.ro.d.ts +23 -1
  73. package/dist/order/order.ro.js +19 -0
  74. package/dist/order-discount/enum/order-discount-source.enum.d.ts +10 -0
  75. package/dist/order-discount/enum/order-discount-source.enum.js +14 -0
  76. package/dist/packages/book-package.dto.d.ts +3 -0
  77. package/dist/packages/book-package.dto.js +9 -0
  78. package/dist/packages/create-package.dto.d.ts +23 -0
  79. package/dist/packages/create-package.dto.js +81 -1
  80. package/dist/packages/package-addon.dto.d.ts +5 -0
  81. package/dist/packages/package-addon.dto.js +31 -0
  82. package/dist/packages/package-audience.enum.d.ts +6 -0
  83. package/dist/packages/package-audience.enum.js +10 -0
  84. package/dist/packages/package-feature.dto.d.ts +12 -0
  85. package/dist/packages/package-feature.dto.js +41 -0
  86. package/dist/packages/package-pricing-mode.enum.d.ts +14 -0
  87. package/dist/packages/package-pricing-mode.enum.js +18 -0
  88. package/dist/packages/package.ro.d.ts +14 -0
  89. package/dist/packages/package.ro.js +48 -0
  90. package/dist/parse-results/parse-result-payload.d.ts +23 -2
  91. package/dist/profile/company-ai-context.d.ts +2 -0
  92. package/dist/profile/contacts/create-profile-contact.dto.d.ts +5 -0
  93. package/dist/profile/contacts/create-profile-contact.dto.js +2 -1
  94. package/dist/profile/marketing-automation/marketing-automation-capabilities.js +5 -2
  95. package/dist/profile/marketing-automation/marketing-automation-config.dto.d.ts +8 -2
  96. package/dist/profile/marketing-automation/marketing-automation-config.dto.js +3 -3
  97. package/dist/profile/marketing-automation/marketing-automation-timing.d.ts +2 -2
  98. package/dist/profile/marketing-automation/marketing-automation-timing.js +2 -2
  99. package/dist/profile/notification-chanel/notification-chanel-action.enum.d.ts +16 -1
  100. package/dist/profile/notification-chanel/notification-chanel-action.enum.js +21 -1
  101. package/dist/profile/notification-chanel/notification-chanel.ro.d.ts +5 -0
  102. package/dist/profile/notification-chanel/notification-chanel.ro.js +4 -0
  103. package/dist/profile/notification-chanel/test-notification-chanel.dto.d.ts +7 -2
  104. package/dist/profile/notification-chanel/test-notification-chanel.dto.js +7 -0
  105. package/dist/profile/query-admin-profile.dto.d.ts +2 -1
  106. package/dist/profile/query-admin-profile.dto.js +1 -1
  107. package/dist/questroom/questroom-ai-context.d.ts +5 -0
  108. package/dist/shared/enum/availability.enum.d.ts +11 -0
  109. package/dist/shared/enum/availability.enum.js +15 -0
  110. package/dist/slot/bulk-update-slots.dto.d.ts +2 -0
  111. package/dist/slot/bulk-update-slots.dto.js +7 -0
  112. package/dist/slot/change-template-slots-form.dto.d.ts +3 -0
  113. package/dist/slot/change-template-slots-form.dto.js +13 -0
  114. package/dist/slot/create-slot-form.dto.d.ts +2 -0
  115. package/dist/slot/create-slot-form.dto.js +7 -0
  116. package/dist/slot/create-slot.dto.d.ts +2 -0
  117. package/dist/slot/create-slot.dto.js +7 -0
  118. package/dist/slot/daily-window-range.validator.d.ts +15 -0
  119. package/dist/slot/daily-window-range.validator.js +46 -0
  120. package/dist/slot/enum/slot-discount-type.enum.d.ts +15 -0
  121. package/dist/slot/enum/slot-discount-type.enum.js +19 -0
  122. package/dist/slot/slot-autocomplite-form.dto.d.ts +2 -0
  123. package/dist/slot/slot-autocomplite-form.dto.js +7 -0
  124. package/dist/slot/slot-discount-range.validator.d.ts +10 -0
  125. package/dist/slot/slot-discount-range.validator.js +36 -0
  126. package/dist/slot/slot.ro.d.ts +10 -0
  127. package/dist/slot/update-slot-upsellings-range.dto.d.ts +17 -0
  128. package/dist/slot/update-slot-upsellings-range.dto.js +68 -0
  129. package/dist/slot/update-slot.dto.d.ts +4 -0
  130. package/dist/slot/update-slot.dto.js +14 -0
  131. package/dist/slot-template/slot-template-element.d.ts +4 -0
  132. package/dist/slot-template/slot-template-element.js +9 -0
  133. package/dist/slot-template/slot-template-flex-rule.d.ts +8 -0
  134. package/dist/slot-template/slot-template-flex-rule.js +15 -2
  135. package/dist/tsconfig.build.tsbuildinfo +1 -1
  136. package/dist/user/crud/user.ro.d.ts +3 -0
  137. package/dist/user/crud/user.ro.js +11 -0
  138. package/dist/user/current/update-current-user-notifications.dto.d.ts +7 -0
  139. package/dist/user/current/update-current-user-notifications.dto.js +13 -0
  140. package/dist/user/enum/push-order-scope.enum.d.ts +15 -0
  141. package/dist/user/enum/push-order-scope.enum.js +19 -0
  142. package/dist/widget/enum/widget-type.enum.d.ts +3 -1
  143. package/dist/widget/enum/widget-type.enum.js +2 -0
  144. package/package.json +2 -2
@@ -1,7 +1,10 @@
1
+ import { PackageAudienceEnum } from './package-audience.enum';
1
2
  import { PackageCancelScopeEnum } from './package-cancel-scope.enum';
2
3
  import { PackageCapacityModelEnum } from './package-capacity-model.enum';
3
4
  import { PackageDiscountTypeEnum } from './package-discount-type.enum';
5
+ import { PackageFeatureDto } from './package-feature.dto';
4
6
  import { PackagePositionDto } from './package-position.dto';
7
+ import { PackagePricingModeEnum } from './package-pricing-mode.enum';
5
8
  import { PackageSplitModeEnum } from './package-split-mode.enum';
6
9
  import { PackageTimingModeEnum } from './package-timing-mode.enum';
7
10
  export declare class CreatePackageDto {
@@ -11,6 +14,11 @@ export declare class CreatePackageDto {
11
14
  photo?: string;
12
15
  color?: string;
13
16
  sortPosition: number;
17
+ /** Плашка на карточке («популярный», «выгодно»). */
18
+ badge?: string | null;
19
+ audience: PackageAudienceEnum;
20
+ /** Чек-лист «что входит в тариф» на витрине. */
21
+ features: PackageFeatureDto[];
14
22
  availableInWidget: boolean;
15
23
  saved: boolean;
16
24
  /** Диапазон действия акции (ISO date), null — бессрочно. */
@@ -34,6 +42,21 @@ export declare class CreatePackageDto {
34
42
  /** Общий мин./макс. игроков на пакет (для capacityModel=shared). */
35
43
  playersMin?: number | null;
36
44
  playersMax?: number | null;
45
+ pricingMode: PackagePricingModeEnum;
46
+ /** Цена пакета за будний день (pricingMode=fixed). */
47
+ price: number;
48
+ /** Цена за выходной/праздничный день. null — та же, что и в будни. */
49
+ weekendPrice?: number | null;
50
+ /** Какие дни недели считать «выходными» для цены (0 — Пн … 6 — Вс). */
51
+ weekendDays: number[];
52
+ /** Сколько игроков уже включено в цену пакета. */
53
+ includedPlayers: number;
54
+ /** Доплата за каждого игрока сверх `includedPlayers`. */
55
+ extraPlayerPrice: number;
56
+ /** Предоплата для брони пакета (0 — бронь без предоплаты). */
57
+ prepayment: number;
58
+ /** Платные допуслуги, предлагаемые к пакету («добавьте к празднику»). */
59
+ addonUpsellingIds: number[];
37
60
  discountType: PackageDiscountTypeEnum;
38
61
  discountAmount: number;
39
62
  /** Тираж пакета (null — без лимита). */
@@ -13,10 +13,13 @@ exports.CreatePackageDto = 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 package_audience_enum_1 = require("./package-audience.enum");
16
17
  const package_cancel_scope_enum_1 = require("./package-cancel-scope.enum");
17
18
  const package_capacity_model_enum_1 = require("./package-capacity-model.enum");
18
19
  const package_discount_type_enum_1 = require("./package-discount-type.enum");
20
+ const package_feature_dto_1 = require("./package-feature.dto");
19
21
  const package_position_dto_1 = require("./package-position.dto");
22
+ const package_pricing_mode_enum_1 = require("./package-pricing-mode.enum");
20
23
  const package_split_mode_enum_1 = require("./package-split-mode.enum");
21
24
  const package_timing_mode_enum_1 = require("./package-timing-mode.enum");
22
25
  class CreatePackageDto {
@@ -57,6 +60,26 @@ __decorate([
57
60
  (0, class_transformer_1.Expose)(),
58
61
  __metadata("design:type", Number)
59
62
  ], CreatePackageDto.prototype, "sortPosition", void 0);
63
+ __decorate([
64
+ (0, class_validator_1.IsOptional)(),
65
+ (0, class_validator_1.IsString)(),
66
+ (0, class_transformer_1.Expose)(),
67
+ __metadata("design:type", String)
68
+ ], CreatePackageDto.prototype, "badge", void 0);
69
+ __decorate([
70
+ (0, class_validator_1.IsEnum)(package_audience_enum_1.PackageAudienceEnum),
71
+ (0, class_transformer_1.Transform)(({ value }) => value !== null && value !== void 0 ? value : package_audience_enum_1.PackageAudienceEnum.ANY),
72
+ (0, class_transformer_1.Expose)(),
73
+ __metadata("design:type", String)
74
+ ], CreatePackageDto.prototype, "audience", void 0);
75
+ __decorate([
76
+ (0, class_validator_1.IsArray)(),
77
+ (0, class_validator_1.ValidateNested)({ each: true }),
78
+ (0, class_transformer_1.Type)(() => package_feature_dto_1.PackageFeatureDto),
79
+ (0, class_transformer_1.Transform)(({ value }) => (Array.isArray(value) ? value : [])),
80
+ (0, class_transformer_1.Expose)(),
81
+ __metadata("design:type", Array)
82
+ ], CreatePackageDto.prototype, "features", void 0);
60
83
  __decorate([
61
84
  (0, class_validator_1.IsBoolean)(),
62
85
  (0, class_transformer_1.Transform)(({ value }) => value !== null && value !== void 0 ? value : false),
@@ -170,6 +193,62 @@ __decorate([
170
193
  (0, class_transformer_1.Expose)(),
171
194
  __metadata("design:type", Number)
172
195
  ], CreatePackageDto.prototype, "playersMax", void 0);
196
+ __decorate([
197
+ (0, class_validator_1.IsEnum)(package_pricing_mode_enum_1.PackagePricingModeEnum),
198
+ (0, class_transformer_1.Transform)(({ value }) => value !== null && value !== void 0 ? value : package_pricing_mode_enum_1.PackagePricingModeEnum.DISCOUNT),
199
+ (0, class_transformer_1.Expose)(),
200
+ __metadata("design:type", String)
201
+ ], CreatePackageDto.prototype, "pricingMode", void 0);
202
+ __decorate([
203
+ (0, class_validator_1.ValidateIf)((o) => o.pricingMode === package_pricing_mode_enum_1.PackagePricingModeEnum.FIXED),
204
+ (0, class_validator_1.IsNumber)(),
205
+ (0, class_validator_1.Min)(0),
206
+ (0, class_transformer_1.Transform)(({ value }) => (value === undefined || value === null ? 0 : Number(value))),
207
+ (0, class_transformer_1.Expose)(),
208
+ __metadata("design:type", Number)
209
+ ], CreatePackageDto.prototype, "price", void 0);
210
+ __decorate([
211
+ (0, class_validator_1.IsOptional)(),
212
+ (0, class_validator_1.IsNumber)(),
213
+ (0, class_validator_1.Min)(0),
214
+ (0, class_transformer_1.Expose)(),
215
+ __metadata("design:type", Number)
216
+ ], CreatePackageDto.prototype, "weekendPrice", void 0);
217
+ __decorate([
218
+ (0, class_validator_1.IsArray)(),
219
+ (0, class_validator_1.IsInt)({ each: true }),
220
+ (0, class_transformer_1.Transform)(({ value }) => (Array.isArray(value) ? value.map((v) => +v) : [5, 6])),
221
+ (0, class_transformer_1.Expose)(),
222
+ __metadata("design:type", Array)
223
+ ], CreatePackageDto.prototype, "weekendDays", void 0);
224
+ __decorate([
225
+ (0, class_validator_1.IsInt)(),
226
+ (0, class_validator_1.Min)(0),
227
+ (0, class_transformer_1.Transform)(({ value }) => (value === undefined || value === null ? 0 : +value)),
228
+ (0, class_transformer_1.Expose)(),
229
+ __metadata("design:type", Number)
230
+ ], CreatePackageDto.prototype, "includedPlayers", void 0);
231
+ __decorate([
232
+ (0, class_validator_1.IsNumber)(),
233
+ (0, class_validator_1.Min)(0),
234
+ (0, class_transformer_1.Transform)(({ value }) => (value === undefined || value === null ? 0 : Number(value))),
235
+ (0, class_transformer_1.Expose)(),
236
+ __metadata("design:type", Number)
237
+ ], CreatePackageDto.prototype, "extraPlayerPrice", void 0);
238
+ __decorate([
239
+ (0, class_validator_1.IsNumber)(),
240
+ (0, class_validator_1.Min)(0),
241
+ (0, class_transformer_1.Transform)(({ value }) => (value === undefined || value === null ? 0 : Number(value))),
242
+ (0, class_transformer_1.Expose)(),
243
+ __metadata("design:type", Number)
244
+ ], CreatePackageDto.prototype, "prepayment", void 0);
245
+ __decorate([
246
+ (0, class_validator_1.IsArray)(),
247
+ (0, class_validator_1.IsInt)({ each: true }),
248
+ (0, class_transformer_1.Transform)(({ value }) => (Array.isArray(value) ? value.map((v) => +v) : [])),
249
+ (0, class_transformer_1.Expose)(),
250
+ __metadata("design:type", Array)
251
+ ], CreatePackageDto.prototype, "addonUpsellingIds", void 0);
173
252
  __decorate([
174
253
  (0, class_validator_1.IsEnum)(package_discount_type_enum_1.PackageDiscountTypeEnum),
175
254
  (0, class_transformer_1.Transform)(({ value }) => value !== null && value !== void 0 ? value : package_discount_type_enum_1.PackageDiscountTypeEnum.PERCENT),
@@ -177,7 +256,8 @@ __decorate([
177
256
  __metadata("design:type", String)
178
257
  ], CreatePackageDto.prototype, "discountType", void 0);
179
258
  __decorate([
180
- (0, class_validator_1.ValidateIf)((o) => o.discountType !== package_discount_type_enum_1.PackageDiscountTypeEnum.FULL),
259
+ (0, class_validator_1.ValidateIf)((o) => o.pricingMode !== package_pricing_mode_enum_1.PackagePricingModeEnum.FIXED &&
260
+ o.discountType !== package_discount_type_enum_1.PackageDiscountTypeEnum.FULL),
181
261
  (0, class_validator_1.IsNumber)(),
182
262
  (0, class_validator_1.Min)(0),
183
263
  (0, class_transformer_1.Transform)(({ value }) => (value === undefined || value === null ? 0 : Number(value))),
@@ -0,0 +1,5 @@
1
+ /** Платная допуслуга, выбранная клиентом сверх пакета («добавьте к празднику»). */
2
+ export declare class PackageAddonSelectionDto {
3
+ upsellingId: number;
4
+ count: number;
5
+ }
@@ -0,0 +1,31 @@
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.PackageAddonSelectionDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ /** Платная допуслуга, выбранная клиентом сверх пакета («добавьте к празднику»). */
16
+ class PackageAddonSelectionDto {
17
+ }
18
+ exports.PackageAddonSelectionDto = PackageAddonSelectionDto;
19
+ __decorate([
20
+ (0, class_validator_1.IsInt)(),
21
+ (0, class_transformer_1.Transform)(({ value }) => +value),
22
+ (0, class_transformer_1.Expose)(),
23
+ __metadata("design:type", Number)
24
+ ], PackageAddonSelectionDto.prototype, "upsellingId", void 0);
25
+ __decorate([
26
+ (0, class_validator_1.IsInt)(),
27
+ (0, class_validator_1.Min)(1),
28
+ (0, class_transformer_1.Transform)(({ value }) => (value === undefined || value === null ? 1 : +value)),
29
+ (0, class_transformer_1.Expose)(),
30
+ __metadata("design:type", Number)
31
+ ], PackageAddonSelectionDto.prototype, "count", void 0);
@@ -0,0 +1,6 @@
1
+ /** Для кого пакет — используется фильтром «кто празднует» в виджете. */
2
+ export declare enum PackageAudienceEnum {
3
+ ANY = "any",
4
+ KIDS = "kids",
5
+ ADULTS = "adults"
6
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PackageAudienceEnum = void 0;
4
+ /** Для кого пакет — используется фильтром «кто празднует» в виджете. */
5
+ var PackageAudienceEnum;
6
+ (function (PackageAudienceEnum) {
7
+ PackageAudienceEnum["ANY"] = "any";
8
+ PackageAudienceEnum["KIDS"] = "kids";
9
+ PackageAudienceEnum["ADULTS"] = "adults";
10
+ })(PackageAudienceEnum || (exports.PackageAudienceEnum = PackageAudienceEnum = {}));
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Строка чек-листа «что входит в тариф» на витрине пакета.
3
+ *
4
+ * Это чистая витрина: `included: false` рисуется зачёркнутым, чтобы клиент
5
+ * видел разницу между пакетами одной линейки. Состав, который реально
6
+ * бронируется и попадает в заказ, живёт в `PackageEntity.positions`.
7
+ */
8
+ export declare class PackageFeatureDto {
9
+ id: string;
10
+ title: string;
11
+ included: boolean;
12
+ }
@@ -0,0 +1,41 @@
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.PackageFeatureDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const is_not_blank_1 = require("../shared/is-not-blank");
16
+ /**
17
+ * Строка чек-листа «что входит в тариф» на витрине пакета.
18
+ *
19
+ * Это чистая витрина: `included: false` рисуется зачёркнутым, чтобы клиент
20
+ * видел разницу между пакетами одной линейки. Состав, который реально
21
+ * бронируется и попадает в заказ, живёт в `PackageEntity.positions`.
22
+ */
23
+ class PackageFeatureDto {
24
+ }
25
+ exports.PackageFeatureDto = PackageFeatureDto;
26
+ __decorate([
27
+ (0, class_validator_1.IsString)(),
28
+ (0, class_transformer_1.Expose)(),
29
+ __metadata("design:type", String)
30
+ ], PackageFeatureDto.prototype, "id", void 0);
31
+ __decorate([
32
+ (0, is_not_blank_1.IsNotBlank)(),
33
+ (0, class_transformer_1.Expose)(),
34
+ __metadata("design:type", String)
35
+ ], PackageFeatureDto.prototype, "title", void 0);
36
+ __decorate([
37
+ (0, class_validator_1.IsBoolean)(),
38
+ (0, class_transformer_1.Transform)(({ value }) => value !== null && value !== void 0 ? value : true),
39
+ (0, class_transformer_1.Expose)(),
40
+ __metadata("design:type", Boolean)
41
+ ], PackageFeatureDto.prototype, "included", void 0);
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Как считается цена пакета.
3
+ *
4
+ * `DISCOUNT` — исторический режим «комбо»: цена собирается из тарифов слотов,
5
+ * пакет лишь кладёт групповую скидку.
6
+ *
7
+ * `FIXED` — пакет сам является товаром с прайсом: фиксированная цена за
8
+ * будний/выходной день, N игроков включено, доплата за каждого сверх. Тарифы
9
+ * слотов при этом на итог не влияют.
10
+ */
11
+ export declare enum PackagePricingModeEnum {
12
+ DISCOUNT = "discount",
13
+ FIXED = "fixed"
14
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PackagePricingModeEnum = void 0;
4
+ /**
5
+ * Как считается цена пакета.
6
+ *
7
+ * `DISCOUNT` — исторический режим «комбо»: цена собирается из тарифов слотов,
8
+ * пакет лишь кладёт групповую скидку.
9
+ *
10
+ * `FIXED` — пакет сам является товаром с прайсом: фиксированная цена за
11
+ * будний/выходной день, N игроков включено, доплата за каждого сверх. Тарифы
12
+ * слотов при этом на итог не влияют.
13
+ */
14
+ var PackagePricingModeEnum;
15
+ (function (PackagePricingModeEnum) {
16
+ PackagePricingModeEnum["DISCOUNT"] = "discount";
17
+ PackagePricingModeEnum["FIXED"] = "fixed";
18
+ })(PackagePricingModeEnum || (exports.PackagePricingModeEnum = PackagePricingModeEnum = {}));
@@ -1,8 +1,11 @@
1
1
  import { RO } from '../shared/ro-class';
2
+ import { PackageAudienceEnum } from './package-audience.enum';
2
3
  import { PackageCancelScopeEnum } from './package-cancel-scope.enum';
3
4
  import { PackageCapacityModelEnum } from './package-capacity-model.enum';
4
5
  import { PackageDiscountTypeEnum } from './package-discount-type.enum';
6
+ import { PackageFeatureDto } from './package-feature.dto';
5
7
  import { PackagePositionDto } from './package-position.dto';
8
+ import { PackagePricingModeEnum } from './package-pricing-mode.enum';
6
9
  import { PackageSplitModeEnum } from './package-split-mode.enum';
7
10
  import { PackageTimingModeEnum } from './package-timing-mode.enum';
8
11
  export declare class PackageResponseObject extends RO {
@@ -12,6 +15,9 @@ export declare class PackageResponseObject extends RO {
12
15
  photo?: string;
13
16
  color?: string;
14
17
  sortPosition: number;
18
+ badge?: string | null;
19
+ audience: PackageAudienceEnum;
20
+ features: PackageFeatureDto[];
15
21
  availableInWidget: boolean;
16
22
  saved: boolean;
17
23
  activeFrom?: string | null;
@@ -32,6 +38,14 @@ export declare class PackageResponseObject extends RO {
32
38
  splitMode: PackageSplitModeEnum;
33
39
  playersMin?: number | null;
34
40
  playersMax?: number | null;
41
+ pricingMode: PackagePricingModeEnum;
42
+ price: number;
43
+ weekendPrice?: number | null;
44
+ weekendDays: number[];
45
+ includedPlayers: number;
46
+ extraPlayerPrice: number;
47
+ prepayment: number;
48
+ addonUpsellingIds: number[];
35
49
  discountType: PackageDiscountTypeEnum;
36
50
  discountAmount: number;
37
51
  salesLimit?: number | null;
@@ -12,10 +12,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.PackageResponseObject = void 0;
13
13
  const class_transformer_1 = require("class-transformer");
14
14
  const ro_class_1 = require("../shared/ro-class");
15
+ const package_audience_enum_1 = require("./package-audience.enum");
15
16
  const package_cancel_scope_enum_1 = require("./package-cancel-scope.enum");
16
17
  const package_capacity_model_enum_1 = require("./package-capacity-model.enum");
17
18
  const package_discount_type_enum_1 = require("./package-discount-type.enum");
19
+ const package_feature_dto_1 = require("./package-feature.dto");
18
20
  const package_position_dto_1 = require("./package-position.dto");
21
+ const package_pricing_mode_enum_1 = require("./package-pricing-mode.enum");
19
22
  const package_split_mode_enum_1 = require("./package-split-mode.enum");
20
23
  const package_timing_mode_enum_1 = require("./package-timing-mode.enum");
21
24
  class PackageResponseObject extends ro_class_1.RO {
@@ -45,6 +48,19 @@ __decorate([
45
48
  (0, class_transformer_1.Expose)(),
46
49
  __metadata("design:type", Number)
47
50
  ], PackageResponseObject.prototype, "sortPosition", void 0);
51
+ __decorate([
52
+ (0, class_transformer_1.Expose)(),
53
+ __metadata("design:type", String)
54
+ ], PackageResponseObject.prototype, "badge", void 0);
55
+ __decorate([
56
+ (0, class_transformer_1.Expose)(),
57
+ __metadata("design:type", String)
58
+ ], PackageResponseObject.prototype, "audience", void 0);
59
+ __decorate([
60
+ (0, class_transformer_1.Expose)(),
61
+ (0, class_transformer_1.Type)(() => package_feature_dto_1.PackageFeatureDto),
62
+ __metadata("design:type", Array)
63
+ ], PackageResponseObject.prototype, "features", void 0);
48
64
  __decorate([
49
65
  (0, class_transformer_1.Expose)(),
50
66
  __metadata("design:type", Boolean)
@@ -122,6 +138,38 @@ __decorate([
122
138
  (0, class_transformer_1.Expose)(),
123
139
  __metadata("design:type", Number)
124
140
  ], PackageResponseObject.prototype, "playersMax", void 0);
141
+ __decorate([
142
+ (0, class_transformer_1.Expose)(),
143
+ __metadata("design:type", String)
144
+ ], PackageResponseObject.prototype, "pricingMode", void 0);
145
+ __decorate([
146
+ (0, class_transformer_1.Expose)(),
147
+ __metadata("design:type", Number)
148
+ ], PackageResponseObject.prototype, "price", void 0);
149
+ __decorate([
150
+ (0, class_transformer_1.Expose)(),
151
+ __metadata("design:type", Number)
152
+ ], PackageResponseObject.prototype, "weekendPrice", void 0);
153
+ __decorate([
154
+ (0, class_transformer_1.Expose)(),
155
+ __metadata("design:type", Array)
156
+ ], PackageResponseObject.prototype, "weekendDays", void 0);
157
+ __decorate([
158
+ (0, class_transformer_1.Expose)(),
159
+ __metadata("design:type", Number)
160
+ ], PackageResponseObject.prototype, "includedPlayers", void 0);
161
+ __decorate([
162
+ (0, class_transformer_1.Expose)(),
163
+ __metadata("design:type", Number)
164
+ ], PackageResponseObject.prototype, "extraPlayerPrice", void 0);
165
+ __decorate([
166
+ (0, class_transformer_1.Expose)(),
167
+ __metadata("design:type", Number)
168
+ ], PackageResponseObject.prototype, "prepayment", void 0);
169
+ __decorate([
170
+ (0, class_transformer_1.Expose)(),
171
+ __metadata("design:type", Array)
172
+ ], PackageResponseObject.prototype, "addonUpsellingIds", void 0);
125
173
  __decorate([
126
174
  (0, class_transformer_1.Expose)(),
127
175
  __metadata("design:type", String)
@@ -32,8 +32,15 @@ export type ParsedQuest = {
32
32
  /** Возраст, как он написан на сайте (до приведения к лестнице). */
33
33
  minAgeRaw?: number;
34
34
  type?: QuestroomTypeEnum;
35
- /** Тематические теги квеста. */
35
+ /**
36
+ * Итоговый набор тегов, который уедет в карточку. У сматченного квеста это
37
+ * теги из базы плюс найденные на сайте, дальше их правит модератор.
38
+ */
36
39
  tags?: TagsEnum[];
40
+ /** Что нашёл на сайте парсер — показывается модератору рядом с итогом. */
41
+ parsedTags?: TagsEnum[];
42
+ /** Теги сматченного квеста в базе: видно, что именно заменяется. */
43
+ existingTags?: TagsEnum[];
37
44
  /** Важная информация для посетителей (ограничения, что взять с собой). */
38
45
  importantInfo?: string;
39
46
  /**
@@ -61,8 +68,16 @@ export type ParsedQuest = {
61
68
  * известного размера группы). Показывается модератору, в каталог не идёт.
62
69
  */
63
70
  priceNote?: string;
64
- /** URL фото с сайта-источника (в S3 загружаются при применении). */
71
+ /**
72
+ * Фото, которые уедут в карточку: с сайта-источника у нового квеста плюс
73
+ * добавленные модератором. Первое становится обложкой, в S3 загружаются
74
+ * при применении.
75
+ */
65
76
  photos?: string[];
77
+ /** Что нашёл на сайте парсер — чтобы вернуть список после смены привязки. */
78
+ parsedPhotos?: string[];
79
+ /** Фото сматченного квеста в базе: новые доливаются к ним, а не затирают. */
80
+ existingPhotos?: string[];
66
81
  /** URL страницы квеста. */
67
82
  sourceUrl?: string;
68
83
  /** ID существующего квеста, если сматчен (для диффа). */
@@ -71,6 +86,12 @@ export type ParsedQuest = {
71
86
  matchCandidates?: ParseMatchCandidate[];
72
87
  /** Исключён модератором из применения. */
73
88
  excluded?: boolean;
89
+ /**
90
+ * Поля, которые модератор поправил руками. Применяются, даже если парсер
91
+ * по ним расхождения не нашёл: важную информацию и теги он находит редко,
92
+ * а вписать их при разборе задачи всё равно нужно.
93
+ */
94
+ editedFields?: string[];
74
95
  };
75
96
  export type ParsedLocation = {
76
97
  address: string;
@@ -1,4 +1,5 @@
1
1
  import { QuestroomCancelationTypeEnum } from '../questroom/enum/questroom-cancelation-type.enum';
2
+ import { AvailabilityEnum } from '../shared/enum/availability.enum';
2
3
  import { Languages } from '../shared/enum/languages.enum';
3
4
  import { PrepaymentTypeEnum } from '../slot/enum/prepayment-type.enum';
4
5
  /**
@@ -39,6 +40,7 @@ export type CompanyAiContext = {
39
40
  timeZone?: string;
40
41
  amenities: {
41
42
  wifi: boolean;
43
+ airConditioning: AvailabilityEnum;
42
44
  wardrobe: boolean;
43
45
  freeParking: boolean;
44
46
  parking: boolean;
@@ -1,4 +1,9 @@
1
1
  export declare class CreateProfileContactDto {
2
+ /**
3
+ * `profile-contact.name` — NOT NULL в БД, и контакт без имени всё равно
4
+ * бесполезен: сохранение «только ссылки» падало 500 из БД вместо
5
+ * валидации формы (ESCAPE-NAVIGATOR-API-Q3).
6
+ */
2
7
  name: string;
3
8
  facebook: string;
4
9
  linkedin: string;
@@ -12,11 +12,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.CreateProfileContactDto = void 0;
13
13
  const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
+ const is_not_blank_1 = require("../../shared/is-not-blank");
15
16
  class CreateProfileContactDto {
16
17
  }
17
18
  exports.CreateProfileContactDto = CreateProfileContactDto;
18
19
  __decorate([
19
- (0, class_validator_1.IsOptional)(),
20
+ (0, is_not_blank_1.IsNotBlank)(),
20
21
  (0, class_transformer_1.Expose)(),
21
22
  __metadata("design:type", String)
22
23
  ], CreateProfileContactDto.prototype, "name", void 0);
@@ -24,13 +24,16 @@ exports.MARKETING_AUTOMATION_CAPABILITIES = {
24
24
  supportsSendImmediately: false,
25
25
  supportsDiscount: true,
26
26
  },
27
+ // `min: 0` — «поздравить в сам день рождения»: тик крутится каждый час и
28
+ // отправляет в 09:00 по календарю компании, поэтому нулевое смещение
29
+ // работает так же, как любое другое (см. MarketingAutomationBirthdayService).
27
30
  [marketing_automation_type_enum_1.MarketingAutomationTypeEnum.BIRTHDAY_ADULT]: {
28
- timing: { direction: 'before', unit: 'days', min: 2, max: 7, default: 3 },
31
+ timing: { direction: 'before', unit: 'days', min: 0, max: 7, default: 3 },
29
32
  supportsSendImmediately: false,
30
33
  supportsDiscount: true,
31
34
  },
32
35
  [marketing_automation_type_enum_1.MarketingAutomationTypeEnum.BIRTHDAY_CHILD]: {
33
- timing: { direction: 'before', unit: 'days', min: 2, max: 7, default: 3 },
36
+ timing: { direction: 'before', unit: 'days', min: 0, max: 7, default: 3 },
34
37
  supportsSendImmediately: false,
35
38
  supportsDiscount: true,
36
39
  },
@@ -6,8 +6,8 @@
6
6
  * Здесь умышленно НЕТ направления (до/после события) и единицы
7
7
  * (часы/дни) для `sendOffset` — это свойство ТИПА, а не записи, и
8
8
  * живёт в `MARKETING_AUTOMATION_CAPABILITIES`. Границы значения
9
- * (min/max) валидируются динамически по типу там же, поэтому тут
10
- * достаточно базовой проверки «положительное целое».
9
+ * (min/max) тоже свойство типа, поэтому тут достаточно базовой
10
+ * проверки «неотрицательное целое».
11
11
  */
12
12
  export declare class MarketingAutomationConfigDto {
13
13
  /**
@@ -17,6 +17,12 @@ export declare class MarketingAutomationConfigDto {
17
17
  * Для `retargeting` — часы после покидания бронирования (дефолт 24).
18
18
  * `undefined` — у типов без настраиваемого тайминга
19
19
  * (`custom_booking` — транзакционно).
20
+ *
21
+ * 0 — «в день самого события»: для поздравлений с днём рождения это
22
+ * штатный сценарий (письмо уходит в сам ДР в 09:00 по календарю
23
+ * компании), поэтому здесь `@Min(0)`, а не `@IsPositive`. Типы, где 0
24
+ * не имеет смысла, защищены своим `timing.min` — планировщик кламмит
25
+ * значение при расчёте `sendAt` (`clampSendOffset`).
20
26
  */
21
27
  sendOffset?: number;
22
28
  /**
@@ -20,8 +20,8 @@ const class_validator_1 = require("class-validator");
20
20
  * Здесь умышленно НЕТ направления (до/после события) и единицы
21
21
  * (часы/дни) для `sendOffset` — это свойство ТИПА, а не записи, и
22
22
  * живёт в `MARKETING_AUTOMATION_CAPABILITIES`. Границы значения
23
- * (min/max) валидируются динамически по типу там же, поэтому тут
24
- * достаточно базовой проверки «положительное целое».
23
+ * (min/max) тоже свойство типа, поэтому тут достаточно базовой
24
+ * проверки «неотрицательное целое».
25
25
  */
26
26
  class MarketingAutomationConfigDto {
27
27
  }
@@ -29,7 +29,7 @@ exports.MarketingAutomationConfigDto = MarketingAutomationConfigDto;
29
29
  __decorate([
30
30
  (0, class_validator_1.IsOptional)(),
31
31
  (0, class_validator_1.IsInt)(),
32
- (0, class_validator_1.IsPositive)(),
32
+ (0, class_validator_1.Min)(0),
33
33
  (0, class_transformer_1.Expose)(),
34
34
  __metadata("design:type", Number)
35
35
  ], MarketingAutomationConfigDto.prototype, "sendOffset", void 0);
@@ -2,8 +2,8 @@ import { MarketingAutomationTiming } from './marketing-automation-capabilities';
2
2
  /**
3
3
  * Единый источник правды для расчёта тайминга автоматизаций.
4
4
  *
5
- * Величина смещения хранится в `config.sendOffset` (всегда положительное
6
- * число), а направление (`before`/`after`) и единица (`hours`/`days`)
5
+ * Величина смещения хранится в `config.sendOffset` (неотрицательное число;
6
+ * 0 = в день события), а направление (`before`/`after`) и единица (`hours`/`days`)
7
7
  * задаются типом письма через `MARKETING_AUTOMATION_CAPABILITIES`. Функция
8
8
  * сводит их к знаковому смещению В ЧАСАХ относительно опорного события
9
9
  * (для order-linked — `order.utcDate`, т.е. дата игры):
@@ -5,8 +5,8 @@ exports.clampSendOffset = clampSendOffset;
5
5
  /**
6
6
  * Единый источник правды для расчёта тайминга автоматизаций.
7
7
  *
8
- * Величина смещения хранится в `config.sendOffset` (всегда положительное
9
- * число), а направление (`before`/`after`) и единица (`hours`/`days`)
8
+ * Величина смещения хранится в `config.sendOffset` (неотрицательное число;
9
+ * 0 = в день события), а направление (`before`/`after`) и единица (`hours`/`days`)
10
10
  * задаются типом письма через `MARKETING_AUTOMATION_CAPABILITIES`. Функция
11
11
  * сводит их к знаковому смещению В ЧАСАХ относительно опорного события
12
12
  * (для order-linked — `order.utcDate`, т.е. дата игры):
@@ -6,5 +6,20 @@ export declare enum NotificationTriggerEnum {
6
6
  CERTIFICATE_SALES = "certificate-sale",
7
7
  UNASSIGNMENTS = "unassigments",
8
8
  /** Оплата игры через orders (orders.escapenavigator) */
9
- ORDER_PAID_VIA_ORDERS = "order-paid-via-orders"
9
+ ORDER_PAID_VIA_ORDERS = "order-paid-via-orders",
10
+ /**
11
+ * Любое изменение выпущенного сертификата: гашение в заказе, доплата или
12
+ * возврат, отгрузка и трек-номер, срок действия, скидки и промокоды,
13
+ * ручная пометка «использован». Payload несёт `changedFields` и `oldData`
14
+ * с прежними значениями только изменившихся полей.
15
+ */
16
+ CERTIFICATE_UPDATED = "certificate-updated",
17
+ /** Аннулирование сертификата (сотрудником, клиентом или по API). */
18
+ CERTIFICATE_ANNUL = "certificate-annul"
10
19
  }
20
+ /**
21
+ * События, payload которых строится вокруг продажи сертификата, а не заказа.
22
+ * Тест канала и UI спрашивают для них код сертификата вместо номера заказа.
23
+ */
24
+ export declare const CERTIFICATE_NOTIFICATION_TRIGGERS: NotificationTriggerEnum[];
25
+ export declare const isCertificateNotificationTrigger: (trigger: NotificationTriggerEnum) => boolean;