@escapenavigator/types 2.0.34 → 2.0.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/dist/admin/aggregator-order/create-aggregator-order.dto.d.ts +1 -0
  2. package/dist/agregator/agregator-questroom.ro.d.ts +2 -0
  3. package/dist/agregator/agregator-questroom.ro.js +5 -0
  4. package/dist/certificate-sale/certificate-sale.ro.d.ts +6 -0
  5. package/dist/certificate-sale/certificate-sale.ro.js +4 -0
  6. package/dist/certificate-uploaded/certificate-uploaded.ro.d.ts +1 -1
  7. package/dist/client/client.ro.d.ts +13 -0
  8. package/dist/client/client.ro.js +21 -0
  9. package/dist/constants/uploading/upload-bookeo-certificate-rows.js +2 -2
  10. package/dist/constants/uploading/upload-certificate-rows.js +1 -1
  11. package/dist/location/create-location.dto.d.ts +2 -0
  12. package/dist/location/create-location.dto.js +7 -0
  13. package/dist/location/location-light.ro.d.ts +3 -1
  14. package/dist/location/location-light.ro.js +6 -1
  15. package/dist/location/update-location-for-admin.dto.d.ts +2 -0
  16. package/dist/location/update-location-for-admin.dto.js +7 -0
  17. package/dist/log/log-title.enum.d.ts +3 -0
  18. package/dist/log/log-title.enum.js +3 -0
  19. package/dist/loyalty/adjust-bonus.dto.d.ts +14 -0
  20. package/dist/loyalty/adjust-bonus.dto.js +35 -0
  21. package/dist/loyalty/assign-client-tier.dto.d.ts +9 -0
  22. package/dist/loyalty/assign-client-tier.dto.js +29 -0
  23. package/dist/loyalty/client-loyalty.ro.d.ts +30 -0
  24. package/dist/loyalty/client-loyalty.ro.js +71 -0
  25. package/dist/loyalty/enum/loyalty-bonus-type.enum.d.ts +13 -0
  26. package/dist/loyalty/enum/loyalty-bonus-type.enum.js +17 -0
  27. package/dist/loyalty/enum/loyalty-history-mode.enum.d.ts +18 -0
  28. package/dist/loyalty/enum/loyalty-history-mode.enum.js +22 -0
  29. package/dist/loyalty/enum/loyalty-metric.enum.d.ts +12 -0
  30. package/dist/loyalty/enum/loyalty-metric.enum.js +16 -0
  31. package/dist/loyalty/enum/loyalty-program-type.enum.d.ts +12 -0
  32. package/dist/loyalty/enum/loyalty-program-type.enum.js +16 -0
  33. package/dist/loyalty/enum/loyalty-stacking.enum.d.ts +14 -0
  34. package/dist/loyalty/enum/loyalty-stacking.enum.js +18 -0
  35. package/dist/loyalty/enum/loyalty-tier-color.enum.d.ts +16 -0
  36. package/dist/loyalty/enum/loyalty-tier-color.enum.js +20 -0
  37. package/dist/loyalty/enum/loyalty-tier-source.enum.d.ts +13 -0
  38. package/dist/loyalty/enum/loyalty-tier-source.enum.js +17 -0
  39. package/dist/loyalty/loyalty-bonus.ro.d.ts +20 -0
  40. package/dist/loyalty/loyalty-bonus.ro.js +55 -0
  41. package/dist/loyalty/loyalty-presets.d.ts +45 -0
  42. package/dist/loyalty/loyalty-presets.js +30 -0
  43. package/dist/loyalty/loyalty-preview.dto.d.ts +19 -0
  44. package/dist/loyalty/loyalty-preview.dto.js +64 -0
  45. package/dist/loyalty/loyalty-preview.ro.d.ts +20 -0
  46. package/dist/loyalty/loyalty-preview.ro.js +53 -0
  47. package/dist/loyalty/loyalty-settings.dto.d.ts +51 -0
  48. package/dist/loyalty/loyalty-settings.dto.js +103 -0
  49. package/dist/loyalty/loyalty-settings.ro.d.ts +33 -0
  50. package/dist/loyalty/loyalty-settings.ro.js +67 -0
  51. package/dist/loyalty/loyalty-tier.dto.d.ts +33 -0
  52. package/dist/loyalty/loyalty-tier.dto.js +69 -0
  53. package/dist/loyalty/loyalty-tier.ro.d.ts +12 -0
  54. package/dist/loyalty/loyalty-tier.ro.js +42 -0
  55. package/dist/loyalty/pay-with-bonus.dto.d.ts +10 -0
  56. package/dist/loyalty/pay-with-bonus.dto.js +36 -0
  57. package/dist/openapi/order-groups/openapi-batch-create-preorder.dto.d.ts +3 -3
  58. package/dist/openapi/orders/openapi-order.ro.d.ts +12 -0
  59. package/dist/openapi/orders/openapi-order.ro.js +8 -0
  60. package/dist/openapi/profiles/enum/openapi-certificate-status.enum.d.ts +29 -0
  61. package/dist/openapi/profiles/enum/openapi-certificate-status.enum.js +38 -0
  62. package/dist/openapi/profiles/openapi-annul-certificate.dto.d.ts +3 -0
  63. package/dist/openapi/profiles/openapi-annul-certificate.dto.js +29 -0
  64. package/dist/openapi/profiles/openapi-certificate.ro.d.ts +33 -0
  65. package/dist/openapi/profiles/openapi-certificate.ro.js +195 -0
  66. package/dist/openapi/profiles/openapi-create-certificate.dto.d.ts +24 -0
  67. package/dist/openapi/profiles/openapi-create-certificate.dto.js +208 -0
  68. package/dist/openapi/slots/openapi-widget-slot.ro.d.ts +3 -0
  69. package/dist/openapi/slots/openapi-widget-slot.ro.js +24 -2
  70. package/dist/order/order.ro.d.ts +23 -1
  71. package/dist/order/order.ro.js +19 -0
  72. package/dist/order-discount/enum/order-discount-source.enum.d.ts +10 -0
  73. package/dist/order-discount/enum/order-discount-source.enum.js +14 -0
  74. package/dist/packages/book-package.dto.d.ts +3 -0
  75. package/dist/packages/book-package.dto.js +9 -0
  76. package/dist/packages/create-package.dto.d.ts +23 -0
  77. package/dist/packages/create-package.dto.js +81 -1
  78. package/dist/packages/package-addon.dto.d.ts +5 -0
  79. package/dist/packages/package-addon.dto.js +31 -0
  80. package/dist/packages/package-audience.enum.d.ts +6 -0
  81. package/dist/packages/package-audience.enum.js +10 -0
  82. package/dist/packages/package-feature.dto.d.ts +12 -0
  83. package/dist/packages/package-feature.dto.js +41 -0
  84. package/dist/packages/package-pricing-mode.enum.d.ts +14 -0
  85. package/dist/packages/package-pricing-mode.enum.js +18 -0
  86. package/dist/packages/package.ro.d.ts +14 -0
  87. package/dist/packages/package.ro.js +48 -0
  88. package/dist/profile/company-ai-context.d.ts +2 -0
  89. package/dist/profile/notification-chanel/notification-chanel-action.enum.d.ts +16 -1
  90. package/dist/profile/notification-chanel/notification-chanel-action.enum.js +21 -1
  91. package/dist/profile/notification-chanel/notification-chanel.ro.d.ts +5 -0
  92. package/dist/profile/notification-chanel/notification-chanel.ro.js +4 -0
  93. package/dist/profile/notification-chanel/test-notification-chanel.dto.d.ts +7 -2
  94. package/dist/profile/notification-chanel/test-notification-chanel.dto.js +7 -0
  95. package/dist/questroom/questroom-ai-context.d.ts +5 -0
  96. package/dist/shared/enum/availability.enum.d.ts +11 -0
  97. package/dist/shared/enum/availability.enum.js +15 -0
  98. package/dist/slot/bulk-update-slots.dto.d.ts +2 -0
  99. package/dist/slot/bulk-update-slots.dto.js +7 -0
  100. package/dist/slot/change-template-slots-form.dto.d.ts +3 -0
  101. package/dist/slot/change-template-slots-form.dto.js +13 -0
  102. package/dist/slot/create-slot-form.dto.d.ts +2 -0
  103. package/dist/slot/create-slot-form.dto.js +7 -0
  104. package/dist/slot/create-slot.dto.d.ts +2 -0
  105. package/dist/slot/create-slot.dto.js +7 -0
  106. package/dist/slot/daily-window-range.validator.d.ts +15 -0
  107. package/dist/slot/daily-window-range.validator.js +46 -0
  108. package/dist/slot/enum/slot-discount-type.enum.d.ts +15 -0
  109. package/dist/slot/enum/slot-discount-type.enum.js +19 -0
  110. package/dist/slot/slot-autocomplite-form.dto.d.ts +2 -0
  111. package/dist/slot/slot-autocomplite-form.dto.js +7 -0
  112. package/dist/slot/slot-discount-range.validator.d.ts +10 -0
  113. package/dist/slot/slot-discount-range.validator.js +36 -0
  114. package/dist/slot/slot.ro.d.ts +10 -0
  115. package/dist/slot/update-slot-upsellings-range.dto.d.ts +17 -0
  116. package/dist/slot/update-slot-upsellings-range.dto.js +68 -0
  117. package/dist/slot/update-slot.dto.d.ts +4 -0
  118. package/dist/slot/update-slot.dto.js +14 -0
  119. package/dist/slot-template/slot-template-element.d.ts +4 -0
  120. package/dist/slot-template/slot-template-element.js +9 -0
  121. package/dist/slot-template/slot-template-flex-rule.d.ts +8 -0
  122. package/dist/slot-template/slot-template-flex-rule.js +15 -2
  123. package/dist/tsconfig.build.tsbuildinfo +1 -1
  124. package/dist/user/crud/user.ro.d.ts +3 -0
  125. package/dist/user/crud/user.ro.js +11 -0
  126. package/dist/user/current/update-current-user-notifications.dto.d.ts +7 -0
  127. package/dist/user/current/update-current-user-notifications.dto.js +13 -0
  128. package/dist/user/enum/push-order-scope.enum.d.ts +15 -0
  129. package/dist/user/enum/push-order-scope.enum.js +19 -0
  130. package/dist/widget/enum/widget-type.enum.d.ts +3 -1
  131. package/dist/widget/enum/widget-type.enum.js +2 -0
  132. package/package.json +2 -2
