@escapenavigator/types 1.10.129 → 1.10.131

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 (74) hide show
  1. package/dist/certificate-v2/certificate-settings.ro.d.ts +2 -0
  2. package/dist/certificate-v2/certificate-settings.ro.js +8 -0
  3. package/dist/certificate-v2/update-certificate-settings.dto.d.ts +2 -0
  4. package/dist/certificate-v2/update-certificate-settings.dto.js +12 -0
  5. package/dist/email-builder/index.d.ts +18 -0
  6. package/dist/email-builder/index.js +48 -20
  7. package/dist/emails/index.d.ts +21 -0
  8. package/dist/openapi/certificates-v2/openapi-certificates-shop.ro.d.ts +2 -0
  9. package/dist/openapi/certificates-v2/openapi-certificates-shop.ro.js +8 -0
  10. package/dist/openapi/morty/morty-attraction.ro.d.ts +26 -0
  11. package/dist/openapi/morty/morty-attraction.ro.js +91 -0
  12. package/dist/openapi/morty/morty-attractions-query.dto.d.ts +8 -0
  13. package/dist/openapi/morty/morty-attractions-query.dto.js +29 -0
  14. package/dist/openapi/morty/morty-booking.ro.d.ts +13 -0
  15. package/dist/openapi/morty/morty-booking.ro.js +45 -0
  16. package/dist/openapi/morty/morty-create-booking.dto.d.ts +42 -0
  17. package/dist/openapi/morty/morty-create-booking.dto.js +122 -0
  18. package/dist/openapi/morty/morty-timeslot.ro.d.ts +49 -0
  19. package/dist/openapi/morty/morty-timeslot.ro.js +129 -0
  20. package/dist/openapi/morty/morty-timeslots-query.dto.d.ts +21 -0
  21. package/dist/openapi/morty/morty-timeslots-query.dto.js +48 -0
  22. package/dist/openapi/shared/openapi-questroom.ro.d.ts +2 -41
  23. package/dist/openapi/shared/openapi-questroom.ro.js +8 -4
  24. package/dist/openapi/widget/openapi-resolve-promocode.ro.d.ts +7 -0
  25. package/dist/openapi/widget/openapi-resolve-promocode.ro.js +5 -0
  26. package/dist/openapi/widget/openapi-widget-info.ro.js +5 -1
  27. package/dist/order/create-order.dto.d.ts +12 -0
  28. package/dist/order/create-order.dto.js +6 -0
  29. package/dist/profile/birthday-marketing/birthday-marketing.dto.d.ts +6 -0
  30. package/dist/profile/birthday-marketing/birthday-marketing.dto.js +6 -0
  31. package/dist/profile/cross-sale/cross-sale.dto.d.ts +8 -0
  32. package/dist/profile/cross-sale/cross-sale.dto.js +6 -0
  33. package/dist/profile/cross-sale/cross-sale.ro.d.ts +2 -0
  34. package/dist/profile/cross-sale/cross-sale.ro.js +4 -0
  35. package/dist/profile/custom-client-booking-email/custom-client-booking-email.dto.d.ts +11 -0
  36. package/dist/profile/custom-client-booking-email/custom-client-booking-email.dto.js +6 -0
  37. package/dist/profile/custom-client-booking-email/custom-client-booking-email.ro.d.ts +9 -0
  38. package/dist/profile/custom-client-booking-email/custom-client-booking-email.ro.js +4 -0
  39. package/dist/profile/marketing-email/preview-campaign-v2.dto.d.ts +37 -0
  40. package/dist/profile/marketing-email/preview-campaign-v2.dto.js +43 -1
  41. package/dist/promocode/create-promocode.dto.d.ts +7 -0
  42. package/dist/promocode/create-promocode.dto.js +8 -0
  43. package/dist/promocode/emun/promocode-certificate-mode.enum.d.ts +18 -0
  44. package/dist/promocode/emun/promocode-certificate-mode.enum.js +22 -0
  45. package/dist/promocode/promocode-nominal-rule.d.ts +14 -5
  46. package/dist/promocode/promocode.ro.d.ts +2 -0
  47. package/dist/promocode/promocode.ro.js +5 -0
  48. package/dist/questroom/create-questroom-admin.dto.d.ts +1 -0
  49. package/dist/questroom/create-questroom-admin.dto.js +12 -5
  50. package/dist/questroom/create-questroom.dto.js +10 -6
  51. package/dist/questroom/enum/questroom-type.enum.d.ts +2 -1
  52. package/dist/questroom/enum/questroom-type.enum.js +1 -0
  53. package/dist/questroom/lounge-questroom.d.ts +11 -0
  54. package/dist/questroom/lounge-questroom.js +36 -0
  55. package/dist/questroom/questrooms-list-admin.ro.d.ts +2 -0
  56. package/dist/questroom/questrooms-list-admin.ro.js +8 -0
  57. package/dist/questroom-scenario-email/create-questroom-scenario-email.dto.d.ts +13 -0
  58. package/dist/questroom-scenario-email/create-questroom-scenario-email.dto.js +6 -0
  59. package/dist/questroom-scenario-email/questroom-scenario-email.ro.d.ts +2 -0
  60. package/dist/questroom-scenario-email/questroom-scenario-email.ro.js +4 -0
  61. package/dist/shared/source.enum.d.ts +1 -0
  62. package/dist/shared/source.enum.js +1 -0
  63. package/dist/tsconfig.build.tsbuildinfo +1 -1
  64. package/dist/widget-sessions/widget-session-attach-order.dto.d.ts +11 -0
  65. package/dist/widget-sessions/widget-session-attach-order.dto.js +42 -0
  66. package/dist/widget-sessions/widget-session-events.ro.d.ts +8 -0
  67. package/dist/widget-sessions/widget-session-events.ro.js +2 -0
  68. package/dist/widget-sessions/widget-session-query.dto.d.ts +15 -0
  69. package/dist/widget-sessions/widget-session-query.dto.js +63 -0
  70. package/dist/widget-sessions/widget-session-update.dto.d.ts +6 -0
  71. package/dist/widget-sessions/widget-session-update.dto.js +27 -0
  72. package/dist/widget-sessions/widget-session.ro.d.ts +50 -0
  73. package/dist/widget-sessions/widget-session.ro.js +2 -0
  74. package/package.json +2 -2
