@escapenavigator/types 2.0.29 → 2.0.31
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/agregator/map/query-locations-for-map.dto.d.ts +3 -0
- package/dist/agregator/map/query-questroms-by-ids.dto.d.ts +1 -1
- package/dist/certificate-sale/create-certificatesale.dto.d.ts +4 -4
- package/dist/certificate-sale/create-certificatesale.dto.js +4 -4
- package/dist/constants/all-languages-by-namespace.js +2 -2
- package/dist/constants/language-by-country.js +2 -2
- package/dist/google-calendar/initial-google-calendar.ro.d.ts +4 -0
- package/dist/google-calendar/initial-google-calendar.ro.js +8 -0
- package/dist/openapi/profiles/openapi-profile-booking-list-item.ro.d.ts +2 -0
- package/dist/openapi/profiles/openapi-profile-booking-list-item.ro.js +16 -0
- package/dist/order/order.ro.d.ts +7 -0
- package/dist/order/order.ro.js +8 -0
- package/dist/profile/admin-profile.ro.d.ts +2 -1
- package/dist/profile/admin-profile.ro.js +3 -1
- package/dist/questroom/create-questroom.dto.d.ts +6 -0
- package/dist/questroom/create-questroom.dto.js +9 -0
- package/dist/questroom/enum/special-offer.enum.d.ts +14 -0
- package/dist/questroom/enum/special-offer.enum.js +18 -0
- package/dist/questroom/questroom-completeness.ro.d.ts +1 -1
- package/dist/questroom/questroom.ro.d.ts +2 -0
- package/dist/questroom/questroom.ro.js +4 -0
- package/dist/role/create-role.dto.d.ts +1 -0
- package/dist/role/create-role.dto.js +6 -0
- package/dist/role/role.ro.d.ts +1 -0
- package/dist/role/role.ro.js +4 -0
- package/dist/slot/enum/slot-staff-policy.enum.d.ts +13 -0
- package/dist/slot/enum/slot-staff-policy.enum.js +17 -0
- package/dist/slot/set-slot-resource-override.dto.d.ts +7 -0
- package/dist/slot/set-slot-resource-override.dto.js +24 -0
- package/dist/slot/slot.ro.d.ts +11 -0
- package/dist/slot-rule/create-rule.dto.d.ts +2 -0
- package/dist/slot-rule/create-rule.dto.js +8 -0
- package/dist/slot-rule/defailt-rule.d.ts +2 -0
- package/dist/slot-rule/defailt-rule.js +2 -0
- package/dist/slot-rule/rule.ro.d.ts +2 -0
- package/dist/slot-rule/rule.ro.js +5 -0
- package/dist/statistics/certificates.d.ts +9 -5
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/upselling/create-upselling.dto.d.ts +3 -0
- package/dist/upselling/create-upselling.dto.js +8 -0
- package/dist/upselling/enum/upselling-icon.enum.d.ts +23 -0
- package/dist/upselling/enum/upselling-icon.enum.js +27 -0
- package/dist/upselling/upselling.ro.d.ts +2 -0
- package/dist/upselling/upselling.ro.js +5 -0
- package/dist/user/task/user-task.ro.d.ts +1 -0
- package/dist/user/task/user-task.ro.js +4 -0
- package/dist/user-message/create-user-message.dto.d.ts +1 -0
- package/dist/user-message/create-user-message.dto.js +5 -0
- package/dist/user-message/user-message.ro.d.ts +1 -0
- package/package.json +2 -2
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { QuestroomTypeEnum } from '../../questroom/enum/questroom-type.enum';
|
|
2
|
+
import { SpecialOfferEnum } from '../../questroom/enum/special-offer.enum';
|
|
2
3
|
import { TagsEnum, TechTagsEnum } from '../../shared/enum/tags.enum';
|
|
3
4
|
/** Difficulty buckets: beginner 1–2, medium 3–4, hard 5–6 (difficult is 1–6). */
|
|
4
5
|
export type DifficultyFilter = 'beginner' | 'medium' | 'hard';
|
|
@@ -29,6 +30,8 @@ export type QuestroomBrowseFiltersDTO = {
|
|
|
29
30
|
players?: number[];
|
|
30
31
|
/** Age bucket lower bounds (OR): 6,8,10,12,14,16,18 (`18` means 18+). */
|
|
31
32
|
ages?: number[];
|
|
33
|
+
/** Permanent discounts the quest offers (OR) — `specialOffers && ARRAY[...]`. */
|
|
34
|
+
offers?: SpecialOfferEnum[];
|
|
32
35
|
};
|
|
33
36
|
export type QueryLocationsForMapDTO = {
|
|
34
37
|
center: string;
|
|
@@ -2,10 +2,10 @@ import { CertificatesaleDeliveryTypeEnum } from './enum/certificatesales-deliver
|
|
|
2
2
|
/**
|
|
3
3
|
* Payload для ручного оформления продажи сертификата сотрудником из app.
|
|
4
4
|
* После миграции на v2-магазин продажа создаётся из `designId` + либо
|
|
5
|
-
* `nominalId` (каталожный номинал), либо `customNominal` (произвольная
|
|
6
|
-
*
|
|
7
|
-
* существующий клиент (`clientId`), а `cashboxId`
|
|
8
|
-
* сертификат оплаченным через офлайн-кассу.
|
|
5
|
+
* `nominalId` (каталожный номинал), либо `customNominal` (произвольная сумма;
|
|
6
|
+
* в CRM доступна всегда, без `settings.allowFreeNominal`). В отличие от
|
|
7
|
+
* виджета покупатель — это существующий клиент (`clientId`), а `cashboxId`
|
|
8
|
+
* позволяет сразу отметить сертификат оплаченным через офлайн-кассу.
|
|
9
9
|
*/
|
|
10
10
|
export declare class CreateCertificatesaleDto {
|
|
11
11
|
clientId: number;
|
|
@@ -17,10 +17,10 @@ const certificatesales_delivery_type_enum_1 = require("./enum/certificatesales-d
|
|
|
17
17
|
/**
|
|
18
18
|
* Payload для ручного оформления продажи сертификата сотрудником из app.
|
|
19
19
|
* После миграции на v2-магазин продажа создаётся из `designId` + либо
|
|
20
|
-
* `nominalId` (каталожный номинал), либо `customNominal` (произвольная
|
|
21
|
-
*
|
|
22
|
-
* существующий клиент (`clientId`), а `cashboxId`
|
|
23
|
-
* сертификат оплаченным через офлайн-кассу.
|
|
20
|
+
* `nominalId` (каталожный номинал), либо `customNominal` (произвольная сумма;
|
|
21
|
+
* в CRM доступна всегда, без `settings.allowFreeNominal`). В отличие от
|
|
22
|
+
* виджета покупатель — это существующий клиент (`clientId`), а `cashboxId`
|
|
23
|
+
* позволяет сразу отметить сертификат оплаченным через офлайн-кассу.
|
|
24
24
|
*/
|
|
25
25
|
class CreateCertificatesaleDto {
|
|
26
26
|
}
|
|
@@ -35,12 +35,12 @@ exports.allLanguagesByNamespace = {
|
|
|
35
35
|
[namespaces_enum_1.NamespacesEnum.IRELAND]: [languages_enum_1.Languages.EN],
|
|
36
36
|
[namespaces_enum_1.NamespacesEnum.CROATIA]: [languages_enum_1.Languages.HR, languages_enum_1.Languages.EN],
|
|
37
37
|
[namespaces_enum_1.NamespacesEnum.NEW_ZEALAND]: [languages_enum_1.Languages.EN],
|
|
38
|
+
[namespaces_enum_1.NamespacesEnum.SINGAPORE]: [languages_enum_1.Languages.EN],
|
|
38
39
|
[namespaces_enum_1.NamespacesEnum.ARGENTINA]: [languages_enum_1.Languages.ES, languages_enum_1.Languages.EN],
|
|
40
|
+
[namespaces_enum_1.NamespacesEnum.MEXICO]: [languages_enum_1.Languages.ES, languages_enum_1.Languages.EN],
|
|
39
41
|
[namespaces_enum_1.NamespacesEnum.BRAZIL]: [languages_enum_1.Languages.PT, languages_enum_1.Languages.EN],
|
|
40
42
|
[namespaces_enum_1.NamespacesEnum.TAIWAN]: [languages_enum_1.Languages.ZH, languages_enum_1.Languages.EN],
|
|
41
|
-
[namespaces_enum_1.NamespacesEnum.MEXICO]: [languages_enum_1.Languages.ES, languages_enum_1.Languages.EN],
|
|
42
43
|
[namespaces_enum_1.NamespacesEnum.JAPAN]: [languages_enum_1.Languages.JA, languages_enum_1.Languages.EN],
|
|
43
44
|
[namespaces_enum_1.NamespacesEnum.SERBIA]: [languages_enum_1.Languages.SR, languages_enum_1.Languages.EN],
|
|
44
|
-
[namespaces_enum_1.NamespacesEnum.SINGAPORE]: [languages_enum_1.Languages.EN],
|
|
45
45
|
[namespaces_enum_1.NamespacesEnum.NORWAY]: [languages_enum_1.Languages.NO, languages_enum_1.Languages.EN],
|
|
46
46
|
};
|
|
@@ -35,12 +35,12 @@ exports.languageByCountry = {
|
|
|
35
35
|
[countries_enum_1.CountriesEnum.IRELAND]: languages_enum_1.Languages.EN,
|
|
36
36
|
[countries_enum_1.CountriesEnum.CROATIA]: languages_enum_1.Languages.HR,
|
|
37
37
|
[countries_enum_1.CountriesEnum.NEW_ZEALAND]: languages_enum_1.Languages.EN,
|
|
38
|
+
[countries_enum_1.CountriesEnum.SINGAPORE]: languages_enum_1.Languages.EN,
|
|
38
39
|
[countries_enum_1.CountriesEnum.ARGENTINA]: languages_enum_1.Languages.ES,
|
|
40
|
+
[countries_enum_1.CountriesEnum.MEXICO]: languages_enum_1.Languages.ES,
|
|
39
41
|
[countries_enum_1.CountriesEnum.BRAZIL]: languages_enum_1.Languages.PT,
|
|
40
42
|
[countries_enum_1.CountriesEnum.TAIWAN]: languages_enum_1.Languages.ZH,
|
|
41
|
-
[countries_enum_1.CountriesEnum.MEXICO]: languages_enum_1.Languages.ES,
|
|
42
43
|
[countries_enum_1.CountriesEnum.JAPAN]: languages_enum_1.Languages.JA,
|
|
43
44
|
[countries_enum_1.CountriesEnum.SERBIA]: languages_enum_1.Languages.SR,
|
|
44
|
-
[countries_enum_1.CountriesEnum.SINGAPORE]: languages_enum_1.Languages.EN,
|
|
45
45
|
[countries_enum_1.CountriesEnum.NORWAY]: languages_enum_1.Languages.NO,
|
|
46
46
|
};
|
|
@@ -2,4 +2,8 @@ export declare class InitialGoogleCalendarRO {
|
|
|
2
2
|
calendarId: string;
|
|
3
3
|
title: string;
|
|
4
4
|
token: string;
|
|
5
|
+
/** Уже есть живая интеграция с этим calendarId — повторно создавать нельзя. */
|
|
6
|
+
alreadyConnected: boolean;
|
|
7
|
+
/** Есть запись с disconnectedAt — это путь «Переподключить». */
|
|
8
|
+
canReconnect: boolean;
|
|
5
9
|
}
|
|
@@ -26,3 +26,11 @@ __decorate([
|
|
|
26
26
|
(0, class_transformer_1.Expose)(),
|
|
27
27
|
__metadata("design:type", String)
|
|
28
28
|
], InitialGoogleCalendarRO.prototype, "token", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, class_transformer_1.Expose)(),
|
|
31
|
+
__metadata("design:type", Boolean)
|
|
32
|
+
], InitialGoogleCalendarRO.prototype, "alreadyConnected", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, class_transformer_1.Expose)(),
|
|
35
|
+
__metadata("design:type", Boolean)
|
|
36
|
+
], InitialGoogleCalendarRO.prototype, "canReconnect", void 0);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Utm } from '../../order/order.ro';
|
|
1
2
|
import { ProfileCurrencyEnum } from '../../profile/enum/profile-currency';
|
|
2
3
|
import { SourceEnum } from '../../shared/source.enum';
|
|
3
4
|
export declare class OpenapiProfileBookingQuestroomRO {
|
|
@@ -23,6 +24,7 @@ export declare class OpenapiProfileBookingListItemRO {
|
|
|
23
24
|
toPay: number;
|
|
24
25
|
currency: ProfileCurrencyEnum;
|
|
25
26
|
source: SourceEnum;
|
|
27
|
+
utm: Utm | null;
|
|
26
28
|
confirmed: boolean;
|
|
27
29
|
createdAt: Date;
|
|
28
30
|
client: OpenapiProfileBookingClientRO | null;
|
|
@@ -14,6 +14,7 @@ exports.OpenapiProfileBookingListItemRO = exports.OpenapiProfileBookingClientRO
|
|
|
14
14
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
15
15
|
const swagger_1 = require("@nestjs/swagger");
|
|
16
16
|
const class_transformer_1 = require("class-transformer");
|
|
17
|
+
const order_ro_1 = require("../../order/order.ro");
|
|
17
18
|
const profile_currency_1 = require("../../profile/enum/profile-currency");
|
|
18
19
|
const source_enum_1 = require("../../shared/source.enum");
|
|
19
20
|
class OpenapiProfileBookingQuestroomRO {
|
|
@@ -144,6 +145,21 @@ __decorate([
|
|
|
144
145
|
}),
|
|
145
146
|
__metadata("design:type", String)
|
|
146
147
|
], OpenapiProfileBookingListItemRO.prototype, "source", void 0);
|
|
148
|
+
__decorate([
|
|
149
|
+
(0, class_transformer_1.Expose)(),
|
|
150
|
+
(0, class_transformer_1.Type)(() => order_ro_1.Utm),
|
|
151
|
+
(0, swagger_1.ApiProperty)({
|
|
152
|
+
type: () => order_ro_1.Utm,
|
|
153
|
+
nullable: true,
|
|
154
|
+
description: 'UTM attribution captured at booking time (utm_source / utm_medium / utm_campaign / …). Null when none were set.',
|
|
155
|
+
example: {
|
|
156
|
+
utmSource: 'google',
|
|
157
|
+
utmMedium: 'cpc',
|
|
158
|
+
utmCampaign: 'spring_sale',
|
|
159
|
+
},
|
|
160
|
+
}),
|
|
161
|
+
__metadata("design:type", order_ro_1.Utm)
|
|
162
|
+
], OpenapiProfileBookingListItemRO.prototype, "utm", void 0);
|
|
147
163
|
__decorate([
|
|
148
164
|
(0, class_transformer_1.Expose)(),
|
|
149
165
|
(0, swagger_1.ApiProperty)({ example: true, description: 'Whether the booking is confirmed.' }),
|
package/dist/order/order.ro.d.ts
CHANGED
|
@@ -95,6 +95,8 @@ declare class Upsellings extends RO {
|
|
|
95
95
|
userId: number;
|
|
96
96
|
count: number;
|
|
97
97
|
nonRefundable: boolean;
|
|
98
|
+
/** Снимок иконки каталога на момент добавления в заказ. */
|
|
99
|
+
icon?: string | null;
|
|
98
100
|
}
|
|
99
101
|
declare class Participant {
|
|
100
102
|
id: number;
|
|
@@ -211,6 +213,11 @@ export declare class OrderRO extends RO {
|
|
|
211
213
|
certificateTotal: number;
|
|
212
214
|
/** Сумма допуслуг (Σ amount × count). Денорм для бейджа на слоте. */
|
|
213
215
|
upsellingsTotal: number;
|
|
216
|
+
/**
|
|
217
|
+
* Уникальные иконки допуслуг (снимки OrderUpselling.icon).
|
|
218
|
+
* Денорм для бейджей на слоте без JOIN к order-upsellings.
|
|
219
|
+
*/
|
|
220
|
+
upsellingIcons: string[];
|
|
214
221
|
/** Проблема доставки письма клиенту (красный имейл-бейдж на слоте). */
|
|
215
222
|
emailTrouble: boolean;
|
|
216
223
|
refundedAmount: number;
|
package/dist/order/order.ro.js
CHANGED
|
@@ -250,6 +250,10 @@ __decorate([
|
|
|
250
250
|
(0, class_transformer_1.Expose)(),
|
|
251
251
|
__metadata("design:type", Boolean)
|
|
252
252
|
], Upsellings.prototype, "nonRefundable", void 0);
|
|
253
|
+
__decorate([
|
|
254
|
+
(0, class_transformer_1.Expose)(),
|
|
255
|
+
__metadata("design:type", String)
|
|
256
|
+
], Upsellings.prototype, "icon", void 0);
|
|
253
257
|
class Participant {
|
|
254
258
|
}
|
|
255
259
|
__decorate([
|
|
@@ -506,6 +510,10 @@ __decorate([
|
|
|
506
510
|
(0, class_transformer_1.Expose)(),
|
|
507
511
|
__metadata("design:type", Number)
|
|
508
512
|
], OrderRO.prototype, "upsellingsTotal", void 0);
|
|
513
|
+
__decorate([
|
|
514
|
+
(0, class_transformer_1.Expose)(),
|
|
515
|
+
__metadata("design:type", Array)
|
|
516
|
+
], OrderRO.prototype, "upsellingIcons", void 0);
|
|
509
517
|
__decorate([
|
|
510
518
|
(0, class_transformer_1.Expose)(),
|
|
511
519
|
__metadata("design:type", Boolean)
|
|
@@ -57,7 +57,8 @@ export declare class AdminProfileRO {
|
|
|
57
57
|
nowEscape: boolean;
|
|
58
58
|
morty: boolean;
|
|
59
59
|
mainEmail: string;
|
|
60
|
-
|
|
60
|
+
/** May be null for older/incomplete rows (column is nullable). */
|
|
61
|
+
secondaryEmails?: string[] | null;
|
|
61
62
|
site: string;
|
|
62
63
|
comment: string;
|
|
63
64
|
facebook: string;
|
|
@@ -193,7 +193,9 @@ __decorate([
|
|
|
193
193
|
__metadata("design:type", String)
|
|
194
194
|
], AdminProfileRO.prototype, "mainEmail", void 0);
|
|
195
195
|
__decorate([
|
|
196
|
-
(0, class_transformer_1.Expose)()
|
|
196
|
+
(0, class_transformer_1.Expose)()
|
|
197
|
+
/** May be null for older/incomplete rows (column is nullable). */
|
|
198
|
+
,
|
|
197
199
|
__metadata("design:type", Array)
|
|
198
200
|
], AdminProfileRO.prototype, "secondaryEmails", void 0);
|
|
199
201
|
__decorate([
|
|
@@ -4,6 +4,7 @@ import { PlayersSelectModeEnum } from './enum/players-select-mode.enum';
|
|
|
4
4
|
import { QuestroomActorsEnum } from './enum/questroom-actors.enum';
|
|
5
5
|
import { QuestroomConfirmTypeEnum } from './enum/questroom-confirm-type.enum';
|
|
6
6
|
import { QuestroomTypeEnum } from './enum/questroom-type.enum';
|
|
7
|
+
import { SpecialOfferEnum } from './enum/special-offer.enum';
|
|
7
8
|
declare class Locale {
|
|
8
9
|
language: Languages;
|
|
9
10
|
legend: string;
|
|
@@ -48,6 +49,11 @@ export declare class CreateQuestroomDto {
|
|
|
48
49
|
closed?: boolean;
|
|
49
50
|
disabledLanguages: Languages[];
|
|
50
51
|
questroomTags: TagsEnum[];
|
|
52
|
+
/**
|
|
53
|
+
* Постоянные скидки — фасет «Спецпредложения» в каталоге агрегатора.
|
|
54
|
+
* Пустой массив = квест не попадает ни в один из этих фильтров.
|
|
55
|
+
*/
|
|
56
|
+
specialOffers: SpecialOfferEnum[];
|
|
51
57
|
legend: string;
|
|
52
58
|
teaser: string;
|
|
53
59
|
importantInfo: string;
|
|
@@ -20,6 +20,7 @@ const players_select_mode_enum_1 = require("./enum/players-select-mode.enum");
|
|
|
20
20
|
const questroom_actors_enum_1 = require("./enum/questroom-actors.enum");
|
|
21
21
|
const questroom_confirm_type_enum_1 = require("./enum/questroom-confirm-type.enum");
|
|
22
22
|
const questroom_type_enum_1 = require("./enum/questroom-type.enum");
|
|
23
|
+
const special_offer_enum_1 = require("./enum/special-offer.enum");
|
|
23
24
|
const lounge_questroom_1 = require("./lounge-questroom");
|
|
24
25
|
class Locale {
|
|
25
26
|
}
|
|
@@ -257,6 +258,14 @@ __decorate([
|
|
|
257
258
|
(0, class_transformer_1.Expose)(),
|
|
258
259
|
__metadata("design:type", Array)
|
|
259
260
|
], CreateQuestroomDto.prototype, "questroomTags", void 0);
|
|
261
|
+
__decorate([
|
|
262
|
+
(0, class_validator_1.IsOptional)(),
|
|
263
|
+
(0, class_validator_1.IsArray)(),
|
|
264
|
+
(0, class_validator_1.IsEnum)(special_offer_enum_1.SpecialOfferEnum, { each: true }),
|
|
265
|
+
(0, class_transformer_1.Transform)(({ value }) => ((value === null || value === void 0 ? void 0 : value.length) ? value : [])),
|
|
266
|
+
(0, class_transformer_1.Expose)(),
|
|
267
|
+
__metadata("design:type", Array)
|
|
268
|
+
], CreateQuestroomDto.prototype, "specialOffers", void 0);
|
|
260
269
|
__decorate([
|
|
261
270
|
(0, class_validator_1.ValidateIf)(lounge_questroom_1.isClassicQuestroomFieldsRequired),
|
|
262
271
|
(0, is_not_blank_1.IsNotBlank)(),
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Постоянные скидки квеста. Отдельная фасетная группа «Спецпредложения» в
|
|
3
|
+
* каталоге агрегатора — значения совпадают с id опций фильтра, поэтому
|
|
4
|
+
* выборка идёт без маппинга.
|
|
5
|
+
*
|
|
6
|
+
* Это НЕ аудитория квеста: `TagsEnum.CORPORATE` означает «подходит для
|
|
7
|
+
* корпоратива», а `SpecialOfferEnum.CORPORATE` — «для корпоративов есть
|
|
8
|
+
* скидка».
|
|
9
|
+
*/
|
|
10
|
+
export declare enum SpecialOfferEnum {
|
|
11
|
+
CORPORATE = "corporate",
|
|
12
|
+
STUDENTS = "students",
|
|
13
|
+
BIRTHDAY = "birthday"
|
|
14
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SpecialOfferEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Постоянные скидки квеста. Отдельная фасетная группа «Спецпредложения» в
|
|
6
|
+
* каталоге агрегатора — значения совпадают с id опций фильтра, поэтому
|
|
7
|
+
* выборка идёт без маппинга.
|
|
8
|
+
*
|
|
9
|
+
* Это НЕ аудитория квеста: `TagsEnum.CORPORATE` означает «подходит для
|
|
10
|
+
* корпоратива», а `SpecialOfferEnum.CORPORATE` — «для корпоративов есть
|
|
11
|
+
* скидка».
|
|
12
|
+
*/
|
|
13
|
+
var SpecialOfferEnum;
|
|
14
|
+
(function (SpecialOfferEnum) {
|
|
15
|
+
SpecialOfferEnum["CORPORATE"] = "corporate";
|
|
16
|
+
SpecialOfferEnum["STUDENTS"] = "students";
|
|
17
|
+
SpecialOfferEnum["BIRTHDAY"] = "birthday";
|
|
18
|
+
})(SpecialOfferEnum || (exports.SpecialOfferEnum = SpecialOfferEnum = {}));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type CompletenessCategory = 'media' | 'description' | 'tags' | 'accessibility' | 'pricing' | 'translations';
|
|
2
|
-
export type CompletenessItemKey = 'photos' | 'legend' | 'importantInfo' | 'themeTags' | 'audienceTags' | 'accessibility' | 'prices' | 'translations';
|
|
2
|
+
export type CompletenessItemKey = 'photos' | 'legend' | 'importantInfo' | 'themeTags' | 'audienceTags' | 'accessibility' | 'prices' | 'offers' | 'translations';
|
|
3
3
|
export declare class QuestroomCompletenessItemRO {
|
|
4
4
|
/** Stable key — maps to `quest-score:{key}Label` / `quest-score:{key}Hint` on the frontend. */
|
|
5
5
|
key: CompletenessItemKey;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Languages } from '../shared/enum/languages.enum';
|
|
2
|
+
import { SpecialOfferEnum } from './enum/special-offer.enum';
|
|
2
3
|
import { QuestroomLightLocale, QuestroomLightMode, QuestroomLightRO } from './questroom-light.ro';
|
|
3
4
|
export { QuestroomLightLocale as QuestroomLocale, QuestroomLightMode as QuestroomMode };
|
|
4
5
|
/**
|
|
@@ -36,4 +37,5 @@ export declare class QuestroomRO extends QuestroomLightRO {
|
|
|
36
37
|
requiresRunning?: boolean;
|
|
37
38
|
requiresClimbing?: boolean;
|
|
38
39
|
petsAllowed?: boolean;
|
|
40
|
+
specialOffers?: SpecialOfferEnum[];
|
|
39
41
|
}
|
|
@@ -130,3 +130,7 @@ __decorate([
|
|
|
130
130
|
(0, class_transformer_1.Expose)(),
|
|
131
131
|
__metadata("design:type", Boolean)
|
|
132
132
|
], QuestroomRO.prototype, "petsAllowed", void 0);
|
|
133
|
+
__decorate([
|
|
134
|
+
(0, class_transformer_1.Expose)(),
|
|
135
|
+
__metadata("design:type", Array)
|
|
136
|
+
], QuestroomRO.prototype, "specialOffers", void 0);
|
|
@@ -129,6 +129,12 @@ __decorate([
|
|
|
129
129
|
(0, class_transformer_1.Expose)(),
|
|
130
130
|
__metadata("design:type", Boolean)
|
|
131
131
|
], CreateRoleDto.prototype, "canDeleteFines", void 0);
|
|
132
|
+
__decorate([
|
|
133
|
+
(0, class_validator_1.IsBoolean)(),
|
|
134
|
+
(0, class_transformer_1.Transform)(({ value }) => (value !== undefined ? value : false)),
|
|
135
|
+
(0, class_transformer_1.Expose)(),
|
|
136
|
+
__metadata("design:type", Boolean)
|
|
137
|
+
], CreateRoleDto.prototype, "canDeleteComments", void 0);
|
|
132
138
|
__decorate([
|
|
133
139
|
(0, class_validator_1.IsBoolean)(),
|
|
134
140
|
(0, class_transformer_1.Transform)(({ value }) => (value !== undefined ? value : false)),
|
package/dist/role/role.ro.d.ts
CHANGED
package/dist/role/role.ro.js
CHANGED
|
@@ -83,6 +83,10 @@ __decorate([
|
|
|
83
83
|
(0, class_transformer_1.Expose)(),
|
|
84
84
|
__metadata("design:type", Boolean)
|
|
85
85
|
], RoleRO.prototype, "canDeleteFines", void 0);
|
|
86
|
+
__decorate([
|
|
87
|
+
(0, class_transformer_1.Expose)(),
|
|
88
|
+
__metadata("design:type", Boolean)
|
|
89
|
+
], RoleRO.prototype, "canDeleteComments", void 0);
|
|
86
90
|
__decorate([
|
|
87
91
|
(0, class_transformer_1.Expose)(),
|
|
88
92
|
__metadata("design:type", Boolean)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Что делать со слотом, если ни одна смена сотрудника на локации его не
|
|
3
|
+
* покрывает. В отличие от окон `minMinutesForBooking`/`blockingMinutes`
|
|
4
|
+
* действует на всём горизонте календаря, а не только перед началом игры.
|
|
5
|
+
*/
|
|
6
|
+
export declare enum SlotStaffPolicyEnum {
|
|
7
|
+
/** Смены не влияют на доступность слота. */
|
|
8
|
+
OFF = "off",
|
|
9
|
+
/** Без смены слот доступен только по телефону. */
|
|
10
|
+
PHONE = "phone",
|
|
11
|
+
/** Без смены онлайн-бронь закрыта. */
|
|
12
|
+
CLOSED = "closed"
|
|
13
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SlotStaffPolicyEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Что делать со слотом, если ни одна смена сотрудника на локации его не
|
|
6
|
+
* покрывает. В отличие от окон `minMinutesForBooking`/`blockingMinutes`
|
|
7
|
+
* действует на всём горизонте календаря, а не только перед началом игры.
|
|
8
|
+
*/
|
|
9
|
+
var SlotStaffPolicyEnum;
|
|
10
|
+
(function (SlotStaffPolicyEnum) {
|
|
11
|
+
/** Смены не влияют на доступность слота. */
|
|
12
|
+
SlotStaffPolicyEnum["OFF"] = "off";
|
|
13
|
+
/** Без смены слот доступен только по телефону. */
|
|
14
|
+
SlotStaffPolicyEnum["PHONE"] = "phone";
|
|
15
|
+
/** Без смены онлайн-бронь закрыта. */
|
|
16
|
+
SlotStaffPolicyEnum["CLOSED"] = "closed";
|
|
17
|
+
})(SlotStaffPolicyEnum || (exports.SlotStaffPolicyEnum = SlotStaffPolicyEnum = {}));
|
|
@@ -0,0 +1,24 @@
|
|
|
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.SetSlotResourceOverrideDto = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
/**
|
|
15
|
+
* Ручное открытие слота вопреки нехватке общего ресурса (статус
|
|
16
|
+
* `no-resources`) и возврат обычной блокировки.
|
|
17
|
+
*/
|
|
18
|
+
class SetSlotResourceOverrideDto {
|
|
19
|
+
}
|
|
20
|
+
exports.SetSlotResourceOverrideDto = SetSlotResourceOverrideDto;
|
|
21
|
+
__decorate([
|
|
22
|
+
(0, class_validator_1.IsBoolean)(),
|
|
23
|
+
__metadata("design:type", Boolean)
|
|
24
|
+
], SetSlotResourceOverrideDto.prototype, "enabled", void 0);
|
package/dist/slot/slot.ro.d.ts
CHANGED
|
@@ -28,6 +28,12 @@ export type SlotRO = {
|
|
|
28
28
|
discount?: number;
|
|
29
29
|
onlyPhone?: boolean;
|
|
30
30
|
forceOnlineBooking?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Слот открыт администратором вопреки нехватке общего ресурса: проверка
|
|
33
|
+
* `no-resources` для него отключена. Календарь показывает такой слот как
|
|
34
|
+
* свободный с маркером.
|
|
35
|
+
*/
|
|
36
|
+
ignoreResourceLimit?: boolean;
|
|
31
37
|
breakReason?: string | null;
|
|
32
38
|
availableTeams?: number;
|
|
33
39
|
numSeatsAvailable?: number;
|
|
@@ -54,6 +60,11 @@ export type SlotRO = {
|
|
|
54
60
|
promocodeTotal?: number;
|
|
55
61
|
certificateTotal?: number;
|
|
56
62
|
upsellingsTotal?: number;
|
|
63
|
+
/**
|
|
64
|
+
* Уникальные иконки допуслуг заказа (денорм `orders.upsellingIcons`)
|
|
65
|
+
* для бейджей на слоте — без JOIN к order-upsellings.
|
|
66
|
+
*/
|
|
67
|
+
upsellingIcons?: string[];
|
|
57
68
|
/** Проблема доставки письма клиенту (красный имейл-бейдж). */
|
|
58
69
|
emailTrouble?: boolean;
|
|
59
70
|
/** No-show: слот сохранён, игра не состоялась. */
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { QuestroomCancelationTypeEnum } from '../questroom/enum/questroom-cancelation-type.enum';
|
|
2
2
|
import { PrepaymentTypeEnum } from '../slot/enum/prepayment-type.enum';
|
|
3
|
+
import { SlotStaffPolicyEnum } from '../slot/enum/slot-staff-policy.enum';
|
|
3
4
|
export declare class CreateRuleDto {
|
|
4
5
|
ruleId?: number;
|
|
5
6
|
title: string;
|
|
@@ -14,6 +15,7 @@ export declare class CreateRuleDto {
|
|
|
14
15
|
blockingHours: number;
|
|
15
16
|
blockingMinutes: number;
|
|
16
17
|
openSlotWhenUserInCalendar: boolean;
|
|
18
|
+
noStaffPolicy: SlotStaffPolicyEnum;
|
|
17
19
|
clientCanCancel: boolean;
|
|
18
20
|
prepayForTourists: boolean;
|
|
19
21
|
minHoursForFullFine: number;
|
|
@@ -15,6 +15,7 @@ const class_validator_1 = require("class-validator");
|
|
|
15
15
|
const questroom_cancelation_type_enum_1 = require("../questroom/enum/questroom-cancelation-type.enum");
|
|
16
16
|
const is_not_blank_1 = require("../shared/is-not-blank");
|
|
17
17
|
const prepayment_type_enum_1 = require("../slot/enum/prepayment-type.enum");
|
|
18
|
+
const slot_staff_policy_enum_1 = require("../slot/enum/slot-staff-policy.enum");
|
|
18
19
|
class CreateRuleDto {
|
|
19
20
|
}
|
|
20
21
|
exports.CreateRuleDto = CreateRuleDto;
|
|
@@ -122,6 +123,13 @@ __decorate([
|
|
|
122
123
|
(0, class_transformer_1.Expose)(),
|
|
123
124
|
__metadata("design:type", Boolean)
|
|
124
125
|
], CreateRuleDto.prototype, "openSlotWhenUserInCalendar", void 0);
|
|
126
|
+
__decorate([
|
|
127
|
+
(0, class_validator_1.ValidateIf)((o) => !o.ruleId),
|
|
128
|
+
(0, class_transformer_1.Transform)(({ value }) => value || slot_staff_policy_enum_1.SlotStaffPolicyEnum.OFF),
|
|
129
|
+
(0, class_validator_1.IsEnum)(slot_staff_policy_enum_1.SlotStaffPolicyEnum),
|
|
130
|
+
(0, class_transformer_1.Expose)(),
|
|
131
|
+
__metadata("design:type", String)
|
|
132
|
+
], CreateRuleDto.prototype, "noStaffPolicy", void 0);
|
|
125
133
|
__decorate([
|
|
126
134
|
(0, class_transformer_1.Transform)(({ value }) => value !== null && value !== void 0 ? value : true),
|
|
127
135
|
(0, class_validator_1.IsBoolean)(),
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { QuestroomCancelationTypeEnum } from '../questroom/enum/questroom-cancelation-type.enum';
|
|
2
2
|
import { PrepaymentTypeEnum } from '../slot/enum/prepayment-type.enum';
|
|
3
|
+
import { SlotStaffPolicyEnum } from '../slot/enum/slot-staff-policy.enum';
|
|
3
4
|
export declare const defaultRule: {
|
|
4
5
|
title: string;
|
|
5
6
|
prepayment: number;
|
|
@@ -12,6 +13,7 @@ export declare const defaultRule: {
|
|
|
12
13
|
blockingHours: number;
|
|
13
14
|
blockingMinutes: number;
|
|
14
15
|
openSlotWhenUserInCalendar: boolean;
|
|
16
|
+
noStaffPolicy: SlotStaffPolicyEnum;
|
|
15
17
|
clientCanCancel: boolean;
|
|
16
18
|
prepayForTourists: boolean;
|
|
17
19
|
cancelationAmount: number;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.defaultRule = void 0;
|
|
4
4
|
const questroom_cancelation_type_enum_1 = require("../questroom/enum/questroom-cancelation-type.enum");
|
|
5
5
|
const prepayment_type_enum_1 = require("../slot/enum/prepayment-type.enum");
|
|
6
|
+
const slot_staff_policy_enum_1 = require("../slot/enum/slot-staff-policy.enum");
|
|
6
7
|
exports.defaultRule = {
|
|
7
8
|
title: 'System rule',
|
|
8
9
|
prepayment: 0,
|
|
@@ -15,6 +16,7 @@ exports.defaultRule = {
|
|
|
15
16
|
blockingHours: 2,
|
|
16
17
|
blockingMinutes: 2 * 60,
|
|
17
18
|
openSlotWhenUserInCalendar: true,
|
|
19
|
+
noStaffPolicy: slot_staff_policy_enum_1.SlotStaffPolicyEnum.OFF,
|
|
18
20
|
clientCanCancel: true,
|
|
19
21
|
prepayForTourists: false,
|
|
20
22
|
cancelationAmount: 0,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { QuestroomCancelationTypeEnum } from '../questroom/enum/questroom-cancelation-type.enum';
|
|
2
2
|
import { PrepaymentTypeEnum } from '../slot/enum/prepayment-type.enum';
|
|
3
|
+
import { SlotStaffPolicyEnum } from '../slot/enum/slot-staff-policy.enum';
|
|
3
4
|
export declare class RuleRO {
|
|
4
5
|
id: number;
|
|
5
6
|
profileId: number;
|
|
@@ -16,6 +17,7 @@ export declare class RuleRO {
|
|
|
16
17
|
blockingHours: number;
|
|
17
18
|
blockingMinutes: number;
|
|
18
19
|
openSlotWhenUserInCalendar: boolean;
|
|
20
|
+
noStaffPolicy: SlotStaffPolicyEnum;
|
|
19
21
|
clientCanCancel: boolean;
|
|
20
22
|
prepayForTourists: boolean;
|
|
21
23
|
minHoursForFullFine: number;
|
|
@@ -13,6 +13,7 @@ exports.RuleRO = void 0;
|
|
|
13
13
|
const class_transformer_1 = require("class-transformer");
|
|
14
14
|
const questroom_cancelation_type_enum_1 = require("../questroom/enum/questroom-cancelation-type.enum");
|
|
15
15
|
const prepayment_type_enum_1 = require("../slot/enum/prepayment-type.enum");
|
|
16
|
+
const slot_staff_policy_enum_1 = require("../slot/enum/slot-staff-policy.enum");
|
|
16
17
|
class RuleRO {
|
|
17
18
|
}
|
|
18
19
|
exports.RuleRO = RuleRO;
|
|
@@ -76,6 +77,10 @@ __decorate([
|
|
|
76
77
|
(0, class_transformer_1.Expose)(),
|
|
77
78
|
__metadata("design:type", Boolean)
|
|
78
79
|
], RuleRO.prototype, "openSlotWhenUserInCalendar", void 0);
|
|
80
|
+
__decorate([
|
|
81
|
+
(0, class_transformer_1.Expose)(),
|
|
82
|
+
__metadata("design:type", String)
|
|
83
|
+
], RuleRO.prototype, "noStaffPolicy", void 0);
|
|
79
84
|
__decorate([
|
|
80
85
|
(0, class_transformer_1.Expose)(),
|
|
81
86
|
__metadata("design:type", Boolean)
|
|
@@ -3,15 +3,17 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Все денежные суммы — в минимальных единицах валюты (копейки/центы).
|
|
5
5
|
*
|
|
6
|
-
* Когорта периода = `code != NOT_GENERATED_CODE` + `
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
6
|
+
* Когорта периода = `code != NOT_GENERATED_CODE` + `paidAt ∈ [start, end)`.
|
|
7
|
+
* ВСЕ агрегаты overview (включая остаток номиналов, количество полностью
|
|
8
|
+
* использованных и аннулированных) считаются по одной и той же когорте — это
|
|
9
|
+
* снимает прежний разнобой, когда `outstandingBalance` суммировался по всей
|
|
10
|
+
* истории профиля. Аннулированные из когорты не выбрасываются: их деньги
|
|
11
|
+
* остаются доходом, пока по ним не проведён возврат.
|
|
11
12
|
*
|
|
12
13
|
* Семантика финансовых полей:
|
|
13
14
|
* - gross — стоимость по прайсу (SUM(total)). Не выручка.
|
|
14
15
|
* - cash — нетто-выручка: SUM(cashReceived), возвраты уже учтены в транзакциях со знаком.
|
|
16
|
+
* - refunded — сколько вернули клиентам (SUM(refundedAmount)), уже вычтено из cash.
|
|
15
17
|
* - discount — сумма ручных скидок (SUM(discountTotal)).
|
|
16
18
|
* - promocode — сумма промокодов (SUM(promocodeTotal)).
|
|
17
19
|
* - nominalSold — суммарный номинал когорты (SUM(nominal)).
|
|
@@ -31,6 +33,8 @@ export type CertificatesOverview = {
|
|
|
31
33
|
gross: number;
|
|
32
34
|
/** Нетто-выручка: SUM(cashReceived), возвраты уже внутри. */
|
|
33
35
|
cash: number;
|
|
36
|
+
/** Возвращено клиентам: SUM(refundedAmount). Уже вычтено из `cash`. */
|
|
37
|
+
refunded: number;
|
|
34
38
|
discount: number;
|
|
35
39
|
promocode: number;
|
|
36
40
|
/** Средний чек по cash: cash / soldCount, 0 если нет продаж. */
|