@escapenavigator/types 2.0.34 → 2.0.38
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/admin/aggregator-order/create-aggregator-order.dto.d.ts +1 -0
- package/dist/agregator/agregator-questroom.ro.d.ts +2 -0
- package/dist/agregator/agregator-questroom.ro.js +5 -0
- package/dist/certificate-sale/certificate-sale.ro.d.ts +6 -0
- package/dist/certificate-sale/certificate-sale.ro.js +4 -0
- package/dist/certificate-uploaded/certificate-uploaded.ro.d.ts +1 -1
- package/dist/client/client.ro.d.ts +13 -0
- package/dist/client/client.ro.js +21 -0
- package/dist/constants/uploading/upload-bookeo-certificate-rows.js +2 -2
- package/dist/constants/uploading/upload-certificate-rows.js +1 -1
- package/dist/email-builder/email-content.dto.d.ts +26 -0
- package/dist/email-builder/email-content.dto.js +62 -0
- package/dist/email-builder/index.d.ts +81 -0
- package/dist/email-builder/index.js +89 -1
- package/dist/emails/index.d.ts +25 -2
- package/dist/location/create-location.dto.d.ts +2 -0
- package/dist/location/create-location.dto.js +7 -0
- package/dist/location/location-light.ro.d.ts +3 -1
- package/dist/location/location-light.ro.js +6 -1
- package/dist/location/update-location-for-admin.dto.d.ts +2 -0
- package/dist/location/update-location-for-admin.dto.js +7 -0
- package/dist/log/log-title.enum.d.ts +3 -0
- package/dist/log/log-title.enum.js +3 -0
- package/dist/loyalty/adjust-bonus.dto.d.ts +14 -0
- package/dist/loyalty/adjust-bonus.dto.js +35 -0
- package/dist/loyalty/assign-client-tier.dto.d.ts +9 -0
- package/dist/loyalty/assign-client-tier.dto.js +29 -0
- package/dist/loyalty/client-loyalty.ro.d.ts +30 -0
- package/dist/loyalty/client-loyalty.ro.js +71 -0
- package/dist/loyalty/enum/loyalty-bonus-type.enum.d.ts +13 -0
- package/dist/loyalty/enum/loyalty-bonus-type.enum.js +17 -0
- package/dist/loyalty/enum/loyalty-history-mode.enum.d.ts +18 -0
- package/dist/loyalty/enum/loyalty-history-mode.enum.js +22 -0
- package/dist/loyalty/enum/loyalty-metric.enum.d.ts +12 -0
- package/dist/loyalty/enum/loyalty-metric.enum.js +16 -0
- package/dist/loyalty/enum/loyalty-program-type.enum.d.ts +12 -0
- package/dist/loyalty/enum/loyalty-program-type.enum.js +16 -0
- package/dist/loyalty/enum/loyalty-stacking.enum.d.ts +14 -0
- package/dist/loyalty/enum/loyalty-stacking.enum.js +18 -0
- package/dist/loyalty/enum/loyalty-tier-color.enum.d.ts +16 -0
- package/dist/loyalty/enum/loyalty-tier-color.enum.js +20 -0
- package/dist/loyalty/enum/loyalty-tier-source.enum.d.ts +13 -0
- package/dist/loyalty/enum/loyalty-tier-source.enum.js +17 -0
- package/dist/loyalty/loyalty-bonus.ro.d.ts +20 -0
- package/dist/loyalty/loyalty-bonus.ro.js +55 -0
- package/dist/loyalty/loyalty-presets.d.ts +45 -0
- package/dist/loyalty/loyalty-presets.js +30 -0
- package/dist/loyalty/loyalty-preview.dto.d.ts +19 -0
- package/dist/loyalty/loyalty-preview.dto.js +64 -0
- package/dist/loyalty/loyalty-preview.ro.d.ts +20 -0
- package/dist/loyalty/loyalty-preview.ro.js +53 -0
- package/dist/loyalty/loyalty-settings.dto.d.ts +51 -0
- package/dist/loyalty/loyalty-settings.dto.js +103 -0
- package/dist/loyalty/loyalty-settings.ro.d.ts +33 -0
- package/dist/loyalty/loyalty-settings.ro.js +67 -0
- package/dist/loyalty/loyalty-tier.dto.d.ts +33 -0
- package/dist/loyalty/loyalty-tier.dto.js +69 -0
- package/dist/loyalty/loyalty-tier.ro.d.ts +12 -0
- package/dist/loyalty/loyalty-tier.ro.js +42 -0
- package/dist/loyalty/pay-with-bonus.dto.d.ts +10 -0
- package/dist/loyalty/pay-with-bonus.dto.js +36 -0
- package/dist/openapi/order-groups/openapi-batch-create-preorder.dto.d.ts +3 -3
- package/dist/openapi/orders/openapi-order.ro.d.ts +12 -0
- package/dist/openapi/orders/openapi-order.ro.js +8 -0
- package/dist/openapi/profiles/enum/openapi-certificate-status.enum.d.ts +29 -0
- package/dist/openapi/profiles/enum/openapi-certificate-status.enum.js +38 -0
- package/dist/openapi/profiles/openapi-annul-certificate.dto.d.ts +3 -0
- package/dist/openapi/profiles/openapi-annul-certificate.dto.js +29 -0
- package/dist/openapi/profiles/openapi-certificate.ro.d.ts +33 -0
- package/dist/openapi/profiles/openapi-certificate.ro.js +195 -0
- package/dist/openapi/profiles/openapi-create-certificate.dto.d.ts +24 -0
- package/dist/openapi/profiles/openapi-create-certificate.dto.js +208 -0
- package/dist/openapi/slots/openapi-widget-slot.ro.d.ts +3 -0
- package/dist/openapi/slots/openapi-widget-slot.ro.js +24 -2
- package/dist/openapi/upsellings/openapi-upselling.ro.d.ts +1 -0
- package/dist/openapi/upsellings/openapi-upselling.ro.js +4 -0
- package/dist/order/order.ro.d.ts +23 -1
- package/dist/order/order.ro.js +19 -0
- package/dist/order-discount/enum/order-discount-source.enum.d.ts +10 -0
- package/dist/order-discount/enum/order-discount-source.enum.js +14 -0
- package/dist/packages/book-package.dto.d.ts +3 -0
- package/dist/packages/book-package.dto.js +9 -0
- package/dist/packages/create-package.dto.d.ts +23 -0
- package/dist/packages/create-package.dto.js +81 -1
- package/dist/packages/package-addon.dto.d.ts +5 -0
- package/dist/packages/package-addon.dto.js +31 -0
- package/dist/packages/package-audience.enum.d.ts +6 -0
- package/dist/packages/package-audience.enum.js +10 -0
- package/dist/packages/package-feature.dto.d.ts +12 -0
- package/dist/packages/package-feature.dto.js +41 -0
- package/dist/packages/package-pricing-mode.enum.d.ts +14 -0
- package/dist/packages/package-pricing-mode.enum.js +18 -0
- package/dist/packages/package.ro.d.ts +14 -0
- package/dist/packages/package.ro.js +48 -0
- package/dist/profile/birthday-marketing/birthday-marketing.dto.d.ts +2 -2
- package/dist/profile/birthday-marketing/birthday-marketing.dto.js +3 -1
- package/dist/profile/company-ai-context.d.ts +2 -0
- package/dist/profile/cross-sale/cross-sale.dto.d.ts +2 -2
- package/dist/profile/cross-sale/cross-sale.dto.js +3 -1
- package/dist/profile/cross-sale/cross-sale.ro.d.ts +2 -2
- package/dist/profile/custom-client-booking-email/custom-client-booking-email.dto.d.ts +2 -2
- package/dist/profile/custom-client-booking-email/custom-client-booking-email.dto.js +3 -1
- package/dist/profile/custom-client-booking-email/custom-client-booking-email.ro.d.ts +2 -2
- package/dist/profile/marketing-automation/marketing-automation.dto.d.ts +2 -2
- package/dist/profile/marketing-automation/marketing-automation.dto.js +3 -1
- package/dist/profile/marketing-automation/marketing-automation.ro.d.ts +2 -2
- package/dist/profile/marketing-email/create-profile-marketing-email-campaign.dto.d.ts +14 -13
- package/dist/profile/marketing-email/create-profile-marketing-email-campaign.dto.js +19 -28
- package/dist/profile/marketing-email/preflight-issue.ro.d.ts +31 -1
- package/dist/profile/marketing-email/preflight-issue.ro.js +30 -0
- package/dist/profile/marketing-email/preview-campaign-v2.dto.d.ts +2 -2
- package/dist/profile/marketing-email/preview-campaign-v2.dto.js +2 -2
- package/dist/profile/marketing-email/preview-profile-marketing-segment.dto.d.ts +6 -0
- package/dist/profile/marketing-email/preview-profile-marketing-segment.dto.js +8 -0
- package/dist/profile/marketing-email/preview-profile-marketing-segment.ro.d.ts +6 -1
- package/dist/profile/marketing-email/preview-profile-marketing-segment.ro.js +9 -1
- package/dist/profile/marketing-email/profile-marketing-email-campaign.ro.d.ts +11 -2
- package/dist/profile/marketing-email/profile-marketing-email-campaign.ro.js +12 -0
- package/dist/profile/marketing-email/profile-marketing-email-recipient-status.enum.d.ts +6 -0
- package/dist/profile/marketing-email/profile-marketing-email-recipient-status.enum.js +6 -0
- package/dist/profile/marketing-email/test-send-email-v2.dto.d.ts +2 -2
- package/dist/profile/marketing-email/test-send-email-v2.dto.js +2 -2
- package/dist/profile/notification-chanel/notification-chanel-action.enum.d.ts +16 -1
- package/dist/profile/notification-chanel/notification-chanel-action.enum.js +21 -1
- package/dist/profile/notification-chanel/notification-chanel.ro.d.ts +5 -0
- package/dist/profile/notification-chanel/notification-chanel.ro.js +4 -0
- package/dist/profile/notification-chanel/test-notification-chanel.dto.d.ts +7 -2
- package/dist/profile/notification-chanel/test-notification-chanel.dto.js +7 -0
- package/dist/questroom/questroom-ai-context.d.ts +5 -0
- package/dist/questroom-scenario-email/create-questroom-scenario-email.dto.d.ts +2 -2
- package/dist/questroom-scenario-email/create-questroom-scenario-email.dto.js +3 -1
- package/dist/questroom-scenario-email/questroom-scenario-email.ro.d.ts +2 -2
- package/dist/shared/enum/availability.enum.d.ts +11 -0
- package/dist/shared/enum/availability.enum.js +15 -0
- package/dist/slot/bulk-update-slots.dto.d.ts +2 -0
- package/dist/slot/bulk-update-slots.dto.js +7 -0
- package/dist/slot/change-template-slots-form.dto.d.ts +3 -0
- package/dist/slot/change-template-slots-form.dto.js +13 -0
- package/dist/slot/create-slot-form.dto.d.ts +2 -0
- package/dist/slot/create-slot-form.dto.js +7 -0
- package/dist/slot/create-slot.dto.d.ts +2 -0
- package/dist/slot/create-slot.dto.js +7 -0
- package/dist/slot/daily-window-range.validator.d.ts +15 -0
- package/dist/slot/daily-window-range.validator.js +46 -0
- package/dist/slot/enum/slot-discount-type.enum.d.ts +15 -0
- package/dist/slot/enum/slot-discount-type.enum.js +19 -0
- package/dist/slot/slot-autocomplite-form.dto.d.ts +2 -0
- package/dist/slot/slot-autocomplite-form.dto.js +7 -0
- package/dist/slot/slot-discount-range.validator.d.ts +10 -0
- package/dist/slot/slot-discount-range.validator.js +36 -0
- package/dist/slot/slot.ro.d.ts +10 -0
- package/dist/slot/update-slot-upsellings-range.dto.d.ts +17 -0
- package/dist/slot/update-slot-upsellings-range.dto.js +68 -0
- package/dist/slot/update-slot.dto.d.ts +4 -0
- package/dist/slot/update-slot.dto.js +14 -0
- package/dist/slot-template/slot-template-element.d.ts +4 -0
- package/dist/slot-template/slot-template-element.js +9 -0
- package/dist/slot-template/slot-template-flex-rule.d.ts +8 -0
- package/dist/slot-template/slot-template-flex-rule.js +15 -2
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/upselling/create-upselling.dto.d.ts +5 -0
- package/dist/upselling/create-upselling.dto.js +8 -0
- package/dist/upselling/upselling.ro.d.ts +1 -0
- package/dist/upselling/upselling.ro.js +4 -0
- package/dist/user/crud/user.ro.d.ts +3 -0
- package/dist/user/crud/user.ro.js +11 -0
- package/dist/user/current/update-current-user-notifications.dto.d.ts +7 -0
- package/dist/user/current/update-current-user-notifications.dto.js +13 -0
- package/dist/user/enum/push-order-scope.enum.d.ts +15 -0
- package/dist/user/enum/push-order-scope.enum.js +19 -0
- package/dist/widget/enum/widget-type.enum.d.ts +3 -1
- package/dist/widget/enum/widget-type.enum.js +2 -0
- package/package.json +2 -2
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { NotificationTriggerEnum } from './notification-chanel-action.enum';
|
|
2
2
|
export declare class TestNotificationChanelDto {
|
|
3
|
-
/**
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* ID заказа, на котором прогоняется тестовое событие. Не нужен для событий
|
|
5
|
+
* по сертификатам — там payload строится по `certificateCode`.
|
|
6
|
+
*/
|
|
7
|
+
orderId?: number;
|
|
8
|
+
/** Код сертификата для тестов событий `certificate-*`. */
|
|
9
|
+
certificateCode?: string;
|
|
5
10
|
trigger?: NotificationTriggerEnum;
|
|
6
11
|
}
|
|
@@ -17,10 +17,17 @@ class TestNotificationChanelDto {
|
|
|
17
17
|
}
|
|
18
18
|
exports.TestNotificationChanelDto = TestNotificationChanelDto;
|
|
19
19
|
__decorate([
|
|
20
|
+
(0, class_validator_1.IsOptional)(),
|
|
20
21
|
(0, class_validator_1.IsInt)(),
|
|
21
22
|
(0, class_transformer_1.Expose)(),
|
|
22
23
|
__metadata("design:type", Number)
|
|
23
24
|
], TestNotificationChanelDto.prototype, "orderId", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, class_validator_1.IsOptional)(),
|
|
27
|
+
(0, class_validator_1.IsString)(),
|
|
28
|
+
(0, class_transformer_1.Expose)(),
|
|
29
|
+
__metadata("design:type", String)
|
|
30
|
+
], TestNotificationChanelDto.prototype, "certificateCode", void 0);
|
|
24
31
|
__decorate([
|
|
25
32
|
(0, class_validator_1.IsOptional)(),
|
|
26
33
|
(0, class_validator_1.IsEnum)(notification_chanel_action_enum_1.NotificationTriggerEnum),
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AvailabilityEnum } from '../shared/enum/availability.enum';
|
|
1
2
|
import { Languages } from '../shared/enum/languages.enum';
|
|
2
3
|
import { TagsEnum } from '../shared/enum/tags.enum';
|
|
3
4
|
import { QuestroomActorsEnum } from './enum/questroom-actors.enum';
|
|
@@ -31,6 +32,7 @@ export type QuestroomAiContext = {
|
|
|
31
32
|
prepareText?: string;
|
|
32
33
|
amenities?: {
|
|
33
34
|
wifi: boolean;
|
|
35
|
+
airConditioning: AvailabilityEnum;
|
|
34
36
|
wardrobe: boolean;
|
|
35
37
|
freeParking: boolean;
|
|
36
38
|
parking: boolean;
|
|
@@ -105,6 +107,9 @@ export type QuestroomAiIndexItem = {
|
|
|
105
107
|
currency?: string;
|
|
106
108
|
tags: TagsEnum[];
|
|
107
109
|
languages: Languages[];
|
|
110
|
+
fear: QuestroomAiScale;
|
|
111
|
+
difficulty: QuestroomAiScale;
|
|
112
|
+
teaserShort?: string;
|
|
108
113
|
isClosed: boolean;
|
|
109
114
|
shared: boolean;
|
|
110
115
|
bookableOnline: boolean;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EmailContent } from '../email-builder';
|
|
2
2
|
export declare class CreateQuestroomScenarioEmailDto {
|
|
3
3
|
title: string;
|
|
4
4
|
text: string;
|
|
@@ -13,7 +13,7 @@ export declare class CreateQuestroomScenarioEmailDto {
|
|
|
13
13
|
* fallback'а — v1 `transformText` всё ещё доступен через
|
|
14
14
|
* `feedbackText`/`text` для пользователей, не прошедших backfill.
|
|
15
15
|
*/
|
|
16
|
-
contentJson?:
|
|
16
|
+
contentJson?: EmailContent | null;
|
|
17
17
|
sendImmediately: boolean;
|
|
18
18
|
sendBefore: number;
|
|
19
19
|
questroomId: number;
|
|
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.CreateQuestroomScenarioEmailDto = void 0;
|
|
13
13
|
const class_transformer_1 = require("class-transformer");
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
|
+
const email_content_dto_1 = require("../email-builder/email-content.dto");
|
|
15
16
|
const is_not_blank_1 = require("../shared/is-not-blank");
|
|
16
17
|
class CreateQuestroomScenarioEmailDto {
|
|
17
18
|
}
|
|
@@ -28,7 +29,8 @@ __decorate([
|
|
|
28
29
|
], CreateQuestroomScenarioEmailDto.prototype, "text", void 0);
|
|
29
30
|
__decorate([
|
|
30
31
|
(0, class_validator_1.IsOptional)(),
|
|
31
|
-
(0, class_validator_1.
|
|
32
|
+
(0, class_validator_1.ValidateNested)(),
|
|
33
|
+
(0, class_transformer_1.Type)(() => email_content_dto_1.EmailContentDto),
|
|
32
34
|
(0, class_transformer_1.Expose)(),
|
|
33
35
|
__metadata("design:type", Object)
|
|
34
36
|
], CreateQuestroomScenarioEmailDto.prototype, "contentJson", void 0);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EmailContent } from '../email-builder';
|
|
2
2
|
import { RO } from '../shared/ro-class';
|
|
3
3
|
export declare class QuestroomScenarioEmailRO extends RO {
|
|
4
4
|
title: string;
|
|
5
5
|
text: string;
|
|
6
|
-
contentJson?:
|
|
6
|
+
contentJson?: EmailContent | null;
|
|
7
7
|
sendBefore: number;
|
|
8
8
|
sendImmediately: boolean;
|
|
9
9
|
questroomId: number;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Общий трёхсостоянийный статус «есть / нет / неизвестно».
|
|
3
|
+
* Переиспользуется для удобств локации и других сущностей,
|
|
4
|
+
* где булево «да/нет» недостаточно — у существующих записей
|
|
5
|
+
* факт часто просто не заполнен.
|
|
6
|
+
*/
|
|
7
|
+
export declare enum AvailabilityEnum {
|
|
8
|
+
YES = "yes",
|
|
9
|
+
NO = "no",
|
|
10
|
+
UNKNOWN = "unknown"
|
|
11
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AvailabilityEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Общий трёхсостоянийный статус «есть / нет / неизвестно».
|
|
6
|
+
* Переиспользуется для удобств локации и других сущностей,
|
|
7
|
+
* где булево «да/нет» недостаточно — у существующих записей
|
|
8
|
+
* факт часто просто не заполнен.
|
|
9
|
+
*/
|
|
10
|
+
var AvailabilityEnum;
|
|
11
|
+
(function (AvailabilityEnum) {
|
|
12
|
+
AvailabilityEnum["YES"] = "yes";
|
|
13
|
+
AvailabilityEnum["NO"] = "no";
|
|
14
|
+
AvailabilityEnum["UNKNOWN"] = "unknown";
|
|
15
|
+
})(AvailabilityEnum || (exports.AvailabilityEnum = AvailabilityEnum = {}));
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SlotDiscountTypeEnum } from './enum/slot-discount-type.enum';
|
|
1
2
|
export type BulkUpdateSlotsType = 'addBreak' | 'removeBreak' | 'updatePricing';
|
|
2
3
|
export declare class BulkUpdateSlotsDto {
|
|
3
4
|
slotIds: number[];
|
|
@@ -5,4 +6,5 @@ export declare class BulkUpdateSlotsDto {
|
|
|
5
6
|
breakReason?: string;
|
|
6
7
|
tariffId?: number;
|
|
7
8
|
discount?: number;
|
|
9
|
+
discountType?: SlotDiscountTypeEnum;
|
|
8
10
|
}
|
|
@@ -13,6 +13,7 @@ exports.BulkUpdateSlotsDto = void 0;
|
|
|
13
13
|
const class_transformer_1 = require("class-transformer");
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
15
|
const is_not_blank_1 = require("../shared/is-not-blank");
|
|
16
|
+
const slot_discount_type_enum_1 = require("./enum/slot-discount-type.enum");
|
|
16
17
|
class BulkUpdateSlotsDto {
|
|
17
18
|
}
|
|
18
19
|
exports.BulkUpdateSlotsDto = BulkUpdateSlotsDto;
|
|
@@ -43,3 +44,9 @@ __decorate([
|
|
|
43
44
|
(0, class_transformer_1.Expose)(),
|
|
44
45
|
__metadata("design:type", Number)
|
|
45
46
|
], BulkUpdateSlotsDto.prototype, "discount", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, class_validator_1.IsOptional)(),
|
|
49
|
+
(0, class_validator_1.IsEnum)(slot_discount_type_enum_1.SlotDiscountTypeEnum),
|
|
50
|
+
(0, class_transformer_1.Expose)(),
|
|
51
|
+
__metadata("design:type", String)
|
|
52
|
+
], BulkUpdateSlotsDto.prototype, "discountType", void 0);
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { CreateRuleDto } from '../slot-rule/create-rule.dto';
|
|
2
|
+
import { SlotDiscountTypeEnum } from './enum/slot-discount-type.enum';
|
|
2
3
|
export declare class ChangeTemplateSlotsFormDto extends CreateRuleDto {
|
|
3
4
|
tariffId: number;
|
|
4
5
|
onlyPhone: boolean;
|
|
5
6
|
discount: number;
|
|
7
|
+
discountType?: SlotDiscountTypeEnum;
|
|
6
8
|
variationIds?: number[];
|
|
9
|
+
excludedUpsellingIds?: number[];
|
|
7
10
|
}
|
|
@@ -13,6 +13,7 @@ exports.ChangeTemplateSlotsFormDto = void 0;
|
|
|
13
13
|
const class_transformer_1 = require("class-transformer");
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
15
|
const create_rule_dto_1 = require("../slot-rule/create-rule.dto");
|
|
16
|
+
const slot_discount_type_enum_1 = require("./enum/slot-discount-type.enum");
|
|
16
17
|
class ChangeTemplateSlotsFormDto extends create_rule_dto_1.CreateRuleDto {
|
|
17
18
|
}
|
|
18
19
|
exports.ChangeTemplateSlotsFormDto = ChangeTemplateSlotsFormDto;
|
|
@@ -31,9 +32,21 @@ __decorate([
|
|
|
31
32
|
(0, class_transformer_1.Expose)(),
|
|
32
33
|
__metadata("design:type", Number)
|
|
33
34
|
], ChangeTemplateSlotsFormDto.prototype, "discount", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, class_validator_1.IsOptional)(),
|
|
37
|
+
(0, class_validator_1.IsEnum)(slot_discount_type_enum_1.SlotDiscountTypeEnum),
|
|
38
|
+
(0, class_transformer_1.Expose)(),
|
|
39
|
+
__metadata("design:type", String)
|
|
40
|
+
], ChangeTemplateSlotsFormDto.prototype, "discountType", void 0);
|
|
34
41
|
__decorate([
|
|
35
42
|
(0, class_validator_1.IsOptional)(),
|
|
36
43
|
(0, class_validator_1.IsArray)(),
|
|
37
44
|
(0, class_transformer_1.Expose)(),
|
|
38
45
|
__metadata("design:type", Array)
|
|
39
46
|
], ChangeTemplateSlotsFormDto.prototype, "variationIds", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, class_validator_1.IsOptional)(),
|
|
49
|
+
(0, class_validator_1.IsArray)(),
|
|
50
|
+
(0, class_transformer_1.Expose)(),
|
|
51
|
+
__metadata("design:type", Array)
|
|
52
|
+
], ChangeTemplateSlotsFormDto.prototype, "excludedUpsellingIds", void 0);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CreateRuleDto } from '../slot-rule/create-rule.dto';
|
|
2
|
+
import { SlotDiscountTypeEnum } from './enum/slot-discount-type.enum';
|
|
2
3
|
export declare class CreateSlotFormDto extends CreateRuleDto {
|
|
3
4
|
date: string;
|
|
4
5
|
start: string;
|
|
@@ -6,5 +7,6 @@ export declare class CreateSlotFormDto extends CreateRuleDto {
|
|
|
6
7
|
tariffId: number;
|
|
7
8
|
onlyPhone: boolean;
|
|
8
9
|
discount: number;
|
|
10
|
+
discountType?: SlotDiscountTypeEnum;
|
|
9
11
|
forceOnlineBooking: boolean;
|
|
10
12
|
}
|
|
@@ -14,6 +14,7 @@ const class_transformer_1 = require("class-transformer");
|
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
15
|
const is_not_blank_1 = require("../shared/is-not-blank");
|
|
16
16
|
const create_rule_dto_1 = require("../slot-rule/create-rule.dto");
|
|
17
|
+
const slot_discount_type_enum_1 = require("./enum/slot-discount-type.enum");
|
|
17
18
|
class CreateSlotFormDto extends create_rule_dto_1.CreateRuleDto {
|
|
18
19
|
}
|
|
19
20
|
exports.CreateSlotFormDto = CreateSlotFormDto;
|
|
@@ -47,6 +48,12 @@ __decorate([
|
|
|
47
48
|
(0, class_transformer_1.Expose)(),
|
|
48
49
|
__metadata("design:type", Number)
|
|
49
50
|
], CreateSlotFormDto.prototype, "discount", void 0);
|
|
51
|
+
__decorate([
|
|
52
|
+
(0, class_validator_1.IsOptional)(),
|
|
53
|
+
(0, class_validator_1.IsEnum)(slot_discount_type_enum_1.SlotDiscountTypeEnum),
|
|
54
|
+
(0, class_transformer_1.Expose)(),
|
|
55
|
+
__metadata("design:type", String)
|
|
56
|
+
], CreateSlotFormDto.prototype, "discountType", void 0);
|
|
50
57
|
__decorate([
|
|
51
58
|
(0, class_validator_1.IsOptional)(),
|
|
52
59
|
(0, class_transformer_1.Expose)(),
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SlotDiscountTypeEnum } from './enum/slot-discount-type.enum';
|
|
1
2
|
export declare class CreateSlotDto {
|
|
2
3
|
date: string;
|
|
3
4
|
start: string;
|
|
@@ -6,5 +7,6 @@ export declare class CreateSlotDto {
|
|
|
6
7
|
ruleId: number;
|
|
7
8
|
onlyPhone: boolean;
|
|
8
9
|
discount: number;
|
|
10
|
+
discountType?: SlotDiscountTypeEnum;
|
|
9
11
|
forceOnlineBooking: boolean;
|
|
10
12
|
}
|
|
@@ -13,6 +13,7 @@ exports.CreateSlotDto = void 0;
|
|
|
13
13
|
const class_transformer_1 = require("class-transformer");
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
15
|
const is_not_blank_1 = require("../shared/is-not-blank");
|
|
16
|
+
const slot_discount_type_enum_1 = require("./enum/slot-discount-type.enum");
|
|
16
17
|
class CreateSlotDto {
|
|
17
18
|
}
|
|
18
19
|
exports.CreateSlotDto = CreateSlotDto;
|
|
@@ -51,6 +52,12 @@ __decorate([
|
|
|
51
52
|
(0, class_transformer_1.Expose)(),
|
|
52
53
|
__metadata("design:type", Number)
|
|
53
54
|
], CreateSlotDto.prototype, "discount", void 0);
|
|
55
|
+
__decorate([
|
|
56
|
+
(0, class_validator_1.IsOptional)(),
|
|
57
|
+
(0, class_validator_1.IsEnum)(slot_discount_type_enum_1.SlotDiscountTypeEnum),
|
|
58
|
+
(0, class_transformer_1.Expose)(),
|
|
59
|
+
__metadata("design:type", String)
|
|
60
|
+
], CreateSlotDto.prototype, "discountType", void 0);
|
|
54
61
|
__decorate([
|
|
55
62
|
(0, class_validator_1.IsOptional)(),
|
|
56
63
|
(0, class_transformer_1.Expose)(),
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ValidationArguments, ValidatorConstraintInterface } from 'class-validator';
|
|
2
|
+
/**
|
|
3
|
+
* Окно `startTime … endTime` применяется к КАЖДОМУ дню диапазона («утренние
|
|
4
|
+
* часы всю следующую неделю»), а не как один непрерывный интервал — поэтому
|
|
5
|
+
* время сравнивается отдельно от дат (в отличие от
|
|
6
|
+
* `BreakRangeEndAfterStartConstraint`, где интервал сквозной).
|
|
7
|
+
*/
|
|
8
|
+
export declare class DailyWindowEndTimeAfterStartTimeConstraint implements ValidatorConstraintInterface {
|
|
9
|
+
validate(_value: unknown, args: ValidationArguments): boolean;
|
|
10
|
+
defaultMessage(): string;
|
|
11
|
+
}
|
|
12
|
+
export declare class DailyWindowEndDateNotBeforeStartDateConstraint implements ValidatorConstraintInterface {
|
|
13
|
+
validate(_value: unknown, args: ValidationArguments): boolean;
|
|
14
|
+
defaultMessage(): string;
|
|
15
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.DailyWindowEndDateNotBeforeStartDateConstraint = exports.DailyWindowEndTimeAfterStartTimeConstraint = void 0;
|
|
10
|
+
const class_validator_1 = require("class-validator");
|
|
11
|
+
/**
|
|
12
|
+
* Окно `startTime … endTime` применяется к КАЖДОМУ дню диапазона («утренние
|
|
13
|
+
* часы всю следующую неделю»), а не как один непрерывный интервал — поэтому
|
|
14
|
+
* время сравнивается отдельно от дат (в отличие от
|
|
15
|
+
* `BreakRangeEndAfterStartConstraint`, где интервал сквозной).
|
|
16
|
+
*/
|
|
17
|
+
let DailyWindowEndTimeAfterStartTimeConstraint = class DailyWindowEndTimeAfterStartTimeConstraint {
|
|
18
|
+
validate(_value, args) {
|
|
19
|
+
const { startTime, endTime } = args.object;
|
|
20
|
+
if (!startTime || !endTime)
|
|
21
|
+
return true;
|
|
22
|
+
return startTime < endTime;
|
|
23
|
+
}
|
|
24
|
+
defaultMessage() {
|
|
25
|
+
return 'dailyWindowEndTimeMustBeAfterStartTime';
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
exports.DailyWindowEndTimeAfterStartTimeConstraint = DailyWindowEndTimeAfterStartTimeConstraint;
|
|
29
|
+
exports.DailyWindowEndTimeAfterStartTimeConstraint = DailyWindowEndTimeAfterStartTimeConstraint = __decorate([
|
|
30
|
+
(0, class_validator_1.ValidatorConstraint)({ name: 'dailyWindowEndTimeAfterStartTime', async: false })
|
|
31
|
+
], DailyWindowEndTimeAfterStartTimeConstraint);
|
|
32
|
+
let DailyWindowEndDateNotBeforeStartDateConstraint = class DailyWindowEndDateNotBeforeStartDateConstraint {
|
|
33
|
+
validate(_value, args) {
|
|
34
|
+
const { startDate, endDate } = args.object;
|
|
35
|
+
if (!startDate || !endDate)
|
|
36
|
+
return true;
|
|
37
|
+
return startDate <= endDate;
|
|
38
|
+
}
|
|
39
|
+
defaultMessage() {
|
|
40
|
+
return 'dailyWindowEndDateMustNotBeBeforeStartDate';
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
exports.DailyWindowEndDateNotBeforeStartDateConstraint = DailyWindowEndDateNotBeforeStartDateConstraint;
|
|
44
|
+
exports.DailyWindowEndDateNotBeforeStartDateConstraint = DailyWindowEndDateNotBeforeStartDateConstraint = __decorate([
|
|
45
|
+
(0, class_validator_1.ValidatorConstraint)({ name: 'dailyWindowEndDateNotBeforeStartDate', async: false })
|
|
46
|
+
], DailyWindowEndDateNotBeforeStartDateConstraint);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Тип скидки на слот.
|
|
3
|
+
*
|
|
4
|
+
* `PERCENT` — историческое поведение: `slots.discount` хранится в базисных
|
|
5
|
+
* пунктах (10000 = 100%, 1500 = 15%).
|
|
6
|
+
* `FIXED` — `slots.discount` хранится в минорных единицах валюты и вычитается
|
|
7
|
+
* из стоимости игры один раз на заказ, независимо от числа игроков.
|
|
8
|
+
*
|
|
9
|
+
* У слотов, созданных до появления поля, `discountType` пустой и трактуется
|
|
10
|
+
* как `PERCENT` (см. getSlotDiscountAmount).
|
|
11
|
+
*/
|
|
12
|
+
export declare enum SlotDiscountTypeEnum {
|
|
13
|
+
PERCENT = "percent",
|
|
14
|
+
FIXED = "fixed"
|
|
15
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SlotDiscountTypeEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Тип скидки на слот.
|
|
6
|
+
*
|
|
7
|
+
* `PERCENT` — историческое поведение: `slots.discount` хранится в базисных
|
|
8
|
+
* пунктах (10000 = 100%, 1500 = 15%).
|
|
9
|
+
* `FIXED` — `slots.discount` хранится в минорных единицах валюты и вычитается
|
|
10
|
+
* из стоимости игры один раз на заказ, независимо от числа игроков.
|
|
11
|
+
*
|
|
12
|
+
* У слотов, созданных до появления поля, `discountType` пустой и трактуется
|
|
13
|
+
* как `PERCENT` (см. getSlotDiscountAmount).
|
|
14
|
+
*/
|
|
15
|
+
var SlotDiscountTypeEnum;
|
|
16
|
+
(function (SlotDiscountTypeEnum) {
|
|
17
|
+
SlotDiscountTypeEnum["PERCENT"] = "percent";
|
|
18
|
+
SlotDiscountTypeEnum["FIXED"] = "fixed";
|
|
19
|
+
})(SlotDiscountTypeEnum || (exports.SlotDiscountTypeEnum = SlotDiscountTypeEnum = {}));
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CreateRuleDto } from '../slot-rule/create-rule.dto';
|
|
2
|
+
import { SlotDiscountTypeEnum } from './enum/slot-discount-type.enum';
|
|
2
3
|
export declare class SlotAutocompliteFormDto extends CreateRuleDto {
|
|
3
4
|
days: number[];
|
|
4
5
|
start: string;
|
|
@@ -8,4 +9,5 @@ export declare class SlotAutocompliteFormDto extends CreateRuleDto {
|
|
|
8
9
|
variationIds?: number[];
|
|
9
10
|
onlyPhone: boolean;
|
|
10
11
|
discount: number;
|
|
12
|
+
discountType?: SlotDiscountTypeEnum;
|
|
11
13
|
}
|
|
@@ -14,6 +14,7 @@ const class_transformer_1 = require("class-transformer");
|
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
15
|
const is_not_blank_1 = require("../shared/is-not-blank");
|
|
16
16
|
const create_rule_dto_1 = require("../slot-rule/create-rule.dto");
|
|
17
|
+
const slot_discount_type_enum_1 = require("./enum/slot-discount-type.enum");
|
|
17
18
|
class SlotAutocompliteFormDto extends create_rule_dto_1.CreateRuleDto {
|
|
18
19
|
}
|
|
19
20
|
exports.SlotAutocompliteFormDto = SlotAutocompliteFormDto;
|
|
@@ -63,3 +64,9 @@ __decorate([
|
|
|
63
64
|
(0, class_transformer_1.Expose)(),
|
|
64
65
|
__metadata("design:type", Number)
|
|
65
66
|
], SlotAutocompliteFormDto.prototype, "discount", void 0);
|
|
67
|
+
__decorate([
|
|
68
|
+
(0, class_validator_1.IsOptional)(),
|
|
69
|
+
(0, class_validator_1.IsEnum)(slot_discount_type_enum_1.SlotDiscountTypeEnum),
|
|
70
|
+
(0, class_transformer_1.Expose)(),
|
|
71
|
+
__metadata("design:type", String)
|
|
72
|
+
], SlotAutocompliteFormDto.prototype, "discountType", void 0);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ValidationArguments, ValidatorConstraintInterface } from 'class-validator';
|
|
2
|
+
/**
|
|
3
|
+
* Диапазон `discount` зависит от `discountType`: процент живёт в базисных
|
|
4
|
+
* пунктах (0..10000), фиксированная скидка — в минорных единицах и такой
|
|
5
|
+
* потолок ей не подходит.
|
|
6
|
+
*/
|
|
7
|
+
export declare class SlotDiscountRangeConstraint implements ValidatorConstraintInterface {
|
|
8
|
+
validate(value: unknown, args: ValidationArguments): boolean;
|
|
9
|
+
defaultMessage(): string;
|
|
10
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.SlotDiscountRangeConstraint = void 0;
|
|
10
|
+
const class_validator_1 = require("class-validator");
|
|
11
|
+
const slot_discount_type_enum_1 = require("./enum/slot-discount-type.enum");
|
|
12
|
+
/** Верхняя граница фиксированной скидки: 100 000 в мажорных единицах. */
|
|
13
|
+
const MAX_FIXED_DISCOUNT = 10000000;
|
|
14
|
+
/**
|
|
15
|
+
* Диапазон `discount` зависит от `discountType`: процент живёт в базисных
|
|
16
|
+
* пунктах (0..10000), фиксированная скидка — в минорных единицах и такой
|
|
17
|
+
* потолок ей не подходит.
|
|
18
|
+
*/
|
|
19
|
+
let SlotDiscountRangeConstraint = class SlotDiscountRangeConstraint {
|
|
20
|
+
validate(value, args) {
|
|
21
|
+
if (value == null || value === '')
|
|
22
|
+
return true;
|
|
23
|
+
const discount = Number(value);
|
|
24
|
+
if (!Number.isFinite(discount) || discount < 0)
|
|
25
|
+
return false;
|
|
26
|
+
const { discountType } = args.object;
|
|
27
|
+
return (discount <= (discountType === slot_discount_type_enum_1.SlotDiscountTypeEnum.FIXED ? MAX_FIXED_DISCOUNT : 10000));
|
|
28
|
+
}
|
|
29
|
+
defaultMessage() {
|
|
30
|
+
return 'slotDiscountOutOfRange';
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
exports.SlotDiscountRangeConstraint = SlotDiscountRangeConstraint;
|
|
34
|
+
exports.SlotDiscountRangeConstraint = SlotDiscountRangeConstraint = __decorate([
|
|
35
|
+
(0, class_validator_1.ValidatorConstraint)({ name: 'slotDiscountRange', async: false })
|
|
36
|
+
], SlotDiscountRangeConstraint);
|
package/dist/slot/slot.ro.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { QuestroomCancelationTypeEnum } from '../questroom/enum/questroom-cancelation-type.enum';
|
|
2
2
|
import { Languages } from '../shared/enum/languages.enum';
|
|
3
3
|
import { PrepaymentTypeEnum } from './enum/prepayment-type.enum';
|
|
4
|
+
import { SlotDiscountTypeEnum } from './enum/slot-discount-type.enum';
|
|
4
5
|
export type SlotRuleSummaryRO = {
|
|
5
6
|
title: string;
|
|
6
7
|
minHoursForBooking: number;
|
|
@@ -25,7 +26,10 @@ export type SlotRO = {
|
|
|
25
26
|
[x: string]: number;
|
|
26
27
|
};
|
|
27
28
|
status?: 'free' | 'bussy' | 'call' | 'no-resources';
|
|
29
|
+
/** Базисные пункты при `percent`, минорные единицы при `fixed`. */
|
|
28
30
|
discount?: number;
|
|
31
|
+
/** Пусто у слотов до появления фиксированных скидок — значит `percent`. */
|
|
32
|
+
discountType?: SlotDiscountTypeEnum;
|
|
29
33
|
onlyPhone?: boolean;
|
|
30
34
|
forceOnlineBooking?: boolean;
|
|
31
35
|
/**
|
|
@@ -34,6 +38,12 @@ export type SlotRO = {
|
|
|
34
38
|
* свободный с маркером.
|
|
35
39
|
*/
|
|
36
40
|
ignoreResourceLimit?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Доп. услуги, запрещённые на этом слоте. Отдаётся только когда список
|
|
43
|
+
* непустой — у подавляющего большинства слотов поля в payload нет вовсе
|
|
44
|
+
* (в календаре CRM это до 1000 слотов в одном ответе).
|
|
45
|
+
*/
|
|
46
|
+
excludedUpsellingIds?: number[];
|
|
37
47
|
breakReason?: string | null;
|
|
38
48
|
availableTeams?: number;
|
|
39
49
|
numSeatsAvailable?: number;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Массовый запрет (или возврат) доп. услуг на уже существующих слотах:
|
|
3
|
+
* «выключить актёра на все утренние часы до конца года».
|
|
4
|
+
*
|
|
5
|
+
* Окно `startTime … endTime` применяется к каждому дню диапазона, время — по
|
|
6
|
+
* стене локации квеста. Затрагивает только материализованные слоты, то есть
|
|
7
|
+
* fixed-расписание; во flex-квестах запрет живёт в окнах шаблона.
|
|
8
|
+
*/
|
|
9
|
+
export declare class UpdateSlotUpsellingsRangeDto {
|
|
10
|
+
questroomIds: number[];
|
|
11
|
+
action: 'exclude' | 'allow';
|
|
12
|
+
upsellingIds: number[];
|
|
13
|
+
startDate: string;
|
|
14
|
+
endDate: string;
|
|
15
|
+
startTime: string;
|
|
16
|
+
endTime: string;
|
|
17
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
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.UpdateSlotUpsellingsRangeDto = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
const is_not_blank_1 = require("../shared/is-not-blank");
|
|
16
|
+
const daily_window_range_validator_1 = require("./daily-window-range.validator");
|
|
17
|
+
/**
|
|
18
|
+
* Массовый запрет (или возврат) доп. услуг на уже существующих слотах:
|
|
19
|
+
* «выключить актёра на все утренние часы до конца года».
|
|
20
|
+
*
|
|
21
|
+
* Окно `startTime … endTime` применяется к каждому дню диапазона, время — по
|
|
22
|
+
* стене локации квеста. Затрагивает только материализованные слоты, то есть
|
|
23
|
+
* fixed-расписание; во flex-квестах запрет живёт в окнах шаблона.
|
|
24
|
+
*/
|
|
25
|
+
class UpdateSlotUpsellingsRangeDto {
|
|
26
|
+
}
|
|
27
|
+
exports.UpdateSlotUpsellingsRangeDto = UpdateSlotUpsellingsRangeDto;
|
|
28
|
+
__decorate([
|
|
29
|
+
(0, class_validator_1.IsArray)(),
|
|
30
|
+
(0, class_validator_1.ArrayMinSize)(1),
|
|
31
|
+
(0, class_transformer_1.Expose)(),
|
|
32
|
+
(0, class_transformer_1.Transform)(({ value }) => ((value === null || value === void 0 ? void 0 : value.length) ? value : [])),
|
|
33
|
+
__metadata("design:type", Array)
|
|
34
|
+
], UpdateSlotUpsellingsRangeDto.prototype, "questroomIds", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, class_validator_1.IsIn)(['exclude', 'allow']),
|
|
37
|
+
(0, class_transformer_1.Expose)(),
|
|
38
|
+
__metadata("design:type", String)
|
|
39
|
+
], UpdateSlotUpsellingsRangeDto.prototype, "action", void 0);
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, class_validator_1.IsArray)(),
|
|
42
|
+
(0, class_validator_1.ArrayMinSize)(1),
|
|
43
|
+
(0, class_validator_1.ArrayMaxSize)(200),
|
|
44
|
+
(0, class_transformer_1.Expose)(),
|
|
45
|
+
__metadata("design:type", Array)
|
|
46
|
+
], UpdateSlotUpsellingsRangeDto.prototype, "upsellingIds", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, is_not_blank_1.IsNotBlank)(),
|
|
49
|
+
(0, class_transformer_1.Expose)(),
|
|
50
|
+
__metadata("design:type", String)
|
|
51
|
+
], UpdateSlotUpsellingsRangeDto.prototype, "startDate", void 0);
|
|
52
|
+
__decorate([
|
|
53
|
+
(0, is_not_blank_1.IsNotBlank)(),
|
|
54
|
+
(0, class_validator_1.Validate)(daily_window_range_validator_1.DailyWindowEndDateNotBeforeStartDateConstraint),
|
|
55
|
+
(0, class_transformer_1.Expose)(),
|
|
56
|
+
__metadata("design:type", String)
|
|
57
|
+
], UpdateSlotUpsellingsRangeDto.prototype, "endDate", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
(0, is_not_blank_1.IsNotBlank)(),
|
|
60
|
+
(0, class_transformer_1.Expose)(),
|
|
61
|
+
__metadata("design:type", String)
|
|
62
|
+
], UpdateSlotUpsellingsRangeDto.prototype, "startTime", void 0);
|
|
63
|
+
__decorate([
|
|
64
|
+
(0, is_not_blank_1.IsNotBlank)(),
|
|
65
|
+
(0, class_validator_1.Validate)(daily_window_range_validator_1.DailyWindowEndTimeAfterStartTimeConstraint),
|
|
66
|
+
(0, class_transformer_1.Expose)(),
|
|
67
|
+
__metadata("design:type", String)
|
|
68
|
+
], UpdateSlotUpsellingsRangeDto.prototype, "endTime", void 0);
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
import { SlotDiscountTypeEnum } from './enum/slot-discount-type.enum';
|
|
1
2
|
export declare class UpdateSlotDto {
|
|
2
3
|
start: string;
|
|
3
4
|
tariffId: number;
|
|
4
5
|
onlyPhone: boolean;
|
|
5
6
|
discount: number;
|
|
7
|
+
discountType?: SlotDiscountTypeEnum;
|
|
6
8
|
forceOnlineBooking: boolean;
|
|
7
9
|
variationIds?: number[];
|
|
10
|
+
/** Доп. услуги, недоступные для онлайн-брони именно на этом слоте. */
|
|
11
|
+
excludedUpsellingIds?: number[];
|
|
8
12
|
}
|
|
@@ -13,6 +13,7 @@ exports.UpdateSlotDto = void 0;
|
|
|
13
13
|
const class_transformer_1 = require("class-transformer");
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
15
|
const is_not_blank_1 = require("../shared/is-not-blank");
|
|
16
|
+
const slot_discount_type_enum_1 = require("./enum/slot-discount-type.enum");
|
|
16
17
|
class UpdateSlotDto {
|
|
17
18
|
}
|
|
18
19
|
exports.UpdateSlotDto = UpdateSlotDto;
|
|
@@ -37,6 +38,12 @@ __decorate([
|
|
|
37
38
|
(0, class_transformer_1.Expose)(),
|
|
38
39
|
__metadata("design:type", Number)
|
|
39
40
|
], UpdateSlotDto.prototype, "discount", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
(0, class_validator_1.IsOptional)(),
|
|
43
|
+
(0, class_validator_1.IsEnum)(slot_discount_type_enum_1.SlotDiscountTypeEnum),
|
|
44
|
+
(0, class_transformer_1.Expose)(),
|
|
45
|
+
__metadata("design:type", String)
|
|
46
|
+
], UpdateSlotDto.prototype, "discountType", void 0);
|
|
40
47
|
__decorate([
|
|
41
48
|
(0, class_validator_1.IsOptional)(),
|
|
42
49
|
(0, class_transformer_1.Expose)(),
|
|
@@ -48,3 +55,10 @@ __decorate([
|
|
|
48
55
|
(0, class_transformer_1.Expose)(),
|
|
49
56
|
__metadata("design:type", Array)
|
|
50
57
|
], UpdateSlotDto.prototype, "variationIds", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
(0, class_validator_1.IsOptional)(),
|
|
60
|
+
(0, class_validator_1.IsArray)(),
|
|
61
|
+
(0, class_validator_1.ArrayMaxSize)(200),
|
|
62
|
+
(0, class_transformer_1.Expose)(),
|
|
63
|
+
__metadata("design:type", Array)
|
|
64
|
+
], UpdateSlotDto.prototype, "excludedUpsellingIds", void 0);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SlotDiscountTypeEnum } from '../slot/enum/slot-discount-type.enum';
|
|
1
2
|
export declare class SlotTemplateElement {
|
|
2
3
|
date: string;
|
|
3
4
|
start: string;
|
|
@@ -6,5 +7,8 @@ export declare class SlotTemplateElement {
|
|
|
6
7
|
ruleId: number;
|
|
7
8
|
onlyPhone: boolean;
|
|
8
9
|
discount: number;
|
|
10
|
+
discountType?: SlotDiscountTypeEnum;
|
|
9
11
|
variationIds?: number[];
|
|
12
|
+
/** Доп. услуги, запрещённые на слотах этой ячейки шаблона. */
|
|
13
|
+
excludedUpsellingIds?: number[];
|
|
10
14
|
}
|