@lyxa.ai/marketing 1.0.61 → 1.0.62
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 +0 -2
- package/dist/lib/event/event-initializations.js.map +1 -1
- package/dist/lib/event/event-listeners/event-listeners.d.ts +0 -2
- package/dist/lib/event/event-listeners/event-listeners.d.ts.map +1 -1
- package/dist/lib/event/event-listeners/event-listeners.js +12 -69
- package/dist/lib/event/event-listeners/event-listeners.js.map +1 -1
- package/dist/lib/event/events/marketing-product-seed.event.d.ts +2 -1
- package/dist/lib/event/events/marketing-product-seed.event.d.ts.map +1 -1
- package/dist/lib/event/events/marketing-product-seed.event.js.map +1 -1
- package/dist/lib/index.d.ts +194 -650
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -5
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/modules/coupon/routers/coupon.router.d.ts +59 -0
- package/dist/lib/modules/coupon/routers/coupon.router.d.ts.map +1 -1
- package/dist/lib/modules/coupon/routers/coupon.router.js +7 -0
- 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 +3 -0
- package/dist/lib/modules/coupon/services/coupon.service.js.map +1 -1
- package/dist/lib/modules/coupon/validations/create-coupon.validation.d.ts.map +1 -1
- package/dist/lib/modules/coupon/validations/create-coupon.validation.js +1 -4
- package/dist/lib/modules/coupon/validations/create-coupon.validation.js.map +1 -1
- package/dist/lib/modules/deal-setting/services/deal-setting.service.d.ts.map +1 -1
- package/dist/lib/modules/deal-setting/services/deal-setting.service.js +1 -4
- package/dist/lib/modules/deal-setting/services/deal-setting.service.js.map +1 -1
- package/dist/lib/modules/featured-setting/services/featured-setting.service.d.ts.map +1 -1
- package/dist/lib/modules/featured-setting/services/featured-setting.service.js +0 -3
- package/dist/lib/modules/featured-setting/services/featured-setting.service.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/campaign.router.d.ts +8 -54
- package/dist/lib/modules/limited-time-offer/campaign/campaign.router.d.ts.map +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/campaign.router.js +0 -11
- package/dist/lib/modules/limited-time-offer/campaign/campaign.router.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/jobs/index.d.ts.map +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/jobs/index.js +0 -6
- package/dist/lib/modules/limited-time-offer/campaign/jobs/index.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts +1 -0
- package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts.map +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.js +6 -2
- package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts +3 -16
- package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts.map +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.js +3 -22
- package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.d.ts +0 -2
- package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.d.ts.map +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.js +0 -12
- package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts +35 -242
- package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts.map +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.js +1 -19
- package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.d.ts +1 -8
- 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 +1 -64
- 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/campaign/services/limited-time-offer-campaign-scheduler.service.d.ts +0 -3
- package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.d.ts.map +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.js +8 -66
- package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts.map +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.js +19 -37
- package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/limited-time-offer.router.d.ts +18 -249
- package/dist/lib/modules/limited-time-offer/limited-time-offer.router.d.ts.map +1 -1
- package/dist/lib/modules/limited-time-offer/limited-time-offer.service.d.ts +0 -2
- package/dist/lib/modules/limited-time-offer/limited-time-offer.service.d.ts.map +1 -1
- package/dist/lib/modules/limited-time-offer/limited-time-offer.service.js +3 -15
- package/dist/lib/modules/limited-time-offer/limited-time-offer.service.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.d.ts +1 -1
- package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.js +1 -1
- package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.d.ts +3 -24
- 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 +1 -19
- 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.repository.d.ts +0 -10
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.repository.d.ts.map +1 -1
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.repository.js +0 -43
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.repository.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts +10 -195
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts.map +1 -1
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.js +0 -29
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts +33 -428
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts.map +1 -1
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.js +6 -16
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.d.ts +4 -7
- 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 +7 -42
- 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 +3 -14
- package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts.map +1 -1
- package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.js +16 -76
- package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.js.map +1 -1
- package/dist/lib/modules/marketing/patterns/repository/MarketingMetricsRepository.d.ts +0 -1
- package/dist/lib/modules/marketing/patterns/repository/MarketingMetricsRepository.d.ts.map +1 -1
- package/dist/lib/modules/marketing/patterns/repository/MarketingMetricsRepository.js +0 -29
- package/dist/lib/modules/marketing/patterns/repository/MarketingMetricsRepository.js.map +1 -1
- package/dist/lib/modules/marketing/routers/marketing.router.d.ts +0 -14
- package/dist/lib/modules/marketing/routers/marketing.router.d.ts.map +1 -1
- package/dist/lib/modules/marketing/routers/marketing.router.js +0 -5
- package/dist/lib/modules/marketing/routers/marketing.router.js.map +1 -1
- package/dist/lib/modules/marketing/services/index.d.ts +0 -3
- package/dist/lib/modules/marketing/services/index.d.ts.map +1 -1
- package/dist/lib/modules/marketing/services/index.js +0 -3
- package/dist/lib/modules/marketing/services/index.js.map +1 -1
- package/dist/lib/modules/marketing/services/marketing.service.d.ts +2 -7
- package/dist/lib/modules/marketing/services/marketing.service.d.ts.map +1 -1
- package/dist/lib/modules/marketing/services/marketing.service.js +51 -97
- package/dist/lib/modules/marketing/services/marketing.service.js.map +1 -1
- package/dist/lib/modules/marketing/services/product-marketing.service.d.ts +3 -2
- package/dist/lib/modules/marketing/services/product-marketing.service.d.ts.map +1 -1
- package/dist/lib/modules/marketing/services/product-marketing.service.js +13 -42
- package/dist/lib/modules/marketing/services/product-marketing.service.js.map +1 -1
- 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 +27 -95
- package/dist/lib/modules/marketing/services/synchronize-product-marketing.service.js.map +1 -1
- package/dist/lib/modules/marketing/validations/all-marketings.validation.d.ts.map +1 -1
- package/dist/lib/modules/marketing/validations/all-marketings.validation.js +0 -3
- 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 +0 -1
- package/dist/lib/modules/marketing/validations/index.d.ts.map +1 -1
- package/dist/lib/modules/marketing/validations/index.js +0 -1
- package/dist/lib/modules/marketing/validations/index.js.map +1 -1
- package/dist/lib/modules/marketing/validations/marketing.validation.d.ts +0 -17
- package/dist/lib/modules/marketing/validations/marketing.validation.d.ts.map +1 -1
- package/dist/lib/modules/marketing/validations/marketing.validation.js +1 -7
- 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/punch-marketing-history/routers/punch-marketing-history.router.d.ts +1 -1
- package/dist/lib/modules/punch-marketing-history/services/punch-marketing-history.service.d.ts +1 -0
- package/dist/lib/modules/punch-marketing-history/services/punch-marketing-history.service.d.ts.map +1 -1
- package/dist/lib/modules/punch-marketing-history/services/punch-marketing-history.service.js +49 -2
- package/dist/lib/modules/punch-marketing-history/services/punch-marketing-history.service.js.map +1 -1
- package/dist/lib/modules/punch-marketing-history/validations/punch-marketing-history.validation.d.ts +2 -2
- package/dist/types/event/event-initializations.d.ts.map +1 -1
- package/dist/types/event/event-listeners/event-listeners.d.ts +0 -2
- package/dist/types/event/event-listeners/event-listeners.d.ts.map +1 -1
- package/dist/types/event/events/marketing-product-seed.event.d.ts +2 -1
- package/dist/types/event/events/marketing-product-seed.event.d.ts.map +1 -1
- package/dist/types/index.d.ts +194 -650
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/modules/coupon/routers/coupon.router.d.ts +59 -0
- 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/validations/create-coupon.validation.d.ts.map +1 -1
- package/dist/types/modules/deal-setting/services/deal-setting.service.d.ts.map +1 -1
- package/dist/types/modules/featured-setting/services/featured-setting.service.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/campaign/campaign.router.d.ts +8 -54
- package/dist/types/modules/limited-time-offer/campaign/campaign.router.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/campaign/jobs/index.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts +1 -0
- package/dist/types/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts +3 -16
- package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.d.ts +0 -2
- package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts +35 -242
- package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.d.ts +1 -8
- 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/campaign/services/limited-time-offer-campaign-scheduler.service.d.ts +0 -3
- package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts +1 -1
- package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/limited-time-offer.router.d.ts +18 -249
- package/dist/types/modules/limited-time-offer/limited-time-offer.router.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/limited-time-offer.service.d.ts +0 -2
- package/dist/types/modules/limited-time-offer/limited-time-offer.service.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.constants.d.ts +1 -1
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.builder.d.ts +3 -24
- 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.repository.d.ts +0 -10
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.repository.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts +10 -195
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts +33 -428
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.d.ts +4 -7
- 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 +3 -14
- package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts.map +1 -1
- package/dist/types/modules/marketing/patterns/repository/MarketingMetricsRepository.d.ts +0 -1
- package/dist/types/modules/marketing/patterns/repository/MarketingMetricsRepository.d.ts.map +1 -1
- package/dist/types/modules/marketing/routers/marketing.router.d.ts +0 -14
- package/dist/types/modules/marketing/routers/marketing.router.d.ts.map +1 -1
- package/dist/types/modules/marketing/services/index.d.ts +0 -3
- package/dist/types/modules/marketing/services/index.d.ts.map +1 -1
- package/dist/types/modules/marketing/services/marketing.service.d.ts +2 -7
- package/dist/types/modules/marketing/services/marketing.service.d.ts.map +1 -1
- package/dist/types/modules/marketing/services/product-marketing.service.d.ts +3 -7
- package/dist/types/modules/marketing/services/product-marketing.service.d.ts.map +1 -1
- package/dist/types/modules/marketing/services/synchronize-product-marketing.service.d.ts.map +1 -1
- 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 +0 -1
- package/dist/types/modules/marketing/validations/index.d.ts.map +1 -1
- package/dist/types/modules/marketing/validations/marketing.validation.d.ts +0 -17
- 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/punch-marketing-history/routers/punch-marketing-history.router.d.ts +1 -1
- package/dist/types/modules/punch-marketing-history/services/punch-marketing-history.service.d.ts +5 -0
- package/dist/types/modules/punch-marketing-history/services/punch-marketing-history.service.d.ts.map +1 -1
- package/dist/types/modules/punch-marketing-history/validations/punch-marketing-history.validation.d.ts +2 -2
- package/package.json +2 -2
- package/dist/lib/event/events/marketing-product-sync.event.d.ts +0 -11
- package/dist/lib/event/events/marketing-product-sync.event.d.ts.map +0 -1
- package/dist/lib/event/events/marketing-product-sync.event.js +0 -12
- package/dist/lib/event/events/marketing-product-sync.event.js.map +0 -1
- package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.repository.d.ts +0 -13
- package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.repository.d.ts.map +0 -1
- package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.repository.js +0 -75
- package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.repository.js.map +0 -1
- package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.service.d.ts +0 -21
- package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.service.d.ts.map +0 -1
- package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.service.js +0 -83
- package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.service.js.map +0 -1
- package/dist/lib/modules/marketing/services/marketing-conflict.repository.d.ts +0 -9
- package/dist/lib/modules/marketing/services/marketing-conflict.repository.d.ts.map +0 -1
- package/dist/lib/modules/marketing/services/marketing-conflict.repository.js +0 -63
- package/dist/lib/modules/marketing/services/marketing-conflict.repository.js.map +0 -1
- package/dist/lib/modules/marketing/services/marketing-conflict.service.d.ts +0 -27
- package/dist/lib/modules/marketing/services/marketing-conflict.service.d.ts.map +0 -1
- package/dist/lib/modules/marketing/services/marketing-conflict.service.js +0 -135
- package/dist/lib/modules/marketing/services/marketing-conflict.service.js.map +0 -1
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.repository.d.ts +0 -14
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.repository.d.ts.map +0 -1
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.repository.js +0 -82
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.repository.js.map +0 -1
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.service.d.ts +0 -11
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.service.d.ts.map +0 -1
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.service.js +0 -99
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.service.js.map +0 -1
- package/dist/lib/modules/marketing/services/spend-to-get-progress.repository.d.ts +0 -9
- package/dist/lib/modules/marketing/services/spend-to-get-progress.repository.d.ts.map +0 -1
- package/dist/lib/modules/marketing/services/spend-to-get-progress.repository.js +0 -69
- package/dist/lib/modules/marketing/services/spend-to-get-progress.repository.js.map +0 -1
- package/dist/lib/modules/marketing/services/spend-to-get-progress.service.d.ts +0 -31
- package/dist/lib/modules/marketing/services/spend-to-get-progress.service.d.ts.map +0 -1
- package/dist/lib/modules/marketing/services/spend-to-get-progress.service.js +0 -123
- package/dist/lib/modules/marketing/services/spend-to-get-progress.service.js.map +0 -1
- package/dist/lib/modules/marketing/validations/spend-to-get-marketing.validation.d.ts +0 -617
- package/dist/lib/modules/marketing/validations/spend-to-get-marketing.validation.d.ts.map +0 -1
- package/dist/lib/modules/marketing/validations/spend-to-get-marketing.validation.js +0 -119
- package/dist/lib/modules/marketing/validations/spend-to-get-marketing.validation.js.map +0 -1
- package/dist/lib/modules/spend-to-get-history/routers/index.d.ts +0 -2
- package/dist/lib/modules/spend-to-get-history/routers/index.d.ts.map +0 -1
- package/dist/lib/modules/spend-to-get-history/routers/index.js +0 -18
- package/dist/lib/modules/spend-to-get-history/routers/index.js.map +0 -1
- package/dist/lib/modules/spend-to-get-history/routers/spend-to-get-history.router.js +0 -62
- package/dist/lib/modules/spend-to-get-history/routers/spend-to-get-history.router.js.map +0 -1
- package/dist/lib/modules/spend-to-get-history/services/index.d.ts +0 -2
- package/dist/lib/modules/spend-to-get-history/services/index.d.ts.map +0 -1
- package/dist/lib/modules/spend-to-get-history/services/index.js +0 -18
- package/dist/lib/modules/spend-to-get-history/services/index.js.map +0 -1
- package/dist/lib/modules/spend-to-get-history/services/spend-to-get-history.service.d.ts +0 -24
- package/dist/lib/modules/spend-to-get-history/services/spend-to-get-history.service.d.ts.map +0 -1
- package/dist/lib/modules/spend-to-get-history/services/spend-to-get-history.service.js +0 -136
- package/dist/lib/modules/spend-to-get-history/services/spend-to-get-history.service.js.map +0 -1
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.d.ts +0 -24
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.d.ts.map +0 -1
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.js +0 -97
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.js.map +0 -1
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.d.ts +0 -271
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.d.ts.map +0 -1
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.js +0 -62
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.js.map +0 -1
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.d.ts +0 -24
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.d.ts.map +0 -1
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.js +0 -116
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.js.map +0 -1
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.d.ts +0 -232
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.d.ts.map +0 -1
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.js +0 -30
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.js.map +0 -1
- package/dist/lib/modules/spend-to-get-history/validations/index.d.ts +0 -2
- package/dist/lib/modules/spend-to-get-history/validations/index.d.ts.map +0 -1
- package/dist/lib/modules/spend-to-get-history/validations/index.js +0 -18
- package/dist/lib/modules/spend-to-get-history/validations/index.js.map +0 -1
- package/dist/lib/modules/spend-to-get-history/validations/spend-to-get-history.validation.d.ts +0 -232
- package/dist/lib/modules/spend-to-get-history/validations/spend-to-get-history.validation.d.ts.map +0 -1
- package/dist/lib/modules/spend-to-get-history/validations/spend-to-get-history.validation.js +0 -30
- package/dist/lib/modules/spend-to-get-history/validations/spend-to-get-history.validation.js.map +0 -1
- package/dist/lib/modules/tournament/match/events/match-ended.consumer.d.ts +0 -2
- package/dist/lib/modules/tournament/match/events/match-ended.consumer.d.ts.map +0 -1
- package/dist/lib/modules/tournament/match/events/match-ended.consumer.js +0 -15
- package/dist/lib/modules/tournament/match/events/match-ended.consumer.js.map +0 -1
- package/dist/lib/modules/tournament/match/events/match-ended.event.d.ts +0 -14
- package/dist/lib/modules/tournament/match/events/match-ended.event.d.ts.map +0 -1
- package/dist/lib/modules/tournament/match/events/match-ended.event.js +0 -12
- package/dist/lib/modules/tournament/match/events/match-ended.event.js.map +0 -1
- package/dist/lib/modules/tournament/notification/jobs/notification.producer.d.ts +0 -10
- package/dist/lib/modules/tournament/notification/jobs/notification.producer.d.ts.map +0 -1
- package/dist/lib/modules/tournament/notification/jobs/notification.producer.js +0 -23
- package/dist/lib/modules/tournament/notification/jobs/notification.producer.js.map +0 -1
- package/dist/lib/modules/tournament/notification/jobs/notification.worker.d.ts +0 -9
- package/dist/lib/modules/tournament/notification/jobs/notification.worker.d.ts.map +0 -1
- package/dist/lib/modules/tournament/notification/jobs/notification.worker.js +0 -82
- package/dist/lib/modules/tournament/notification/jobs/notification.worker.js.map +0 -1
- package/dist/lib/modules/tournament/notification/notification.schedule.config.d.ts +0 -10
- package/dist/lib/modules/tournament/notification/notification.schedule.config.d.ts.map +0 -1
- package/dist/lib/modules/tournament/notification/notification.schedule.config.js +0 -15
- package/dist/lib/modules/tournament/notification/notification.schedule.config.js.map +0 -1
- package/dist/lib/modules/tournament/notification/notification.scheduler.service.d.ts +0 -10
- package/dist/lib/modules/tournament/notification/notification.scheduler.service.d.ts.map +0 -1
- package/dist/lib/modules/tournament/notification/notification.scheduler.service.js +0 -73
- package/dist/lib/modules/tournament/notification/notification.scheduler.service.js.map +0 -1
- package/dist/types/event/events/marketing-product-sync.event.d.ts +0 -11
- package/dist/types/event/events/marketing-product-sync.event.d.ts.map +0 -1
- package/dist/types/events/event-initializations.d.ts +0 -2
- package/dist/types/events/event-initializations.d.ts.map +0 -1
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts +0 -1
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts.map +0 -1
- package/dist/types/modules/limited-time-offer/session/limited-time-offer-campaign-session.repository.d.ts +0 -13
- package/dist/types/modules/limited-time-offer/session/limited-time-offer-campaign-session.repository.d.ts.map +0 -1
- package/dist/types/modules/limited-time-offer/session/limited-time-offer-campaign-session.service.d.ts +0 -21
- package/dist/types/modules/limited-time-offer/session/limited-time-offer-campaign-session.service.d.ts.map +0 -1
- package/dist/types/modules/marketing/services/marketing-conflict.repository.d.ts +0 -9
- package/dist/types/modules/marketing/services/marketing-conflict.repository.d.ts.map +0 -1
- package/dist/types/modules/marketing/services/marketing-conflict.service.d.ts +0 -41
- package/dist/types/modules/marketing/services/marketing-conflict.service.d.ts.map +0 -1
- package/dist/types/modules/marketing/services/spend-to-get-marketing.repository.d.ts +0 -14
- package/dist/types/modules/marketing/services/spend-to-get-marketing.repository.d.ts.map +0 -1
- package/dist/types/modules/marketing/services/spend-to-get-marketing.service.d.ts +0 -20
- package/dist/types/modules/marketing/services/spend-to-get-marketing.service.d.ts.map +0 -1
- package/dist/types/modules/marketing/services/spend-to-get-progress.repository.d.ts +0 -9
- package/dist/types/modules/marketing/services/spend-to-get-progress.repository.d.ts.map +0 -1
- package/dist/types/modules/marketing/services/spend-to-get-progress.service.d.ts +0 -37
- package/dist/types/modules/marketing/services/spend-to-get-progress.service.d.ts.map +0 -1
- package/dist/types/modules/marketing/validations/spend-to-get-marketing.validation.d.ts +0 -630
- package/dist/types/modules/marketing/validations/spend-to-get-marketing.validation.d.ts.map +0 -1
- package/dist/types/modules/spend-to-get-history/routers/index.d.ts +0 -2
- package/dist/types/modules/spend-to-get-history/routers/index.d.ts.map +0 -1
- package/dist/types/modules/spend-to-get-history/services/index.d.ts +0 -2
- package/dist/types/modules/spend-to-get-history/services/index.d.ts.map +0 -1
- package/dist/types/modules/spend-to-get-history/services/spend-to-get-history.service.d.ts +0 -56
- package/dist/types/modules/spend-to-get-history/services/spend-to-get-history.service.d.ts.map +0 -1
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.repository.d.ts +0 -24
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.repository.d.ts.map +0 -1
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.router.d.ts +0 -271
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.router.d.ts.map +0 -1
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.service.d.ts +0 -56
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.service.d.ts.map +0 -1
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.validation.d.ts +0 -241
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.validation.d.ts.map +0 -1
- package/dist/types/modules/spend-to-get-history/validations/index.d.ts +0 -2
- package/dist/types/modules/spend-to-get-history/validations/index.d.ts.map +0 -1
- package/dist/types/modules/spend-to-get-history/validations/spend-to-get-history.validation.d.ts +0 -241
- package/dist/types/modules/spend-to-get-history/validations/spend-to-get-history.validation.d.ts.map +0 -1
- package/dist/types/modules/tournament/config/tournament-config.validation.d.ts +0 -201
- package/dist/types/modules/tournament/config/tournament-config.validation.d.ts.map +0 -1
- package/dist/types/modules/tournament/match/events/match-ended.consumer.d.ts +0 -2
- package/dist/types/modules/tournament/match/events/match-ended.consumer.d.ts.map +0 -1
- package/dist/types/modules/tournament/match/events/match-ended.event.d.ts +0 -14
- package/dist/types/modules/tournament/match/events/match-ended.event.d.ts.map +0 -1
- package/dist/types/modules/tournament/notification/jobs/notification.producer.d.ts +0 -10
- package/dist/types/modules/tournament/notification/jobs/notification.producer.d.ts.map +0 -1
- package/dist/types/modules/tournament/notification/jobs/notification.worker.d.ts +0 -9
- package/dist/types/modules/tournament/notification/jobs/notification.worker.d.ts.map +0 -1
- package/dist/types/modules/tournament/notification/notification.schedule.config.d.ts +0 -10
- package/dist/types/modules/tournament/notification/notification.schedule.config.d.ts.map +0 -1
- package/dist/types/modules/tournament/notification/notification.scheduler.service.d.ts +0 -10
- package/dist/types/modules/tournament/notification/notification.scheduler.service.d.ts.map +0 -1
|
@@ -1,99 +0,0 @@
|
|
|
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.spendToGetMarketingService = exports.SpendToGetMarketingService = void 0;
|
|
46
|
-
const typedi_1 = __importStar(require("typedi"));
|
|
47
|
-
const server_1 = require("@trpc/server");
|
|
48
|
-
const enum_1 = require("@lyxa.ai/core/dist/utilities/enum");
|
|
49
|
-
const marketing_conflict_service_1 = require("./marketing-conflict.service");
|
|
50
|
-
const spend_to_get_marketing_repository_1 = require("./spend-to-get-marketing.repository");
|
|
51
|
-
let SpendToGetMarketingService = class SpendToGetMarketingService {
|
|
52
|
-
repository;
|
|
53
|
-
constructor() {
|
|
54
|
-
this.repository = typedi_1.default.get(spend_to_get_marketing_repository_1.SpendToGetMarketingRepository);
|
|
55
|
-
}
|
|
56
|
-
async create(data) {
|
|
57
|
-
const shop = await this.repository.findShopById(data.shop);
|
|
58
|
-
if (!shop) {
|
|
59
|
-
throw new server_1.TRPCError({
|
|
60
|
-
code: 'NOT_FOUND',
|
|
61
|
-
message: `Shop not found`,
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
return await this.repository.create(data);
|
|
65
|
-
}
|
|
66
|
-
async update(_id, data) {
|
|
67
|
-
if (data.tiers) {
|
|
68
|
-
const existing = await this.repository.findById(_id);
|
|
69
|
-
if (existing && existing.status === enum_1.MarketingStatus.ACTIVE) {
|
|
70
|
-
const oldGroups = marketing_conflict_service_1.marketingConflictService.getRewardTypeGroups(existing.marketingType, existing.tiers);
|
|
71
|
-
const newGroups = marketing_conflict_service_1.marketingConflictService.getRewardTypeGroups(existing.marketingType, data.tiers);
|
|
72
|
-
const addedGroups = newGroups.filter(group => !oldGroups.includes(group));
|
|
73
|
-
if (addedGroups.length > 0) {
|
|
74
|
-
await marketing_conflict_service_1.marketingConflictService.assertNoConflict({
|
|
75
|
-
shop: existing.shop,
|
|
76
|
-
duration: data.duration ?? existing.duration,
|
|
77
|
-
rewardTypeGroups: addedGroups,
|
|
78
|
-
excludeMarketingId: _id,
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
const record = await this.repository.updateById(_id, data);
|
|
84
|
-
if (!record) {
|
|
85
|
-
throw new server_1.TRPCError({
|
|
86
|
-
code: 'NOT_FOUND',
|
|
87
|
-
message: `Record not found`,
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
return record;
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
exports.SpendToGetMarketingService = SpendToGetMarketingService;
|
|
94
|
-
exports.SpendToGetMarketingService = SpendToGetMarketingService = __decorate([
|
|
95
|
-
(0, typedi_1.Service)(),
|
|
96
|
-
__metadata("design:paramtypes", [])
|
|
97
|
-
], SpendToGetMarketingService);
|
|
98
|
-
exports.spendToGetMarketingService = typedi_1.default.get(SpendToGetMarketingService);
|
|
99
|
-
//# sourceMappingURL=spend-to-get-marketing.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spend-to-get-marketing.service.js","sourceRoot":"/","sources":["modules/marketing/services/spend-to-get-marketing.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA4C;AAC5C,yCAAyC;AAGzC,4DAAoE;AAKpE,6EAAwE;AACxE,2FAAoF;AAG7E,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IAC9B,UAAU,CAAgC;IAElD;QACC,IAAI,CAAC,UAAU,GAAG,gBAAS,CAAC,GAAG,CAAC,iEAA6B,CAAC,CAAC;IAChE,CAAC;IAMM,KAAK,CAAC,MAAM,CAAC,IAAe;QAClC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,gBAAgB;aACzB,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAOM,KAAK,CAAC,MAAM,CAAC,GAA4B,EAAE,IAAe;QAChE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAErD,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,sBAAe,CAAC,MAAM,EAAE,CAAC;gBAC5D,MAAM,SAAS,GAAG,qDAAwB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACvG,MAAM,SAAS,GAAG,qDAAwB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnG,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;gBAE1E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,MAAM,qDAAwB,CAAC,gBAAgB,CAAC;wBAC/C,IAAI,EAAE,QAAQ,CAAC,IAA+B;wBAC9C,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;wBAC5C,gBAAgB,EAAE,WAAW;wBAC7B,kBAAkB,EAAE,GAAG;qBACvB,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;QACF,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAE3D,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;CACD,CAAA;AA1DY,gEAA0B;qCAA1B,0BAA0B;IADtC,IAAA,gBAAO,GAAE;;GACG,0BAA0B,CA0DtC;AAEY,QAAA,0BAA0B,GAAG,gBAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC","sourcesContent":["import Container, { Service } from 'typedi';\nimport { TRPCError } from '@trpc/server';\nimport { DocumentType, mongoose } from '@typegoose/typegoose';\nimport { SpendToGetMarketing as Model } from '@lyxa.ai/core/dist/libraries/mongo/models/';\nimport { MarketingStatus } from '@lyxa.ai/core/dist/utilities/enum';\nimport {\n\tCreateSpendToGetMarketingDTO as CreateDTO,\n\tUpdateSpendToGetMarketingDTO as UpdateDTO,\n} from '@modules/marketing/validations';\nimport { marketingConflictService } from './marketing-conflict.service';\nimport { SpendToGetMarketingRepository } from './spend-to-get-marketing.repository';\n\n@Service()\nexport class SpendToGetMarketingService {\n\tprivate repository: SpendToGetMarketingRepository;\n\n\tconstructor() {\n\t\tthis.repository = Container.get(SpendToGetMarketingRepository);\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 shop = await this.repository.findShopById(data.shop);\n\t\tif (!shop) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: `Shop not found`,\n\t\t\t});\n\t\t}\n\t\treturn await this.repository.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: mongoose.Types.ObjectId, data: UpdateDTO): Promise<DocumentType<Model>> {\n\t\tif (data.tiers) {\n\t\t\tconst existing = await this.repository.findById(_id);\n\n\t\t\tif (existing && existing.status === MarketingStatus.ACTIVE) {\n\t\t\t\tconst oldGroups = marketingConflictService.getRewardTypeGroups(existing.marketingType, existing.tiers);\n\t\t\t\tconst newGroups = marketingConflictService.getRewardTypeGroups(existing.marketingType, data.tiers);\n\t\t\t\tconst addedGroups = newGroups.filter(group => !oldGroups.includes(group));\n\n\t\t\t\tif (addedGroups.length > 0) {\n\t\t\t\t\tawait marketingConflictService.assertNoConflict({\n\t\t\t\t\t\tshop: existing.shop as mongoose.Types.ObjectId,\n\t\t\t\t\t\tduration: data.duration ?? existing.duration,\n\t\t\t\t\t\trewardTypeGroups: addedGroups,\n\t\t\t\t\t\texcludeMarketingId: _id,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst record = await this.repository.updateById(_id, data);\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\nexport const spendToGetMarketingService = Container.get(SpendToGetMarketingService);\n"]}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { DocumentType, mongoose } from '@typegoose/typegoose';
|
|
2
|
-
import { SpendToGetMarketing } from '@lyxa.ai/core/dist/libraries/mongo/models';
|
|
3
|
-
export declare class SpendToGetProgressRepository {
|
|
4
|
-
private model;
|
|
5
|
-
constructor();
|
|
6
|
-
findActiveByShop(shop: mongoose.Types.ObjectId, now: Date): Promise<DocumentType<SpendToGetMarketing> | null>;
|
|
7
|
-
}
|
|
8
|
-
export declare const spendToGetProgressRepository: SpendToGetProgressRepository;
|
|
9
|
-
//# sourceMappingURL=spend-to-get-progress.repository.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spend-to-get-progress.repository.d.ts","sourceRoot":"/","sources":["modules/marketing/services/spend-to-get-progress.repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAA4B,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAI1G,qBACa,4BAA4B;IACxC,OAAO,CAAC,KAAK,CAAyE;;IAOhF,gBAAgB,CACrB,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAC7B,GAAG,EAAE,IAAI,GACP,OAAO,CAAC,YAAY,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC;CAQpD;AAED,eAAO,MAAM,4BAA4B,8BAA8C,CAAC"}
|
|
@@ -1,69 +0,0 @@
|
|
|
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.spendToGetProgressRepository = exports.SpendToGetProgressRepository = void 0;
|
|
46
|
-
const typedi_1 = __importStar(require("typedi"));
|
|
47
|
-
const models_1 = require("@lyxa.ai/core/dist/libraries/mongo/models");
|
|
48
|
-
const enum_1 = require("@lyxa.ai/core/dist/utilities/enum");
|
|
49
|
-
let SpendToGetProgressRepository = class SpendToGetProgressRepository {
|
|
50
|
-
model;
|
|
51
|
-
constructor() {
|
|
52
|
-
this.model = models_1.SpendToGetMarketingModel;
|
|
53
|
-
}
|
|
54
|
-
async findActiveByShop(shop, now) {
|
|
55
|
-
return this.model.findOne({
|
|
56
|
-
shop,
|
|
57
|
-
status: enum_1.MarketingStatus.ACTIVE,
|
|
58
|
-
'duration.start': { $lte: now },
|
|
59
|
-
$or: [{ 'duration.end': { $exists: false } }, { 'duration.end': { $gt: now } }],
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
exports.SpendToGetProgressRepository = SpendToGetProgressRepository;
|
|
64
|
-
exports.SpendToGetProgressRepository = SpendToGetProgressRepository = __decorate([
|
|
65
|
-
(0, typedi_1.Service)(),
|
|
66
|
-
__metadata("design:paramtypes", [])
|
|
67
|
-
], SpendToGetProgressRepository);
|
|
68
|
-
exports.spendToGetProgressRepository = typedi_1.default.get(SpendToGetProgressRepository);
|
|
69
|
-
//# sourceMappingURL=spend-to-get-progress.repository.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spend-to-get-progress.repository.js","sourceRoot":"/","sources":["modules/marketing/services/spend-to-get-progress.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA4C;AAE5C,sEAA0G;AAC1G,4DAAoE;AAI7D,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IAChC,KAAK,CAAyE;IAEtF;QACC,IAAI,CAAC,KAAK,GAAG,iCACwB,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,gBAAgB,CACrB,IAA6B,EAC7B,GAAS;QAET,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACzB,IAAI;YACJ,MAAM,EAAE,sBAAe,CAAC,MAAM;YAC9B,gBAAgB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;YAC/B,GAAG,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;SAC/E,CAAC,CAAC;IACJ,CAAC;CACD,CAAA;AAnBY,oEAA4B;uCAA5B,4BAA4B;IADxC,IAAA,gBAAO,GAAE;;GACG,4BAA4B,CAmBxC;AAEY,QAAA,4BAA4B,GAAG,gBAAS,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC","sourcesContent":["import Container, { Service } from 'typedi';\nimport { DocumentType, mongoose } from '@typegoose/typegoose';\nimport { SpendToGetMarketingModel, SpendToGetMarketing } from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport { MarketingStatus } from '@lyxa.ai/core/dist/utilities/enum';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\n\n@Service()\nexport class SpendToGetProgressRepository {\n\tprivate model: typeof SpendToGetMarketingModel & SoftDeleteModel<SpendToGetMarketing>;\n\n\tconstructor() {\n\t\tthis.model = SpendToGetMarketingModel as typeof SpendToGetMarketingModel &\n\t\t\tSoftDeleteModel<SpendToGetMarketing>;\n\t}\n\n\tasync findActiveByShop(\n\t\tshop: mongoose.Types.ObjectId,\n\t\tnow: Date\n\t): Promise<DocumentType<SpendToGetMarketing> | null> {\n\t\treturn this.model.findOne({\n\t\t\tshop,\n\t\t\tstatus: MarketingStatus.ACTIVE,\n\t\t\t'duration.start': { $lte: now },\n\t\t\t$or: [{ 'duration.end': { $exists: false } }, { 'duration.end': { $gt: now } }],\n\t\t});\n\t}\n}\n\nexport const spendToGetProgressRepository = Container.get(SpendToGetProgressRepository);\n"]}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { mongoose } from '@typegoose/typegoose';
|
|
2
|
-
import { SpendToGetRewardType } from '@lyxa.ai/core/dist/utilities/enum';
|
|
3
|
-
export interface SpendToGetTierProgress {
|
|
4
|
-
minSpend: number;
|
|
5
|
-
rewardType: SpendToGetRewardType;
|
|
6
|
-
rewardValue?: number;
|
|
7
|
-
maxDiscountCap?: number;
|
|
8
|
-
isMaxDiscountCapEnabled?: boolean;
|
|
9
|
-
isUnlocked: boolean;
|
|
10
|
-
}
|
|
11
|
-
export interface SpendToGetProgressResult {
|
|
12
|
-
marketing?: mongoose.Types.ObjectId;
|
|
13
|
-
tiers: SpendToGetTierProgress[];
|
|
14
|
-
appliedTier?: SpendToGetTierProgress;
|
|
15
|
-
discountAmount: number;
|
|
16
|
-
nextTier?: SpendToGetTierProgress;
|
|
17
|
-
amountToNextTier?: number;
|
|
18
|
-
isRedeemable: boolean;
|
|
19
|
-
}
|
|
20
|
-
export declare class SpendToGetProgressService {
|
|
21
|
-
private repository;
|
|
22
|
-
constructor();
|
|
23
|
-
getProgress(params: {
|
|
24
|
-
shop: mongoose.Types.ObjectId;
|
|
25
|
-
basketTotal: number;
|
|
26
|
-
userId?: mongoose.Types.ObjectId;
|
|
27
|
-
}): Promise<SpendToGetProgressResult>;
|
|
28
|
-
private calculateDiscountAmount;
|
|
29
|
-
}
|
|
30
|
-
export declare const spendToGetProgressService: SpendToGetProgressService;
|
|
31
|
-
//# sourceMappingURL=spend-to-get-progress.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spend-to-get-progress.service.d.ts","sourceRoot":"/","sources":["modules/marketing/services/spend-to-get-progress.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAKzE,MAAM,WAAW,sBAAsB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,oBAAoB,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,UAAU,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACxC,SAAS,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;IACpC,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;CACtB;AAQD,qBACa,yBAAyB;IACrC,OAAO,CAAC,UAAU,CAA+B;;IAYpC,WAAW,CAAC,MAAM,EAAE;QAChC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;KACjC,GAAG,OAAO,CAAC,wBAAwB,CAAC;IA2DrC,OAAO,CAAC,uBAAuB;CAgB/B;AAED,eAAO,MAAM,yBAAyB,2BAA2C,CAAC"}
|
|
@@ -1,123 +0,0 @@
|
|
|
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.spendToGetProgressService = exports.SpendToGetProgressService = void 0;
|
|
46
|
-
const typedi_1 = __importStar(require("typedi"));
|
|
47
|
-
const enum_1 = require("@lyxa.ai/core/dist/utilities/enum");
|
|
48
|
-
const dayjs_1 = require("@lyxa.ai/core/dist/utilities/dayjs");
|
|
49
|
-
const spend_to_get_history_service_1 = require("../../spend-to-get-history/spend-to-get-history.service");
|
|
50
|
-
const spend_to_get_progress_repository_1 = require("./spend-to-get-progress.repository");
|
|
51
|
-
const EMPTY_PROGRESS = {
|
|
52
|
-
tiers: [],
|
|
53
|
-
discountAmount: 0,
|
|
54
|
-
isRedeemable: false,
|
|
55
|
-
};
|
|
56
|
-
let SpendToGetProgressService = class SpendToGetProgressService {
|
|
57
|
-
repository;
|
|
58
|
-
constructor() {
|
|
59
|
-
this.repository = typedi_1.default.get(spend_to_get_progress_repository_1.SpendToGetProgressRepository);
|
|
60
|
-
}
|
|
61
|
-
async getProgress(params) {
|
|
62
|
-
const now = (0, dayjs_1.dayjs)().toDate();
|
|
63
|
-
const marketing = await this.repository.findActiveByShop(params.shop, now);
|
|
64
|
-
if (!marketing || marketing.tiers.length === 0) {
|
|
65
|
-
return EMPTY_PROGRESS;
|
|
66
|
-
}
|
|
67
|
-
const budgetExhausted = Boolean(marketing.isSpendLimitEnabled && marketing.spendLimit && (marketing.amountSpent ?? 0) >= marketing.spendLimit);
|
|
68
|
-
const userLimitReached = Boolean(params.userId) && Boolean(marketing.isPerUserLimitEnabled) && Boolean(marketing.perUserLimit)
|
|
69
|
-
? await spend_to_get_history_service_1.spendToGetHistoryService.hasUserReachedLimit(params.userId, marketing._id, marketing.perUserLimit)
|
|
70
|
-
: false;
|
|
71
|
-
const isRedeemable = !budgetExhausted && !userLimitReached;
|
|
72
|
-
const tierProgressList = [...marketing.tiers]
|
|
73
|
-
.sort((a, b) => a.minSpend - b.minSpend)
|
|
74
|
-
.map(tier => ({
|
|
75
|
-
minSpend: tier.minSpend,
|
|
76
|
-
rewardType: tier.rewardType,
|
|
77
|
-
rewardValue: tier.rewardValue,
|
|
78
|
-
maxDiscountCap: tier.maxDiscountCap,
|
|
79
|
-
isMaxDiscountCapEnabled: tier.isMaxDiscountCapEnabled,
|
|
80
|
-
isUnlocked: params.basketTotal >= tier.minSpend,
|
|
81
|
-
}));
|
|
82
|
-
let appliedTier;
|
|
83
|
-
let nextTier;
|
|
84
|
-
for (const tier of tierProgressList) {
|
|
85
|
-
if (tier.isUnlocked) {
|
|
86
|
-
appliedTier = tier;
|
|
87
|
-
}
|
|
88
|
-
else if (!nextTier) {
|
|
89
|
-
nextTier = tier;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
const discountAmount = isRedeemable && appliedTier ? this.calculateDiscountAmount(appliedTier, params.basketTotal) : 0;
|
|
93
|
-
return {
|
|
94
|
-
marketing: marketing._id,
|
|
95
|
-
tiers: tierProgressList,
|
|
96
|
-
appliedTier: isRedeemable ? appliedTier : undefined,
|
|
97
|
-
discountAmount,
|
|
98
|
-
nextTier,
|
|
99
|
-
amountToNextTier: nextTier ? Math.max(nextTier.minSpend - params.basketTotal, 0) : undefined,
|
|
100
|
-
isRedeemable: isRedeemable && Boolean(appliedTier),
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
calculateDiscountAmount(tier, basketTotal) {
|
|
104
|
-
if (tier.rewardType === enum_1.SpendToGetRewardType.FREE_DELIVERY) {
|
|
105
|
-
return 0;
|
|
106
|
-
}
|
|
107
|
-
if (tier.rewardType === enum_1.SpendToGetRewardType.FIXED) {
|
|
108
|
-
return tier.rewardValue ?? 0;
|
|
109
|
-
}
|
|
110
|
-
let amount = ((tier.rewardValue ?? 0) / 100) * basketTotal;
|
|
111
|
-
if (tier.isMaxDiscountCapEnabled && tier.maxDiscountCap) {
|
|
112
|
-
amount = Math.min(amount, tier.maxDiscountCap);
|
|
113
|
-
}
|
|
114
|
-
return amount;
|
|
115
|
-
}
|
|
116
|
-
};
|
|
117
|
-
exports.SpendToGetProgressService = SpendToGetProgressService;
|
|
118
|
-
exports.SpendToGetProgressService = SpendToGetProgressService = __decorate([
|
|
119
|
-
(0, typedi_1.Service)(),
|
|
120
|
-
__metadata("design:paramtypes", [])
|
|
121
|
-
], SpendToGetProgressService);
|
|
122
|
-
exports.spendToGetProgressService = typedi_1.default.get(SpendToGetProgressService);
|
|
123
|
-
//# sourceMappingURL=spend-to-get-progress.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spend-to-get-progress.service.js","sourceRoot":"/","sources":["modules/marketing/services/spend-to-get-progress.service.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, { Service } from 'typedi';\nimport { mongoose } from '@typegoose/typegoose';\nimport { SpendToGetRewardType } from '@lyxa.ai/core/dist/utilities/enum';\nimport { dayjs } from '@lyxa.ai/core/dist/utilities/dayjs';\nimport { spendToGetHistoryService } from '../../spend-to-get-history/spend-to-get-history.service';\nimport { SpendToGetProgressRepository } from './spend-to-get-progress.repository';\n\nexport interface SpendToGetTierProgress {\n\tminSpend: number;\n\trewardType: SpendToGetRewardType;\n\trewardValue?: number;\n\tmaxDiscountCap?: number;\n\tisMaxDiscountCapEnabled?: boolean;\n\tisUnlocked: boolean;\n}\n\nexport interface SpendToGetProgressResult {\n\tmarketing?: mongoose.Types.ObjectId;\n\ttiers: SpendToGetTierProgress[];\n\tappliedTier?: SpendToGetTierProgress;\n\tdiscountAmount: number;\n\tnextTier?: SpendToGetTierProgress;\n\tamountToNextTier?: number;\n\tisRedeemable: boolean;\n}\n\nconst EMPTY_PROGRESS: SpendToGetProgressResult = {\n\ttiers: [],\n\tdiscountAmount: 0,\n\tisRedeemable: false,\n};\n\n@Service()\nexport class SpendToGetProgressService {\n\tprivate repository: SpendToGetProgressRepository;\n\n\tconstructor() {\n\t\tthis.repository = Container.get(SpendToGetProgressRepository);\n\t}\n\n\t/**\n\t * Live progress + eligibility for a shop's active Spend-to-Get promotion, given a basket total.\n\t * Only the highest qualifying tier's reward ever applies (no stacking). Global spend-limit\n\t * exhaustion is read off the existing amountSpent/spendLimit status-flip fields (Marketing base\n\t * model), same source of truth the checkout path uses — no separate live aggregation here.\n\t */\n\tpublic async getProgress(params: {\n\t\tshop: mongoose.Types.ObjectId;\n\t\tbasketTotal: number;\n\t\tuserId?: mongoose.Types.ObjectId;\n\t}): Promise<SpendToGetProgressResult> {\n\t\tconst now = dayjs().toDate();\n\n\t\tconst marketing = await this.repository.findActiveByShop(params.shop, now);\n\n\t\tif (!marketing || marketing.tiers.length === 0) {\n\t\t\treturn EMPTY_PROGRESS;\n\t\t}\n\n\t\tconst budgetExhausted = Boolean(\n\t\t\tmarketing.isSpendLimitEnabled && marketing.spendLimit && (marketing.amountSpent ?? 0) >= marketing.spendLimit\n\t\t);\n\n\t\tconst userLimitReached =\n\t\t\tBoolean(params.userId) && Boolean(marketing.isPerUserLimitEnabled) && Boolean(marketing.perUserLimit)\n\t\t\t\t? await spendToGetHistoryService.hasUserReachedLimit(\n\t\t\t\t\t\tparams.userId as mongoose.Types.ObjectId,\n\t\t\t\t\t\tmarketing._id,\n\t\t\t\t\t\tmarketing.perUserLimit as number\n\t\t\t\t\t)\n\t\t\t\t: false;\n\n\t\tconst isRedeemable = !budgetExhausted && !userLimitReached;\n\n\t\tconst tierProgressList: SpendToGetTierProgress[] = [...marketing.tiers]\n\t\t\t.sort((a, b) => a.minSpend - b.minSpend)\n\t\t\t.map(tier => ({\n\t\t\t\tminSpend: tier.minSpend,\n\t\t\t\trewardType: tier.rewardType,\n\t\t\t\trewardValue: tier.rewardValue,\n\t\t\t\tmaxDiscountCap: tier.maxDiscountCap,\n\t\t\t\tisMaxDiscountCapEnabled: tier.isMaxDiscountCapEnabled,\n\t\t\t\tisUnlocked: params.basketTotal >= tier.minSpend,\n\t\t\t}));\n\n\t\tlet appliedTier: SpendToGetTierProgress | undefined;\n\t\tlet nextTier: SpendToGetTierProgress | undefined;\n\t\tfor (const tier of tierProgressList) {\n\t\t\tif (tier.isUnlocked) {\n\t\t\t\tappliedTier = tier;\n\t\t\t} else if (!nextTier) {\n\t\t\t\tnextTier = tier;\n\t\t\t}\n\t\t}\n\n\t\tconst discountAmount =\n\t\t\tisRedeemable && appliedTier ? this.calculateDiscountAmount(appliedTier, params.basketTotal) : 0;\n\n\t\treturn {\n\t\t\tmarketing: marketing._id,\n\t\t\ttiers: tierProgressList,\n\t\t\tappliedTier: isRedeemable ? appliedTier : undefined,\n\t\t\tdiscountAmount,\n\t\t\tnextTier,\n\t\t\tamountToNextTier: nextTier ? Math.max(nextTier.minSpend - params.basketTotal, 0) : undefined,\n\t\t\tisRedeemable: isRedeemable && Boolean(appliedTier),\n\t\t};\n\t}\n\n\tprivate calculateDiscountAmount(tier: SpendToGetTierProgress, basketTotal: number): number {\n\t\tif (tier.rewardType === SpendToGetRewardType.FREE_DELIVERY) {\n\t\t\t// Free delivery isn't a basket discount amount — the caller applies it as a delivery-fee override.\n\t\t\treturn 0;\n\t\t}\n\n\t\tif (tier.rewardType === SpendToGetRewardType.FIXED) {\n\t\t\treturn tier.rewardValue ?? 0;\n\t\t}\n\n\t\tlet amount = ((tier.rewardValue ?? 0) / 100) * basketTotal;\n\t\tif (tier.isMaxDiscountCapEnabled && tier.maxDiscountCap) {\n\t\t\tamount = Math.min(amount, tier.maxDiscountCap);\n\t\t}\n\t\treturn amount;\n\t}\n}\n\nexport const spendToGetProgressService = Container.get(SpendToGetProgressService);\n"]}
|