@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.
- package/dist/certificate-v2/certificate-settings.ro.d.ts +2 -0
- package/dist/certificate-v2/certificate-settings.ro.js +8 -0
- package/dist/certificate-v2/update-certificate-settings.dto.d.ts +2 -0
- package/dist/certificate-v2/update-certificate-settings.dto.js +12 -0
- package/dist/email-builder/index.d.ts +18 -0
- package/dist/email-builder/index.js +48 -20
- package/dist/emails/index.d.ts +21 -0
- package/dist/openapi/certificates-v2/openapi-certificates-shop.ro.d.ts +2 -0
- package/dist/openapi/certificates-v2/openapi-certificates-shop.ro.js +8 -0
- package/dist/openapi/morty/morty-attraction.ro.d.ts +26 -0
- package/dist/openapi/morty/morty-attraction.ro.js +91 -0
- package/dist/openapi/morty/morty-attractions-query.dto.d.ts +8 -0
- package/dist/openapi/morty/morty-attractions-query.dto.js +29 -0
- package/dist/openapi/morty/morty-booking.ro.d.ts +13 -0
- package/dist/openapi/morty/morty-booking.ro.js +45 -0
- package/dist/openapi/morty/morty-create-booking.dto.d.ts +42 -0
- package/dist/openapi/morty/morty-create-booking.dto.js +122 -0
- package/dist/openapi/morty/morty-timeslot.ro.d.ts +49 -0
- package/dist/openapi/morty/morty-timeslot.ro.js +129 -0
- package/dist/openapi/morty/morty-timeslots-query.dto.d.ts +21 -0
- package/dist/openapi/morty/morty-timeslots-query.dto.js +48 -0
- package/dist/openapi/shared/openapi-questroom.ro.d.ts +2 -41
- package/dist/openapi/shared/openapi-questroom.ro.js +8 -4
- package/dist/openapi/widget/openapi-resolve-promocode.ro.d.ts +7 -0
- package/dist/openapi/widget/openapi-resolve-promocode.ro.js +5 -0
- package/dist/openapi/widget/openapi-widget-info.ro.js +5 -1
- package/dist/order/create-order.dto.d.ts +12 -0
- package/dist/order/create-order.dto.js +6 -0
- package/dist/profile/birthday-marketing/birthday-marketing.dto.d.ts +6 -0
- package/dist/profile/birthday-marketing/birthday-marketing.dto.js +6 -0
- package/dist/profile/cross-sale/cross-sale.dto.d.ts +8 -0
- package/dist/profile/cross-sale/cross-sale.dto.js +6 -0
- package/dist/profile/cross-sale/cross-sale.ro.d.ts +2 -0
- package/dist/profile/cross-sale/cross-sale.ro.js +4 -0
- package/dist/profile/custom-client-booking-email/custom-client-booking-email.dto.d.ts +11 -0
- package/dist/profile/custom-client-booking-email/custom-client-booking-email.dto.js +6 -0
- package/dist/profile/custom-client-booking-email/custom-client-booking-email.ro.d.ts +9 -0
- package/dist/profile/custom-client-booking-email/custom-client-booking-email.ro.js +4 -0
- package/dist/profile/marketing-email/preview-campaign-v2.dto.d.ts +37 -0
- package/dist/profile/marketing-email/preview-campaign-v2.dto.js +43 -1
- package/dist/promocode/create-promocode.dto.d.ts +7 -0
- package/dist/promocode/create-promocode.dto.js +8 -0
- package/dist/promocode/emun/promocode-certificate-mode.enum.d.ts +18 -0
- package/dist/promocode/emun/promocode-certificate-mode.enum.js +22 -0
- package/dist/promocode/promocode-nominal-rule.d.ts +14 -5
- package/dist/promocode/promocode.ro.d.ts +2 -0
- package/dist/promocode/promocode.ro.js +5 -0
- package/dist/questroom/create-questroom-admin.dto.d.ts +1 -0
- package/dist/questroom/create-questroom-admin.dto.js +12 -5
- package/dist/questroom/create-questroom.dto.js +10 -6
- package/dist/questroom/enum/questroom-type.enum.d.ts +2 -1
- package/dist/questroom/enum/questroom-type.enum.js +1 -0
- package/dist/questroom/lounge-questroom.d.ts +11 -0
- package/dist/questroom/lounge-questroom.js +36 -0
- package/dist/questroom/questrooms-list-admin.ro.d.ts +2 -0
- package/dist/questroom/questrooms-list-admin.ro.js +8 -0
- package/dist/questroom-scenario-email/create-questroom-scenario-email.dto.d.ts +13 -0
- package/dist/questroom-scenario-email/create-questroom-scenario-email.dto.js +6 -0
- package/dist/questroom-scenario-email/questroom-scenario-email.ro.d.ts +2 -0
- package/dist/questroom-scenario-email/questroom-scenario-email.ro.js +4 -0
- package/dist/shared/source.enum.d.ts +1 -0
- package/dist/shared/source.enum.js +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/widget-sessions/widget-session-attach-order.dto.d.ts +11 -0
- package/dist/widget-sessions/widget-session-attach-order.dto.js +42 -0
- package/dist/widget-sessions/widget-session-events.ro.d.ts +8 -0
- package/dist/widget-sessions/widget-session-events.ro.js +2 -0
- package/dist/widget-sessions/widget-session-query.dto.d.ts +15 -0
- package/dist/widget-sessions/widget-session-query.dto.js +63 -0
- package/dist/widget-sessions/widget-session-update.dto.d.ts +6 -0
- package/dist/widget-sessions/widget-session-update.dto.js +27 -0
- package/dist/widget-sessions/widget-session.ro.d.ts +50 -0
- package/dist/widget-sessions/widget-session.ro.js +2 -0
- 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
|
-
* `
|
|
6
|
-
*
|
|
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)
|
|
@@ -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.
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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),
|
|
@@ -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;
|
|
@@ -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)
|
|
@@ -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";
|