@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
|
@@ -0,0 +1,64 @@
|
|
|
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.LoyaltyPreviewDto = exports.LoyaltyPreviewTierDto = void 0;
|
|
13
|
+
/* eslint-disable max-classes-per-file */
|
|
14
|
+
const class_transformer_1 = require("class-transformer");
|
|
15
|
+
const class_validator_1 = require("class-validator");
|
|
16
|
+
const loyalty_history_mode_enum_1 = require("./enum/loyalty-history-mode.enum");
|
|
17
|
+
const loyalty_metric_enum_1 = require("./enum/loyalty-metric.enum");
|
|
18
|
+
const loyalty_tier_dto_1 = require("./loyalty-tier.dto");
|
|
19
|
+
class LoyaltyPreviewTierDto {
|
|
20
|
+
}
|
|
21
|
+
exports.LoyaltyPreviewTierDto = LoyaltyPreviewTierDto;
|
|
22
|
+
__decorate([
|
|
23
|
+
(0, class_transformer_1.Transform)(({ value }) => (+value > 0 ? Math.round(+value) : 0)),
|
|
24
|
+
(0, class_validator_1.Min)(0),
|
|
25
|
+
(0, class_validator_1.IsInt)(),
|
|
26
|
+
(0, class_transformer_1.Expose)(),
|
|
27
|
+
__metadata("design:type", Number)
|
|
28
|
+
], LoyaltyPreviewTierDto.prototype, "threshold", void 0);
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, class_transformer_1.Transform)(({ value }) => (+value > 0 ? Math.round(+value) : 0)),
|
|
31
|
+
(0, class_validator_1.Min)(0),
|
|
32
|
+
(0, class_validator_1.Max)(100),
|
|
33
|
+
(0, class_validator_1.IsInt)(),
|
|
34
|
+
(0, class_transformer_1.Expose)(),
|
|
35
|
+
__metadata("design:type", Number)
|
|
36
|
+
], LoyaltyPreviewTierDto.prototype, "discount", void 0);
|
|
37
|
+
/**
|
|
38
|
+
* Прикидка «что будет, если включить» по ещё не сохранённым порогам:
|
|
39
|
+
* сколько клиентов попадёт на каждый статус и во что это обошлось бы за
|
|
40
|
+
* последний год. Считается по реальной истории игр и ничего не меняет —
|
|
41
|
+
* владелец должен видеть цену решения до того, как раздаст скидку
|
|
42
|
+
* половине базы.
|
|
43
|
+
*/
|
|
44
|
+
class LoyaltyPreviewDto {
|
|
45
|
+
}
|
|
46
|
+
exports.LoyaltyPreviewDto = LoyaltyPreviewDto;
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, class_validator_1.IsEnum)(loyalty_metric_enum_1.LoyaltyMetricEnum),
|
|
49
|
+
(0, class_transformer_1.Expose)(),
|
|
50
|
+
__metadata("design:type", String)
|
|
51
|
+
], LoyaltyPreviewDto.prototype, "metric", void 0);
|
|
52
|
+
__decorate([
|
|
53
|
+
(0, class_validator_1.IsEnum)(loyalty_history_mode_enum_1.LoyaltyHistoryModeEnum),
|
|
54
|
+
(0, class_transformer_1.Expose)(),
|
|
55
|
+
__metadata("design:type", String)
|
|
56
|
+
], LoyaltyPreviewDto.prototype, "historyMode", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
(0, class_validator_1.IsArray)(),
|
|
59
|
+
(0, class_validator_1.ArrayMaxSize)(loyalty_tier_dto_1.MAX_LOYALTY_TIERS),
|
|
60
|
+
(0, class_validator_1.ValidateNested)({ each: true }),
|
|
61
|
+
(0, class_transformer_1.Type)(() => LoyaltyPreviewTierDto),
|
|
62
|
+
(0, class_transformer_1.Expose)(),
|
|
63
|
+
__metadata("design:type", Array)
|
|
64
|
+
], LoyaltyPreviewDto.prototype, "tiers", void 0);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare class LoyaltyPreviewBucketRO {
|
|
2
|
+
threshold: number;
|
|
3
|
+
discount: number;
|
|
4
|
+
clientsCount: number;
|
|
5
|
+
/**
|
|
6
|
+
* Во что обошёлся бы этот статус за последние 12 месяцев: скидка,
|
|
7
|
+
* применённая к уже состоявшимся играм его будущих участников. Оценка
|
|
8
|
+
* сверху — она не учитывает, что часть этих игр была с промокодом и
|
|
9
|
+
* статусная скидка на них не встала бы.
|
|
10
|
+
*/
|
|
11
|
+
estimatedDiscount: number;
|
|
12
|
+
}
|
|
13
|
+
export declare class LoyaltyPreviewRO {
|
|
14
|
+
/** Клиенты хотя бы с одной состоявшейся игрой в зачётном периоде. */
|
|
15
|
+
totalClients: number;
|
|
16
|
+
estimatedDiscount: number;
|
|
17
|
+
/** Средний чек игры — им же считаются пороги пресета по сумме. */
|
|
18
|
+
averageCheck: number;
|
|
19
|
+
buckets: LoyaltyPreviewBucketRO[];
|
|
20
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
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.LoyaltyPreviewRO = exports.LoyaltyPreviewBucketRO = void 0;
|
|
13
|
+
/* eslint-disable max-classes-per-file */
|
|
14
|
+
const class_transformer_1 = require("class-transformer");
|
|
15
|
+
class LoyaltyPreviewBucketRO {
|
|
16
|
+
}
|
|
17
|
+
exports.LoyaltyPreviewBucketRO = LoyaltyPreviewBucketRO;
|
|
18
|
+
__decorate([
|
|
19
|
+
(0, class_transformer_1.Expose)(),
|
|
20
|
+
__metadata("design:type", Number)
|
|
21
|
+
], LoyaltyPreviewBucketRO.prototype, "threshold", void 0);
|
|
22
|
+
__decorate([
|
|
23
|
+
(0, class_transformer_1.Expose)(),
|
|
24
|
+
__metadata("design:type", Number)
|
|
25
|
+
], LoyaltyPreviewBucketRO.prototype, "discount", void 0);
|
|
26
|
+
__decorate([
|
|
27
|
+
(0, class_transformer_1.Expose)(),
|
|
28
|
+
__metadata("design:type", Number)
|
|
29
|
+
], LoyaltyPreviewBucketRO.prototype, "clientsCount", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
(0, class_transformer_1.Expose)(),
|
|
32
|
+
__metadata("design:type", Number)
|
|
33
|
+
], LoyaltyPreviewBucketRO.prototype, "estimatedDiscount", void 0);
|
|
34
|
+
class LoyaltyPreviewRO {
|
|
35
|
+
}
|
|
36
|
+
exports.LoyaltyPreviewRO = LoyaltyPreviewRO;
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, class_transformer_1.Expose)(),
|
|
39
|
+
__metadata("design:type", Number)
|
|
40
|
+
], LoyaltyPreviewRO.prototype, "totalClients", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
(0, class_transformer_1.Expose)(),
|
|
43
|
+
__metadata("design:type", Number)
|
|
44
|
+
], LoyaltyPreviewRO.prototype, "estimatedDiscount", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
(0, class_transformer_1.Expose)(),
|
|
47
|
+
__metadata("design:type", Number)
|
|
48
|
+
], LoyaltyPreviewRO.prototype, "averageCheck", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
(0, class_transformer_1.Expose)(),
|
|
51
|
+
(0, class_transformer_1.Type)(() => LoyaltyPreviewBucketRO),
|
|
52
|
+
__metadata("design:type", Array)
|
|
53
|
+
], LoyaltyPreviewRO.prototype, "buckets", void 0);
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { LoyaltyHistoryModeEnum } from './enum/loyalty-history-mode.enum';
|
|
2
|
+
import { LoyaltyMetricEnum } from './enum/loyalty-metric.enum';
|
|
3
|
+
import { LoyaltyProgramTypeEnum } from './enum/loyalty-program-type.enum';
|
|
4
|
+
import { LoyaltyStackingEnum } from './enum/loyalty-stacking.enum';
|
|
5
|
+
/**
|
|
6
|
+
* Онбординг одной кнопкой: создаёт статусы из пресета, фиксирует, что
|
|
7
|
+
* делать с историей существующих клиентов, и включает программу.
|
|
8
|
+
*/
|
|
9
|
+
export declare class SetupLoyaltyDto {
|
|
10
|
+
/** Скидка за статус или кэшбэк бонусами — выбирается один раз в онбординге. */
|
|
11
|
+
programType: LoyaltyProgramTypeEnum;
|
|
12
|
+
metric: LoyaltyMetricEnum;
|
|
13
|
+
historyMode: LoyaltyHistoryModeEnum;
|
|
14
|
+
/** Переведённые названия статусов, по одному на статус пресета. */
|
|
15
|
+
titles?: string[];
|
|
16
|
+
}
|
|
17
|
+
export declare class UpdateLoyaltySettingsDto {
|
|
18
|
+
enabled: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Переключение типа не стирает ни балансы, ни статусы: выключенная
|
|
21
|
+
* механика просто перестаёт работать, и при возврате всё снова
|
|
22
|
+
* считается с того же места.
|
|
23
|
+
*/
|
|
24
|
+
programType: LoyaltyProgramTypeEnum;
|
|
25
|
+
metric: LoyaltyMetricEnum;
|
|
26
|
+
/**
|
|
27
|
+
* Кэшбэк для клиентов без статуса, целыми процентами. Ноль означает
|
|
28
|
+
* «до первого статуса бонусы не капают» — так же, как в скидочной
|
|
29
|
+
* программе новичок не получает скидку.
|
|
30
|
+
*/
|
|
31
|
+
cashbackPercent?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Какую долю чека разрешено закрыть бонусами. Ограничение защищает
|
|
34
|
+
* не столько выручку, сколько сам визит: игра, полностью оплаченная
|
|
35
|
+
* бонусами, не приносит венью живых денег в день, когда занят слот.
|
|
36
|
+
*/
|
|
37
|
+
maxBonusPayPercent?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Ставить ли статусную скидку в игру автоматически. С выключенным
|
|
40
|
+
* флагом программа остаётся сегментацией: бейдж в карточке виден,
|
|
41
|
+
* чек не меняется.
|
|
42
|
+
*/
|
|
43
|
+
autoApplyDiscount: boolean;
|
|
44
|
+
stacking: LoyaltyStackingEnum;
|
|
45
|
+
/**
|
|
46
|
+
* Смена режима заново замораживает дату отсечки `countFrom` по
|
|
47
|
+
* текущему дню, поэтому менять его после запуска стоит осознанно:
|
|
48
|
+
* счётчики всех клиентов пересчитаются.
|
|
49
|
+
*/
|
|
50
|
+
historyMode: LoyaltyHistoryModeEnum;
|
|
51
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
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.UpdateLoyaltySettingsDto = exports.SetupLoyaltyDto = void 0;
|
|
13
|
+
/* eslint-disable max-classes-per-file */
|
|
14
|
+
const class_transformer_1 = require("class-transformer");
|
|
15
|
+
const class_validator_1 = require("class-validator");
|
|
16
|
+
const loyalty_history_mode_enum_1 = require("./enum/loyalty-history-mode.enum");
|
|
17
|
+
const loyalty_metric_enum_1 = require("./enum/loyalty-metric.enum");
|
|
18
|
+
const loyalty_program_type_enum_1 = require("./enum/loyalty-program-type.enum");
|
|
19
|
+
const loyalty_stacking_enum_1 = require("./enum/loyalty-stacking.enum");
|
|
20
|
+
const loyalty_tier_dto_1 = require("./loyalty-tier.dto");
|
|
21
|
+
/**
|
|
22
|
+
* Онбординг одной кнопкой: создаёт статусы из пресета, фиксирует, что
|
|
23
|
+
* делать с историей существующих клиентов, и включает программу.
|
|
24
|
+
*/
|
|
25
|
+
class SetupLoyaltyDto {
|
|
26
|
+
}
|
|
27
|
+
exports.SetupLoyaltyDto = SetupLoyaltyDto;
|
|
28
|
+
__decorate([
|
|
29
|
+
(0, class_validator_1.IsEnum)(loyalty_program_type_enum_1.LoyaltyProgramTypeEnum),
|
|
30
|
+
(0, class_transformer_1.Expose)(),
|
|
31
|
+
__metadata("design:type", String)
|
|
32
|
+
], SetupLoyaltyDto.prototype, "programType", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, class_validator_1.IsEnum)(loyalty_metric_enum_1.LoyaltyMetricEnum),
|
|
35
|
+
(0, class_transformer_1.Expose)(),
|
|
36
|
+
__metadata("design:type", String)
|
|
37
|
+
], SetupLoyaltyDto.prototype, "metric", void 0);
|
|
38
|
+
__decorate([
|
|
39
|
+
(0, class_validator_1.IsEnum)(loyalty_history_mode_enum_1.LoyaltyHistoryModeEnum),
|
|
40
|
+
(0, class_transformer_1.Expose)(),
|
|
41
|
+
__metadata("design:type", String)
|
|
42
|
+
], SetupLoyaltyDto.prototype, "historyMode", void 0);
|
|
43
|
+
__decorate([
|
|
44
|
+
(0, class_validator_1.IsOptional)(),
|
|
45
|
+
(0, class_validator_1.ArrayMaxSize)(loyalty_tier_dto_1.MAX_LOYALTY_TIERS),
|
|
46
|
+
(0, class_validator_1.IsString)({ each: true }),
|
|
47
|
+
(0, class_validator_1.MaxLength)(30, { each: true }),
|
|
48
|
+
(0, class_transformer_1.Expose)(),
|
|
49
|
+
__metadata("design:type", Array)
|
|
50
|
+
], SetupLoyaltyDto.prototype, "titles", void 0);
|
|
51
|
+
class UpdateLoyaltySettingsDto {
|
|
52
|
+
}
|
|
53
|
+
exports.UpdateLoyaltySettingsDto = UpdateLoyaltySettingsDto;
|
|
54
|
+
__decorate([
|
|
55
|
+
(0, class_validator_1.IsBoolean)(),
|
|
56
|
+
(0, class_transformer_1.Transform)(({ value }) => Boolean(value)),
|
|
57
|
+
(0, class_transformer_1.Expose)(),
|
|
58
|
+
__metadata("design:type", Boolean)
|
|
59
|
+
], UpdateLoyaltySettingsDto.prototype, "enabled", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
(0, class_validator_1.IsEnum)(loyalty_program_type_enum_1.LoyaltyProgramTypeEnum),
|
|
62
|
+
(0, class_transformer_1.Expose)(),
|
|
63
|
+
__metadata("design:type", String)
|
|
64
|
+
], UpdateLoyaltySettingsDto.prototype, "programType", void 0);
|
|
65
|
+
__decorate([
|
|
66
|
+
(0, class_validator_1.IsEnum)(loyalty_metric_enum_1.LoyaltyMetricEnum),
|
|
67
|
+
(0, class_transformer_1.Expose)(),
|
|
68
|
+
__metadata("design:type", String)
|
|
69
|
+
], UpdateLoyaltySettingsDto.prototype, "metric", void 0);
|
|
70
|
+
__decorate([
|
|
71
|
+
(0, class_validator_1.IsOptional)(),
|
|
72
|
+
(0, class_transformer_1.Transform)(({ value }) => (+value > 0 ? Math.round(+value) : 0)),
|
|
73
|
+
(0, class_validator_1.Min)(0),
|
|
74
|
+
(0, class_validator_1.Max)(100),
|
|
75
|
+
(0, class_validator_1.IsInt)(),
|
|
76
|
+
(0, class_transformer_1.Expose)(),
|
|
77
|
+
__metadata("design:type", Number)
|
|
78
|
+
], UpdateLoyaltySettingsDto.prototype, "cashbackPercent", void 0);
|
|
79
|
+
__decorate([
|
|
80
|
+
(0, class_validator_1.IsOptional)(),
|
|
81
|
+
(0, class_transformer_1.Transform)(({ value }) => (+value > 0 ? Math.round(+value) : 0)),
|
|
82
|
+
(0, class_validator_1.Min)(0),
|
|
83
|
+
(0, class_validator_1.Max)(100),
|
|
84
|
+
(0, class_validator_1.IsInt)(),
|
|
85
|
+
(0, class_transformer_1.Expose)(),
|
|
86
|
+
__metadata("design:type", Number)
|
|
87
|
+
], UpdateLoyaltySettingsDto.prototype, "maxBonusPayPercent", void 0);
|
|
88
|
+
__decorate([
|
|
89
|
+
(0, class_validator_1.IsBoolean)(),
|
|
90
|
+
(0, class_transformer_1.Transform)(({ value }) => Boolean(value)),
|
|
91
|
+
(0, class_transformer_1.Expose)(),
|
|
92
|
+
__metadata("design:type", Boolean)
|
|
93
|
+
], UpdateLoyaltySettingsDto.prototype, "autoApplyDiscount", void 0);
|
|
94
|
+
__decorate([
|
|
95
|
+
(0, class_validator_1.IsEnum)(loyalty_stacking_enum_1.LoyaltyStackingEnum),
|
|
96
|
+
(0, class_transformer_1.Expose)(),
|
|
97
|
+
__metadata("design:type", String)
|
|
98
|
+
], UpdateLoyaltySettingsDto.prototype, "stacking", void 0);
|
|
99
|
+
__decorate([
|
|
100
|
+
(0, class_validator_1.IsEnum)(loyalty_history_mode_enum_1.LoyaltyHistoryModeEnum),
|
|
101
|
+
(0, class_transformer_1.Expose)(),
|
|
102
|
+
__metadata("design:type", String)
|
|
103
|
+
], UpdateLoyaltySettingsDto.prototype, "historyMode", void 0);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { RO } from '../shared/ro-class';
|
|
2
|
+
import { LoyaltyHistoryModeEnum } from './enum/loyalty-history-mode.enum';
|
|
3
|
+
import { LoyaltyMetricEnum } from './enum/loyalty-metric.enum';
|
|
4
|
+
import { LoyaltyProgramTypeEnum } from './enum/loyalty-program-type.enum';
|
|
5
|
+
import { LoyaltyStackingEnum } from './enum/loyalty-stacking.enum';
|
|
6
|
+
import { LoyaltyTierRO } from './loyalty-tier.ro';
|
|
7
|
+
export declare class LoyaltySettingsRO extends RO {
|
|
8
|
+
enabled: boolean;
|
|
9
|
+
programType: LoyaltyProgramTypeEnum;
|
|
10
|
+
metric: LoyaltyMetricEnum;
|
|
11
|
+
/** Кэшбэк для клиентов без статуса, целые проценты. */
|
|
12
|
+
cashbackPercent: number;
|
|
13
|
+
/** Максимальная доля чека, которую можно закрыть бонусами. */
|
|
14
|
+
maxBonusPayPercent: number;
|
|
15
|
+
/**
|
|
16
|
+
* Дата, с которой игры начисляют бонусы. Отдельно от `countFrom`:
|
|
17
|
+
* статусы можно посчитать по всей прошлой истории, а бонусы за
|
|
18
|
+
* прошлые игры начислять нельзя — это раздача денег задним числом.
|
|
19
|
+
*/
|
|
20
|
+
cashbackFrom: string | null;
|
|
21
|
+
autoApplyDiscount: boolean;
|
|
22
|
+
stacking: LoyaltyStackingEnum;
|
|
23
|
+
historyMode: LoyaltyHistoryModeEnum;
|
|
24
|
+
/**
|
|
25
|
+
* Дата, с которой игры идут в зачёт. `null` — вся история. Хранится
|
|
26
|
+
* отдельно от режима, потому что режим отвечает на вопрос «что вы
|
|
27
|
+
* выбрали», а дата — «что реально считается»: для `LAST_YEAR` она
|
|
28
|
+
* заморожена днём включения и со временем не сдвигается.
|
|
29
|
+
*/
|
|
30
|
+
countFrom: string | null;
|
|
31
|
+
/** Отсортированы по порогу по возрастанию — как рисуются в CRM. */
|
|
32
|
+
tiers: LoyaltyTierRO[];
|
|
33
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
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.LoyaltySettingsRO = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const ro_class_1 = require("../shared/ro-class");
|
|
15
|
+
const loyalty_history_mode_enum_1 = require("./enum/loyalty-history-mode.enum");
|
|
16
|
+
const loyalty_metric_enum_1 = require("./enum/loyalty-metric.enum");
|
|
17
|
+
const loyalty_program_type_enum_1 = require("./enum/loyalty-program-type.enum");
|
|
18
|
+
const loyalty_stacking_enum_1 = require("./enum/loyalty-stacking.enum");
|
|
19
|
+
const loyalty_tier_ro_1 = require("./loyalty-tier.ro");
|
|
20
|
+
class LoyaltySettingsRO extends ro_class_1.RO {
|
|
21
|
+
}
|
|
22
|
+
exports.LoyaltySettingsRO = LoyaltySettingsRO;
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, class_transformer_1.Expose)(),
|
|
25
|
+
__metadata("design:type", Boolean)
|
|
26
|
+
], LoyaltySettingsRO.prototype, "enabled", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, class_transformer_1.Expose)(),
|
|
29
|
+
__metadata("design:type", String)
|
|
30
|
+
], LoyaltySettingsRO.prototype, "programType", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, class_transformer_1.Expose)(),
|
|
33
|
+
__metadata("design:type", String)
|
|
34
|
+
], LoyaltySettingsRO.prototype, "metric", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, class_transformer_1.Expose)(),
|
|
37
|
+
__metadata("design:type", Number)
|
|
38
|
+
], LoyaltySettingsRO.prototype, "cashbackPercent", void 0);
|
|
39
|
+
__decorate([
|
|
40
|
+
(0, class_transformer_1.Expose)(),
|
|
41
|
+
__metadata("design:type", Number)
|
|
42
|
+
], LoyaltySettingsRO.prototype, "maxBonusPayPercent", void 0);
|
|
43
|
+
__decorate([
|
|
44
|
+
(0, class_transformer_1.Expose)(),
|
|
45
|
+
__metadata("design:type", String)
|
|
46
|
+
], LoyaltySettingsRO.prototype, "cashbackFrom", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, class_transformer_1.Expose)(),
|
|
49
|
+
__metadata("design:type", Boolean)
|
|
50
|
+
], LoyaltySettingsRO.prototype, "autoApplyDiscount", void 0);
|
|
51
|
+
__decorate([
|
|
52
|
+
(0, class_transformer_1.Expose)(),
|
|
53
|
+
__metadata("design:type", String)
|
|
54
|
+
], LoyaltySettingsRO.prototype, "stacking", void 0);
|
|
55
|
+
__decorate([
|
|
56
|
+
(0, class_transformer_1.Expose)(),
|
|
57
|
+
__metadata("design:type", String)
|
|
58
|
+
], LoyaltySettingsRO.prototype, "historyMode", void 0);
|
|
59
|
+
__decorate([
|
|
60
|
+
(0, class_transformer_1.Expose)(),
|
|
61
|
+
__metadata("design:type", String)
|
|
62
|
+
], LoyaltySettingsRO.prototype, "countFrom", void 0);
|
|
63
|
+
__decorate([
|
|
64
|
+
(0, class_transformer_1.Expose)(),
|
|
65
|
+
(0, class_transformer_1.Type)(() => loyalty_tier_ro_1.LoyaltyTierRO),
|
|
66
|
+
__metadata("design:type", Array)
|
|
67
|
+
], LoyaltySettingsRO.prototype, "tiers", void 0);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { LoyaltyTierColorEnum } from './enum/loyalty-tier-color.enum';
|
|
2
|
+
/**
|
|
3
|
+
* Больше пяти статусов клиент не удерживает в голове, а администратор не
|
|
4
|
+
* может объяснить на стойке.
|
|
5
|
+
*/
|
|
6
|
+
export declare const MAX_LOYALTY_TIERS = 5;
|
|
7
|
+
export declare class CreateLoyaltyTierDto {
|
|
8
|
+
title: string;
|
|
9
|
+
color: LoyaltyTierColorEnum;
|
|
10
|
+
/**
|
|
11
|
+
* Порог входа: количество игр или сумма в минорных единицах — что
|
|
12
|
+
* именно, определяет метрика программы.
|
|
13
|
+
*/
|
|
14
|
+
threshold: number;
|
|
15
|
+
/**
|
|
16
|
+
* Процент скидки, целыми процентами. Не базисные пункты, в отличие
|
|
17
|
+
* от скидки слота: доли процента в статусной скидке никому не нужны,
|
|
18
|
+
* а «10» вместо «1000» читается и в базе, и в интерфейсе.
|
|
19
|
+
* 0 — статус без скидки, только бейдж и привилегии.
|
|
20
|
+
*/
|
|
21
|
+
discount: number;
|
|
22
|
+
/**
|
|
23
|
+
* Процент кэшбэка на статусе, целыми процентами. Читается только в
|
|
24
|
+
* накопительной программе — в скидочной поле лежит без дела, и
|
|
25
|
+
* наоборот: так переключение типа программы не стирает уже
|
|
26
|
+
* настроенные цифры и владелец может вернуться обратно.
|
|
27
|
+
*/
|
|
28
|
+
cashback?: number;
|
|
29
|
+
/** Свободный текст привилегий: фото в подарок, приоритетная запись. */
|
|
30
|
+
perks?: string;
|
|
31
|
+
}
|
|
32
|
+
export declare class UpdateLoyaltyTierDto extends CreateLoyaltyTierDto {
|
|
33
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
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.UpdateLoyaltyTierDto = exports.CreateLoyaltyTierDto = exports.MAX_LOYALTY_TIERS = 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 loyalty_tier_color_enum_1 = require("./enum/loyalty-tier-color.enum");
|
|
17
|
+
/**
|
|
18
|
+
* Больше пяти статусов клиент не удерживает в голове, а администратор не
|
|
19
|
+
* может объяснить на стойке.
|
|
20
|
+
*/
|
|
21
|
+
exports.MAX_LOYALTY_TIERS = 5;
|
|
22
|
+
class CreateLoyaltyTierDto {
|
|
23
|
+
}
|
|
24
|
+
exports.CreateLoyaltyTierDto = CreateLoyaltyTierDto;
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, is_not_blank_1.IsNotBlank)(),
|
|
27
|
+
(0, class_validator_1.MaxLength)(30),
|
|
28
|
+
(0, class_transformer_1.Expose)(),
|
|
29
|
+
__metadata("design:type", String)
|
|
30
|
+
], CreateLoyaltyTierDto.prototype, "title", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, class_validator_1.IsEnum)(loyalty_tier_color_enum_1.LoyaltyTierColorEnum),
|
|
33
|
+
(0, class_transformer_1.Expose)(),
|
|
34
|
+
__metadata("design:type", String)
|
|
35
|
+
], CreateLoyaltyTierDto.prototype, "color", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, class_transformer_1.Transform)(({ value }) => (+value > 0 ? Math.round(+value) : 0)),
|
|
38
|
+
(0, class_validator_1.Min)(0),
|
|
39
|
+
(0, class_validator_1.IsInt)(),
|
|
40
|
+
(0, class_transformer_1.Expose)(),
|
|
41
|
+
__metadata("design:type", Number)
|
|
42
|
+
], CreateLoyaltyTierDto.prototype, "threshold", void 0);
|
|
43
|
+
__decorate([
|
|
44
|
+
(0, class_transformer_1.Transform)(({ value }) => (+value > 0 ? Math.round(+value) : 0)),
|
|
45
|
+
(0, class_validator_1.Min)(0),
|
|
46
|
+
(0, class_validator_1.Max)(100),
|
|
47
|
+
(0, class_validator_1.IsInt)(),
|
|
48
|
+
(0, class_transformer_1.Expose)(),
|
|
49
|
+
__metadata("design:type", Number)
|
|
50
|
+
], CreateLoyaltyTierDto.prototype, "discount", void 0);
|
|
51
|
+
__decorate([
|
|
52
|
+
(0, class_validator_1.IsOptional)(),
|
|
53
|
+
(0, class_transformer_1.Transform)(({ value }) => (+value > 0 ? Math.round(+value) : 0)),
|
|
54
|
+
(0, class_validator_1.Min)(0),
|
|
55
|
+
(0, class_validator_1.Max)(100),
|
|
56
|
+
(0, class_validator_1.IsInt)(),
|
|
57
|
+
(0, class_transformer_1.Expose)(),
|
|
58
|
+
__metadata("design:type", Number)
|
|
59
|
+
], CreateLoyaltyTierDto.prototype, "cashback", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
(0, class_validator_1.IsOptional)(),
|
|
62
|
+
(0, class_validator_1.IsString)(),
|
|
63
|
+
(0, class_validator_1.MaxLength)(200),
|
|
64
|
+
(0, class_transformer_1.Expose)(),
|
|
65
|
+
__metadata("design:type", String)
|
|
66
|
+
], CreateLoyaltyTierDto.prototype, "perks", void 0);
|
|
67
|
+
class UpdateLoyaltyTierDto extends CreateLoyaltyTierDto {
|
|
68
|
+
}
|
|
69
|
+
exports.UpdateLoyaltyTierDto = UpdateLoyaltyTierDto;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RO } from '../shared/ro-class';
|
|
2
|
+
import { LoyaltyTierColorEnum } from './enum/loyalty-tier-color.enum';
|
|
3
|
+
export declare class LoyaltyTierRO extends RO {
|
|
4
|
+
title: string;
|
|
5
|
+
color: LoyaltyTierColorEnum;
|
|
6
|
+
threshold: number;
|
|
7
|
+
/** Целые проценты. Работает в скидочной программе. */
|
|
8
|
+
discount: number;
|
|
9
|
+
/** Целые проценты. Работает в накопительной программе. */
|
|
10
|
+
cashback: number;
|
|
11
|
+
perks: string;
|
|
12
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
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.LoyaltyTierRO = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const ro_class_1 = require("../shared/ro-class");
|
|
15
|
+
const loyalty_tier_color_enum_1 = require("./enum/loyalty-tier-color.enum");
|
|
16
|
+
class LoyaltyTierRO extends ro_class_1.RO {
|
|
17
|
+
}
|
|
18
|
+
exports.LoyaltyTierRO = LoyaltyTierRO;
|
|
19
|
+
__decorate([
|
|
20
|
+
(0, class_transformer_1.Expose)(),
|
|
21
|
+
__metadata("design:type", String)
|
|
22
|
+
], LoyaltyTierRO.prototype, "title", void 0);
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, class_transformer_1.Expose)(),
|
|
25
|
+
__metadata("design:type", String)
|
|
26
|
+
], LoyaltyTierRO.prototype, "color", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, class_transformer_1.Expose)(),
|
|
29
|
+
__metadata("design:type", Number)
|
|
30
|
+
], LoyaltyTierRO.prototype, "threshold", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, class_transformer_1.Expose)(),
|
|
33
|
+
__metadata("design:type", Number)
|
|
34
|
+
], LoyaltyTierRO.prototype, "discount", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, class_transformer_1.Expose)(),
|
|
37
|
+
__metadata("design:type", Number)
|
|
38
|
+
], LoyaltyTierRO.prototype, "cashback", void 0);
|
|
39
|
+
__decorate([
|
|
40
|
+
(0, class_transformer_1.Expose)(),
|
|
41
|
+
__metadata("design:type", String)
|
|
42
|
+
], LoyaltyTierRO.prototype, "perks", void 0);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Оплата игры бонусами. Сумму присылает интерфейс, а не «списать
|
|
3
|
+
* максимум»: администратор на стойке проговаривает цифру клиенту, и она
|
|
4
|
+
* должна быть его решением, а не результатом округления на сервере.
|
|
5
|
+
*/
|
|
6
|
+
export declare class PayWithBonusDto {
|
|
7
|
+
orderId: number;
|
|
8
|
+
/** Минорные единицы. Сервер сам обрежет до доступного лимита. */
|
|
9
|
+
amount: number;
|
|
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
|
+
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.PayWithBonusDto = void 0;
|
|
13
|
+
const class_transformer_1 = require("class-transformer");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
/**
|
|
16
|
+
* Оплата игры бонусами. Сумму присылает интерфейс, а не «списать
|
|
17
|
+
* максимум»: администратор на стойке проговаривает цифру клиенту, и она
|
|
18
|
+
* должна быть его решением, а не результатом округления на сервере.
|
|
19
|
+
*/
|
|
20
|
+
class PayWithBonusDto {
|
|
21
|
+
}
|
|
22
|
+
exports.PayWithBonusDto = PayWithBonusDto;
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, class_transformer_1.Transform)(({ value }) => Math.round(+value) || 0),
|
|
25
|
+
(0, class_validator_1.IsInt)(),
|
|
26
|
+
(0, class_validator_1.Min)(1),
|
|
27
|
+
(0, class_transformer_1.Expose)(),
|
|
28
|
+
__metadata("design:type", Number)
|
|
29
|
+
], PayWithBonusDto.prototype, "orderId", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
(0, class_transformer_1.Transform)(({ value }) => Math.round(+value) || 0),
|
|
32
|
+
(0, class_validator_1.IsInt)(),
|
|
33
|
+
(0, class_validator_1.Min)(1),
|
|
34
|
+
(0, class_transformer_1.Expose)(),
|
|
35
|
+
__metadata("design:type", Number)
|
|
36
|
+
], PayWithBonusDto.prototype, "amount", void 0);
|
|
@@ -25,9 +25,9 @@ export declare class OpenapiBatchCreatePreorderDto {
|
|
|
25
25
|
items: OpenapiCreatePreorderDto[];
|
|
26
26
|
/**
|
|
27
27
|
* Если группа собирается как пакетное предложение — id пакета. Бэкенд
|
|
28
|
-
* после сборки группы
|
|
29
|
-
* (см. PackageBookingService.
|
|
30
|
-
* работает как обычная мульти-бронь.
|
|
28
|
+
* после сборки группы доводит цену до пакетной: group-level скидка либо
|
|
29
|
+
* фиксированный прайс пакета (см. PackageBookingService.applyPricingToGroup).
|
|
30
|
+
* Без него batch работает как обычная мульти-бронь.
|
|
31
31
|
*/
|
|
32
32
|
packageId?: number;
|
|
33
33
|
}
|
|
@@ -73,6 +73,18 @@ export declare class OpenapiOrderRO extends QuestroomRow {
|
|
|
73
73
|
penalties: Penalty[];
|
|
74
74
|
discounts: Discount[];
|
|
75
75
|
slotDiscount: number;
|
|
76
|
+
/**
|
|
77
|
+
* Скидка по статусу клиента в программе лояльности. Клиенту в виджете
|
|
78
|
+
* и в гостевом портале показывается отдельной строкой — сам статус нет:
|
|
79
|
+
* в чужой программе лояльности он разбираться не обязан.
|
|
80
|
+
*/
|
|
81
|
+
loyaltyDiscount: number;
|
|
82
|
+
/**
|
|
83
|
+
* Бонусы, которыми администратор закрыл часть игры. Клиенту это тоже
|
|
84
|
+
* видно строкой в чеке: он должен понимать, почему к оплате меньше,
|
|
85
|
+
* чем стоит игра.
|
|
86
|
+
*/
|
|
87
|
+
bonusTotal: number;
|
|
76
88
|
upsellings: OpenapiOrderUpsellingRO[];
|
|
77
89
|
certificates: OpenapiOrderCertificateRO[];
|
|
78
90
|
promocodes: OpenapiPromocodeRO[];
|