@@ -9,11 +9,40 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.PreviewMarketingEmailCampaignV2Dto = void 0;
12
+ exports.PreviewMarketingEmailCampaignV2Dto = exports.PreviewPromocodeDto = void 0;
13
13
  const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
15
  const email_builder_1 = require("../../email-builder");
16
16
  const create_profile_marketing_email_campaign_dto_1 = require("./create-profile-marketing-email-campaign.dto");
17
+ /**
18
+ * Promocode-payload для preview. Фронт собирает поля из реальных
19
+ * настроек письма (cross-sale/retargeting/birthday-discount form
20
+ * values) и шлёт сюда — бэк просто прокидывает в `EmailScopeContext`,
21
+ * чтобы юзер видел в превью свои настоящие промокоды, а не общий
22
+ * mock «SUMMER10/10%». Все поля опциональны: если фронт что-то не
23
+ * заполнил, резолвер откатится на `exampleValue`.
24
+ */
25
+ class PreviewPromocodeDto {
26
+ }
27
+ exports.PreviewPromocodeDto = PreviewPromocodeDto;
28
+ __decorate([
29
+ (0, class_validator_1.IsOptional)(),
30
+ (0, class_validator_1.IsString)(),
31
+ (0, class_transformer_1.Expose)(),
32
+ __metadata("design:type", String)
33
+ ], PreviewPromocodeDto.prototype, "code", void 0);
34
+ __decorate([
35
+ (0, class_validator_1.IsOptional)(),
36
+ (0, class_validator_1.IsString)(),
37
+ (0, class_transformer_1.Expose)(),
38
+ __metadata("design:type", String)
39
+ ], PreviewPromocodeDto.prototype, "discount", void 0);
40
+ __decorate([
41
+ (0, class_validator_1.IsOptional)(),
42
+ (0, class_validator_1.IsString)(),
43
+ (0, class_transformer_1.Expose)(),
44
+ __metadata("design:type", String)
45
+ ], PreviewPromocodeDto.prototype, "expireDate", void 0);
17
46
  /**
18
47
  * Request body for `POST /profile-marketing-email-campaigns/preview-v2`.
19
48
  *
@@ -42,3 +71,16 @@ __decorate([
42
71
  (0, class_transformer_1.Expose)(),
43
72
  __metadata("design:type", Number)
44
73
  ], PreviewMarketingEmailCampaignV2Dto.prototype, "previewClientId", void 0);
74
+ __decorate([
75
+ (0, class_validator_1.IsOptional)(),
76
+ (0, class_validator_1.IsInt)(),
77
+ (0, class_transformer_1.Expose)(),
78
+ __metadata("design:type", Number)
79
+ ], PreviewMarketingEmailCampaignV2Dto.prototype, "previewQuestroomId", void 0);
80
+ __decorate([
81
+ (0, class_validator_1.IsOptional)(),
82
+ (0, class_validator_1.ValidateNested)(),
83
+ (0, class_transformer_1.Type)(() => PreviewPromocodeDto),
84
+ (0, class_transformer_1.Expose)(),
85
+ __metadata("design:type", PreviewPromocodeDto)
86
+ ], PreviewMarketingEmailCampaignV2Dto.prototype, "previewPromocode", void 0);
@@ -1,3 +1,4 @@
1
+ import { PromocodeCertificateModeEnum } from './emun/promocode-certificate-mode.enum';
1
2
  import { PromocodeKindEnum } from './emun/promocode-kind.enum';
2
3
  import { PromocodeTypeEnum } from './emun/promocode-type.enum';
3
4
  export declare class PromocodeNominalRuleDto {
@@ -29,6 +30,12 @@ export declare class CreatePromocodeDto {
29
30
  minPlayers: number;
30
31
  maxPlayers: number;
31
32
  certificateNominalRules?: PromocodeNominalRuleDto[];
33
+ /**
34
+ * Режим действия промокода для сертификатов. Используется только при
35
+ * `availableForCertificates === true`. Если не задан — трактуем как
36
+ * `DISCOUNT` (легаси-семантика: скидка на цену сертификата).
37
+ */
38
+ certificateMode?: PromocodeCertificateModeEnum;
32
39
  /**
33
40
  * Происхождение промокода. Обычно проставляется сервером:
34
41
  * - `MANUAL` (default) — для ручного создания из CRM,
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.CreatePromocodeDto = exports.PromocodeNominalRuleDto = void 0;
13
13
  const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
+ const promocode_certificate_mode_enum_1 = require("./emun/promocode-certificate-mode.enum");
15
16
  const promocode_kind_enum_1 = require("./emun/promocode-kind.enum");
16
17
  const promocode_type_enum_1 = require("./emun/promocode-type.enum");
17
18
  class PromocodeNominalRuleDto {
@@ -172,6 +173,13 @@ __decorate([
172
173
  (0, class_transformer_1.Expose)(),
173
174
  __metadata("design:type", Array)
174
175
  ], CreatePromocodeDto.prototype, "certificateNominalRules", void 0);
176
+ __decorate([
177
+ (0, class_validator_1.IsOptional)(),
178
+ (0, class_validator_1.IsEnum)(promocode_certificate_mode_enum_1.PromocodeCertificateModeEnum),
179
+ (0, class_transformer_1.Transform)(({ value }) => value !== null && value !== void 0 ? value : promocode_certificate_mode_enum_1.PromocodeCertificateModeEnum.DISCOUNT),
180
+ (0, class_transformer_1.Expose)(),
181
+ __metadata("design:type", String)
182
+ ], CreatePromocodeDto.prototype, "certificateMode", void 0);
175
183
  __decorate([
176
184
  (0, class_validator_1.IsOptional)(),
177
185
  (0, class_validator_1.IsEnum)(promocode_kind_enum_1.PromocodeKindEnum),
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Режим действия промокода в части сертификатов.
3
+ *
4
+ * - `DISCOUNT` — историческое поведение: значение из правила
5
+ * `certificateNominalRules[i].discount` уменьшает цену покупки сертификата
6
+ * (попадает в `payed`/`promocodeTotal`, при этом номинал сертификата
7
+ * остаётся прежним).
8
+ * - `BONUS` — то же значение трактуется как бонус: цена покупки не меняется,
9
+ * но к усваиваемому балансу сертификата прибавляется указанная сумма
10
+ * (клиент платит как обычно, а тратить потом может больше).
11
+ *
12
+ * Поле действует только когда `availableForCertificates === true`.
13
+ * Для промокодов «на игры» (`availableForBookings`) значение игнорируется.
14
+ */
15
+ export declare enum PromocodeCertificateModeEnum {
16
+ DISCOUNT = "discount",
17
+ BONUS = "bonus"
18
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PromocodeCertificateModeEnum = void 0;
4
+ /**
5
+ * Режим действия промокода в части сертификатов.
6
+ *
7
+ * - `DISCOUNT` — историческое поведение: значение из правила
8
+ * `certificateNominalRules[i].discount` уменьшает цену покупки сертификата
9
+ * (попадает в `payed`/`promocodeTotal`, при этом номинал сертификата
10
+ * остаётся прежним).
11
+ * - `BONUS` — то же значение трактуется как бонус: цена покупки не меняется,
12
+ * но к усваиваемому балансу сертификата прибавляется указанная сумма
13
+ * (клиент платит как обычно, а тратить потом может больше).
14
+ *
15
+ * Поле действует только когда `availableForCertificates === true`.
16
+ * Для промокодов «на игры» (`availableForBookings`) значение игнорируется.
17
+ */
18
+ var PromocodeCertificateModeEnum;
19
+ (function (PromocodeCertificateModeEnum) {
20
+ PromocodeCertificateModeEnum["DISCOUNT"] = "discount";
21
+ PromocodeCertificateModeEnum["BONUS"] = "bonus";
22
+ })(PromocodeCertificateModeEnum || (exports.PromocodeCertificateModeEnum = PromocodeCertificateModeEnum = {}));
@@ -1,12 +1,21 @@
1
1
  /**
2
2
  * Правило применения промокода к конкретному номиналу сертификата.
3
3
  *
4
- * Используется только для сертификатной части промокода: для номинала с указанным
5
- * `nominalId` цена покупки сертификата уменьшается на `discount` (в минимальных
6
- * единицах валюты копейки/центы), вместо базового `nominal.discount`.
4
+ * Используется только для сертификатной части промокода (`availableForCertificates`).
5
+ * Поле `discount` хранит сумму в минимальных единицах валюты (копейки/центы) и
6
+ * интерпретируется в зависимости от `PromocodeRO.certificateMode`:
7
7
  *
8
- * Если для номинала правила нет промокод к нему **не применим** (магазин
9
- * показывает базовую скидку номинала).
8
+ * - `DISCOUNT` (легаси, по умолчанию)сумма вычитается из цены покупки
9
+ * сертификата вместо базового `nominal.discount`.
10
+ * - `BONUS` — сумма прибавляется к балансу сертификата (цена покупки
11
+ * не меняется, клиент получает «бонус сверху номинала»).
12
+ *
13
+ * Если для номинала правила нет — промокод к этому номиналу **не применим**
14
+ * (магазин показывает базовую скидку номинала, бонус не начисляется).
15
+ *
16
+ * Имя поля `discount` сохранено ради обратной совместимости со старым
17
+ * фронтом, схемой БД и сериализацией. Семантическое значение «скидка/бонус»
18
+ * определяется флагом `certificateMode` родительского промокода.
10
19
  */
11
20
  export type PromocodeNominalRule = {
12
21
  nominalId: number;
@@ -1,4 +1,5 @@
1
1
  import { RO } from '../shared/ro-class';
2
+ import { PromocodeCertificateModeEnum } from './emun/promocode-certificate-mode.enum';
2
3
  import { PromocodeKindEnum } from './emun/promocode-kind.enum';
3
4
  import { PromocodeTypeEnum } from './emun/promocode-type.enum';
4
5
  import { PromocodeNominalRule } from './promocode-nominal-rule';
@@ -30,5 +31,6 @@ export declare class PromocodeRO extends RO {
30
31
  maxPlayers: number;
31
32
  orderId: number;
32
33
  certificateNominalRules: PromocodeNominalRule[];
34
+ certificateMode: PromocodeCertificateModeEnum | null;
33
35
  kind: PromocodeKindEnum;
34
36
  }
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.PromocodeRO = void 0;
13
13
  const class_transformer_1 = require("class-transformer");
14
14
  const ro_class_1 = require("../shared/ro-class");
15
+ const promocode_certificate_mode_enum_1 = require("./emun/promocode-certificate-mode.enum");
15
16
  const promocode_kind_enum_1 = require("./emun/promocode-kind.enum");
16
17
  const promocode_type_enum_1 = require("./emun/promocode-type.enum");
17
18
  class PromocodeRO extends ro_class_1.RO {
@@ -125,6 +126,10 @@ __decorate([
125
126
  (0, class_transformer_1.Expose)(),
126
127
  __metadata("design:type", Array)
127
128
  ], PromocodeRO.prototype, "certificateNominalRules", void 0);
129
+ __decorate([
130
+ (0, class_transformer_1.Expose)(),
131
+ __metadata("design:type", String)
132
+ ], PromocodeRO.prototype, "certificateMode", void 0);
128
133
  __decorate([
129
134
  (0, class_transformer_1.Expose)(),
130
135
  __metadata("design:type", String)
@@ -7,6 +7,7 @@ export declare class CreateQuestroomAdminDto {
7
7
  photos: string[];
8
8
  teaser: string;
9
9
  legend?: string;
10
+ importantInfo?: string;
10
11
  questroomTags: TagsEnum[];
11
12
  locationId: number;
12
13
  type: QuestroomTypeEnum;
@@ -16,6 +16,7 @@ const class_validator_1 = require("class-validator");
16
16
  const tags_enum_1 = require("../shared/enum/tags.enum");
17
17
  const is_not_blank_1 = require("../shared/is-not-blank");
18
18
  const questroom_type_enum_1 = require("./enum/questroom-type.enum");
19
+ const lounge_questroom_1 = require("./lounge-questroom");
19
20
  class CreateQuestroomAdminDto {
20
21
  }
21
22
  exports.CreateQuestroomAdminDto = CreateQuestroomAdminDto;
@@ -56,7 +57,13 @@ __decorate([
56
57
  __metadata("design:type", String)
57
58
  ], CreateQuestroomAdminDto.prototype, "legend", void 0);
58
59
  __decorate([
59
- (0, class_validator_1.ValidateIf)((o) => !o.closed),
60
+ (0, class_validator_1.IsOptional)(),
61
+ (0, class_validator_1.IsString)(),
62
+ (0, class_transformer_1.Expose)(),
63
+ __metadata("design:type", String)
64
+ ], CreateQuestroomAdminDto.prototype, "importantInfo", void 0);
65
+ __decorate([
66
+ (0, class_validator_1.ValidateIf)(lounge_questroom_1.isClassicQuestroomFieldsRequired),
60
67
  (0, class_validator_1.IsArray)(),
61
68
  (0, class_validator_1.ArrayMinSize)(1),
62
69
  (0, class_validator_1.ArrayMaxSize)(10),
@@ -76,7 +83,7 @@ __decorate([
76
83
  __metadata("design:type", String)
77
84
  ], CreateQuestroomAdminDto.prototype, "type", void 0);
78
85
  __decorate([
79
- (0, class_validator_1.ValidateIf)((o) => !o.closed),
86
+ (0, class_validator_1.ValidateIf)(lounge_questroom_1.isClassicQuestroomFieldsRequired),
80
87
  (0, class_validator_1.IsPositive)(),
81
88
  (0, class_validator_1.Max)(6),
82
89
  (0, class_validator_1.Min)(1),
@@ -85,7 +92,7 @@ __decorate([
85
92
  __metadata("design:type", Number)
86
93
  ], CreateQuestroomAdminDto.prototype, "difficult", void 0);
87
94
  __decorate([
88
- (0, class_validator_1.ValidateIf)((o) => !o.closed),
95
+ (0, class_validator_1.ValidateIf)(lounge_questroom_1.isClassicQuestroomFieldsRequired),
89
96
  (0, class_validator_1.IsPositive)(),
90
97
  (0, class_validator_1.Max)(5),
91
98
  (0, class_validator_1.Min)(1),
@@ -94,14 +101,14 @@ __decorate([
94
101
  __metadata("design:type", Number)
95
102
  ], CreateQuestroomAdminDto.prototype, "fear", void 0);
96
103
  __decorate([
97
- (0, class_validator_1.ValidateIf)((o) => !o.closed),
104
+ (0, class_validator_1.ValidateIf)(lounge_questroom_1.isClassicQuestroomFieldsRequired),
98
105
  (0, class_validator_1.IsInt)(),
99
106
  (0, class_transformer_1.Transform)(({ value }) => value || 12),
100
107
  (0, class_transformer_1.Expose)(),
101
108
  __metadata("design:type", Number)
102
109
  ], CreateQuestroomAdminDto.prototype, "minAge", void 0);
103
110
  __decorate([
104
- (0, class_validator_1.ValidateIf)((o) => !o.closed),
111
+ (0, class_validator_1.ValidateIf)(lounge_questroom_1.isClassicQuestroomFieldsRequired),
105
112
  (0, class_validator_1.IsPositive)(),
106
113
  (0, class_transformer_1.Transform)(({ value }) => value || 60),
107
114
  (0, class_transformer_1.Expose)(),
@@ -19,6 +19,7 @@ const is_not_blank_1 = require("../shared/is-not-blank");
19
19
  const questroom_actors_enum_1 = require("./enum/questroom-actors.enum");
20
20
  const questroom_confirm_type_enum_1 = require("./enum/questroom-confirm-type.enum");
21
21
  const questroom_type_enum_1 = require("./enum/questroom-type.enum");
22
+ const lounge_questroom_1 = require("./lounge-questroom");
22
23
  class Locale {
23
24
  }
24
25
  __decorate([
@@ -109,7 +110,7 @@ __decorate([
109
110
  __metadata("design:type", String)
110
111
  ], CreateQuestroomDto.prototype, "actors", void 0);
111
112
  __decorate([
112
- (0, class_validator_1.ValidateIf)((o) => !o.closed),
113
+ (0, class_validator_1.ValidateIf)(lounge_questroom_1.isClassicQuestroomFieldsRequired),
113
114
  (0, class_validator_1.IsPositive)(),
114
115
  (0, class_validator_1.Max)(6),
115
116
  (0, class_validator_1.Min)(1),
@@ -118,7 +119,7 @@ __decorate([
118
119
  __metadata("design:type", Number)
119
120
  ], CreateQuestroomDto.prototype, "difficult", void 0);
120
121
  __decorate([
121
- (0, class_validator_1.ValidateIf)((o) => !o.closed),
122
+ (0, class_validator_1.ValidateIf)(lounge_questroom_1.isClassicQuestroomFieldsRequired),
122
123
  (0, class_validator_1.IsPositive)(),
123
124
  (0, class_validator_1.Max)(5),
124
125
  (0, class_validator_1.Min)(1),
@@ -127,7 +128,7 @@ __decorate([
127
128
  __metadata("design:type", Number)
128
129
  ], CreateQuestroomDto.prototype, "fear", void 0);
129
130
  __decorate([
130
- (0, class_validator_1.ValidateIf)((o) => !o.closed),
131
+ (0, class_validator_1.ValidateIf)(lounge_questroom_1.isClassicQuestroomFieldsRequired),
131
132
  (0, class_validator_1.IsInt)(),
132
133
  (0, class_transformer_1.Transform)(({ value }) => value || 12),
133
134
  (0, class_transformer_1.Expose)(),
@@ -176,7 +177,7 @@ __decorate([
176
177
  __metadata("design:type", Boolean)
177
178
  ], CreateQuestroomDto.prototype, "awailableForNavigator", void 0);
178
179
  __decorate([
179
- (0, class_validator_1.ValidateIf)((o) => !o.closed),
180
+ (0, class_validator_1.ValidateIf)(lounge_questroom_1.isClassicQuestroomFieldsRequired),
180
181
  (0, class_validator_1.IsPositive)(),
181
182
  (0, class_transformer_1.Transform)(({ value }) => value || 60),
182
183
  (0, class_transformer_1.Expose)(),
@@ -191,12 +192,14 @@ __decorate([
191
192
  __decorate([
192
193
  (0, class_validator_1.IsOptional)(),
193
194
  (0, class_validator_1.IsPositive)(),
195
+ (0, class_transformer_1.Transform)(({ value }) => (value === 0 ? null : value)),
194
196
  (0, class_transformer_1.Expose)(),
195
197
  __metadata("design:type", Number)
196
198
  ], CreateQuestroomDto.prototype, "resourceUnitsTotal", void 0);
197
199
  __decorate([
198
200
  (0, class_validator_1.IsOptional)(),
199
201
  (0, class_validator_1.IsPositive)(),
202
+ (0, class_transformer_1.Transform)(({ value }) => (value === 0 ? null : value)),
200
203
  (0, class_transformer_1.Expose)(),
201
204
  __metadata("design:type", Number)
202
205
  ], CreateQuestroomDto.prototype, "resourceUnitSize", void 0);
@@ -227,11 +230,12 @@ __decorate([
227
230
  __decorate([
228
231
  (0, class_validator_1.IsOptional)(),
229
232
  (0, class_validator_1.IsArray)(),
233
+ (0, class_transformer_1.Transform)(({ value }) => ((value === null || value === void 0 ? void 0 : value.length) ? value : [])),
230
234
  (0, class_transformer_1.Expose)(),
231
235
  __metadata("design:type", Array)
232
236
  ], CreateQuestroomDto.prototype, "disabledLanguages", void 0);
233
237
  __decorate([
234
- (0, class_validator_1.ValidateIf)((o) => !o.closed),
238
+ (0, class_validator_1.ValidateIf)(lounge_questroom_1.isClassicQuestroomFieldsRequired),
235
239
  (0, class_validator_1.IsArray)(),
236
240
  (0, class_validator_1.ArrayMinSize)(1),
237
241
  (0, class_validator_1.ArrayMaxSize)(10),
@@ -240,7 +244,7 @@ __decorate([
240
244
  __metadata("design:type", Array)
241
245
  ], CreateQuestroomDto.prototype, "questroomTags", void 0);
242
246
  __decorate([
243
- (0, class_validator_1.ValidateIf)((o) => !o.closed),
247
+ (0, class_validator_1.ValidateIf)(lounge_questroom_1.isClassicQuestroomFieldsRequired),
244
248
  (0, is_not_blank_1.IsNotBlank)(),
245
249
  (0, class_transformer_1.Expose)(),
246
250
  (0, class_validator_1.MaxLength)(3000),
@@ -8,5 +8,6 @@ export declare enum QuestroomTypeEnum {
8
8
  ESCAPE_ANIMATION = "escape-animation",
9
9
  ROLE_BASED = "role-based",
10
10
  QIUZ = "quiz",
11
- ANTISTRESS = "antistress"
11
+ ANTISTRESS = "antistress",
12
+ LOUNGE = "lounge"
12
13
  }
@@ -13,4 +13,5 @@ var QuestroomTypeEnum;
13
13
  QuestroomTypeEnum["ROLE_BASED"] = "role-based";
14
14
  QuestroomTypeEnum["QIUZ"] = "quiz";
15
15
  QuestroomTypeEnum["ANTISTRESS"] = "antistress";
16
+ QuestroomTypeEnum["LOUNGE"] = "lounge";
16
17
  })(QuestroomTypeEnum || (exports.QuestroomTypeEnum = QuestroomTypeEnum = {}));
@@ -0,0 +1,11 @@
1
+ import { QuestroomTypeEnum } from './enum/questroom-type.enum';
2
+ import { CreateQuestroomDto } from './create-questroom.dto';
3
+ export declare const isLoungeQuestroomType: (type?: QuestroomTypeEnum | string | null) => boolean;
4
+ /** Поля escape-квеста обязательны только для обычных комнат (не лаунж, не closed). */
5
+ export declare const isClassicQuestroomFieldsRequired: (o: {
6
+ type?: QuestroomTypeEnum;
7
+ closed?: boolean;
8
+ }) => boolean;
9
+ export type SetQuestroomFormField = (field: string, value: unknown) => void;
10
+ export declare const fillLoungeQuestroomFormFields: (setFieldValue: SetQuestroomFormField) => void;
11
+ export declare const applyLoungeQuestroomDefaults: <T extends Partial<CreateQuestroomDto>>(values: T) => T;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyLoungeQuestroomDefaults = exports.fillLoungeQuestroomFormFields = exports.isClassicQuestroomFieldsRequired = exports.isLoungeQuestroomType = void 0;
4
+ const questroom_actors_enum_1 = require("./enum/questroom-actors.enum");
5
+ const questroom_type_enum_1 = require("./enum/questroom-type.enum");
6
+ const isLoungeQuestroomType = (type) => type === questroom_type_enum_1.QuestroomTypeEnum.LOUNGE;
7
+ exports.isLoungeQuestroomType = isLoungeQuestroomType;
8
+ /** Поля escape-квеста обязательны только для обычных комнат (не лаунж, не closed). */
9
+ const isClassicQuestroomFieldsRequired = (o) => !o.closed && !(0, exports.isLoungeQuestroomType)(o.type);
10
+ exports.isClassicQuestroomFieldsRequired = isClassicQuestroomFieldsRequired;
11
+ const fillLoungeQuestroomFormFields = (setFieldValue) => {
12
+ setFieldValue('actors', questroom_actors_enum_1.QuestroomActorsEnum.NO);
13
+ setFieldValue('difficult', 1);
14
+ setFieldValue('fear', 1);
15
+ setFieldValue('minAge', 0);
16
+ setFieldValue('time', 60);
17
+ setFieldValue('legend', '');
18
+ setFieldValue('teaser', '');
19
+ setFieldValue('questroomTags', []);
20
+ setFieldValue('playersMin', 1);
21
+ setFieldValue('playersMax', 20);
22
+ setFieldValue('modes', []);
23
+ setFieldValue('ticketSystem', false);
24
+ setFieldValue('resourceUnitsTotal', null);
25
+ setFieldValue('resourceUnitSize', null);
26
+ };
27
+ exports.fillLoungeQuestroomFormFields = fillLoungeQuestroomFormFields;
28
+ const applyLoungeQuestroomDefaults = (values) => {
29
+ var _a, _b, _c, _d, _e;
30
+ if (!(0, exports.isLoungeQuestroomType)(values.type)) {
31
+ return values;
32
+ }
33
+ const legend = (_a = values.legend) === null || _a === void 0 ? void 0 : _a.trim();
34
+ return Object.assign(Object.assign({}, values), { actors: questroom_actors_enum_1.QuestroomActorsEnum.NO, difficult: values.difficult || 1, fear: values.fear || 1, minAge: (_b = values.minAge) !== null && _b !== void 0 ? _b : 0, time: values.time || 60, legend: legend || '—', teaser: (_c = values.teaser) !== null && _c !== void 0 ? _c : '', questroomTags: (_d = values.questroomTags) !== null && _d !== void 0 ? _d : [], playersMin: values.playersMin || 1, playersMax: values.playersMax || 20, modes: (_e = values.modes) !== null && _e !== void 0 ? _e : [] });
35
+ };
36
+ exports.applyLoungeQuestroomDefaults = applyLoungeQuestroomDefaults;
@@ -47,6 +47,8 @@ export declare class AdminQuestroomsListRO {
47
47
  photo: string;
48
48
  photos: string[];
49
49
  legend: string;
50
+ importantInfo: string;
51
+ teaser: string;
50
52
  navigatorReviewId: number;
51
53
  questroomTags: TagsEnum[];
52
54
  type: QuestroomTypeEnum;
@@ -148,6 +148,14 @@ __decorate([
148
148
  (0, class_transformer_1.Expose)(),
149
149
  __metadata("design:type", String)
150
150
  ], AdminQuestroomsListRO.prototype, "legend", void 0);
151
+ __decorate([
152
+ (0, class_transformer_1.Expose)(),
153
+ __metadata("design:type", String)
154
+ ], AdminQuestroomsListRO.prototype, "importantInfo", void 0);
155
+ __decorate([
156
+ (0, class_transformer_1.Expose)(),
157
+ __metadata("design:type", String)
158
+ ], AdminQuestroomsListRO.prototype, "teaser", void 0);
151
159
  __decorate([
152
160
  (0, class_transformer_1.Expose)(),
153
161
  __metadata("design:type", Number)
@@ -1,6 +1,19 @@
1
+ import { EmailContentJsonV2 } from '../email-builder';
1
2
  export declare class CreateQuestroomScenarioEmailDto {
2
3
  title: string;
3
4
  text: string;
5
+ /**
6
+ * Maily/TipTap v2-документ. Опционально — старый редактор присылает
7
+ * только `text`. См. подробности в
8
+ * `CustomClientBookingEmailLocaleDto.contentJson`. На send-time
9
+ * scenario-emails резолвят переменные через `EmailScope.OrderPostGame`
10
+ * (тот же набор, что cross-sale/up-sale): client + profile + order +
11
+ * questroom + location + booking-link. См.
12
+ * `SendCrossSaleService.scenarioEmail` для текущего поведения soft-
13
+ * fallback'а — v1 `transformText` всё ещё доступен через
14
+ * `feedbackText`/`text` для пользователей, не прошедших backfill.
15
+ */
16
+ contentJson?: EmailContentJsonV2 | null;
4
17
  sendImmediately: boolean;
5
18
  sendBefore: number;
6
19
  questroomId: number;
@@ -26,6 +26,12 @@ __decorate([
26
26
  (0, class_transformer_1.Expose)(),
27
27
  __metadata("design:type", String)
28
28
  ], CreateQuestroomScenarioEmailDto.prototype, "text", void 0);
29
+ __decorate([
30
+ (0, class_validator_1.IsOptional)(),
31
+ (0, class_validator_1.IsObject)(),
32
+ (0, class_transformer_1.Expose)(),
33
+ __metadata("design:type", Object)
34
+ ], CreateQuestroomScenarioEmailDto.prototype, "contentJson", void 0);
29
35
  __decorate([
30
36
  (0, class_validator_1.IsBoolean)(),
31
37
  (0, class_transformer_1.Transform)(({ value }) => value !== null && value !== void 0 ? value : false),
@@ -1,7 +1,9 @@
1
+ import { EmailContentJsonV2 } from '../email-builder';
1
2
  import { RO } from '../shared/ro-class';
2
3
  export declare class QuestroomScenarioEmailRO extends RO {
3
4
  title: string;
4
5
  text: string;
6
+ contentJson?: EmailContentJsonV2 | null;
5
7
  sendBefore: number;
6
8
  sendImmediately: boolean;
7
9
  questroomId: number;
@@ -23,6 +23,10 @@ __decorate([
23
23
  (0, class_transformer_1.Expose)(),
24
24
  __metadata("design:type", String)
25
25
  ], QuestroomScenarioEmailRO.prototype, "text", void 0);
26
+ __decorate([
27
+ (0, class_transformer_1.Expose)(),
28
+ __metadata("design:type", Object)
29
+ ], QuestroomScenarioEmailRO.prototype, "contentJson", void 0);
26
30
  __decorate([
27
31
  (0, class_transformer_1.Expose)(),
28
32
  __metadata("design:type", Number)
@@ -4,6 +4,7 @@ export declare enum SourceEnum {
4
4
  SUPPORT = "support",
5
5
  AGREGATOR = "agregator",
6
6
  nowEscape = "nowEscape",
7
+ morty = "morty",
7
8
  exportded = "exported",
8
9
  GILDIA_KVESTOV = "gildia-kvestov",
9
10
  QUEST_INFO = "quest-info",
@@ -8,6 +8,7 @@ var SourceEnum;
8
8
  SourceEnum["SUPPORT"] = "support";
9
9
  SourceEnum["AGREGATOR"] = "agregator";
10
10
  SourceEnum["nowEscape"] = "nowEscape";
11
+ SourceEnum["morty"] = "morty";
11
12
  SourceEnum["exportded"] = "exported";
12
13
  // ru
13
14
  SourceEnum["GILDIA_KVESTOV"] = "gildia-kvestov";