@lyxa.ai/marketing 1.0.59 → 1.0.61
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/lib/event/event-initializations.d.ts.map +1 -1
- package/dist/lib/event/event-initializations.js +1 -0
- package/dist/lib/event/event-initializations.js.map +1 -1
- package/dist/lib/event/event-listeners/event-listeners.d.ts +1 -0
- package/dist/lib/event/event-listeners/event-listeners.d.ts.map +1 -1
- package/dist/lib/event/event-listeners/event-listeners.js +7 -0
- package/dist/lib/event/event-listeners/event-listeners.js.map +1 -1
- package/dist/lib/index.d.ts +303 -19
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +2 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts +12 -12
- package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.d.ts +2 -0
- package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.d.ts.map +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.js +22 -3
- package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/limited-time-offer.router.d.ts +18 -18
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.d.ts +14 -1
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.d.ts.map +1 -1
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.js +15 -0
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts +18 -18
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts +57 -57
- package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.d.ts.map +1 -1
- package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.js +15 -5
- package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts +1 -1
- package/dist/lib/modules/marketing/patterns/repository/MarketingMetricsRepository.d.ts +1 -0
- package/dist/lib/modules/marketing/patterns/repository/MarketingMetricsRepository.d.ts.map +1 -1
- package/dist/lib/modules/marketing/patterns/repository/MarketingMetricsRepository.js +29 -0
- package/dist/lib/modules/marketing/patterns/repository/MarketingMetricsRepository.js.map +1 -1
- package/dist/lib/modules/marketing/routers/marketing.router.d.ts +14 -0
- package/dist/lib/modules/marketing/routers/marketing.router.d.ts.map +1 -1
- package/dist/lib/modules/marketing/routers/marketing.router.js +5 -0
- package/dist/lib/modules/marketing/routers/marketing.router.js.map +1 -1
- package/dist/lib/modules/marketing/services/index.d.ts +3 -0
- package/dist/lib/modules/marketing/services/index.d.ts.map +1 -1
- package/dist/lib/modules/marketing/services/index.js +3 -0
- package/dist/lib/modules/marketing/services/index.js.map +1 -1
- package/dist/lib/modules/marketing/services/marketing-conflict.repository.d.ts +9 -0
- package/dist/lib/modules/marketing/services/marketing-conflict.repository.d.ts.map +1 -0
- package/dist/lib/modules/marketing/services/marketing-conflict.repository.js +63 -0
- package/dist/lib/modules/marketing/services/marketing-conflict.repository.js.map +1 -0
- package/dist/lib/modules/marketing/services/marketing-conflict.service.d.ts +27 -0
- package/dist/lib/modules/marketing/services/marketing-conflict.service.d.ts.map +1 -0
- package/dist/lib/modules/marketing/services/marketing-conflict.service.js +135 -0
- package/dist/lib/modules/marketing/services/marketing-conflict.service.js.map +1 -0
- package/dist/lib/modules/marketing/services/marketing.service.d.ts +6 -2
- package/dist/lib/modules/marketing/services/marketing.service.d.ts.map +1 -1
- package/dist/lib/modules/marketing/services/marketing.service.js +39 -7
- package/dist/lib/modules/marketing/services/marketing.service.js.map +1 -1
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.repository.d.ts +14 -0
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.repository.d.ts.map +1 -0
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.repository.js +82 -0
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.repository.js.map +1 -0
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.service.d.ts +11 -0
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.service.d.ts.map +1 -0
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.service.js +99 -0
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.service.js.map +1 -0
- package/dist/lib/modules/marketing/services/spend-to-get-progress.repository.d.ts +9 -0
- package/dist/lib/modules/marketing/services/spend-to-get-progress.repository.d.ts.map +1 -0
- package/dist/lib/modules/marketing/services/spend-to-get-progress.repository.js +69 -0
- package/dist/lib/modules/marketing/services/spend-to-get-progress.repository.js.map +1 -0
- package/dist/lib/modules/marketing/services/spend-to-get-progress.service.d.ts +31 -0
- package/dist/lib/modules/marketing/services/spend-to-get-progress.service.d.ts.map +1 -0
- package/dist/lib/modules/marketing/services/spend-to-get-progress.service.js +123 -0
- package/dist/lib/modules/marketing/services/spend-to-get-progress.service.js.map +1 -0
- package/dist/lib/modules/marketing/validations/all-marketings.validation.d.ts.map +1 -1
- package/dist/lib/modules/marketing/validations/all-marketings.validation.js +3 -0
- package/dist/lib/modules/marketing/validations/all-marketings.validation.js.map +1 -1
- package/dist/lib/modules/marketing/validations/buy1-get1-marketing.validation.d.ts +3 -3
- package/dist/lib/modules/marketing/validations/discount-marketing.validation.d.ts +3 -3
- package/dist/lib/modules/marketing/validations/index.d.ts +1 -0
- package/dist/lib/modules/marketing/validations/index.d.ts.map +1 -1
- package/dist/lib/modules/marketing/validations/index.js +1 -0
- package/dist/lib/modules/marketing/validations/index.js.map +1 -1
- package/dist/lib/modules/marketing/validations/marketing.validation.d.ts +17 -0
- package/dist/lib/modules/marketing/validations/marketing.validation.d.ts.map +1 -1
- package/dist/lib/modules/marketing/validations/marketing.validation.js +7 -1
- package/dist/lib/modules/marketing/validations/marketing.validation.js.map +1 -1
- package/dist/lib/modules/marketing/validations/product-marketing.validation.d.ts +2 -2
- package/dist/lib/modules/marketing/validations/spend-to-get-marketing.validation.d.ts +617 -0
- package/dist/lib/modules/marketing/validations/spend-to-get-marketing.validation.d.ts.map +1 -0
- package/dist/lib/modules/marketing/validations/spend-to-get-marketing.validation.js +119 -0
- package/dist/lib/modules/marketing/validations/spend-to-get-marketing.validation.js.map +1 -0
- package/dist/lib/modules/punch-marketing-history/routers/punch-marketing-history.router.d.ts +1 -1
- package/dist/lib/modules/punch-marketing-history/validations/punch-marketing-history.validation.d.ts +2 -2
- package/dist/lib/modules/spend-to-get-history/routers/index.d.ts +2 -0
- package/dist/lib/modules/spend-to-get-history/routers/index.d.ts.map +1 -0
- package/dist/lib/modules/spend-to-get-history/routers/index.js +18 -0
- package/dist/lib/modules/spend-to-get-history/routers/index.js.map +1 -0
- package/dist/lib/modules/spend-to-get-history/routers/spend-to-get-history.router.js +62 -0
- package/dist/lib/modules/spend-to-get-history/routers/spend-to-get-history.router.js.map +1 -0
- package/dist/lib/modules/spend-to-get-history/services/index.d.ts +2 -0
- package/dist/lib/modules/spend-to-get-history/services/index.d.ts.map +1 -0
- package/dist/lib/modules/spend-to-get-history/services/index.js +18 -0
- package/dist/lib/modules/spend-to-get-history/services/index.js.map +1 -0
- package/dist/lib/modules/spend-to-get-history/services/spend-to-get-history.service.d.ts +24 -0
- package/dist/lib/modules/spend-to-get-history/services/spend-to-get-history.service.d.ts.map +1 -0
- package/dist/lib/modules/spend-to-get-history/services/spend-to-get-history.service.js +136 -0
- package/dist/lib/modules/spend-to-get-history/services/spend-to-get-history.service.js.map +1 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.d.ts +24 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.d.ts.map +1 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.js +97 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.js.map +1 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.d.ts +271 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.d.ts.map +1 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.js +62 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.js.map +1 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.d.ts +24 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.d.ts.map +1 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.js +116 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.js.map +1 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.d.ts +232 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.d.ts.map +1 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.js +30 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.js.map +1 -0
- package/dist/lib/modules/spend-to-get-history/validations/index.d.ts +2 -0
- package/dist/lib/modules/spend-to-get-history/validations/index.d.ts.map +1 -0
- package/dist/lib/modules/spend-to-get-history/validations/index.js +18 -0
- package/dist/lib/modules/spend-to-get-history/validations/index.js.map +1 -0
- package/dist/lib/modules/spend-to-get-history/validations/spend-to-get-history.validation.d.ts +232 -0
- package/dist/lib/modules/spend-to-get-history/validations/spend-to-get-history.validation.d.ts.map +1 -0
- package/dist/lib/modules/spend-to-get-history/validations/spend-to-get-history.validation.js +30 -0
- package/dist/lib/modules/spend-to-get-history/validations/spend-to-get-history.validation.js.map +1 -0
- package/dist/lib/modules/tournament/match/events/match-ended.consumer.d.ts +2 -0
- package/dist/lib/modules/tournament/match/events/match-ended.consumer.d.ts.map +1 -0
- package/dist/lib/modules/tournament/match/events/match-ended.consumer.js +15 -0
- package/dist/lib/modules/tournament/match/events/match-ended.consumer.js.map +1 -0
- package/dist/lib/modules/tournament/match/events/match-ended.event.d.ts +14 -0
- package/dist/lib/modules/tournament/match/events/match-ended.event.d.ts.map +1 -0
- package/dist/lib/modules/tournament/match/events/match-ended.event.js +12 -0
- package/dist/lib/modules/tournament/match/events/match-ended.event.js.map +1 -0
- package/dist/lib/modules/tournament/notification/jobs/notification.producer.d.ts +10 -0
- package/dist/lib/modules/tournament/notification/jobs/notification.producer.d.ts.map +1 -0
- package/dist/lib/modules/tournament/notification/jobs/notification.producer.js +23 -0
- package/dist/lib/modules/tournament/notification/jobs/notification.producer.js.map +1 -0
- package/dist/lib/modules/tournament/notification/jobs/notification.worker.d.ts +9 -0
- package/dist/lib/modules/tournament/notification/jobs/notification.worker.d.ts.map +1 -0
- package/dist/lib/modules/tournament/notification/jobs/notification.worker.js +82 -0
- package/dist/lib/modules/tournament/notification/jobs/notification.worker.js.map +1 -0
- package/dist/lib/modules/tournament/notification/notification.schedule.config.d.ts +10 -0
- package/dist/lib/modules/tournament/notification/notification.schedule.config.d.ts.map +1 -0
- package/dist/lib/modules/tournament/notification/notification.schedule.config.js +15 -0
- package/dist/lib/modules/tournament/notification/notification.schedule.config.js.map +1 -0
- package/dist/lib/modules/tournament/notification/notification.scheduler.service.d.ts +10 -0
- package/dist/lib/modules/tournament/notification/notification.scheduler.service.d.ts.map +1 -0
- package/dist/lib/modules/tournament/notification/notification.scheduler.service.js +73 -0
- package/dist/lib/modules/tournament/notification/notification.scheduler.service.js.map +1 -0
- package/dist/types/event/event-initializations.d.ts.map +1 -1
- package/dist/types/event/event-listeners/event-listeners.d.ts +1 -0
- package/dist/types/event/event-listeners/event-listeners.d.ts.map +1 -1
- package/dist/types/events/event-initializations.d.ts +2 -0
- package/dist/types/events/event-initializations.d.ts.map +1 -0
- package/dist/types/index.d.ts +303 -19
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts +12 -12
- package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.d.ts +2 -0
- package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/limited-time-offer.router.d.ts +18 -18
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.builder.d.ts +14 -1
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.builder.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts +18 -18
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts +1 -0
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts.map +1 -0
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts +57 -57
- package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts +1 -1
- package/dist/types/modules/marketing/patterns/repository/MarketingMetricsRepository.d.ts +1 -0
- package/dist/types/modules/marketing/patterns/repository/MarketingMetricsRepository.d.ts.map +1 -1
- package/dist/types/modules/marketing/routers/marketing.router.d.ts +14 -0
- package/dist/types/modules/marketing/routers/marketing.router.d.ts.map +1 -1
- package/dist/types/modules/marketing/services/index.d.ts +3 -0
- package/dist/types/modules/marketing/services/index.d.ts.map +1 -1
- package/dist/types/modules/marketing/services/marketing-conflict.repository.d.ts +9 -0
- package/dist/types/modules/marketing/services/marketing-conflict.repository.d.ts.map +1 -0
- package/dist/types/modules/marketing/services/marketing-conflict.service.d.ts +41 -0
- package/dist/types/modules/marketing/services/marketing-conflict.service.d.ts.map +1 -0
- package/dist/types/modules/marketing/services/marketing.service.d.ts +6 -2
- package/dist/types/modules/marketing/services/marketing.service.d.ts.map +1 -1
- package/dist/types/modules/marketing/services/spend-to-get-marketing.repository.d.ts +14 -0
- package/dist/types/modules/marketing/services/spend-to-get-marketing.repository.d.ts.map +1 -0
- package/dist/types/modules/marketing/services/spend-to-get-marketing.service.d.ts +20 -0
- package/dist/types/modules/marketing/services/spend-to-get-marketing.service.d.ts.map +1 -0
- package/dist/types/modules/marketing/services/spend-to-get-progress.repository.d.ts +9 -0
- package/dist/types/modules/marketing/services/spend-to-get-progress.repository.d.ts.map +1 -0
- package/dist/types/modules/marketing/services/spend-to-get-progress.service.d.ts +37 -0
- package/dist/types/modules/marketing/services/spend-to-get-progress.service.d.ts.map +1 -0
- package/dist/types/modules/marketing/validations/all-marketings.validation.d.ts.map +1 -1
- package/dist/types/modules/marketing/validations/buy1-get1-marketing.validation.d.ts +3 -3
- package/dist/types/modules/marketing/validations/discount-marketing.validation.d.ts +3 -3
- package/dist/types/modules/marketing/validations/index.d.ts +1 -0
- package/dist/types/modules/marketing/validations/index.d.ts.map +1 -1
- package/dist/types/modules/marketing/validations/marketing.validation.d.ts +17 -0
- package/dist/types/modules/marketing/validations/marketing.validation.d.ts.map +1 -1
- package/dist/types/modules/marketing/validations/product-marketing.validation.d.ts +2 -2
- package/dist/types/modules/marketing/validations/spend-to-get-marketing.validation.d.ts +630 -0
- package/dist/types/modules/marketing/validations/spend-to-get-marketing.validation.d.ts.map +1 -0
- package/dist/types/modules/punch-marketing-history/routers/punch-marketing-history.router.d.ts +1 -1
- package/dist/types/modules/punch-marketing-history/validations/punch-marketing-history.validation.d.ts +2 -2
- package/dist/types/modules/spend-to-get-history/routers/index.d.ts +2 -0
- package/dist/types/modules/spend-to-get-history/routers/index.d.ts.map +1 -0
- package/dist/types/modules/spend-to-get-history/services/index.d.ts +2 -0
- package/dist/types/modules/spend-to-get-history/services/index.d.ts.map +1 -0
- package/dist/types/modules/spend-to-get-history/services/spend-to-get-history.service.d.ts +56 -0
- package/dist/types/modules/spend-to-get-history/services/spend-to-get-history.service.d.ts.map +1 -0
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.repository.d.ts +24 -0
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.repository.d.ts.map +1 -0
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.router.d.ts +271 -0
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.router.d.ts.map +1 -0
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.service.d.ts +56 -0
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.service.d.ts.map +1 -0
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.validation.d.ts +241 -0
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.validation.d.ts.map +1 -0
- package/dist/types/modules/spend-to-get-history/validations/index.d.ts +2 -0
- package/dist/types/modules/spend-to-get-history/validations/index.d.ts.map +1 -0
- package/dist/types/modules/spend-to-get-history/validations/spend-to-get-history.validation.d.ts +241 -0
- package/dist/types/modules/spend-to-get-history/validations/spend-to-get-history.validation.d.ts.map +1 -0
- package/dist/types/modules/tournament/config/tournament-config.validation.d.ts +201 -0
- package/dist/types/modules/tournament/config/tournament-config.validation.d.ts.map +1 -0
- package/dist/types/modules/tournament/match/events/match-ended.consumer.d.ts +2 -0
- package/dist/types/modules/tournament/match/events/match-ended.consumer.d.ts.map +1 -0
- package/dist/types/modules/tournament/match/events/match-ended.event.d.ts +14 -0
- package/dist/types/modules/tournament/match/events/match-ended.event.d.ts.map +1 -0
- package/dist/types/modules/tournament/notification/jobs/notification.producer.d.ts +10 -0
- package/dist/types/modules/tournament/notification/jobs/notification.producer.d.ts.map +1 -0
- package/dist/types/modules/tournament/notification/jobs/notification.worker.d.ts +9 -0
- package/dist/types/modules/tournament/notification/jobs/notification.worker.d.ts.map +1 -0
- package/dist/types/modules/tournament/notification/notification.schedule.config.d.ts +10 -0
- package/dist/types/modules/tournament/notification/notification.schedule.config.d.ts.map +1 -0
- package/dist/types/modules/tournament/notification/notification.scheduler.service.d.ts +10 -0
- package/dist/types/modules/tournament/notification/notification.scheduler.service.d.ts.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SpendToGetTierSchema = exports.UpdateSpendToGetMarketingSchema = exports.SpendToGetMarketingIdValidationSchema = exports.SpendToGetMarketingSchema = exports.SpendToGetMarketingValidationSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const global_validation_1 = require("@lyxa.ai/core/dist/utilities/validation/global-validation");
|
|
6
|
+
const enum_1 = require("@lyxa.ai/core/dist/utilities/enum");
|
|
7
|
+
const marketing_validation_1 = require("./marketing.validation");
|
|
8
|
+
const SpendToGetTierSchema = zod_1.z
|
|
9
|
+
.object({
|
|
10
|
+
minSpend: global_validation_1.ZodValidation.number('Minimum spend', { isNonnegative: true }),
|
|
11
|
+
rewardType: global_validation_1.ZodValidation.enumType(enum_1.SpendToGetRewardType, 'Reward type'),
|
|
12
|
+
rewardValue: global_validation_1.ZodValidation.number('Reward value').optional(),
|
|
13
|
+
maxDiscountCap: global_validation_1.ZodValidation.number('Maximum discount cap').optional(),
|
|
14
|
+
isMaxDiscountCapEnabled: global_validation_1.ZodValidation.boolean('Is maximum discount cap enabled').default(false),
|
|
15
|
+
})
|
|
16
|
+
.superRefine((tier, ctx) => {
|
|
17
|
+
if (tier.rewardType === enum_1.SpendToGetRewardType.FREE_DELIVERY) {
|
|
18
|
+
if (tier.rewardValue !== undefined) {
|
|
19
|
+
ctx.addIssue({
|
|
20
|
+
code: zod_1.z.ZodIssueCode.custom,
|
|
21
|
+
message: 'Reward value is not applicable for Free Delivery',
|
|
22
|
+
path: ['rewardValue'],
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else if (tier.rewardValue === undefined) {
|
|
27
|
+
ctx.addIssue({
|
|
28
|
+
code: zod_1.z.ZodIssueCode.custom,
|
|
29
|
+
message: 'Reward value is required',
|
|
30
|
+
path: ['rewardValue'],
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
else if (tier.rewardType === enum_1.SpendToGetRewardType.PERCENTAGE) {
|
|
34
|
+
if (tier.rewardValue < 1 || tier.rewardValue > 100) {
|
|
35
|
+
ctx.addIssue({
|
|
36
|
+
code: zod_1.z.ZodIssueCode.custom,
|
|
37
|
+
message: 'Percentage reward value must be between 1 and 100',
|
|
38
|
+
path: ['rewardValue'],
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else if (tier.rewardType === enum_1.SpendToGetRewardType.FIXED) {
|
|
43
|
+
if (tier.rewardValue <= 0) {
|
|
44
|
+
ctx.addIssue({
|
|
45
|
+
code: zod_1.z.ZodIssueCode.custom,
|
|
46
|
+
message: 'Fixed reward value must be greater than 0',
|
|
47
|
+
path: ['rewardValue'],
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
if (tier.rewardValue >= tier.minSpend) {
|
|
51
|
+
ctx.addIssue({
|
|
52
|
+
code: zod_1.z.ZodIssueCode.custom,
|
|
53
|
+
message: "Fixed reward value must be less than the tier's minimum spend",
|
|
54
|
+
path: ['rewardValue'],
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (tier.maxDiscountCap !== undefined && tier.rewardType !== enum_1.SpendToGetRewardType.PERCENTAGE) {
|
|
59
|
+
ctx.addIssue({
|
|
60
|
+
code: zod_1.z.ZodIssueCode.custom,
|
|
61
|
+
message: 'Maximum discount cap only applies to Percentage rewards',
|
|
62
|
+
path: ['maxDiscountCap'],
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
exports.SpendToGetTierSchema = SpendToGetTierSchema;
|
|
67
|
+
const baseFields = {
|
|
68
|
+
...marketing_validation_1.baseMarketingFields,
|
|
69
|
+
marketingType: zod_1.z.literal(enum_1.MarketingType.SPEND_TO_GET),
|
|
70
|
+
tiers: global_validation_1.ZodValidation.array(SpendToGetTierSchema, 'Tiers', 1),
|
|
71
|
+
perUserLimit: global_validation_1.ZodValidation.number('Per user limit', { isPositive: true }).optional(),
|
|
72
|
+
isPerUserLimitEnabled: global_validation_1.ZodValidation.boolean('Is per user limit enabled').default(false),
|
|
73
|
+
spendLimit: global_validation_1.ZodValidation.number('Spend limit').default(0),
|
|
74
|
+
isSpendLimitEnabled: global_validation_1.ZodValidation.boolean('Is spend limit enabled').default(false),
|
|
75
|
+
};
|
|
76
|
+
const schemaBuilder = (0, global_validation_1.createSchemaBuilder)(baseFields);
|
|
77
|
+
const { BaseSchema: SpendToGetMarketingValidationSchemaWithoutRefinement, EntitySchema: SpendToGetMarketingSchema, IdSchema: SpendToGetMarketingIdSchema, UpdateSchema: UpdateSpendToGetMarketingSchemaWithoutRefinement, } = schemaBuilder.getAllSchemas({ createdAt: true });
|
|
78
|
+
exports.SpendToGetMarketingSchema = SpendToGetMarketingSchema;
|
|
79
|
+
exports.SpendToGetMarketingIdValidationSchema = SpendToGetMarketingIdSchema;
|
|
80
|
+
function addAscendingTierIssues(tiers, ctx) {
|
|
81
|
+
for (let i = 1; i < tiers.length; i++) {
|
|
82
|
+
if (tiers[i].minSpend <= tiers[i - 1].minSpend) {
|
|
83
|
+
ctx.addIssue({
|
|
84
|
+
code: zod_1.z.ZodIssueCode.custom,
|
|
85
|
+
message: "Each tier's minimum spend must be higher than the previous tier.",
|
|
86
|
+
path: ['tiers', i, 'minSpend'],
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function addLimitIssues(data, ctx) {
|
|
92
|
+
if (data.isSpendLimitEnabled && (!data.spendLimit || data.spendLimit <= 0)) {
|
|
93
|
+
ctx.addIssue({
|
|
94
|
+
code: zod_1.z.ZodIssueCode.custom,
|
|
95
|
+
message: 'Spend limit must be greater than 0 when enabled',
|
|
96
|
+
path: ['spendLimit', 'isSpendLimitEnabled'],
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
if (data.isPerUserLimitEnabled && (!data.perUserLimit || data.perUserLimit <= 0)) {
|
|
100
|
+
ctx.addIssue({
|
|
101
|
+
code: zod_1.z.ZodIssueCode.custom,
|
|
102
|
+
message: 'Per user limit must be greater than 0 when enabled',
|
|
103
|
+
path: ['perUserLimit', 'isPerUserLimitEnabled'],
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const SpendToGetMarketingValidationSchema = SpendToGetMarketingValidationSchemaWithoutRefinement.superRefine((data, ctx) => {
|
|
108
|
+
addAscendingTierIssues(data.tiers, ctx);
|
|
109
|
+
addLimitIssues(data, ctx);
|
|
110
|
+
});
|
|
111
|
+
exports.SpendToGetMarketingValidationSchema = SpendToGetMarketingValidationSchema;
|
|
112
|
+
const UpdateSpendToGetMarketingSchema = UpdateSpendToGetMarketingSchemaWithoutRefinement.superRefine((data, ctx) => {
|
|
113
|
+
if (data.tiers) {
|
|
114
|
+
addAscendingTierIssues(data.tiers, ctx);
|
|
115
|
+
}
|
|
116
|
+
addLimitIssues(data, ctx);
|
|
117
|
+
});
|
|
118
|
+
exports.UpdateSpendToGetMarketingSchema = UpdateSpendToGetMarketingSchema;
|
|
119
|
+
//# sourceMappingURL=spend-to-get-marketing.validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spend-to-get-marketing.validation.js","sourceRoot":"/","sources":["modules/marketing/validations/spend-to-get-marketing.validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport {\n\tZodValidation,\n\tcreateSchemaBuilder,\n\tDTO,\n} from '@lyxa.ai/core/dist/utilities/validation/global-validation';\nimport { MarketingType, SpendToGetRewardType } from '@lyxa.ai/core/dist/utilities/enum';\nimport { baseMarketingFields } from './marketing.validation';\n\n/**\n * Single spend tier: minimum spend + reward. Reward value is required for\n * PERCENTAGE/FIXED and forbidden for FREE_DELIVERY; maxDiscountCap only applies to PERCENTAGE.\n */\nconst SpendToGetTierSchema = z\n\t.object({\n\t\tminSpend: ZodValidation.number('Minimum spend', { isNonnegative: true }),\n\t\trewardType: ZodValidation.enumType(SpendToGetRewardType, 'Reward type'),\n\t\trewardValue: ZodValidation.number('Reward value').optional(),\n\t\tmaxDiscountCap: ZodValidation.number('Maximum discount cap').optional(),\n\t\tisMaxDiscountCapEnabled: ZodValidation.boolean('Is maximum discount cap enabled').default(false),\n\t})\n\t.superRefine((tier, ctx) => {\n\t\tif (tier.rewardType === SpendToGetRewardType.FREE_DELIVERY) {\n\t\t\tif (tier.rewardValue !== undefined) {\n\t\t\t\tctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: 'Reward value is not applicable for Free Delivery',\n\t\t\t\t\tpath: ['rewardValue'],\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (tier.rewardValue === undefined) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'Reward value is required',\n\t\t\t\tpath: ['rewardValue'],\n\t\t\t});\n\t\t} else if (tier.rewardType === SpendToGetRewardType.PERCENTAGE) {\n\t\t\tif (tier.rewardValue < 1 || tier.rewardValue > 100) {\n\t\t\t\tctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: 'Percentage reward value must be between 1 and 100',\n\t\t\t\t\tpath: ['rewardValue'],\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (tier.rewardType === SpendToGetRewardType.FIXED) {\n\t\t\tif (tier.rewardValue <= 0) {\n\t\t\t\tctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: 'Fixed reward value must be greater than 0',\n\t\t\t\t\tpath: ['rewardValue'],\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (tier.rewardValue >= tier.minSpend) {\n\t\t\t\tctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: \"Fixed reward value must be less than the tier's minimum spend\",\n\t\t\t\t\tpath: ['rewardValue'],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (tier.maxDiscountCap !== undefined && tier.rewardType !== SpendToGetRewardType.PERCENTAGE) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'Maximum discount cap only applies to Percentage rewards',\n\t\t\t\tpath: ['maxDiscountCap'],\n\t\t\t});\n\t\t}\n\t});\n\n/**\n * Define the base parent schema fields\n */\nconst baseFields = {\n\t...baseMarketingFields,\n\tmarketingType: z.literal(MarketingType.SPEND_TO_GET),\n\ttiers: ZodValidation.array(SpendToGetTierSchema, 'Tiers', 1),\n\tperUserLimit: ZodValidation.number('Per user limit', { isPositive: true }).optional(),\n\tisPerUserLimitEnabled: ZodValidation.boolean('Is per user limit enabled').default(false),\n\tspendLimit: ZodValidation.number('Spend limit').default(0),\n\tisSpendLimitEnabled: ZodValidation.boolean('Is spend limit enabled').default(false),\n};\n\n/**\n * Create schema builder for Parent entity\n * - Includes timestamps\n * - Excludes 'createdAt' from update operations\n */\nconst schemaBuilder = createSchemaBuilder(baseFields);\n\n/**\n * Get all schemas for the Parent entity\n */\nconst {\n\tBaseSchema: SpendToGetMarketingValidationSchemaWithoutRefinement,\n\tEntitySchema: SpendToGetMarketingSchema,\n\tIdSchema: SpendToGetMarketingIdSchema,\n\tUpdateSchema: UpdateSpendToGetMarketingSchemaWithoutRefinement,\n} = schemaBuilder.getAllSchemas({ createdAt: true });\n\nfunction addAscendingTierIssues(tiers: { minSpend: number }[], ctx: z.RefinementCtx): void {\n\tfor (let i = 1; i < tiers.length; i++) {\n\t\tif (tiers[i].minSpend <= tiers[i - 1].minSpend) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: \"Each tier's minimum spend must be higher than the previous tier.\",\n\t\t\t\tpath: ['tiers', i, 'minSpend'],\n\t\t\t});\n\t\t}\n\t}\n}\n\nfunction addLimitIssues(\n\tdata: {\n\t\tisSpendLimitEnabled?: boolean;\n\t\tspendLimit?: number;\n\t\tisPerUserLimitEnabled?: boolean;\n\t\tperUserLimit?: number;\n\t},\n\tctx: z.RefinementCtx\n): void {\n\tif (data.isSpendLimitEnabled && (!data.spendLimit || data.spendLimit <= 0)) {\n\t\tctx.addIssue({\n\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\tmessage: 'Spend limit must be greater than 0 when enabled',\n\t\t\tpath: ['spendLimit', 'isSpendLimitEnabled'],\n\t\t});\n\t}\n\n\tif (data.isPerUserLimitEnabled && (!data.perUserLimit || data.perUserLimit <= 0)) {\n\t\tctx.addIssue({\n\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\tmessage: 'Per user limit must be greater than 0 when enabled',\n\t\t\tpath: ['perUserLimit', 'isPerUserLimitEnabled'],\n\t\t});\n\t}\n}\n\nconst SpendToGetMarketingValidationSchema = SpendToGetMarketingValidationSchemaWithoutRefinement.superRefine(\n\t(data, ctx) => {\n\t\taddAscendingTierIssues(data.tiers, ctx);\n\t\taddLimitIssues(data, ctx);\n\t}\n);\n\nconst UpdateSpendToGetMarketingSchema = UpdateSpendToGetMarketingSchemaWithoutRefinement.superRefine(\n\t(data, ctx) => {\n\t\tif (data.tiers) {\n\t\t\taddAscendingTierIssues(data.tiers, ctx);\n\t\t}\n\t\taddLimitIssues(data, ctx);\n\t}\n);\n\n/**\n * Export schemas\n */\nexport {\n\tSpendToGetMarketingValidationSchema,\n\tSpendToGetMarketingSchema,\n\tSpendToGetMarketingIdSchema as SpendToGetMarketingIdValidationSchema,\n\tUpdateSpendToGetMarketingSchema,\n\tSpendToGetTierSchema,\n};\n\n/**\n * Export DTO types\n */\nexport type CreateSpendToGetMarketingDTO = DTO<typeof SpendToGetMarketingValidationSchema>;\nexport type SpendToGetMarketingDTO = DTO<typeof SpendToGetMarketingSchema>;\nexport type UpdateSpendToGetMarketingDTO = DTO<typeof UpdateSpendToGetMarketingSchema>;\nexport type SpendToGetTierDTO = DTO<typeof SpendToGetTierSchema>;\n"]}
|
package/dist/lib/modules/punch-marketing-history/routers/punch-marketing-history.router.d.ts
CHANGED
|
@@ -18,8 +18,8 @@ export declare const punchMarketingHistoryRouter: import("@trpc/server").TRPCBui
|
|
|
18
18
|
input: {
|
|
19
19
|
user: string | import("mongoose").Types.ObjectId;
|
|
20
20
|
shop: string | import("mongoose").Types.ObjectId;
|
|
21
|
-
minimumOrderValue: number;
|
|
22
21
|
marketing: string | import("mongoose").Types.ObjectId;
|
|
22
|
+
minimumOrderValue: number;
|
|
23
23
|
targetOrder: number;
|
|
24
24
|
couponValueType: import("@lyxa.ai/core/dist/utilities/enum").ValueType;
|
|
25
25
|
couponValue: number;
|
package/dist/lib/modules/punch-marketing-history/validations/punch-marketing-history.validation.d.ts
CHANGED
|
@@ -19,8 +19,8 @@ declare const PunchMarketingHistoryValidationSchema: z.ZodObject<{
|
|
|
19
19
|
}, "strict", z.ZodTypeAny, {
|
|
20
20
|
user: import("mongoose").Types.ObjectId;
|
|
21
21
|
shop: import("mongoose").Types.ObjectId;
|
|
22
|
-
minimumOrderValue: number;
|
|
23
22
|
marketing: import("mongoose").Types.ObjectId;
|
|
23
|
+
minimumOrderValue: number;
|
|
24
24
|
targetOrder: number;
|
|
25
25
|
couponValueType: ValueType;
|
|
26
26
|
couponValue: number;
|
|
@@ -34,8 +34,8 @@ declare const PunchMarketingHistoryValidationSchema: z.ZodObject<{
|
|
|
34
34
|
}, {
|
|
35
35
|
user: string | import("mongoose").Types.ObjectId;
|
|
36
36
|
shop: string | import("mongoose").Types.ObjectId;
|
|
37
|
-
minimumOrderValue: number;
|
|
38
37
|
marketing: string | import("mongoose").Types.ObjectId;
|
|
38
|
+
minimumOrderValue: number;
|
|
39
39
|
targetOrder: number;
|
|
40
40
|
couponValueType: ValueType;
|
|
41
41
|
couponValue: number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["modules/spend-to-get-history/routers/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./spend-to-get-history.router"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["modules/spend-to-get-history/routers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C","sourcesContent":["export * from './spend-to-get-history.router';\n"]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.spendToGetHistoryRouter = void 0;
|
|
4
|
+
const trpc_1 = require("@lyxa.ai/core/dist/libraries/trpc");
|
|
5
|
+
const services_1 = require("../../spend-to-get-history/services");
|
|
6
|
+
const validations_1 = require("../../spend-to-get-history/validations");
|
|
7
|
+
const validation_1 = require("@lyxa.ai/core/dist/utilities/validation");
|
|
8
|
+
const error_handler_1 = require("@lyxa.ai/core/dist/utilities/error-handler");
|
|
9
|
+
const response_1 = require("@lyxa.ai/core/dist/utilities/response");
|
|
10
|
+
exports.spendToGetHistoryRouter = (0, trpc_1.createTRPCRouter)({
|
|
11
|
+
create: trpc_1.publicProcedure
|
|
12
|
+
.input(validations_1.SpendToGetHistoryValidationSchema)
|
|
13
|
+
.output(validations_1.SpendToGetHistoryResponseSchema)
|
|
14
|
+
.mutation(async ({ input }) => error_handler_1.ErrorHandler.wrapAsync(async () => {
|
|
15
|
+
await services_1.spendToGetHistoryService.create(input);
|
|
16
|
+
return (0, response_1.response)('Spend to get history created successfully');
|
|
17
|
+
})),
|
|
18
|
+
getById: trpc_1.publicProcedure
|
|
19
|
+
.input(validation_1.IdSchema)
|
|
20
|
+
.output(validations_1.SpendToGetHistoryResponseSchema)
|
|
21
|
+
.query(async ({ input }) => error_handler_1.ErrorHandler.wrapAsync(async () => {
|
|
22
|
+
const result = await services_1.spendToGetHistoryService.findById(input);
|
|
23
|
+
return (0, response_1.response)('Spend to get history fetched successfully', validations_1.SpendToGetHistorySchema.parse(result));
|
|
24
|
+
})),
|
|
25
|
+
get: trpc_1.publicProcedure
|
|
26
|
+
.input(validation_1.FilterSchema)
|
|
27
|
+
.output(validations_1.SpendToGetHistoryResponseSchema)
|
|
28
|
+
.query(async ({ input }) => error_handler_1.ErrorHandler.wrapAsync(async () => {
|
|
29
|
+
const result = await services_1.spendToGetHistoryService.find(input);
|
|
30
|
+
return (0, response_1.response)('Spend to get history fetched successfully', result);
|
|
31
|
+
})),
|
|
32
|
+
update: trpc_1.publicProcedure
|
|
33
|
+
.input(validations_1.UpdateSpendToGetHistorySchema)
|
|
34
|
+
.output(validations_1.SpendToGetHistoryResponseSchema)
|
|
35
|
+
.mutation(async ({ input }) => error_handler_1.ErrorHandler.wrapAsync(async () => {
|
|
36
|
+
const { _id, ...rest } = input;
|
|
37
|
+
await services_1.spendToGetHistoryService.update(String(_id), rest);
|
|
38
|
+
return (0, response_1.response)('Spend to get history updated successfully');
|
|
39
|
+
})),
|
|
40
|
+
deleteById: trpc_1.publicProcedure
|
|
41
|
+
.input(validation_1.DeleteSchema)
|
|
42
|
+
.output(validations_1.SpendToGetHistoryResponseSchema)
|
|
43
|
+
.mutation(async ({ input }) => error_handler_1.ErrorHandler.wrapAsync(async () => {
|
|
44
|
+
await services_1.spendToGetHistoryService.deleteById(input);
|
|
45
|
+
return (0, response_1.response)('Spend to get history deleted successfully');
|
|
46
|
+
})),
|
|
47
|
+
recordRedemption: trpc_1.publicProcedure
|
|
48
|
+
.input(validations_1.RecordSpendToGetRedemptionSchema)
|
|
49
|
+
.output(validations_1.SpendToGetHistoryResponseSchema)
|
|
50
|
+
.mutation(async ({ input }) => error_handler_1.ErrorHandler.wrapAsync(async () => {
|
|
51
|
+
await services_1.spendToGetHistoryService.recordRedemption(input);
|
|
52
|
+
return (0, response_1.response)('Spend to get redemption recorded successfully');
|
|
53
|
+
})),
|
|
54
|
+
returnRedemption: trpc_1.publicProcedure
|
|
55
|
+
.input(validations_1.ReturnSpendToGetRedemptionSchema)
|
|
56
|
+
.output(validations_1.SpendToGetHistoryResponseSchema)
|
|
57
|
+
.mutation(async ({ input }) => error_handler_1.ErrorHandler.wrapAsync(async () => {
|
|
58
|
+
await services_1.spendToGetHistoryService.returnRedemption(input.order);
|
|
59
|
+
return (0, response_1.response)('Spend to get redemption returned successfully');
|
|
60
|
+
})),
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=spend-to-get-history.router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spend-to-get-history.router.js","sourceRoot":"/","sources":["modules/spend-to-get-history/routers/spend-to-get-history.router.ts"],"names":[],"mappings":"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","sourcesContent":["import { createTRPCRouter, publicProcedure } from '@lyxa.ai/core/dist/libraries/trpc';\nimport { spendToGetHistoryService as service } from '@modules/spend-to-get-history/services';\nimport {\n\tSpendToGetHistorySchema as Schema,\n\tSpendToGetHistoryValidationSchema as CreateSchema,\n\tUpdateSpendToGetHistorySchema as UpdateSchema,\n\tSpendToGetHistoryResponseSchema as ResponseSchema,\n\tRecordSpendToGetRedemptionSchema,\n\tReturnSpendToGetRedemptionSchema,\n} from '@modules/spend-to-get-history/validations';\nimport { FilterSchema, DeleteSchema, IdSchema } from '@lyxa.ai/core/dist/utilities/validation';\nimport { ErrorHandler } from '@lyxa.ai/core/dist/utilities/error-handler';\nimport { response } from '@lyxa.ai/core/dist/utilities/response';\n\nexport const spendToGetHistoryRouter = createTRPCRouter({\n\tcreate: publicProcedure\n\t\t.input(CreateSchema)\n\t\t.output(ResponseSchema)\n\t\t.mutation(async ({ input }) =>\n\t\t\tErrorHandler.wrapAsync(async () => {\n\t\t\t\tawait service.create(input);\n\t\t\t\treturn response('Spend to get history created successfully');\n\t\t\t})\n\t\t),\n\n\tgetById: publicProcedure\n\t\t.input(IdSchema)\n\t\t.output(ResponseSchema)\n\t\t.query(async ({ input }) =>\n\t\t\tErrorHandler.wrapAsync(async () => {\n\t\t\t\tconst result = await service.findById(input);\n\t\t\t\treturn response('Spend to get history fetched successfully', Schema.parse(result));\n\t\t\t})\n\t\t),\n\n\tget: publicProcedure\n\t\t.input(FilterSchema)\n\t\t.output(ResponseSchema)\n\t\t.query(async ({ input }) =>\n\t\t\tErrorHandler.wrapAsync(async () => {\n\t\t\t\tconst result = await service.find(input);\n\t\t\t\treturn response('Spend to get history fetched successfully', result);\n\t\t\t})\n\t\t),\n\n\tupdate: publicProcedure\n\t\t.input(UpdateSchema)\n\t\t.output(ResponseSchema)\n\t\t.mutation(async ({ input }) =>\n\t\t\tErrorHandler.wrapAsync(async () => {\n\t\t\t\tconst { _id, ...rest } = input;\n\t\t\t\tawait service.update(String(_id), rest);\n\t\t\t\treturn response('Spend to get history updated successfully');\n\t\t\t})\n\t\t),\n\n\tdeleteById: publicProcedure\n\t\t.input(DeleteSchema)\n\t\t.output(ResponseSchema)\n\t\t.mutation(async ({ input }) =>\n\t\t\tErrorHandler.wrapAsync(async () => {\n\t\t\t\tawait service.deleteById(input);\n\t\t\t\treturn response('Spend to get history deleted successfully');\n\t\t\t})\n\t\t),\n\n\trecordRedemption: publicProcedure\n\t\t.input(RecordSpendToGetRedemptionSchema)\n\t\t.output(ResponseSchema)\n\t\t.mutation(async ({ input }) =>\n\t\t\tErrorHandler.wrapAsync(async () => {\n\t\t\t\tawait service.recordRedemption(input);\n\t\t\t\treturn response('Spend to get redemption recorded successfully');\n\t\t\t})\n\t\t),\n\n\treturnRedemption: publicProcedure\n\t\t.input(ReturnSpendToGetRedemptionSchema)\n\t\t.output(ResponseSchema)\n\t\t.mutation(async ({ input }) =>\n\t\t\tErrorHandler.wrapAsync(async () => {\n\t\t\t\tawait service.returnRedemption(input.order);\n\t\t\t\treturn response('Spend to get redemption returned successfully');\n\t\t\t})\n\t\t),\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["modules/spend-to-get-history/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./spend-to-get-history.service"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["modules/spend-to-get-history/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iEAA+C","sourcesContent":["export * from './spend-to-get-history.service';\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { DocumentType, mongoose } from '@typegoose/typegoose';
|
|
2
|
+
import { FilterDTO, PaginatedResponse, DeleteDTO } from '@lyxa.ai/core/dist/utilities/validation';
|
|
3
|
+
import { ModelType } from '@typegoose/typegoose/lib/types';
|
|
4
|
+
import { SpendToGetHistory as Model } from '@lyxa.ai/core/dist/libraries/mongo/models';
|
|
5
|
+
import { CreateSpendToGetHistoryDTO as CreateDTO, UpdateSpendToGetHistoryDTO as UpdateDTO } from '../../spend-to-get-history/validations';
|
|
6
|
+
export declare class SpendToGetHistoryService {
|
|
7
|
+
private model;
|
|
8
|
+
constructor();
|
|
9
|
+
create(data: CreateDTO): Promise<DocumentType<Model>>;
|
|
10
|
+
findById(id: string | mongoose.Types.ObjectId): Promise<DocumentType<Model>>;
|
|
11
|
+
find(data?: Partial<FilterDTO>): Promise<PaginatedResponse<DocumentType<ModelType<Model>>>>;
|
|
12
|
+
update(id: string, data: UpdateDTO): Promise<DocumentType<Model>>;
|
|
13
|
+
deleteById(data: DeleteDTO): Promise<string>;
|
|
14
|
+
recordRedemption(params: {
|
|
15
|
+
user: mongoose.Types.ObjectId;
|
|
16
|
+
shop: mongoose.Types.ObjectId;
|
|
17
|
+
marketing: mongoose.Types.ObjectId;
|
|
18
|
+
order: mongoose.Types.ObjectId;
|
|
19
|
+
}): Promise<void>;
|
|
20
|
+
returnRedemption(orderId: mongoose.Types.ObjectId): Promise<void>;
|
|
21
|
+
hasUserReachedLimit(userId: mongoose.Types.ObjectId, marketingId: mongoose.Types.ObjectId, perUserLimit: number): Promise<boolean>;
|
|
22
|
+
}
|
|
23
|
+
export declare const spendToGetHistoryService: SpendToGetHistoryService;
|
|
24
|
+
//# sourceMappingURL=spend-to-get-history.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spend-to-get-history.service.d.ts","sourceRoot":"/","sources":["modules/spend-to-get-history/services/spend-to-get-history.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAElG,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAA0B,iBAAiB,IAAI,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAC/G,OAAO,EACN,0BAA0B,IAAI,SAAS,EACvC,0BAA0B,IAAI,SAAS,EACvC,MAAM,2CAA2C,CAAC;AAGnD,qBACa,wBAAwB;IACpC,OAAO,CAAC,KAAK,CAAyD;;IAUzD,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAQrD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAkB5E,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IA0B3F,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IA2BjE,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAkB5C,gBAAgB,CAAC,MAAM,EAAE;QACrC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QACnC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;KAC/B,GAAG,OAAO,CAAC,IAAI,CAAC;IAYJ,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjE,mBAAmB,CAC/B,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAC/B,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EACpC,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC;CAInB;AAED,eAAO,MAAM,wBAAwB,0BAA0C,CAAC"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
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;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.spendToGetHistoryService = exports.SpendToGetHistoryService = void 0;
|
|
46
|
+
const typedi_1 = __importStar(require("typedi"));
|
|
47
|
+
const server_1 = require("@trpc/server");
|
|
48
|
+
const pagination_1 = require("@lyxa.ai/core/dist/utilities/pagination");
|
|
49
|
+
const models_1 = require("@lyxa.ai/core/dist/libraries/mongo/models");
|
|
50
|
+
let SpendToGetHistoryService = class SpendToGetHistoryService {
|
|
51
|
+
model;
|
|
52
|
+
constructor() {
|
|
53
|
+
this.model = models_1.SpendToGetHistoryModel;
|
|
54
|
+
}
|
|
55
|
+
async create(data) {
|
|
56
|
+
return await this.model.create(data);
|
|
57
|
+
}
|
|
58
|
+
async findById(id) {
|
|
59
|
+
const result = await this.model.findOne({
|
|
60
|
+
_id: id,
|
|
61
|
+
deletedAt: null,
|
|
62
|
+
});
|
|
63
|
+
if (!result) {
|
|
64
|
+
throw new server_1.TRPCError({
|
|
65
|
+
code: 'NOT_FOUND',
|
|
66
|
+
message: 'Record not found',
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
return result;
|
|
70
|
+
}
|
|
71
|
+
async find(data) {
|
|
72
|
+
try {
|
|
73
|
+
const paginate = (0, pagination_1.createRawDocumentPaginatorObject)(this.model);
|
|
74
|
+
const options = {
|
|
75
|
+
page: data?.page,
|
|
76
|
+
size: data?.size,
|
|
77
|
+
sort: data?.sort,
|
|
78
|
+
query: data?.query,
|
|
79
|
+
select: data?.select,
|
|
80
|
+
populate: data?.populate,
|
|
81
|
+
};
|
|
82
|
+
const paginatedResult = await paginate(options);
|
|
83
|
+
return paginatedResult;
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
throw new server_1.TRPCError({
|
|
87
|
+
code: 'INTERNAL_SERVER_ERROR',
|
|
88
|
+
message: `err: ${err}`,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async update(id, data) {
|
|
93
|
+
const record = await this.model.findOneAndUpdate({
|
|
94
|
+
_id: id,
|
|
95
|
+
deletedAt: null,
|
|
96
|
+
}, data, {
|
|
97
|
+
new: true,
|
|
98
|
+
runValidators: true,
|
|
99
|
+
});
|
|
100
|
+
if (!record) {
|
|
101
|
+
throw new server_1.TRPCError({
|
|
102
|
+
code: 'NOT_FOUND',
|
|
103
|
+
message: `Record not found`,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
return record;
|
|
107
|
+
}
|
|
108
|
+
async deleteById(data) {
|
|
109
|
+
const { _id, softDelete } = data;
|
|
110
|
+
const result = await this.model.deleteRecord({ _id, deletedAt: null }, softDelete);
|
|
111
|
+
if (!result) {
|
|
112
|
+
throw new server_1.TRPCError({
|
|
113
|
+
code: 'NOT_FOUND',
|
|
114
|
+
message: 'Record not found',
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
return 'Record deleted successfully';
|
|
118
|
+
}
|
|
119
|
+
async recordRedemption(params) {
|
|
120
|
+
await this.model.findOneAndUpdate({ user: params.user, marketing: params.marketing }, { $inc: { redemptionCount: 1 }, $set: { shop: params.shop, lastOrder: params.order } }, { upsert: true, runValidators: true });
|
|
121
|
+
}
|
|
122
|
+
async returnRedemption(orderId) {
|
|
123
|
+
await this.model.findOneAndUpdate({ lastOrder: orderId, redemptionCount: { $gt: 0 } }, { $inc: { redemptionCount: -1 } }, { runValidators: true });
|
|
124
|
+
}
|
|
125
|
+
async hasUserReachedLimit(userId, marketingId, perUserLimit) {
|
|
126
|
+
const history = await this.model.findOne({ user: userId, marketing: marketingId });
|
|
127
|
+
return (history?.redemptionCount ?? 0) >= perUserLimit;
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
exports.SpendToGetHistoryService = SpendToGetHistoryService;
|
|
131
|
+
exports.SpendToGetHistoryService = SpendToGetHistoryService = __decorate([
|
|
132
|
+
(0, typedi_1.Service)(),
|
|
133
|
+
__metadata("design:paramtypes", [])
|
|
134
|
+
], SpendToGetHistoryService);
|
|
135
|
+
exports.spendToGetHistoryService = typedi_1.default.get(SpendToGetHistoryService);
|
|
136
|
+
//# sourceMappingURL=spend-to-get-history.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spend-to-get-history.service.js","sourceRoot":"/","sources":["modules/spend-to-get-history/services/spend-to-get-history.service.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, { Service } from 'typedi';\nimport { TRPCError } from '@trpc/server';\nimport { DocumentType, mongoose, ReturnModelType } from '@typegoose/typegoose';\nimport { FilterDTO, PaginatedResponse, DeleteDTO } from '@lyxa.ai/core/dist/utilities/validation';\nimport { createRawDocumentPaginatorObject, PaginatorOptions } from '@lyxa.ai/core/dist/utilities/pagination';\nimport { ModelType } from '@typegoose/typegoose/lib/types';\nimport { SpendToGetHistoryModel, SpendToGetHistory as Model } from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {\n\tCreateSpendToGetHistoryDTO as CreateDTO,\n\tUpdateSpendToGetHistoryDTO as UpdateDTO,\n} from '@modules/spend-to-get-history/validations';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\n\n@Service()\nexport class SpendToGetHistoryService {\n\tprivate model: typeof SpendToGetHistoryModel & SoftDeleteModel<Model>;\n\n\tconstructor() {\n\t\tthis.model = SpendToGetHistoryModel as typeof SpendToGetHistoryModel & SoftDeleteModel<Model>;\n\t}\n\n\t/**\n\t * Create a new record\n\t * @param data Data for the new record\n\t */\n\tpublic async create(data: CreateDTO): Promise<DocumentType<Model>> {\n\t\treturn await this.model.create(data);\n\t}\n\n\t/**\n\t * Get record by ID\n\t * @param id ID of the record\n\t */\n\tpublic async findById(id: string | mongoose.Types.ObjectId): Promise<DocumentType<Model>> {\n\t\tconst result = await this.model.findOne({\n\t\t\t_id: id,\n\t\t\tdeletedAt: null,\n\t\t});\n\t\tif (!result) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Record not found',\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * Get records\n\t * @param query Query to find records\n\t */\n\tpublic async find(data?: Partial<FilterDTO>): Promise<PaginatedResponse<DocumentType<ModelType<Model>>>> {\n\t\ttry {\n\t\t\tconst paginate = createRawDocumentPaginatorObject(this.model as ReturnModelType<typeof this.model>);\n\t\t\tconst options: PaginatorOptions<typeof Model> = {\n\t\t\t\tpage: data?.page,\n\t\t\t\tsize: data?.size,\n\t\t\t\tsort: data?.sort,\n\t\t\t\tquery: data?.query,\n\t\t\t\tselect: data?.select,\n\t\t\t\tpopulate: data?.populate,\n\t\t\t};\n\t\t\tconst paginatedResult = await paginate(options);\n\t\t\treturn paginatedResult;\n\t\t} catch (err) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: `err: ${err}`,\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Update record\n\t * @param id ID of the record\n\t * @param data Data to update\n\t */\n\tpublic async update(id: string, data: UpdateDTO): Promise<DocumentType<Model>> {\n\t\tconst record = await this.model.findOneAndUpdate(\n\t\t\t{\n\t\t\t\t_id: id,\n\t\t\t\tdeletedAt: null,\n\t\t\t},\n\t\t\tdata,\n\t\t\t{\n\t\t\t\tnew: true,\n\t\t\t\trunValidators: true,\n\t\t\t}\n\t\t);\n\n\t\tif (!record) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: `Record not found`,\n\t\t\t});\n\t\t}\n\n\t\treturn record;\n\t}\n\n\t/**\n\t * Delete record by ID\n\t * @param data ID + softDelete flag\n\t */\n\tpublic async deleteById(data: DeleteDTO): Promise<string> {\n\t\tconst { _id, softDelete } = data;\n\n\t\tconst result = await this.model.deleteRecord({ _id, deletedAt: null }, softDelete);\n\t\tif (!result) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Record not found',\n\t\t\t});\n\t\t}\n\n\t\treturn 'Record deleted successfully';\n\t}\n\n\t/**\n\t * Record a redemption for a user against a Spend-to-Get promotion (per-user limit counter).\n\t * Called on order placement; upserts the one history doc per (user, marketing).\n\t */\n\tpublic async recordRedemption(params: {\n\t\tuser: mongoose.Types.ObjectId;\n\t\tshop: mongoose.Types.ObjectId;\n\t\tmarketing: mongoose.Types.ObjectId;\n\t\torder: mongoose.Types.ObjectId;\n\t}): Promise<void> {\n\t\tawait this.model.findOneAndUpdate(\n\t\t\t{ user: params.user, marketing: params.marketing },\n\t\t\t{ $inc: { redemptionCount: 1 }, $set: { shop: params.shop, lastOrder: params.order } },\n\t\t\t{ upsert: true, runValidators: true }\n\t\t);\n\t}\n\n\t/**\n\t * Reverse a redemption when the order that granted it is cancelled, restoring budget for the\n\t * user's per-user limit.\n\t */\n\tpublic async returnRedemption(orderId: mongoose.Types.ObjectId): Promise<void> {\n\t\tawait this.model.findOneAndUpdate(\n\t\t\t{ lastOrder: orderId, redemptionCount: { $gt: 0 } },\n\t\t\t{ $inc: { redemptionCount: -1 } },\n\t\t\t{ runValidators: true }\n\t\t);\n\t}\n\n\t/**\n\t * Whether a user has exhausted their per-user redemption limit for a Spend-to-Get promotion.\n\t */\n\tpublic async hasUserReachedLimit(\n\t\tuserId: mongoose.Types.ObjectId,\n\t\tmarketingId: mongoose.Types.ObjectId,\n\t\tperUserLimit: number\n\t): Promise<boolean> {\n\t\tconst history = await this.model.findOne({ user: userId, marketing: marketingId });\n\t\treturn (history?.redemptionCount ?? 0) >= perUserLimit;\n\t}\n}\n\nexport const spendToGetHistoryService = Container.get(SpendToGetHistoryService);\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { DocumentType, mongoose } from '@typegoose/typegoose';
|
|
2
|
+
import { ModelType } from '@typegoose/typegoose/lib/types';
|
|
3
|
+
import { SpendToGetHistory as Model } from '@lyxa.ai/core/dist/libraries/mongo/models';
|
|
4
|
+
import { FilterDTO, PaginatedResponse } from '@lyxa.ai/core/dist/utilities/validation';
|
|
5
|
+
import { CreateSpendToGetHistoryDTO as CreateDTO, UpdateSpendToGetHistoryDTO as UpdateDTO } from './spend-to-get-history.validation';
|
|
6
|
+
export declare class SpendToGetHistoryRepository {
|
|
7
|
+
private model;
|
|
8
|
+
constructor();
|
|
9
|
+
create(data: CreateDTO): Promise<DocumentType<Model>>;
|
|
10
|
+
findById(id: string | mongoose.Types.ObjectId): Promise<DocumentType<Model> | null>;
|
|
11
|
+
paginate(data?: Partial<FilterDTO>): Promise<PaginatedResponse<DocumentType<ModelType<Model>>>>;
|
|
12
|
+
updateById(id: string, data: UpdateDTO): Promise<DocumentType<Model> | null>;
|
|
13
|
+
deleteById(id: string | mongoose.Types.ObjectId, softDelete: boolean): Promise<unknown>;
|
|
14
|
+
incrementRedemption(params: {
|
|
15
|
+
user: mongoose.Types.ObjectId;
|
|
16
|
+
shop: mongoose.Types.ObjectId;
|
|
17
|
+
marketing: mongoose.Types.ObjectId;
|
|
18
|
+
order: mongoose.Types.ObjectId;
|
|
19
|
+
}): Promise<void>;
|
|
20
|
+
decrementRedemption(orderId: mongoose.Types.ObjectId): Promise<void>;
|
|
21
|
+
findByUserAndMarketing(userId: mongoose.Types.ObjectId, marketingId: mongoose.Types.ObjectId): Promise<DocumentType<Model> | null>;
|
|
22
|
+
}
|
|
23
|
+
export declare const spendToGetHistoryRepository: SpendToGetHistoryRepository;
|
|
24
|
+
//# sourceMappingURL=spend-to-get-history.repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spend-to-get-history.repository.d.ts","sourceRoot":"/","sources":["modules/spend-to-get-history/spend-to-get-history.repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAA0B,iBAAiB,IAAI,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAG/G,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,EACN,0BAA0B,IAAI,SAAS,EACvC,0BAA0B,IAAI,SAAS,EACvC,MAAM,mCAAmC,CAAC;AAE3C,qBACa,2BAA2B;IACvC,OAAO,CAAC,KAAK,CAAyD;;IAMhE,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAIrD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAInF,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAa/F,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAO5E,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvF,mBAAmB,CAAC,MAAM,EAAE;QACjC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QACnC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;KAC/B,GAAG,OAAO,CAAC,IAAI,CAAC;IAQX,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpE,sBAAsB,CAC3B,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAC/B,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAClC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;CAGtC;AAED,eAAO,MAAM,2BAA2B,6BAA6C,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
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;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.spendToGetHistoryRepository = exports.SpendToGetHistoryRepository = void 0;
|
|
46
|
+
const typedi_1 = __importStar(require("typedi"));
|
|
47
|
+
const models_1 = require("@lyxa.ai/core/dist/libraries/mongo/models");
|
|
48
|
+
const pagination_1 = require("@lyxa.ai/core/dist/utilities/pagination");
|
|
49
|
+
let SpendToGetHistoryRepository = class SpendToGetHistoryRepository {
|
|
50
|
+
model;
|
|
51
|
+
constructor() {
|
|
52
|
+
this.model = models_1.SpendToGetHistoryModel;
|
|
53
|
+
}
|
|
54
|
+
async create(data) {
|
|
55
|
+
return this.model.create(data);
|
|
56
|
+
}
|
|
57
|
+
async findById(id) {
|
|
58
|
+
return this.model.findOne({ _id: id, deletedAt: null });
|
|
59
|
+
}
|
|
60
|
+
async paginate(data) {
|
|
61
|
+
const paginate = (0, pagination_1.createRawDocumentPaginatorObject)(this.model);
|
|
62
|
+
const options = {
|
|
63
|
+
page: data?.page,
|
|
64
|
+
size: data?.size,
|
|
65
|
+
sort: data?.sort,
|
|
66
|
+
query: data?.query,
|
|
67
|
+
select: data?.select,
|
|
68
|
+
populate: data?.populate,
|
|
69
|
+
};
|
|
70
|
+
return paginate(options);
|
|
71
|
+
}
|
|
72
|
+
async updateById(id, data) {
|
|
73
|
+
return this.model.findOneAndUpdate({ _id: id, deletedAt: null }, data, {
|
|
74
|
+
new: true,
|
|
75
|
+
runValidators: true,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
async deleteById(id, softDelete) {
|
|
79
|
+
return this.model.deleteRecord({ _id: id, deletedAt: null }, softDelete);
|
|
80
|
+
}
|
|
81
|
+
async incrementRedemption(params) {
|
|
82
|
+
await this.model.findOneAndUpdate({ user: params.user, marketing: params.marketing }, { $inc: { redemptionCount: 1 }, $set: { shop: params.shop, lastOrder: params.order } }, { upsert: true, runValidators: true });
|
|
83
|
+
}
|
|
84
|
+
async decrementRedemption(orderId) {
|
|
85
|
+
await this.model.findOneAndUpdate({ lastOrder: orderId, redemptionCount: { $gt: 0 } }, { $inc: { redemptionCount: -1 } }, { runValidators: true });
|
|
86
|
+
}
|
|
87
|
+
async findByUserAndMarketing(userId, marketingId) {
|
|
88
|
+
return this.model.findOne({ user: userId, marketing: marketingId });
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
exports.SpendToGetHistoryRepository = SpendToGetHistoryRepository;
|
|
92
|
+
exports.SpendToGetHistoryRepository = SpendToGetHistoryRepository = __decorate([
|
|
93
|
+
(0, typedi_1.Service)(),
|
|
94
|
+
__metadata("design:paramtypes", [])
|
|
95
|
+
], SpendToGetHistoryRepository);
|
|
96
|
+
exports.spendToGetHistoryRepository = typedi_1.default.get(SpendToGetHistoryRepository);
|
|
97
|
+
//# sourceMappingURL=spend-to-get-history.repository.js.map
|