@@ -9,6 +9,7 @@ export declare class CreateAggregatorOrderDto {
9
9
  date: string;
10
10
  time: string;
11
11
  externalSlotId: string;
12
+ /** Минорные единицы валюты — как и все суммы в проекте. */
12
13
  price: number;
13
14
  /** Количество игроков — обязательно для Partner Booking API (Morty-стандарт). */
14
15
  players?: number;
@@ -4,6 +4,7 @@ import { QuestroomTypeEnum } from '../questroom/enum/questroom-type.enum';
4
4
  import { QuestroomLightMode as QuestroomMode } from '../questroom/questroom-light.ro';
5
5
  import { QuestroomAI } from '../questroom/questroom-meta.ro';
6
6
  import { ExpertReviewRO } from '../review/expert-review.ro';
7
+ import { AvailabilityEnum } from '../shared/enum/availability.enum';
7
8
  import { CountriesEnum } from '../shared/enum/countries.enum';
8
9
  import { Languages } from '../shared/enum/languages.enum';
9
10
  import { TagsEnum } from '../shared/enum/tags.enum';
@@ -45,6 +46,7 @@ declare class Location {
45
46
  howToFind: string;
46
47
  prepareText: string;
47
48
  wifi: boolean;
49
+ airConditioning: AvailabilityEnum;
48
50
  wardrobe: boolean;
49
51
  freeParking: boolean;
50
52
  parking: boolean;
@@ -21,6 +21,7 @@ const questroom_type_enum_1 = require("../questroom/enum/questroom-type.enum");
21
21
  const questroom_light_ro_1 = require("../questroom/questroom-light.ro");
22
22
  const questroom_meta_ro_1 = require("../questroom/questroom-meta.ro");
23
23
  const expert_review_ro_1 = require("../review/expert-review.ro");
24
+ const availability_enum_1 = require("../shared/enum/availability.enum");
24
25
  const countries_enum_1 = require("../shared/enum/countries.enum");
25
26
  const languages_enum_1 = require("../shared/enum/languages.enum");
26
27
  const agregator_google_place_ro_1 = require("./agregator-google-place.ro");
@@ -136,6 +137,10 @@ __decorate([
136
137
  (0, class_transformer_1.Expose)(),
137
138
  __metadata("design:type", Boolean)
138
139
  ], Location.prototype, "wifi", void 0);
140
+ __decorate([
141
+ (0, class_transformer_1.Expose)(),
142
+ __metadata("design:type", String)
143
+ ], Location.prototype, "airConditioning", void 0);
139
144
  __decorate([
140
145
  (0, class_transformer_1.Expose)(),
141
146
  __metadata("design:type", Boolean)
@@ -36,6 +36,12 @@ export declare class CertificateSaleRO extends RO {
36
36
  profileId: number;
37
37
  updatedAt: Date;
38
38
  externalCode: string;
39
+ /**
40
+ * Идентификатор продажи во внешней системе партнёра (только для
41
+ * сертификатов, выпущенных через OpenAPI). Нужен получателю вебхука,
42
+ * чтобы сматчить событие со своей записью без обратного запроса.
43
+ */
44
+ externalId: string | null;
39
45
  sended: boolean;
40
46
  annul: boolean;
41
47
  expireDate: string;
@@ -102,6 +102,10 @@ __decorate([
102
102
  (0, class_transformer_1.Expose)(),
103
103
  __metadata("design:type", String)
104
104
  ], CertificateSaleRO.prototype, "externalCode", void 0);
105
+ __decorate([
106
+ (0, class_transformer_1.Expose)(),
107
+ __metadata("design:type", String)
108
+ ], CertificateSaleRO.prototype, "externalId", void 0);
105
109
  __decorate([
106
110
  (0, class_transformer_1.Expose)(),
107
111
  __metadata("design:type", Boolean)
@@ -2,7 +2,7 @@ import { ResponseObject } from '../shared/ro';
2
2
  export type CertificateUploadedRO = ResponseObject & {
3
3
  source: string;
4
4
  code: string;
5
- client: string;
5
+ client: string | null;
6
6
  nominal: number;
7
7
  used: string;
8
8
  expireDate: string;
@@ -1,3 +1,4 @@
1
+ import { LoyaltyTierSourceEnum } from '../loyalty/enum/loyalty-tier-source.enum';
1
2
  import { RO } from '../shared/ro-class';
2
3
  import { MarketingAudienceExclusionReasonEnum, MarketingAudienceStatusEnum } from '../survey/enums/marketing-audience-status.enum';
3
4
  import { NpsStatusEnum } from '../survey/enums/nps-status.enum';
@@ -42,6 +43,18 @@ export declare class ClientRO extends RO {
42
43
  * «Deletion Request», редактирование бессмысленно.
43
44
  */
44
45
  anonymizedAt?: Date | string | null;
46
+ /**
47
+ * Статус в программе лояльности. Здесь только идентификатор и
48
+ * счётчики: сам статус со скидкой и прогрессом отдаёт
49
+ * `GET /loyalty/clients/:id` — в списке клиентов эти поля были бы
50
+ * лишним весом на каждую строку.
51
+ */
52
+ loyaltyTierId?: number | null;
53
+ loyaltySource?: LoyaltyTierSourceEnum;
54
+ loyaltyGames?: number;
55
+ loyaltyRevenue?: number;
56
+ /** Бонусный баланс в минорных единицах: 1 бонус = 1 единица валюты. */
57
+ loyaltyBalance?: number;
45
58
  previousData: PrevData[];
46
59
  parent: ParentRO;
47
60
  prevOrders?: any;
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.ClientRO = exports.PrevData = void 0;
13
13
  /* eslint-disable max-classes-per-file */
14
14
  const class_transformer_1 = require("class-transformer");
15
+ const loyalty_tier_source_enum_1 = require("../loyalty/enum/loyalty-tier-source.enum");
15
16
  const ro_class_1 = require("../shared/ro-class");
16
17
  const marketing_audience_status_enum_1 = require("../survey/enums/marketing-audience-status.enum");
17
18
  const nps_status_enum_1 = require("../survey/enums/nps-status.enum");
@@ -147,6 +148,26 @@ __decorate([
147
148
  (0, class_transformer_1.Expose)(),
148
149
  __metadata("design:type", Object)
149
150
  ], ClientRO.prototype, "anonymizedAt", void 0);
151
+ __decorate([
152
+ (0, class_transformer_1.Expose)(),
153
+ __metadata("design:type", Number)
154
+ ], ClientRO.prototype, "loyaltyTierId", void 0);
155
+ __decorate([
156
+ (0, class_transformer_1.Expose)(),
157
+ __metadata("design:type", String)
158
+ ], ClientRO.prototype, "loyaltySource", void 0);
159
+ __decorate([
160
+ (0, class_transformer_1.Expose)(),
161
+ __metadata("design:type", Number)
162
+ ], ClientRO.prototype, "loyaltyGames", void 0);
163
+ __decorate([
164
+ (0, class_transformer_1.Expose)(),
165
+ __metadata("design:type", Number)
166
+ ], ClientRO.prototype, "loyaltyRevenue", void 0);
167
+ __decorate([
168
+ (0, class_transformer_1.Expose)(),
169
+ __metadata("design:type", Number)
170
+ ], ClientRO.prototype, "loyaltyBalance", void 0);
150
171
  __decorate([
151
172
  (0, class_transformer_1.Expose)(),
152
173
  (0, class_transformer_1.Type)(() => PrevData),
@@ -4,12 +4,12 @@ exports.uploadBookeoCertificateRows = void 0;
4
4
  const upload_order_bookeo_rows_1 = require("./upload-order-bookeo-rows");
5
5
  exports.uploadBookeoCertificateRows = {
6
6
  source: {
7
- required: true,
7
+ required: false,
8
8
  row: 'source',
9
9
  serialize: () => 'Bookeo',
10
10
  },
11
11
  client: {
12
- required: true,
12
+ required: false,
13
13
  row: 'email address',
14
14
  },
15
15
  code: {
@@ -8,7 +8,7 @@ exports.uploadCertificateRows = {
8
8
  row: 'source',
9
9
  },
10
10
  client: {
11
- required: true,
11
+ required: false,
12
12
  row: 'client',
13
13
  },
14
14
  code: {
@@ -1,3 +1,4 @@
1
+ import { AvailabilityEnum } from '../shared/enum/availability.enum';
1
2
  import { Languages } from '../shared/enum/languages.enum';
2
3
  declare class Locale {
3
4
  language: Languages;
@@ -12,6 +13,7 @@ export declare class CreateLocationDto {
12
13
  howToFind?: string;
13
14
  prepareText: string;
14
15
  wifi: boolean;
16
+ airConditioning: AvailabilityEnum;
15
17
  wardrobe: boolean;
16
18
  freeParking: boolean;
17
19
  parking: boolean;
@@ -13,6 +13,7 @@ exports.CreateLocationDto = void 0;
13
13
  /* eslint-disable max-classes-per-file */
14
14
  const class_transformer_1 = require("class-transformer");
15
15
  const class_validator_1 = require("class-validator");
16
+ const availability_enum_1 = require("../shared/enum/availability.enum");
16
17
  const languages_enum_1 = require("../shared/enum/languages.enum");
17
18
  const is_not_blank_1 = require("../shared/is-not-blank");
18
19
  class Locale {
@@ -77,6 +78,12 @@ __decorate([
77
78
  (0, class_transformer_1.Expose)(),
78
79
  __metadata("design:type", Boolean)
79
80
  ], CreateLocationDto.prototype, "wifi", void 0);
81
+ __decorate([
82
+ (0, class_validator_1.IsEnum)(availability_enum_1.AvailabilityEnum),
83
+ (0, class_transformer_1.Transform)(({ value }) => value || availability_enum_1.AvailabilityEnum.UNKNOWN),
84
+ (0, class_transformer_1.Expose)(),
85
+ __metadata("design:type", String)
86
+ ], CreateLocationDto.prototype, "airConditioning", void 0);
80
87
  __decorate([
81
88
  (0, class_validator_1.IsBoolean)(),
82
89
  (0, class_transformer_1.Transform)(({ value }) => value || false),
@@ -1,3 +1,4 @@
1
+ import { AvailabilityEnum } from '../shared/enum/availability.enum';
1
2
  import { Languages } from '../shared/enum/languages.enum';
2
3
  import { RO } from '../shared/ro-class';
3
4
  declare class LocationLocaleLight {
@@ -13,7 +14,7 @@ declare class LocationLocaleLight {
13
14
  * `ip` — он нигде в @escapenavigator/app не читается, нужен лишь
14
15
  * в `modals/location` (edit-форме), которая тянет полный RO через
15
16
  * `useGetOne(roles.getOne)`. Все остальные поля (включая `locales`,
16
- * `wifi`, `wardrobe`, `parking`, `waitingArea`, `waitingAreaSize`,
17
+ * `wifi`, `airConditioning`, `wardrobe`, `parking`, `waitingArea`, `waitingAreaSize`,
17
18
  * `site`) используются в settings/verify-company/email-example
18
19
  * напрямую из стора, поэтому остаются здесь.
19
20
  */
@@ -25,6 +26,7 @@ export declare class LocationLightRO extends RO {
25
26
  howToFind: string;
26
27
  prepareText: string;
27
28
  wifi: boolean;
29
+ airConditioning: AvailabilityEnum;
28
30
  wardrobe: boolean;
29
31
  freeParking: boolean;
30
32
  parking: boolean;
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.LocationLightRO = void 0;
13
13
  /* eslint-disable max-classes-per-file */
14
14
  const class_transformer_1 = require("class-transformer");
15
+ const availability_enum_1 = require("../shared/enum/availability.enum");
15
16
  const languages_enum_1 = require("../shared/enum/languages.enum");
16
17
  const ro_class_1 = require("../shared/ro-class");
17
18
  class LocationLocaleLight {
@@ -39,7 +40,7 @@ __decorate([
39
40
  * `ip` — он нигде в @escapenavigator/app не читается, нужен лишь
40
41
  * в `modals/location` (edit-форме), которая тянет полный RO через
41
42
  * `useGetOne(roles.getOne)`. Все остальные поля (включая `locales`,
42
- * `wifi`, `wardrobe`, `parking`, `waitingArea`, `waitingAreaSize`,
43
+ * `wifi`, `airConditioning`, `wardrobe`, `parking`, `waitingArea`, `waitingAreaSize`,
43
44
  * `site`) используются в settings/verify-company/email-example
44
45
  * напрямую из стора, поэтому остаются здесь.
45
46
  */
@@ -74,6 +75,10 @@ __decorate([
74
75
  (0, class_transformer_1.Expose)(),
75
76
  __metadata("design:type", Boolean)
76
77
  ], LocationLightRO.prototype, "wifi", void 0);
78
+ __decorate([
79
+ (0, class_transformer_1.Expose)(),
80
+ __metadata("design:type", String)
81
+ ], LocationLightRO.prototype, "airConditioning", void 0);
77
82
  __decorate([
78
83
  (0, class_transformer_1.Expose)(),
79
84
  __metadata("design:type", Boolean)
@@ -1,8 +1,10 @@
1
+ import { AvailabilityEnum } from '../shared/enum/availability.enum';
1
2
  export declare class UpdateLocationForAdminDto {
2
3
  address?: string;
3
4
  phone?: string;
4
5
  howToFind?: string;
5
6
  wifi?: boolean;
7
+ airConditioning?: AvailabilityEnum;
6
8
  wardrobe?: boolean;
7
9
  freeParking?: boolean;
8
10
  parking?: boolean;
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.UpdateLocationForAdminDto = void 0;
13
13
  const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
+ const availability_enum_1 = require("../shared/enum/availability.enum");
15
16
  const is_not_blank_1 = require("../shared/is-not-blank");
16
17
  class UpdateLocationForAdminDto {
17
18
  }
@@ -42,6 +43,12 @@ __decorate([
42
43
  (0, class_transformer_1.Expose)(),
43
44
  __metadata("design:type", Boolean)
44
45
  ], UpdateLocationForAdminDto.prototype, "wifi", void 0);
46
+ __decorate([
47
+ (0, class_validator_1.IsOptional)(),
48
+ (0, class_validator_1.IsEnum)(availability_enum_1.AvailabilityEnum),
49
+ (0, class_transformer_1.Expose)(),
50
+ __metadata("design:type", String)
51
+ ], UpdateLocationForAdminDto.prototype, "airConditioning", void 0);
45
52
  __decorate([
46
53
  (0, class_validator_1.IsOptional)(),
47
54
  (0, class_validator_1.IsBoolean)(),
@@ -22,6 +22,9 @@ export declare enum LogTitleEnum {
22
22
  removeCertificate = "removeCertificate",
23
23
  addPromocode = "addPromocode",
24
24
  removePromocode = "removePromocode",
25
+ /** Оплата игры бонусами клиента и снятие такой оплаты. */
26
+ addBonusPayment = "addBonusPayment",
27
+ removeBonusPayment = "removeBonusPayment",
25
28
  /** change orders and certificates */
26
29
  addHandDiscount = "addHandDiscount",
27
30
  removeHandDiscount = "removeHandDiscount",
@@ -26,6 +26,9 @@ var LogTitleEnum;
26
26
  LogTitleEnum["removeCertificate"] = "removeCertificate";
27
27
  LogTitleEnum["addPromocode"] = "addPromocode";
28
28
  LogTitleEnum["removePromocode"] = "removePromocode";
29
+ /** Оплата игры бонусами клиента и снятие такой оплаты. */
30
+ LogTitleEnum["addBonusPayment"] = "addBonusPayment";
31
+ LogTitleEnum["removeBonusPayment"] = "removeBonusPayment";
29
32
  /** change orders and certificates */
30
33
  LogTitleEnum["addHandDiscount"] = "addHandDiscount";
31
34
  LogTitleEnum["removeHandDiscount"] = "removeHandDiscount";
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Ручная правка баланса: подарок за отзыв, компенсация за сорванную
3
+ * игру, исправление ошибки администратора. Причина обязательна — без неё
4
+ * через месяц никто не вспомнит, откуда у клиента лишние бонусы.
5
+ */
6
+ export declare class AdjustBonusDto {
7
+ /**
8
+ * Минорные единицы со знаком: положительное начисляет, отрицательное
9
+ * списывает. В минус баланс не уходит — сервер обрежет списание по
10
+ * остатку.
11
+ */
12
+ amount: number;
13
+ comment?: string;
14
+ }
@@ -0,0 +1,35 @@
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.AdjustBonusDto = 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 AdjustBonusDto {
21
+ }
22
+ exports.AdjustBonusDto = AdjustBonusDto;
23
+ __decorate([
24
+ (0, class_transformer_1.Transform)(({ value }) => Math.round(+value) || 0),
25
+ (0, class_validator_1.IsInt)(),
26
+ (0, class_transformer_1.Expose)(),
27
+ __metadata("design:type", Number)
28
+ ], AdjustBonusDto.prototype, "amount", void 0);
29
+ __decorate([
30
+ (0, class_validator_1.IsOptional)(),
31
+ (0, class_validator_1.IsString)(),
32
+ (0, class_validator_1.MaxLength)(200),
33
+ (0, class_transformer_1.Expose)(),
34
+ __metadata("design:type", String)
35
+ ], AdjustBonusDto.prototype, "comment", void 0);
@@ -0,0 +1,9 @@
1
+ import { LoyaltyTierSourceEnum } from './enum/loyalty-tier-source.enum';
2
+ export declare class AssignClientTierDto {
3
+ source: LoyaltyTierSourceEnum;
4
+ /**
5
+ * Обязателен только для ручного назначения: возврат в `auto` и
6
+ * исключение из программы статус не выбирают.
7
+ */
8
+ tierId?: number | null;
9
+ }
@@ -0,0 +1,29 @@
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.AssignClientTierDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const loyalty_tier_source_enum_1 = require("./enum/loyalty-tier-source.enum");
16
+ class AssignClientTierDto {
17
+ }
18
+ exports.AssignClientTierDto = AssignClientTierDto;
19
+ __decorate([
20
+ (0, class_validator_1.IsEnum)(loyalty_tier_source_enum_1.LoyaltyTierSourceEnum),
21
+ (0, class_transformer_1.Expose)(),
22
+ __metadata("design:type", String)
23
+ ], AssignClientTierDto.prototype, "source", void 0);
24
+ __decorate([
25
+ (0, class_validator_1.ValidateIf)((o) => o.source === loyalty_tier_source_enum_1.LoyaltyTierSourceEnum.MANUAL),
26
+ (0, class_validator_1.IsInt)(),
27
+ (0, class_transformer_1.Expose)(),
28
+ __metadata("design:type", Number)
29
+ ], AssignClientTierDto.prototype, "tierId", void 0);
@@ -0,0 +1,30 @@
1
+ import { LoyaltyMetricEnum } from './enum/loyalty-metric.enum';
2
+ import { LoyaltyProgramTypeEnum } from './enum/loyalty-program-type.enum';
3
+ import { LoyaltyTierSourceEnum } from './enum/loyalty-tier-source.enum';
4
+ import { LoyaltyTierRO } from './loyalty-tier.ro';
5
+ /**
6
+ * Состояние одного клиента в программе: статус, накопленные счётчики и
7
+ * остаток до следующего статуса. Отдаётся и при выключенной программе —
8
+ * карточка клиента тогда просто ничего не рисует.
9
+ */
10
+ export declare class ClientLoyaltyRO {
11
+ enabled: boolean;
12
+ programType: LoyaltyProgramTypeEnum;
13
+ metric: LoyaltyMetricEnum;
14
+ /** Бонусы в минорных единицах: один бонус равен одной единице валюты. */
15
+ balance: number;
16
+ /**
17
+ * Процент кэшбэка, который клиент получает сейчас, — со статуса, а
18
+ * если статуса нет, то базовый из настроек.
19
+ */
20
+ cashbackPercent: number;
21
+ source: LoyaltyTierSourceEnum;
22
+ /** Состоявшиеся игры, попавшие в зачёт программы. */
23
+ games: number;
24
+ /** Квесты и допуслуги в минорных единицах, попавшие в зачёт. */
25
+ revenue: number;
26
+ tier: LoyaltyTierRO | null;
27
+ nextTier: LoyaltyTierRO | null;
28
+ /** Сколько игр или денег не хватает до `nextTier`. */
29
+ toNextTier: number;
30
+ }
@@ -0,0 +1,71 @@
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.ClientLoyaltyRO = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const loyalty_metric_enum_1 = require("./enum/loyalty-metric.enum");
15
+ const loyalty_program_type_enum_1 = require("./enum/loyalty-program-type.enum");
16
+ const loyalty_tier_source_enum_1 = require("./enum/loyalty-tier-source.enum");
17
+ const loyalty_tier_ro_1 = require("./loyalty-tier.ro");
18
+ /**
19
+ * Состояние одного клиента в программе: статус, накопленные счётчики и
20
+ * остаток до следующего статуса. Отдаётся и при выключенной программе —
21
+ * карточка клиента тогда просто ничего не рисует.
22
+ */
23
+ class ClientLoyaltyRO {
24
+ }
25
+ exports.ClientLoyaltyRO = ClientLoyaltyRO;
26
+ __decorate([
27
+ (0, class_transformer_1.Expose)(),
28
+ __metadata("design:type", Boolean)
29
+ ], ClientLoyaltyRO.prototype, "enabled", void 0);
30
+ __decorate([
31
+ (0, class_transformer_1.Expose)(),
32
+ __metadata("design:type", String)
33
+ ], ClientLoyaltyRO.prototype, "programType", void 0);
34
+ __decorate([
35
+ (0, class_transformer_1.Expose)(),
36
+ __metadata("design:type", String)
37
+ ], ClientLoyaltyRO.prototype, "metric", void 0);
38
+ __decorate([
39
+ (0, class_transformer_1.Expose)(),
40
+ __metadata("design:type", Number)
41
+ ], ClientLoyaltyRO.prototype, "balance", void 0);
42
+ __decorate([
43
+ (0, class_transformer_1.Expose)(),
44
+ __metadata("design:type", Number)
45
+ ], ClientLoyaltyRO.prototype, "cashbackPercent", void 0);
46
+ __decorate([
47
+ (0, class_transformer_1.Expose)(),
48
+ __metadata("design:type", String)
49
+ ], ClientLoyaltyRO.prototype, "source", void 0);
50
+ __decorate([
51
+ (0, class_transformer_1.Expose)(),
52
+ __metadata("design:type", Number)
53
+ ], ClientLoyaltyRO.prototype, "games", void 0);
54
+ __decorate([
55
+ (0, class_transformer_1.Expose)(),
56
+ __metadata("design:type", Number)
57
+ ], ClientLoyaltyRO.prototype, "revenue", void 0);
58
+ __decorate([
59
+ (0, class_transformer_1.Expose)(),
60
+ (0, class_transformer_1.Type)(() => loyalty_tier_ro_1.LoyaltyTierRO),
61
+ __metadata("design:type", loyalty_tier_ro_1.LoyaltyTierRO)
62
+ ], ClientLoyaltyRO.prototype, "tier", 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", loyalty_tier_ro_1.LoyaltyTierRO)
67
+ ], ClientLoyaltyRO.prototype, "nextTier", void 0);
68
+ __decorate([
69
+ (0, class_transformer_1.Expose)(),
70
+ __metadata("design:type", Number)
71
+ ], ClientLoyaltyRO.prototype, "toNextTier", void 0);
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Тип операции в журнале бонусов. Баланс клиента — не колонка, а сумма
3
+ * этого журнала: без операций нельзя ни объяснить клиенту, откуда взялись
4
+ * его 350, ни откатить списание при отмене игры.
5
+ */
6
+ export declare enum LoyaltyBonusTypeEnum {
7
+ /** Кэшбэк за состоявшуюся игру. Одна операция на игру. */
8
+ ACCRUAL = "accrual",
9
+ /** Оплата игры бонусами. Хранится отрицательной суммой. */
10
+ SPENDING = "spending",
11
+ /** Правка администратора: подарок, компенсация, исправление ошибки. */
12
+ MANUAL = "manual"
13
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoyaltyBonusTypeEnum = void 0;
4
+ /**
5
+ * Тип операции в журнале бонусов. Баланс клиента — не колонка, а сумма
6
+ * этого журнала: без операций нельзя ни объяснить клиенту, откуда взялись
7
+ * его 350, ни откатить списание при отмене игры.
8
+ */
9
+ var LoyaltyBonusTypeEnum;
10
+ (function (LoyaltyBonusTypeEnum) {
11
+ /** Кэшбэк за состоявшуюся игру. Одна операция на игру. */
12
+ LoyaltyBonusTypeEnum["ACCRUAL"] = "accrual";
13
+ /** Оплата игры бонусами. Хранится отрицательной суммой. */
14
+ LoyaltyBonusTypeEnum["SPENDING"] = "spending";
15
+ /** Правка администратора: подарок, компенсация, исправление ошибки. */
16
+ LoyaltyBonusTypeEnum["MANUAL"] = "manual";
17
+ })(LoyaltyBonusTypeEnum || (exports.LoyaltyBonusTypeEnum = LoyaltyBonusTypeEnum = {}));
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Что делать с историей существующих клиентов в момент включения
3
+ * программы. Вопрос задаётся один раз при онбординге и превращается в
4
+ * дату отсечки `countFrom`, после чего накопление всегда идёт вперёд:
5
+ * статус не сгорает.
6
+ *
7
+ * `ALL` — зачесть всю историю: половина базы получит статус сразу.
8
+ * `LAST_YEAR` — зачесть игры за последние 12 месяцев на момент
9
+ * включения. Отсечка замораживается датой, а не «ползёт» вместе с
10
+ * сегодняшним днём, — иначе клиент терял бы статус просто от того, что
11
+ * год назад он играл, а сейчас нет.
12
+ * `FROM_ACTIVATION` — начать всех с нуля, считать только новые игры.
13
+ */
14
+ export declare enum LoyaltyHistoryModeEnum {
15
+ ALL = "all",
16
+ LAST_YEAR = "lastYear",
17
+ FROM_ACTIVATION = "fromActivation"
18
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoyaltyHistoryModeEnum = void 0;
4
+ /**
5
+ * Что делать с историей существующих клиентов в момент включения
6
+ * программы. Вопрос задаётся один раз при онбординге и превращается в
7
+ * дату отсечки `countFrom`, после чего накопление всегда идёт вперёд:
8
+ * статус не сгорает.
9
+ *
10
+ * `ALL` — зачесть всю историю: половина базы получит статус сразу.
11
+ * `LAST_YEAR` — зачесть игры за последние 12 месяцев на момент
12
+ * включения. Отсечка замораживается датой, а не «ползёт» вместе с
13
+ * сегодняшним днём, — иначе клиент терял бы статус просто от того, что
14
+ * год назад он играл, а сейчас нет.
15
+ * `FROM_ACTIVATION` — начать всех с нуля, считать только новые игры.
16
+ */
17
+ var LoyaltyHistoryModeEnum;
18
+ (function (LoyaltyHistoryModeEnum) {
19
+ LoyaltyHistoryModeEnum["ALL"] = "all";
20
+ LoyaltyHistoryModeEnum["LAST_YEAR"] = "lastYear";
21
+ LoyaltyHistoryModeEnum["FROM_ACTIVATION"] = "fromActivation";
22
+ })(LoyaltyHistoryModeEnum || (exports.LoyaltyHistoryModeEnum = LoyaltyHistoryModeEnum = {}));
@@ -0,0 +1,12 @@
1
+ /**
2
+ * По какому счётчику клиент поднимается по статусам.
3
+ *
4
+ * `GAMES` — состоявшиеся игры, `REVENUE` — сумма, которую клиент оставил
5
+ * за квесты и допуслуги. Одновременно работает только одна метрика:
6
+ * пороги «5 игр» и «5 000» отбирают разные множества клиентов, и
7
+ * объяснить администратору смешанное правило почти невозможно.
8
+ */
9
+ export declare enum LoyaltyMetricEnum {
10
+ GAMES = "games",
11
+ REVENUE = "revenue"
12
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoyaltyMetricEnum = void 0;
4
+ /**
5
+ * По какому счётчику клиент поднимается по статусам.
6
+ *
7
+ * `GAMES` — состоявшиеся игры, `REVENUE` — сумма, которую клиент оставил
8
+ * за квесты и допуслуги. Одновременно работает только одна метрика:
9
+ * пороги «5 игр» и «5 000» отбирают разные множества клиентов, и
10
+ * объяснить администратору смешанное правило почти невозможно.
11
+ */
12
+ var LoyaltyMetricEnum;
13
+ (function (LoyaltyMetricEnum) {
14
+ LoyaltyMetricEnum["GAMES"] = "games";
15
+ LoyaltyMetricEnum["REVENUE"] = "revenue";
16
+ })(LoyaltyMetricEnum || (exports.LoyaltyMetricEnum = LoyaltyMetricEnum = {}));
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Какую механику компания включила. Программы взаимоисключающие: клиент
3
+ * не может одновременно получать скидку за статус и кэшбэк с той же
4
+ * игры — иначе одна и та же лояльность стоила бы венью дважды, а
5
+ * администратор на стойке не смог бы объяснить итоговую цифру в чеке.
6
+ */
7
+ export declare enum LoyaltyProgramTypeEnum {
8
+ /** Статус даёт процент скидки сразу в чеке текущей игры. */
9
+ DISCOUNT = "discount",
10
+ /** Игра начисляет бонусы на баланс клиента, ими платят в следующий раз. */
11
+ CASHBACK = "cashback"
12
+ }