@lyxa.ai/marketing 1.0.46 → 1.0.48
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 +2 -0
- package/dist/lib/event/event-initializations.js.map +1 -1
- package/dist/lib/index.d.ts +1414 -13
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +3 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/modules/coupon/routers/coupon.router.d.ts +72 -6
- package/dist/lib/modules/coupon/routers/coupon.router.d.ts.map +1 -1
- package/dist/lib/modules/coupon/routers/coupon.router.js +12 -3
- package/dist/lib/modules/coupon/routers/coupon.router.js.map +1 -1
- package/dist/lib/modules/coupon/services/coupon.service.d.ts +1 -0
- package/dist/lib/modules/coupon/services/coupon.service.d.ts.map +1 -1
- package/dist/lib/modules/coupon/services/coupon.service.js +102 -4
- package/dist/lib/modules/coupon/services/coupon.service.js.map +1 -1
- package/dist/lib/modules/coupon/services/custom-coupon.service.d.ts +2 -0
- package/dist/lib/modules/coupon/services/custom-coupon.service.d.ts.map +1 -1
- package/dist/lib/modules/coupon/services/custom-coupon.service.js +1 -1
- package/dist/lib/modules/coupon/services/custom-coupon.service.js.map +1 -1
- package/dist/lib/modules/coupon/services/global-coupon.service.d.ts +1 -1
- package/dist/lib/modules/coupon/services/global-coupon.service.d.ts.map +1 -1
- package/dist/lib/modules/coupon/services/global-coupon.service.js +16 -10
- package/dist/lib/modules/coupon/services/global-coupon.service.js.map +1 -1
- package/dist/lib/modules/coupon/services/helper.service.d.ts +2 -1
- package/dist/lib/modules/coupon/services/helper.service.d.ts.map +1 -1
- package/dist/lib/modules/coupon/services/helper.service.js +7 -1
- package/dist/lib/modules/coupon/services/helper.service.js.map +1 -1
- package/dist/lib/modules/coupon/services/individual-store-coupon.service.d.ts +2 -0
- package/dist/lib/modules/coupon/services/individual-store-coupon.service.d.ts.map +1 -1
- package/dist/lib/modules/coupon/services/individual-store-coupon.service.js +2 -2
- package/dist/lib/modules/coupon/services/individual-store-coupon.service.js.map +1 -1
- package/dist/lib/modules/coupon/services/individual-user-coupon.service.d.ts.map +1 -1
- package/dist/lib/modules/coupon/services/individual-user-coupon.service.js +6 -0
- package/dist/lib/modules/coupon/services/individual-user-coupon.service.js.map +1 -1
- package/dist/lib/modules/coupon/services/patterns/repository/CouponMetricsRepository.d.ts +10 -4
- package/dist/lib/modules/coupon/services/patterns/repository/CouponMetricsRepository.d.ts.map +1 -1
- package/dist/lib/modules/coupon/services/patterns/repository/CouponMetricsRepository.js +88 -9
- package/dist/lib/modules/coupon/services/patterns/repository/CouponMetricsRepository.js.map +1 -1
- package/dist/lib/modules/coupon/services/patterns/repository/CouponRepository.d.ts.map +1 -1
- package/dist/lib/modules/coupon/services/patterns/repository/CouponRepository.js +20 -1
- package/dist/lib/modules/coupon/services/patterns/repository/CouponRepository.js.map +1 -1
- package/dist/lib/modules/coupon/services/referral-code-coupon.service.d.ts.map +1 -1
- package/dist/lib/modules/coupon/services/referral-code-coupon.service.js +1 -1
- package/dist/lib/modules/coupon/services/referral-code-coupon.service.js.map +1 -1
- package/dist/lib/modules/coupon/services/referral-reward-coupon.service.d.ts +1 -1
- package/dist/lib/modules/coupon/services/referral-reward-coupon.service.d.ts.map +1 -1
- package/dist/lib/modules/coupon/services/referral-reward-coupon.service.js +36 -19
- package/dist/lib/modules/coupon/services/referral-reward-coupon.service.js.map +1 -1
- package/dist/lib/modules/coupon/services/shops-categories-coupon.service.d.ts +2 -0
- package/dist/lib/modules/coupon/services/shops-categories-coupon.service.d.ts.map +1 -1
- package/dist/lib/modules/coupon/services/shops-categories-coupon.service.js +2 -2
- package/dist/lib/modules/coupon/services/shops-categories-coupon.service.js.map +1 -1
- package/dist/lib/modules/coupon/validations/coupon.validation.d.ts +359 -34
- package/dist/lib/modules/coupon/validations/coupon.validation.d.ts.map +1 -1
- package/dist/lib/modules/coupon/validations/coupon.validation.js +16 -3
- package/dist/lib/modules/coupon/validations/coupon.validation.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/limited-time-offer.router.d.ts +6 -6
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts +6 -6
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts +30 -30
- package/dist/lib/modules/marketing/services/marketing.service.d.ts.map +1 -1
- package/dist/lib/modules/marketing/services/marketing.service.js +8 -2
- package/dist/lib/modules/marketing/services/marketing.service.js.map +1 -1
- package/dist/lib/modules/marketing/services/synchronize-product-marketing.service.d.ts +2 -0
- package/dist/lib/modules/marketing/services/synchronize-product-marketing.service.d.ts.map +1 -1
- package/dist/lib/modules/marketing/services/synchronize-product-marketing.service.js +14 -0
- package/dist/lib/modules/marketing/services/synchronize-product-marketing.service.js.map +1 -1
- package/dist/lib/modules/marketing/validations/buy1-get1-marketing.validation.d.ts +24 -24
- package/dist/lib/modules/marketing/validations/discount-marketing.validation.d.ts +36 -36
- package/dist/lib/modules/marketing/validations/featured-marketing.validation.d.ts +6 -6
- package/dist/lib/modules/marketing/validations/free-delivery-marketing.validation.d.ts +4 -4
- package/dist/lib/modules/marketing/validations/marketing.validation.d.ts +2 -2
- package/dist/lib/modules/marketing/validations/product-marketing.validation.d.ts +7 -7
- package/dist/lib/modules/marketing/validations/punch-marketing.validation.d.ts +4 -4
- 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/tournament/config/config.builder.d.ts +5 -0
- package/dist/lib/modules/tournament/config/config.builder.d.ts.map +1 -0
- package/dist/lib/modules/tournament/config/config.builder.js +19 -0
- package/dist/lib/modules/tournament/config/config.builder.js.map +1 -0
- package/dist/lib/modules/tournament/config/config.repository.d.ts +13 -0
- package/dist/lib/modules/tournament/config/config.repository.d.ts.map +1 -0
- package/dist/lib/modules/tournament/config/config.repository.js +77 -0
- package/dist/lib/modules/tournament/config/config.repository.js.map +1 -0
- package/dist/lib/modules/tournament/config/config.router.d.ts +363 -0
- package/dist/lib/modules/tournament/config/config.router.d.ts.map +1 -0
- package/dist/lib/modules/tournament/config/config.router.js +40 -0
- package/dist/lib/modules/tournament/config/config.router.js.map +1 -0
- package/dist/lib/modules/tournament/config/config.service.d.ts +14 -0
- package/dist/lib/modules/tournament/config/config.service.d.ts.map +1 -0
- package/dist/lib/modules/tournament/config/config.service.js +101 -0
- package/dist/lib/modules/tournament/config/config.service.js.map +1 -0
- package/dist/lib/modules/tournament/config/config.validation.d.ts +1014 -0
- package/dist/lib/modules/tournament/config/config.validation.d.ts.map +1 -0
- package/dist/lib/modules/tournament/config/config.validation.js +70 -0
- package/dist/lib/modules/tournament/config/config.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/match/match.builder.d.ts +38 -0
- package/dist/lib/modules/tournament/match/match.builder.d.ts.map +1 -0
- package/dist/lib/modules/tournament/match/match.builder.js +37 -0
- package/dist/lib/modules/tournament/match/match.builder.js.map +1 -0
- package/dist/lib/modules/tournament/match/match.repository.d.ts +13 -0
- package/dist/lib/modules/tournament/match/match.repository.d.ts.map +1 -0
- package/dist/lib/modules/tournament/match/match.repository.js +84 -0
- package/dist/lib/modules/tournament/match/match.repository.js.map +1 -0
- package/dist/lib/modules/tournament/match/match.router.d.ts +489 -0
- package/dist/lib/modules/tournament/match/match.router.d.ts.map +1 -0
- package/dist/lib/modules/tournament/match/match.router.js +56 -0
- package/dist/lib/modules/tournament/match/match.router.js.map +1 -0
- package/dist/lib/modules/tournament/match/match.service.d.ts +29 -0
- package/dist/lib/modules/tournament/match/match.service.d.ts.map +1 -0
- package/dist/lib/modules/tournament/match/match.service.js +193 -0
- package/dist/lib/modules/tournament/match/match.service.js.map +1 -0
- package/dist/lib/modules/tournament/match/match.validation.d.ts +880 -0
- package/dist/lib/modules/tournament/match/match.validation.d.ts.map +1 -0
- package/dist/lib/modules/tournament/match/match.validation.js +74 -0
- package/dist/lib/modules/tournament/match/match.validation.js.map +1 -0
- package/dist/lib/modules/tournament/notification/jobs/notification.producer.d.ts +13 -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 +28 -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 +7 -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 +76 -0
- package/dist/lib/modules/tournament/notification/jobs/notification.worker.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 +86 -0
- package/dist/lib/modules/tournament/notification/notification.scheduler.service.js.map +1 -0
- package/dist/lib/modules/tournament/notification/notification.service.d.ts +11 -0
- package/dist/lib/modules/tournament/notification/notification.service.d.ts.map +1 -0
- package/dist/lib/modules/tournament/notification/notification.service.js +101 -0
- package/dist/lib/modules/tournament/notification/notification.service.js.map +1 -0
- package/dist/lib/modules/tournament/participant/participant.repository.d.ts +12 -0
- package/dist/lib/modules/tournament/participant/participant.repository.d.ts.map +1 -0
- package/dist/lib/modules/tournament/participant/participant.repository.js +73 -0
- package/dist/lib/modules/tournament/participant/participant.repository.js.map +1 -0
- package/dist/lib/modules/tournament/participant/participant.router.d.ts +104 -0
- package/dist/lib/modules/tournament/participant/participant.router.d.ts.map +1 -0
- package/dist/lib/modules/tournament/participant/participant.router.js +28 -0
- package/dist/lib/modules/tournament/participant/participant.router.js.map +1 -0
- package/dist/lib/modules/tournament/participant/participant.service.d.ts +14 -0
- package/dist/lib/modules/tournament/participant/participant.service.d.ts.map +1 -0
- package/dist/lib/modules/tournament/participant/participant.service.js +103 -0
- package/dist/lib/modules/tournament/participant/participant.service.js.map +1 -0
- package/dist/lib/modules/tournament/participant/participant.validation.d.ts +719 -0
- package/dist/lib/modules/tournament/participant/participant.validation.d.ts.map +1 -0
- package/dist/lib/modules/tournament/participant/participant.validation.js +44 -0
- package/dist/lib/modules/tournament/participant/participant.validation.js.map +1 -0
- package/dist/lib/modules/tournament/prediction/prediction.builder.d.ts +14 -0
- package/dist/lib/modules/tournament/prediction/prediction.builder.d.ts.map +1 -0
- package/dist/lib/modules/tournament/prediction/prediction.builder.js +23 -0
- package/dist/lib/modules/tournament/prediction/prediction.builder.js.map +1 -0
- package/dist/lib/modules/tournament/prediction/prediction.repository.d.ts +11 -0
- package/dist/lib/modules/tournament/prediction/prediction.repository.d.ts.map +1 -0
- package/dist/lib/modules/tournament/prediction/prediction.repository.js +73 -0
- package/dist/lib/modules/tournament/prediction/prediction.repository.js.map +1 -0
- package/dist/lib/modules/tournament/prediction/prediction.router.d.ts +133 -0
- package/dist/lib/modules/tournament/prediction/prediction.router.d.ts.map +1 -0
- package/dist/lib/modules/tournament/prediction/prediction.router.js +36 -0
- package/dist/lib/modules/tournament/prediction/prediction.router.js.map +1 -0
- package/dist/lib/modules/tournament/prediction/prediction.service.d.ts +17 -0
- package/dist/lib/modules/tournament/prediction/prediction.service.d.ts.map +1 -0
- package/dist/lib/modules/tournament/prediction/prediction.service.js +125 -0
- package/dist/lib/modules/tournament/prediction/prediction.service.js.map +1 -0
- package/dist/lib/modules/tournament/prediction/prediction.validation.d.ts +575 -0
- package/dist/lib/modules/tournament/prediction/prediction.validation.d.ts.map +1 -0
- package/dist/lib/modules/tournament/prediction/prediction.validation.js +46 -0
- package/dist/lib/modules/tournament/prediction/prediction.validation.js.map +1 -0
- package/dist/lib/modules/tournament/reward/handlers/coupon-reward.handler.d.ts +8 -0
- package/dist/lib/modules/tournament/reward/handlers/coupon-reward.handler.d.ts.map +1 -0
- package/dist/lib/modules/tournament/reward/handlers/coupon-reward.handler.js +65 -0
- package/dist/lib/modules/tournament/reward/handlers/coupon-reward.handler.js.map +1 -0
- package/dist/lib/modules/tournament/reward/reward.factory.d.ts +6 -0
- package/dist/lib/modules/tournament/reward/reward.factory.d.ts.map +1 -0
- package/dist/lib/modules/tournament/reward/reward.factory.js +21 -0
- package/dist/lib/modules/tournament/reward/reward.factory.js.map +1 -0
- package/dist/lib/modules/tournament/reward/reward.interface.d.ts +5 -0
- package/dist/lib/modules/tournament/reward/reward.interface.d.ts.map +1 -0
- package/dist/lib/modules/tournament/reward/reward.interface.js +3 -0
- package/dist/lib/modules/tournament/reward/reward.interface.js.map +1 -0
- package/dist/lib/modules/tournament/reward/reward.service.d.ts +6 -0
- package/dist/lib/modules/tournament/reward/reward.service.d.ts.map +1 -0
- package/dist/lib/modules/tournament/reward/reward.service.js +56 -0
- package/dist/lib/modules/tournament/reward/reward.service.js.map +1 -0
- package/dist/lib/modules/tournament/reward/reward.types.d.ts +11 -0
- package/dist/lib/modules/tournament/reward/reward.types.d.ts.map +1 -0
- package/dist/lib/modules/tournament/reward/reward.types.js +8 -0
- package/dist/lib/modules/tournament/reward/reward.types.js.map +1 -0
- package/dist/lib/modules/tournament/team/team.builder.d.ts +19 -0
- package/dist/lib/modules/tournament/team/team.builder.d.ts.map +1 -0
- package/dist/lib/modules/tournament/team/team.builder.js +18 -0
- package/dist/lib/modules/tournament/team/team.builder.js.map +1 -0
- package/dist/lib/modules/tournament/team/team.repository.d.ts +11 -0
- package/dist/lib/modules/tournament/team/team.repository.d.ts.map +1 -0
- package/dist/lib/modules/tournament/team/team.repository.js +71 -0
- package/dist/lib/modules/tournament/team/team.repository.js.map +1 -0
- package/dist/lib/modules/tournament/team/team.router.d.ts +237 -0
- package/dist/lib/modules/tournament/team/team.router.d.ts.map +1 -0
- package/dist/lib/modules/tournament/team/team.router.js +36 -0
- package/dist/lib/modules/tournament/team/team.router.js.map +1 -0
- package/dist/lib/modules/tournament/team/team.service.d.ts +15 -0
- package/dist/lib/modules/tournament/team/team.service.d.ts.map +1 -0
- package/dist/lib/modules/tournament/team/team.service.js +137 -0
- package/dist/lib/modules/tournament/team/team.service.js.map +1 -0
- package/dist/lib/modules/tournament/team/team.validation.d.ts +986 -0
- package/dist/lib/modules/tournament/team/team.validation.d.ts.map +1 -0
- package/dist/lib/modules/tournament/team/team.validation.js +55 -0
- package/dist/lib/modules/tournament/team/team.validation.js.map +1 -0
- package/dist/lib/modules/tournament/tournament.router.d.ts +1336 -0
- package/dist/lib/modules/tournament/tournament.router.d.ts.map +1 -0
- package/dist/lib/modules/tournament/tournament.router.js +17 -0
- package/dist/lib/modules/tournament/tournament.router.js.map +1 -0
- package/dist/types/event/event-initializations.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 +1414 -13
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/modules/coupon/routers/coupon.router.d.ts +72 -6
- package/dist/types/modules/coupon/routers/coupon.router.d.ts.map +1 -1
- package/dist/types/modules/coupon/services/coupon.service.d.ts +1 -0
- package/dist/types/modules/coupon/services/coupon.service.d.ts.map +1 -1
- package/dist/types/modules/coupon/services/custom-coupon.service.d.ts +2 -0
- package/dist/types/modules/coupon/services/custom-coupon.service.d.ts.map +1 -1
- package/dist/types/modules/coupon/services/global-coupon.service.d.ts +1 -1
- package/dist/types/modules/coupon/services/global-coupon.service.d.ts.map +1 -1
- package/dist/types/modules/coupon/services/helper.service.d.ts +2 -1
- package/dist/types/modules/coupon/services/helper.service.d.ts.map +1 -1
- package/dist/types/modules/coupon/services/individual-store-coupon.service.d.ts +2 -0
- package/dist/types/modules/coupon/services/individual-store-coupon.service.d.ts.map +1 -1
- package/dist/types/modules/coupon/services/individual-user-coupon.service.d.ts.map +1 -1
- package/dist/types/modules/coupon/services/patterns/repository/CouponMetricsRepository.d.ts +10 -4
- package/dist/types/modules/coupon/services/patterns/repository/CouponMetricsRepository.d.ts.map +1 -1
- package/dist/types/modules/coupon/services/patterns/repository/CouponRepository.d.ts.map +1 -1
- package/dist/types/modules/coupon/services/referral-code-coupon.service.d.ts.map +1 -1
- package/dist/types/modules/coupon/services/referral-reward-coupon.service.d.ts +1 -1
- package/dist/types/modules/coupon/services/referral-reward-coupon.service.d.ts.map +1 -1
- package/dist/types/modules/coupon/services/shops-categories-coupon.service.d.ts +2 -0
- package/dist/types/modules/coupon/services/shops-categories-coupon.service.d.ts.map +1 -1
- package/dist/types/modules/coupon/validations/coupon.validation.d.ts +359 -34
- package/dist/types/modules/coupon/validations/coupon.validation.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/limited-time-offer.router.d.ts +6 -6
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts +6 -6
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts +30 -30
- package/dist/types/modules/marketing/services/marketing.service.d.ts.map +1 -1
- package/dist/types/modules/marketing/services/synchronize-product-marketing.service.d.ts +2 -0
- package/dist/types/modules/marketing/services/synchronize-product-marketing.service.d.ts.map +1 -1
- package/dist/types/modules/marketing/validations/buy1-get1-marketing.validation.d.ts +24 -24
- package/dist/types/modules/marketing/validations/discount-marketing.validation.d.ts +36 -36
- package/dist/types/modules/marketing/validations/featured-marketing.validation.d.ts +6 -6
- package/dist/types/modules/marketing/validations/free-delivery-marketing.validation.d.ts +4 -4
- package/dist/types/modules/marketing/validations/marketing.validation.d.ts +2 -2
- package/dist/types/modules/marketing/validations/product-marketing.validation.d.ts +7 -7
- package/dist/types/modules/marketing/validations/punch-marketing.validation.d.ts +4 -4
- 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/tournament/config/config.builder.d.ts +5 -0
- package/dist/types/modules/tournament/config/config.builder.d.ts.map +1 -0
- package/dist/types/modules/tournament/config/config.repository.d.ts +13 -0
- package/dist/types/modules/tournament/config/config.repository.d.ts.map +1 -0
- package/dist/types/modules/tournament/config/config.router.d.ts +363 -0
- package/dist/types/modules/tournament/config/config.router.d.ts.map +1 -0
- package/dist/types/modules/tournament/config/config.service.d.ts +14 -0
- package/dist/types/modules/tournament/config/config.service.d.ts.map +1 -0
- package/dist/types/modules/tournament/config/config.validation.d.ts +1014 -0
- package/dist/types/modules/tournament/config/config.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/match/match.builder.d.ts +38 -0
- package/dist/types/modules/tournament/match/match.builder.d.ts.map +1 -0
- package/dist/types/modules/tournament/match/match.repository.d.ts +13 -0
- package/dist/types/modules/tournament/match/match.repository.d.ts.map +1 -0
- package/dist/types/modules/tournament/match/match.router.d.ts +489 -0
- package/dist/types/modules/tournament/match/match.router.d.ts.map +1 -0
- package/dist/types/modules/tournament/match/match.service.d.ts +29 -0
- package/dist/types/modules/tournament/match/match.service.d.ts.map +1 -0
- package/dist/types/modules/tournament/match/match.validation.d.ts +880 -0
- package/dist/types/modules/tournament/match/match.validation.d.ts.map +1 -0
- package/dist/types/modules/tournament/notification/jobs/notification.producer.d.ts +13 -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 +7 -0
- package/dist/types/modules/tournament/notification/jobs/notification.worker.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/dist/types/modules/tournament/notification/notification.service.d.ts +11 -0
- package/dist/types/modules/tournament/notification/notification.service.d.ts.map +1 -0
- package/dist/types/modules/tournament/participant/participant.repository.d.ts +12 -0
- package/dist/types/modules/tournament/participant/participant.repository.d.ts.map +1 -0
- package/dist/types/modules/tournament/participant/participant.router.d.ts +104 -0
- package/dist/types/modules/tournament/participant/participant.router.d.ts.map +1 -0
- package/dist/types/modules/tournament/participant/participant.service.d.ts +14 -0
- package/dist/types/modules/tournament/participant/participant.service.d.ts.map +1 -0
- package/dist/types/modules/tournament/participant/participant.validation.d.ts +719 -0
- package/dist/types/modules/tournament/participant/participant.validation.d.ts.map +1 -0
- package/dist/types/modules/tournament/prediction/prediction.builder.d.ts +14 -0
- package/dist/types/modules/tournament/prediction/prediction.builder.d.ts.map +1 -0
- package/dist/types/modules/tournament/prediction/prediction.repository.d.ts +11 -0
- package/dist/types/modules/tournament/prediction/prediction.repository.d.ts.map +1 -0
- package/dist/types/modules/tournament/prediction/prediction.router.d.ts +133 -0
- package/dist/types/modules/tournament/prediction/prediction.router.d.ts.map +1 -0
- package/dist/types/modules/tournament/prediction/prediction.service.d.ts +17 -0
- package/dist/types/modules/tournament/prediction/prediction.service.d.ts.map +1 -0
- package/dist/types/modules/tournament/prediction/prediction.validation.d.ts +575 -0
- package/dist/types/modules/tournament/prediction/prediction.validation.d.ts.map +1 -0
- package/dist/types/modules/tournament/reward/handlers/coupon-reward.handler.d.ts +8 -0
- package/dist/types/modules/tournament/reward/handlers/coupon-reward.handler.d.ts.map +1 -0
- package/dist/types/modules/tournament/reward/reward.factory.d.ts +6 -0
- package/dist/types/modules/tournament/reward/reward.factory.d.ts.map +1 -0
- package/dist/types/modules/tournament/reward/reward.interface.d.ts +5 -0
- package/dist/types/modules/tournament/reward/reward.interface.d.ts.map +1 -0
- package/dist/types/modules/tournament/reward/reward.service.d.ts +6 -0
- package/dist/types/modules/tournament/reward/reward.service.d.ts.map +1 -0
- package/dist/types/modules/tournament/reward/reward.types.d.ts +11 -0
- package/dist/types/modules/tournament/reward/reward.types.d.ts.map +1 -0
- package/dist/types/modules/tournament/team/team.builder.d.ts +19 -0
- package/dist/types/modules/tournament/team/team.builder.d.ts.map +1 -0
- package/dist/types/modules/tournament/team/team.repository.d.ts +11 -0
- package/dist/types/modules/tournament/team/team.repository.d.ts.map +1 -0
- package/dist/types/modules/tournament/team/team.router.d.ts +237 -0
- package/dist/types/modules/tournament/team/team.router.d.ts.map +1 -0
- package/dist/types/modules/tournament/team/team.service.d.ts +15 -0
- package/dist/types/modules/tournament/team/team.service.d.ts.map +1 -0
- package/dist/types/modules/tournament/team/team.validation.d.ts +986 -0
- package/dist/types/modules/tournament/team/team.validation.d.ts.map +1 -0
- package/dist/types/modules/tournament/tournament.router.d.ts +1336 -0
- package/dist/types/modules/tournament/tournament.router.d.ts.map +1 -0
- package/package.json +3 -3
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts +0 -1
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts.map +0 -1
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.service.js +0 -2
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.service.js.map +0 -1
|
@@ -49,7 +49,9 @@ const models_1 = require("@lyxa.ai/core/dist/libraries/mongo/models/");
|
|
|
49
49
|
const enum_1 = require("@lyxa.ai/core/dist/utilities/enum");
|
|
50
50
|
const currency_1 = require("@lyxa.ai/core/dist/utilities/currency");
|
|
51
51
|
const shared_1 = require("@lyxa.ai/core/dist/utilities/shared");
|
|
52
|
-
const
|
|
52
|
+
const notification_1 = require("@lyxa.ai/core/dist/libraries/notification");
|
|
53
|
+
const event_1 = require("@lyxa.ai/core/dist/libraries/event");
|
|
54
|
+
const enum_2 = require("@lyxa.ai/core/dist/utilities/enum");
|
|
53
55
|
let ReferralRewardCouponService = class ReferralRewardCouponService {
|
|
54
56
|
model;
|
|
55
57
|
couponModel;
|
|
@@ -142,34 +144,43 @@ let ReferralRewardCouponService = class ReferralRewardCouponService {
|
|
|
142
144
|
isTotalOrderLimitEnabled: true,
|
|
143
145
|
});
|
|
144
146
|
await this.userModel.findByIdAndUpdate(user, { $push: { coupons: referralRewardCoupon._id } }, { new: true, runValidators: true });
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
147
|
+
await (0, event_1.publishEvent)(new notification_1.NotificationEvent({
|
|
148
|
+
title: 'Referral reward received 🙌',
|
|
149
|
+
body: 'Nice one! Your referral reward is ready to use. Thank you for sharing Lyxa 💛',
|
|
150
|
+
data: {
|
|
151
|
+
saveNotification: true,
|
|
152
|
+
accountType: enum_2.NotificationAccountType.USER,
|
|
153
|
+
recipientId: user._id,
|
|
154
|
+
isGlobal: false,
|
|
155
|
+
isClickable: true,
|
|
156
|
+
clickType: enum_2.ClickType.CLICKABLE_COUPON,
|
|
157
|
+
},
|
|
158
|
+
}));
|
|
148
159
|
}
|
|
149
|
-
async validateCoupon(data,
|
|
150
|
-
if (
|
|
151
|
-
|
|
152
|
-
|
|
160
|
+
async validateCoupon(data, coupon) {
|
|
161
|
+
if (coupon.isMinOrderValueEnabled &&
|
|
162
|
+
coupon.minOrderValue &&
|
|
163
|
+
coupon.minOrderValue > data.amountBeforeCoupon) {
|
|
153
164
|
return {
|
|
154
165
|
isValid: false,
|
|
155
|
-
message: `Minimum order amount ${
|
|
166
|
+
message: `Minimum order amount ${coupon.minOrderValue}$ is not met!`,
|
|
156
167
|
};
|
|
157
168
|
}
|
|
158
|
-
if (
|
|
169
|
+
if (coupon.user._id.toString() != data.user?.toString()) {
|
|
159
170
|
return {
|
|
160
171
|
isValid: false,
|
|
161
172
|
message: 'This reward is not for you',
|
|
162
173
|
};
|
|
163
174
|
}
|
|
164
|
-
let discountAmount =
|
|
165
|
-
?
|
|
166
|
-
: (0, shared_1.roundBaseCurrency)((data.amountBeforeCoupon *
|
|
167
|
-
let secondaryDiscountAmount =
|
|
168
|
-
? await (0, currency_1.convertToSecondary)(
|
|
169
|
-
: (0, shared_1.roundSecondaryCurrency)((data.secondaryAmountBeforeCoupon *
|
|
170
|
-
if (
|
|
171
|
-
discountAmount = Math.min(discountAmount,
|
|
172
|
-
secondaryDiscountAmount = Math.min(secondaryDiscountAmount, await (0, currency_1.convertToSecondary)(
|
|
175
|
+
let discountAmount = coupon.valueType == enum_1.ValueType.FIXED
|
|
176
|
+
? coupon.value
|
|
177
|
+
: (0, shared_1.roundBaseCurrency)((data.amountBeforeCoupon * coupon.value) / 100);
|
|
178
|
+
let secondaryDiscountAmount = coupon.valueType == enum_1.ValueType.FIXED
|
|
179
|
+
? await (0, currency_1.convertToSecondary)(coupon.value)
|
|
180
|
+
: (0, shared_1.roundSecondaryCurrency)((data.secondaryAmountBeforeCoupon * coupon.value) / 100);
|
|
181
|
+
if (coupon.isMaxDiscountLimitEnabled && coupon.maxDiscountLimit) {
|
|
182
|
+
discountAmount = Math.min(discountAmount, coupon.maxDiscountLimit);
|
|
183
|
+
secondaryDiscountAmount = Math.min(secondaryDiscountAmount, await (0, currency_1.convertToSecondary)(coupon.maxDiscountLimit));
|
|
173
184
|
}
|
|
174
185
|
if (discountAmount > data.amountBeforeCoupon) {
|
|
175
186
|
discountAmount = data.amountBeforeCoupon;
|
|
@@ -191,6 +202,12 @@ let ReferralRewardCouponService = class ReferralRewardCouponService {
|
|
|
191
202
|
vendorCut: 0,
|
|
192
203
|
secondaryVendorCut: 0,
|
|
193
204
|
},
|
|
205
|
+
couponInfo: {
|
|
206
|
+
_id: coupon._id,
|
|
207
|
+
couponType: coupon.couponType,
|
|
208
|
+
valueType: coupon.valueType,
|
|
209
|
+
value: coupon.value,
|
|
210
|
+
},
|
|
194
211
|
};
|
|
195
212
|
}
|
|
196
213
|
async getReferralSettings() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"referral-reward-coupon.service.js","sourceRoot":"/","sources":["modules/coupon/services/referral-reward-coupon.service.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, { Service } from 'typedi';\nimport { TRPCError } from '@trpc/server';\nimport { DocumentType, mongoose } from '@typegoose/typegoose';\nimport {\n\tReferralRewardCouponModel,\n\tReferralRewardCoupon as Model,\n\tReferralSetting,\n\tReferralSettingModel,\n\tRegularOrder,\n\tUser,\n\tUserModel,\n\tRegularOrderModel,\n\tCouponModel,\n\tCoupon,\n\tReferralCodeCoupon,\n} from '@lyxa.ai/core/dist/libraries/mongo/models/';\nimport {\n\tCouponValidationOutputDTO,\n\tCreateReferralRewardCouponDTO as CreateDTO,\n\tUpdateReferralRewardCouponDTO as UpdateDTO,\n\tValidateCouponDTO,\n} from '@modules/coupon/validations';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { CouponType, Status, ValueType } from '@lyxa.ai/core/dist/utilities/enum';\nimport { convertToSecondary } from '@lyxa.ai/core/dist/utilities/currency';\nimport { roundBaseCurrency, roundSecondaryCurrency } from '@lyxa.ai/core/dist/utilities/shared';\nimport { getLibraries } from '@lyxa.ai/core';\nimport { NotificationMicroserviceRouter } from '@lyxa.ai/notification';\n\n@Service()\nexport class ReferralRewardCouponService {\n\tprivate model: typeof ReferralRewardCouponModel & SoftDeleteModel<Model>;\n\tprivate couponModel: typeof CouponModel & SoftDeleteModel<Coupon>;\n\tprivate settingsModel: typeof ReferralSettingModel & SoftDeleteModel<ReferralSetting>;\n\tprivate userModel: typeof UserModel & SoftDeleteModel<User>;\n\tprivate orderModel: typeof RegularOrderModel & SoftDeleteModel<RegularOrder>;\n\n\tconstructor() {\n\t\tthis.model = ReferralRewardCouponModel as typeof ReferralRewardCouponModel & SoftDeleteModel<Model>;\n\t\tthis.couponModel = CouponModel as typeof CouponModel & SoftDeleteModel<Coupon>;\n\t\tthis.settingsModel = ReferralSettingModel as typeof ReferralSettingModel &\n\t\t\tSoftDeleteModel<ReferralSetting>;\n\t\tthis.userModel = UserModel as typeof UserModel & SoftDeleteModel<User>;\n\t\tthis.orderModel = RegularOrderModel as typeof RegularOrderModel & SoftDeleteModel<RegularOrder>;\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 * 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\tprivate generateCode(length = 6): string {\n\t\tconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n\t\tlet result = '';\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tresult += chars.charAt(Math.floor(Math.random() * chars.length));\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate async generateCouponCode(): Promise<string> {\n\t\tlet code: string = 'SAMPLE';\n\t\tlet exists = true;\n\n\t\twhile (exists) {\n\t\t\tcode = this.generateCode();\n\t\t\texists = (await this.model.exists({ code: code })) ? true : false;\n\t\t}\n\n\t\treturn code;\n\t}\n\n\t// give referral reward to user\n\tpublic async giveReferralRewardToReferrer(orderId: mongoose.Types.ObjectId) {\n\t\tconst order = (await this.orderModel.findById(orderId)) as DocumentType<RegularOrder>;\n\n\t\tif (!order) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!order.adjustedFinance?.coupon?.coupon?._id) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst orderCoupon = await this.couponModel.findById(order.adjustedFinance?.coupon?.coupon?._id);\n\n\t\tif (!orderCoupon || orderCoupon.couponType !== CouponType.REFERRAL_CODE) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst user = (orderCoupon as DocumentType<ReferralCodeCoupon>).referralUser;\n\n\t\tconst referralCouponSettings = await this.getReferralSettings();\n\n\t\tif (!referralCouponSettings.sender) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst referralRewardCoupon = await this.create({\n\t\t\tcode: await this.generateCouponCode(),\n\t\t\tstatus: Status.ACTIVE,\n\t\t\tcouponType: CouponType.REFERRAL_REWARD,\n\t\t\tduration: {\n\t\t\t\tstart: new Date(),\n\t\t\t},\n\t\t\tforNewUserOnly: false,\n\t\t\tuser: user._id,\n\t\t\tminOrderValue: referralCouponSettings.sender?.minimumOrderValue ?? null,\n\t\t\tvalue: referralCouponSettings.sender?.value,\n\t\t\tvalueType: referralCouponSettings.sender?.valueType,\n\t\t\treferralCodeUsedBy: order.user as mongoose.Types.ObjectId,\n\t\t\treferralCodeUsedOnOrder: order._id,\n\t\t\texpirationReason: null,\n\t\t\tmaxDiscountLimit: null,\n\t\t\torderLimitPerUser: 1,\n\t\t\tspendLimit: null,\n\t\t\ttotalOrderLimit: 1,\n\t\t\tisMinOrderValueEnabled: !!referralCouponSettings.sender?.minimumOrderValue,\n\t\t\tisMaxDiscountLimitEnabled: false,\n\t\t\tisOrderLimitPerUserEnabled: true,\n\t\t\tisSpendLimitEnabled: false,\n\t\t\tisTotalOrderLimitEnabled: true,\n\t\t});\n\n\t\tawait this.userModel.findByIdAndUpdate(\n\t\t\tuser,\n\t\t\t{ $push: { coupons: referralRewardCoupon._id } },\n\t\t\t{ new: true, runValidators: true }\n\t\t);\n\n\t\t// Send Notification\n\t\tconst dispatcher = getLibraries().getMicroServiceDispatcher();\n\t\tconst notificationRouter =\n\t\t\tawait dispatcher.getMicroService<NotificationMicroserviceRouter>('notification');\n\n\t\tawait notificationRouter.notificationRouter.sendPushNotificationForCoupon.mutate(\n\t\t\treferralRewardCoupon._id\n\t\t);\n\t}\n\n\tpublic async validateCoupon(\n\t\tdata: ValidateCouponDTO,\n\t\tcouponDocument: DocumentType<Model>\n\t): Promise<CouponValidationOutputDTO> {\n\t\tif (\n\t\t\tcouponDocument.isMinOrderValueEnabled &&\n\t\t\tcouponDocument.minOrderValue &&\n\t\t\tcouponDocument.minOrderValue > data.amountBeforeCoupon\n\t\t) {\n\t\t\t// throw new TRPCError({\n\t\t\t// \tcode: 'BAD_REQUEST',\n\t\t\t// \tmessage: 'Amount is lower than the minimum order amount',\n\t\t\t// });\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t\tmessage: `Minimum order amount ${couponDocument.minOrderValue}$ is not met!`,\n\t\t\t};\n\t\t}\n\n\t\tif (couponDocument.user._id.toString() != data.user?.toString()) {\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t\tmessage: 'This reward is not for you',\n\t\t\t};\n\t\t}\n\n\t\tlet discountAmount =\n\t\t\tcouponDocument.valueType == ValueType.FIXED\n\t\t\t\t? couponDocument.value\n\t\t\t\t: roundBaseCurrency((data.amountBeforeCoupon * couponDocument.value) / 100);\n\n\t\tlet secondaryDiscountAmount =\n\t\t\tcouponDocument.valueType == ValueType.FIXED\n\t\t\t\t? await convertToSecondary(couponDocument.value)\n\t\t\t\t: roundSecondaryCurrency((data.secondaryAmountBeforeCoupon * couponDocument.value) / 100);\n\n\t\tif (couponDocument.isMaxDiscountLimitEnabled && couponDocument.maxDiscountLimit) {\n\t\t\tdiscountAmount = Math.min(discountAmount, couponDocument.maxDiscountLimit);\n\t\t\tsecondaryDiscountAmount = Math.min(\n\t\t\t\tsecondaryDiscountAmount,\n\t\t\t\tawait convertToSecondary(couponDocument.maxDiscountLimit)\n\t\t\t);\n\t\t}\n\n\t\tif (discountAmount > data.amountBeforeCoupon) {\n\t\t\tdiscountAmount = data.amountBeforeCoupon;\n\t\t}\n\t\tif (secondaryDiscountAmount > data.secondaryAmountBeforeCoupon) {\n\t\t\tsecondaryDiscountAmount = data.secondaryAmountBeforeCoupon;\n\t\t}\n\n\t\treturn {\n\t\t\tisValid: true,\n\t\t\tdiscountAmount,\n\t\t\tsecondaryDiscountAmount,\n\t\t\tamountAfterCoupon: roundBaseCurrency(data.amountBeforeCoupon - discountAmount),\n\t\t\tsecondaryAmountAfterCoupon: roundSecondaryCurrency(\n\t\t\t\tdata.secondaryAmountBeforeCoupon - secondaryDiscountAmount\n\t\t\t),\n\t\t\tdiscountCut: {\n\t\t\t\tcompanyCut: discountAmount,\n\t\t\t\tsecondaryCompanyCut: secondaryDiscountAmount,\n\t\t\t\tshopCut: 0,\n\t\t\t\tsecondaryShopCut: 0,\n\t\t\t\tvendorCut: 0,\n\t\t\t\tsecondaryVendorCut: 0,\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate async getReferralSettings(): Promise<DocumentType<ReferralSetting>> {\n\t\tconst referralSetting = await this.settingsModel.findOne({});\n\t\tif (!referralSetting) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Referral setting not found',\n\t\t\t});\n\t\t}\n\t\treturn referralSetting;\n\t}\n}\n\nexport const referralRewardCouponService = Container.get(ReferralRewardCouponService);\n"]}
|
|
1
|
+
{"version":3,"file":"referral-reward-coupon.service.js","sourceRoot":"/","sources":["modules/coupon/services/referral-reward-coupon.service.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, { Service } from 'typedi';\nimport { TRPCError } from '@trpc/server';\nimport { DocumentType, mongoose } from '@typegoose/typegoose';\nimport {\n\tReferralRewardCouponModel,\n\tReferralRewardCoupon as Model,\n\tReferralSetting,\n\tReferralSettingModel,\n\tRegularOrder,\n\tUser,\n\tUserModel,\n\tRegularOrderModel,\n\tCouponModel,\n\tCoupon,\n\tReferralCodeCoupon,\n} from '@lyxa.ai/core/dist/libraries/mongo/models/';\nimport {\n\tCouponValidationOutputDTO,\n\tCreateReferralRewardCouponDTO as CreateDTO,\n\tUpdateReferralRewardCouponDTO as UpdateDTO,\n\tValidateCouponDTO,\n} from '@modules/coupon/validations';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { CouponType, Status, ValueType } from '@lyxa.ai/core/dist/utilities/enum';\nimport { convertToSecondary } from '@lyxa.ai/core/dist/utilities/currency';\nimport { roundBaseCurrency, roundSecondaryCurrency } from '@lyxa.ai/core/dist/utilities/shared';\nimport { getLibraries } from '@lyxa.ai/core';\nimport { NotificationEvent } from '@lyxa.ai/core/dist/libraries/notification';\nimport { publishEvent } from '@lyxa.ai/core/dist/libraries/event';\nimport { ClickType, NotificationAccountType } from '@lyxa.ai/core/dist/utilities/enum';\n\n@Service()\nexport class ReferralRewardCouponService {\n\tprivate model: typeof ReferralRewardCouponModel & SoftDeleteModel<Model>;\n\tprivate couponModel: typeof CouponModel & SoftDeleteModel<Coupon>;\n\tprivate settingsModel: typeof ReferralSettingModel & SoftDeleteModel<ReferralSetting>;\n\tprivate userModel: typeof UserModel & SoftDeleteModel<User>;\n\tprivate orderModel: typeof RegularOrderModel & SoftDeleteModel<RegularOrder>;\n\n\tconstructor() {\n\t\tthis.model = ReferralRewardCouponModel as typeof ReferralRewardCouponModel & SoftDeleteModel<Model>;\n\t\tthis.couponModel = CouponModel as typeof CouponModel & SoftDeleteModel<Coupon>;\n\t\tthis.settingsModel = ReferralSettingModel as typeof ReferralSettingModel &\n\t\t\tSoftDeleteModel<ReferralSetting>;\n\t\tthis.userModel = UserModel as typeof UserModel & SoftDeleteModel<User>;\n\t\tthis.orderModel = RegularOrderModel as typeof RegularOrderModel & SoftDeleteModel<RegularOrder>;\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 * 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\tprivate generateCode(length = 6): string {\n\t\tconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n\t\tlet result = '';\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tresult += chars.charAt(Math.floor(Math.random() * chars.length));\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate async generateCouponCode(): Promise<string> {\n\t\tlet code: string = 'SAMPLE';\n\t\tlet exists = true;\n\n\t\twhile (exists) {\n\t\t\tcode = this.generateCode();\n\t\t\texists = (await this.model.exists({ code: code })) ? true : false;\n\t\t}\n\n\t\treturn code;\n\t}\n\n\t// give referral reward to user\n\tpublic async giveReferralRewardToReferrer(orderId: mongoose.Types.ObjectId) {\n\t\tconst order = (await this.orderModel.findById(orderId)) as DocumentType<RegularOrder>;\n\n\t\tif (!order) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!order.adjustedFinance?.coupon?.coupon?._id) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst orderCoupon = await this.couponModel.findById(order.adjustedFinance?.coupon?.coupon?._id);\n\n\t\tif (!orderCoupon || orderCoupon.couponType !== CouponType.REFERRAL_CODE) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst user = (orderCoupon as DocumentType<ReferralCodeCoupon>).referralUser;\n\n\t\tconst referralCouponSettings = await this.getReferralSettings();\n\n\t\tif (!referralCouponSettings.sender) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst referralRewardCoupon = await this.create({\n\t\t\tcode: await this.generateCouponCode(),\n\t\t\tstatus: Status.ACTIVE,\n\t\t\tcouponType: CouponType.REFERRAL_REWARD,\n\t\t\tduration: {\n\t\t\t\tstart: new Date(),\n\t\t\t},\n\t\t\tforNewUserOnly: false,\n\t\t\tuser: user._id,\n\t\t\tminOrderValue: referralCouponSettings.sender?.minimumOrderValue ?? null,\n\t\t\tvalue: referralCouponSettings.sender?.value,\n\t\t\tvalueType: referralCouponSettings.sender?.valueType,\n\t\t\treferralCodeUsedBy: order.user as mongoose.Types.ObjectId,\n\t\t\treferralCodeUsedOnOrder: order._id,\n\t\t\texpirationReason: null,\n\t\t\tmaxDiscountLimit: null,\n\t\t\torderLimitPerUser: 1,\n\t\t\tspendLimit: null,\n\t\t\ttotalOrderLimit: 1,\n\t\t\tisMinOrderValueEnabled: !!referralCouponSettings.sender?.minimumOrderValue,\n\t\t\tisMaxDiscountLimitEnabled: false,\n\t\t\tisOrderLimitPerUserEnabled: true,\n\t\t\tisSpendLimitEnabled: false,\n\t\t\tisTotalOrderLimitEnabled: true,\n\t\t});\n\n\t\tawait this.userModel.findByIdAndUpdate(\n\t\t\tuser,\n\t\t\t{ $push: { coupons: referralRewardCoupon._id } },\n\t\t\t{ new: true, runValidators: true }\n\t\t);\n\n\t\tawait publishEvent(\n\t\t\tnew NotificationEvent({\n\t\t\t\ttitle: 'Referral reward received 🙌',\n\t\t\t\tbody: 'Nice one! Your referral reward is ready to use. Thank you for sharing Lyxa 💛',\n\t\t\t\tdata: {\n\t\t\t\t\tsaveNotification: true,\n\t\t\t\t\taccountType: NotificationAccountType.USER,\n\t\t\t\t\trecipientId: user._id,\n\t\t\t\t\tisGlobal: false,\n\t\t\t\t\tisClickable: true,\n\t\t\t\t\tclickType: ClickType.CLICKABLE_COUPON,\n\t\t\t\t},\n\t\t\t})\n\t\t);\n\t}\n\n\tpublic async validateCoupon(\n\t\tdata: ValidateCouponDTO,\n\t\tcoupon: DocumentType<Model>\n\t): Promise<CouponValidationOutputDTO> {\n\t\tif (\n\t\t\tcoupon.isMinOrderValueEnabled &&\n\t\t\tcoupon.minOrderValue &&\n\t\t\tcoupon.minOrderValue > data.amountBeforeCoupon\n\t\t) {\n\t\t\t// throw new TRPCError({\n\t\t\t// \tcode: 'BAD_REQUEST',\n\t\t\t// \tmessage: 'Amount is lower than the minimum order amount',\n\t\t\t// });\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t\tmessage: `Minimum order amount ${coupon.minOrderValue}$ is not met!`,\n\t\t\t};\n\t\t}\n\n\t\tif (coupon.user._id.toString() != data.user?.toString()) {\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t\tmessage: 'This reward is not for you',\n\t\t\t};\n\t\t}\n\n\t\tlet discountAmount =\n\t\t\tcoupon.valueType == ValueType.FIXED\n\t\t\t\t? coupon.value\n\t\t\t\t: roundBaseCurrency((data.amountBeforeCoupon * coupon.value) / 100);\n\n\t\tlet secondaryDiscountAmount =\n\t\t\tcoupon.valueType == ValueType.FIXED\n\t\t\t\t? await convertToSecondary(coupon.value)\n\t\t\t\t: roundSecondaryCurrency((data.secondaryAmountBeforeCoupon * coupon.value) / 100);\n\n\t\tif (coupon.isMaxDiscountLimitEnabled && coupon.maxDiscountLimit) {\n\t\t\tdiscountAmount = Math.min(discountAmount, coupon.maxDiscountLimit);\n\t\t\tsecondaryDiscountAmount = Math.min(\n\t\t\t\tsecondaryDiscountAmount,\n\t\t\t\tawait convertToSecondary(coupon.maxDiscountLimit)\n\t\t\t);\n\t\t}\n\n\t\tif (discountAmount > data.amountBeforeCoupon) {\n\t\t\tdiscountAmount = data.amountBeforeCoupon;\n\t\t}\n\t\tif (secondaryDiscountAmount > data.secondaryAmountBeforeCoupon) {\n\t\t\tsecondaryDiscountAmount = data.secondaryAmountBeforeCoupon;\n\t\t}\n\n\t\treturn {\n\t\t\tisValid: true,\n\t\t\tdiscountAmount,\n\t\t\tsecondaryDiscountAmount,\n\t\t\tamountAfterCoupon: roundBaseCurrency(data.amountBeforeCoupon - discountAmount),\n\t\t\tsecondaryAmountAfterCoupon: roundSecondaryCurrency(\n\t\t\t\tdata.secondaryAmountBeforeCoupon - secondaryDiscountAmount\n\t\t\t),\n\t\t\tdiscountCut: {\n\t\t\t\tcompanyCut: discountAmount,\n\t\t\t\tsecondaryCompanyCut: secondaryDiscountAmount,\n\t\t\t\tshopCut: 0,\n\t\t\t\tsecondaryShopCut: 0,\n\t\t\t\tvendorCut: 0,\n\t\t\t\tsecondaryVendorCut: 0,\n\t\t\t},\n\t\t\tcouponInfo: {\n\t\t\t\t_id: coupon._id,\n\t\t\t\tcouponType: coupon.couponType,\n\t\t\t\tvalueType: coupon.valueType,\n\t\t\t\tvalue: coupon.value,\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate async getReferralSettings(): Promise<DocumentType<ReferralSetting>> {\n\t\tconst referralSetting = await this.settingsModel.findOne({});\n\t\tif (!referralSetting) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Referral setting not found',\n\t\t\t});\n\t\t}\n\t\treturn referralSetting;\n\t}\n}\n\nexport const referralRewardCouponService = Container.get(ReferralRewardCouponService);\n"]}
|
|
@@ -24,6 +24,7 @@ export declare class ShopsCategoriesCouponService {
|
|
|
24
24
|
secondaryVendorCut?: number | undefined;
|
|
25
25
|
} | undefined;
|
|
26
26
|
couponDetails?: Record<string, unknown> | undefined;
|
|
27
|
+
couponInfo?: Record<string, unknown> | undefined;
|
|
27
28
|
} | {
|
|
28
29
|
isValid: boolean;
|
|
29
30
|
message: string;
|
|
@@ -232,6 +233,7 @@ export declare class ShopsCategoriesCouponService {
|
|
|
232
233
|
} | undefined;
|
|
233
234
|
isMenuDietaryFilterEnabled?: boolean | undefined;
|
|
234
235
|
categoryNumberingEnabled?: boolean | undefined;
|
|
236
|
+
hideOutOfStockProducts?: boolean | undefined;
|
|
235
237
|
createdAt?: Date | undefined;
|
|
236
238
|
updatedAt?: Date | undefined;
|
|
237
239
|
}> & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shops-categories-coupon.service.d.ts","sourceRoot":"/","sources":["modules/coupon/services/shops-categories-coupon.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAEN,qBAAqB,IAAI,KAAK,EAI9B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACN,8BAA8B,IAAI,SAAS,EAC3C,8BAA8B,IAAI,SAAS,EAC3C,iBAAiB,EACjB,MAAM,6BAA6B,CAAC;AAIrC,qBACa,4BAA4B;IACxC,OAAO,CAAC,KAAK,CAAC;IACd,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAmB;IACtD,OAAO,CAAC,UAAU,CAA2D;;IAYhE,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAWrD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAuBjE,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC
|
|
1
|
+
{"version":3,"file":"shops-categories-coupon.service.d.ts","sourceRoot":"/","sources":["modules/coupon/services/shops-categories-coupon.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAEN,qBAAqB,IAAI,KAAK,EAI9B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACN,8BAA8B,IAAI,SAAS,EAC3C,8BAA8B,IAAI,SAAS,EAC3C,iBAAiB,EACjB,MAAM,6BAA6B,CAAC;AAIrC,qBACa,4BAA4B;IACxC,OAAO,CAAC,KAAK,CAAC;IACd,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAmB;IACtD,OAAO,CAAC,UAAU,CAA2D;;IAYhE,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAWrD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAuBjE,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqBhF;AAED,eAAO,MAAM,4BAA4B,8BAA8C,CAAC"}
|
|
@@ -79,12 +79,12 @@ let ShopsCategoriesCouponService = class ShopsCategoriesCouponService {
|
|
|
79
79
|
async validateCoupon(data, coupon) {
|
|
80
80
|
const validation = await helper_service_1.couponHelperService.validateShopEligibility({
|
|
81
81
|
data,
|
|
82
|
-
coupon
|
|
82
|
+
coupon,
|
|
83
83
|
});
|
|
84
84
|
if (!validation.isValid)
|
|
85
85
|
return validation;
|
|
86
86
|
const { discountAmount, secondaryDiscountAmount } = await helper_service_1.couponHelperService.calculateCouponDiscount(data, coupon);
|
|
87
|
-
return helper_service_1.couponHelperService.buildCouponResponse(data, discountAmount, secondaryDiscountAmount, coupon.isShopCoverExpenses ?? false);
|
|
87
|
+
return helper_service_1.couponHelperService.buildCouponResponse(coupon, data, discountAmount, secondaryDiscountAmount, coupon.isShopCoverExpenses ?? false);
|
|
88
88
|
}
|
|
89
89
|
};
|
|
90
90
|
exports.ShopsCategoriesCouponService = ShopsCategoriesCouponService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shops-categories-coupon.service.js","sourceRoot":"/","sources":["modules/coupon/services/shops-categories-coupon.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA4C;AAC5C,yCAAyC;AAEzC,uEAMoD;AAOpD,qDAAuD;AAGhD,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IAChC,KAAK,CAAC;IACG,kBAAkB,CAAmB;IAC9C,UAAU,CAA2D;IAE7E;QACC,IAAI,CAAC,KAAK,GAAG,mCAA0B,CAAC;QACxC,IAAI,CAAC,kBAAkB,GAAG,kBAA6B,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,0BAA6E,CAAC;IACjG,CAAC;IAMM,KAAK,CAAC,MAAM,CAAC,IAAe;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvC,OAAO,MAAM,CAAC;IACf,CAAC;IAOM,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAAe;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAC/C;YACC,GAAG,EAAE,EAAE;YACP,SAAS,EAAE,IAAI;SACf,EACD,IAAI,EACJ;YACC,GAAG,EAAE,IAAI;YACT,aAAa,EAAE,IAAI;SACnB,CACD,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,kBAAkB;aAC3B,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,IAAuB,EAAE,MAA2B;QAC/E,MAAM,UAAU,GAAG,MAAM,oCAAmB,CAAC,uBAAuB,CAAC;YACpE,IAAI;YACJ,MAAM;SACN,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,OAAO;YAAE,OAAO,UAAU,CAAC;QAE3C,MAAM,EAAE,cAAc,EAAE,uBAAuB,EAAE,GAAG,MAAM,oCAAmB,CAAC,uBAAuB,CACpG,IAAI,EACJ,MAAM,CACN,CAAC;QAEF,OAAO,oCAAmB,CAAC,mBAAmB,CAC7C,IAAI,EACJ,cAAc,EACd,uBAAuB,EACvB,MAAM,CAAC,mBAAmB,IAAI,KAAK,CACnC,CAAC;IACH,CAAC;CACD,CAAA;
|
|
1
|
+
{"version":3,"file":"shops-categories-coupon.service.js","sourceRoot":"/","sources":["modules/coupon/services/shops-categories-coupon.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA4C;AAC5C,yCAAyC;AAEzC,uEAMoD;AAOpD,qDAAuD;AAGhD,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IAChC,KAAK,CAAC;IACG,kBAAkB,CAAmB;IAC9C,UAAU,CAA2D;IAE7E;QACC,IAAI,CAAC,KAAK,GAAG,mCAA0B,CAAC;QACxC,IAAI,CAAC,kBAAkB,GAAG,kBAA6B,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,0BAA6E,CAAC;IACjG,CAAC;IAMM,KAAK,CAAC,MAAM,CAAC,IAAe;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEvC,OAAO,MAAM,CAAC;IACf,CAAC;IAOM,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAAe;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAC/C;YACC,GAAG,EAAE,EAAE;YACP,SAAS,EAAE,IAAI;SACf,EACD,IAAI,EACJ;YACC,GAAG,EAAE,IAAI;YACT,aAAa,EAAE,IAAI;SACnB,CACD,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,kBAAkB;aAC3B,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,IAAuB,EAAE,MAA2B;QAC/E,MAAM,UAAU,GAAG,MAAM,oCAAmB,CAAC,uBAAuB,CAAC;YACpE,IAAI;YACJ,MAAM;SACN,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,OAAO;YAAE,OAAO,UAAU,CAAC;QAE3C,MAAM,EAAE,cAAc,EAAE,uBAAuB,EAAE,GAAG,MAAM,oCAAmB,CAAC,uBAAuB,CACpG,IAAI,EACJ,MAAM,CACN,CAAC;QAEF,OAAO,oCAAmB,CAAC,mBAAmB,CAC7C,MAAM,EACN,IAAI,EACJ,cAAc,EACd,uBAAuB,EACvB,MAAM,CAAC,mBAAmB,IAAI,KAAK,CACnC,CAAC;IACH,CAAC;CACD,CAAA;AAtEY,oEAA4B;uCAA5B,4BAA4B;IADxC,IAAA,gBAAO,GAAE;;GACG,4BAA4B,CAsExC;AAEY,QAAA,4BAA4B,GAAG,gBAAS,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC","sourcesContent":["import Container, { Service } from 'typedi';\nimport { TRPCError } from '@trpc/server';\nimport { DocumentType, mongoose } from '@typegoose/typegoose';\nimport {\n\tShopsCategoriesCouponModel,\n\tShopsCategoriesCoupon as Model,\n\tRegularOrder,\n\tRegularOrderModel,\n\tShopModel,\n} from '@lyxa.ai/core/dist/libraries/mongo/models/';\nimport {\n\tCreateShopsCategoriesCouponDTO as CreateDTO,\n\tUpdateShopsCategoriesCouponDTO as UpdateDTO,\n\tValidateCouponDTO,\n} from '@modules/coupon/validations';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { couponHelperService } from './helper.service';\n\n@Service()\nexport class ShopsCategoriesCouponService {\n\tprivate model;\n\tprivate readonly shopModelForCoupon: typeof ShopModel;\n\tprivate orderModel: typeof RegularOrderModel & SoftDeleteModel<RegularOrder>;\n\n\tconstructor() {\n\t\tthis.model = ShopsCategoriesCouponModel;\n\t\tthis.shopModelForCoupon = ShopModel as typeof ShopModel;\n\t\tthis.orderModel = RegularOrderModel as typeof RegularOrderModel & SoftDeleteModel<RegularOrder>;\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\tconst coupon = this.model.create(data);\n\n\t\treturn coupon;\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\tpublic async validateCoupon(data: ValidateCouponDTO, coupon: DocumentType<Model>) {\n\t\tconst validation = await couponHelperService.validateShopEligibility({\n\t\t\tdata,\n\t\t\tcoupon,\n\t\t});\n\n\t\tif (!validation.isValid) return validation;\n\n\t\tconst { discountAmount, secondaryDiscountAmount } = await couponHelperService.calculateCouponDiscount(\n\t\t\tdata,\n\t\t\tcoupon\n\t\t);\n\n\t\treturn couponHelperService.buildCouponResponse(\n\t\t\tcoupon,\n\t\t\tdata,\n\t\t\tdiscountAmount,\n\t\t\tsecondaryDiscountAmount,\n\t\t\tcoupon.isShopCoverExpenses ?? false\n\t\t);\n\t}\n}\n\nexport const shopsCategoriesCouponService = Container.get(ShopsCategoriesCouponService);\n"]}
|