@lyxa.ai/marketing 1.0.60 → 1.0.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/event/event-initializations.d.ts.map +1 -1
- package/dist/lib/event/event-initializations.js +2 -0
- package/dist/lib/event/event-initializations.js.map +1 -1
- package/dist/lib/event/event-listeners/event-listeners.d.ts +2 -0
- package/dist/lib/event/event-listeners/event-listeners.d.ts.map +1 -1
- package/dist/lib/event/event-listeners/event-listeners.js +69 -12
- package/dist/lib/event/event-listeners/event-listeners.js.map +1 -1
- package/dist/lib/event/events/marketing-product-seed.event.d.ts +1 -2
- 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/event/events/marketing-product-sync.event.d.ts +11 -0
- package/dist/lib/event/events/marketing-product-sync.event.d.ts.map +1 -0
- package/dist/lib/event/events/marketing-product-sync.event.js +12 -0
- package/dist/lib/event/events/marketing-product-sync.event.js.map +1 -0
- package/dist/lib/index.d.ts +8175 -33
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +4 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/modules/coupon/routers/coupon.router.d.ts +7630 -2
- package/dist/lib/modules/coupon/routers/coupon.router.d.ts.map +1 -1
- package/dist/lib/modules/coupon/routers/coupon.router.js +0 -7
- package/dist/lib/modules/coupon/routers/coupon.router.js.map +1 -1
- package/dist/lib/modules/coupon/services/coupon.service.d.ts +0 -1
- package/dist/lib/modules/coupon/services/coupon.service.d.ts.map +1 -1
- package/dist/lib/modules/coupon/services/coupon.service.js +3 -4
- package/dist/lib/modules/coupon/services/coupon.service.js.map +1 -1
- package/dist/lib/modules/coupon/services/patterns/repository/CouponRepository.js +2 -2
- package/dist/lib/modules/coupon/services/patterns/repository/CouponRepository.js.map +1 -1
- package/dist/lib/modules/coupon/validations/coupon.validation.d.ts +6 -6
- package/dist/lib/modules/coupon/validations/coupon.validation.js +2 -2
- package/dist/lib/modules/coupon/validations/coupon.validation.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 +4 -1
- 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 +4 -1
- 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 +3 -0
- 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 +54 -8
- 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 +11 -0
- 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 +6 -0
- 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 +0 -1
- 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 +2 -6
- 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 +16 -3
- 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 +22 -3
- 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 +2 -0
- 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 +12 -0
- 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 +242 -35
- 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 +19 -1
- 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 +8 -1
- 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 +64 -1
- 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 +3 -0
- 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 +66 -8
- 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 +37 -19
- 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 +249 -18
- 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 +2 -0
- 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 +15 -3
- 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 +24 -3
- 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 +19 -1
- 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 +10 -0
- 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 +43 -0
- 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 +195 -10
- 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 +29 -0
- 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 +428 -33
- 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 +16 -6
- 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 +7 -4
- 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 +42 -7
- 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 +14 -3
- 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 +76 -16
- package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.repository.d.ts +13 -0
- package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.repository.d.ts.map +1 -0
- package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.repository.js +75 -0
- package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.repository.js.map +1 -0
- package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.service.d.ts +21 -0
- package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.service.d.ts.map +1 -0
- package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.service.js +83 -0
- package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.service.js.map +1 -0
- package/dist/lib/modules/marketing/patterns/repository/MarketingMetricsRepository.d.ts +1 -0
- package/dist/lib/modules/marketing/patterns/repository/MarketingMetricsRepository.d.ts.map +1 -1
- package/dist/lib/modules/marketing/patterns/repository/MarketingMetricsRepository.js +29 -0
- package/dist/lib/modules/marketing/patterns/repository/MarketingMetricsRepository.js.map +1 -1
- package/dist/lib/modules/marketing/routers/marketing.router.d.ts +14 -0
- package/dist/lib/modules/marketing/routers/marketing.router.d.ts.map +1 -1
- package/dist/lib/modules/marketing/routers/marketing.router.js +5 -0
- package/dist/lib/modules/marketing/routers/marketing.router.js.map +1 -1
- package/dist/lib/modules/marketing/services/index.d.ts +3 -0
- package/dist/lib/modules/marketing/services/index.d.ts.map +1 -1
- package/dist/lib/modules/marketing/services/index.js +3 -0
- package/dist/lib/modules/marketing/services/index.js.map +1 -1
- package/dist/lib/modules/marketing/services/marketing-conflict.repository.d.ts +9 -0
- package/dist/lib/modules/marketing/services/marketing-conflict.repository.d.ts.map +1 -0
- package/dist/lib/modules/marketing/services/marketing-conflict.repository.js +63 -0
- package/dist/lib/modules/marketing/services/marketing-conflict.repository.js.map +1 -0
- package/dist/lib/modules/marketing/services/marketing-conflict.service.d.ts +27 -0
- package/dist/lib/modules/marketing/services/marketing-conflict.service.d.ts.map +1 -0
- package/dist/lib/modules/marketing/services/marketing-conflict.service.js +135 -0
- package/dist/lib/modules/marketing/services/marketing-conflict.service.js.map +1 -0
- package/dist/lib/modules/marketing/services/marketing.service.d.ts +7 -2
- package/dist/lib/modules/marketing/services/marketing.service.d.ts.map +1 -1
- package/dist/lib/modules/marketing/services/marketing.service.js +97 -51
- package/dist/lib/modules/marketing/services/marketing.service.js.map +1 -1
- package/dist/lib/modules/marketing/services/product-marketing.service.d.ts +2 -3
- package/dist/lib/modules/marketing/services/product-marketing.service.d.ts.map +1 -1
- package/dist/lib/modules/marketing/services/product-marketing.service.js +42 -13
- package/dist/lib/modules/marketing/services/product-marketing.service.js.map +1 -1
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.repository.d.ts +14 -0
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.repository.d.ts.map +1 -0
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.repository.js +82 -0
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.repository.js.map +1 -0
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.service.d.ts +11 -0
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.service.d.ts.map +1 -0
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.service.js +99 -0
- package/dist/lib/modules/marketing/services/spend-to-get-marketing.service.js.map +1 -0
- package/dist/lib/modules/marketing/services/spend-to-get-progress.repository.d.ts +9 -0
- package/dist/lib/modules/marketing/services/spend-to-get-progress.repository.d.ts.map +1 -0
- package/dist/lib/modules/marketing/services/spend-to-get-progress.repository.js +69 -0
- package/dist/lib/modules/marketing/services/spend-to-get-progress.repository.js.map +1 -0
- package/dist/lib/modules/marketing/services/spend-to-get-progress.service.d.ts +31 -0
- package/dist/lib/modules/marketing/services/spend-to-get-progress.service.d.ts.map +1 -0
- package/dist/lib/modules/marketing/services/spend-to-get-progress.service.js +123 -0
- package/dist/lib/modules/marketing/services/spend-to-get-progress.service.js.map +1 -0
- package/dist/lib/modules/marketing/services/synchronize-product-marketing.service.d.ts.map +1 -1
- package/dist/lib/modules/marketing/services/synchronize-product-marketing.service.js +95 -27
- 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 +3 -0
- package/dist/lib/modules/marketing/validations/all-marketings.validation.js.map +1 -1
- package/dist/lib/modules/marketing/validations/buy1-get1-marketing.validation.d.ts +3 -3
- package/dist/lib/modules/marketing/validations/discount-marketing.validation.d.ts +3 -3
- package/dist/lib/modules/marketing/validations/index.d.ts +1 -0
- package/dist/lib/modules/marketing/validations/index.d.ts.map +1 -1
- package/dist/lib/modules/marketing/validations/index.js +1 -0
- package/dist/lib/modules/marketing/validations/index.js.map +1 -1
- package/dist/lib/modules/marketing/validations/marketing.validation.d.ts +17 -0
- package/dist/lib/modules/marketing/validations/marketing.validation.d.ts.map +1 -1
- package/dist/lib/modules/marketing/validations/marketing.validation.js +7 -1
- package/dist/lib/modules/marketing/validations/marketing.validation.js.map +1 -1
- package/dist/lib/modules/marketing/validations/product-marketing.validation.d.ts +2 -2
- package/dist/lib/modules/marketing/validations/spend-to-get-marketing.validation.d.ts +617 -0
- package/dist/lib/modules/marketing/validations/spend-to-get-marketing.validation.d.ts.map +1 -0
- package/dist/lib/modules/marketing/validations/spend-to-get-marketing.validation.js +119 -0
- package/dist/lib/modules/marketing/validations/spend-to-get-marketing.validation.js.map +1 -0
- package/dist/lib/modules/punch-marketing-history/routers/punch-marketing-history.router.d.ts +1 -1
- package/dist/lib/modules/punch-marketing-history/services/punch-marketing-history.service.d.ts +0 -1
- 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 +2 -49
- 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/lib/modules/spend-to-get-history/routers/index.d.ts +2 -0
- package/dist/lib/modules/spend-to-get-history/routers/index.d.ts.map +1 -0
- package/dist/lib/modules/spend-to-get-history/routers/index.js +18 -0
- package/dist/lib/modules/spend-to-get-history/routers/index.js.map +1 -0
- package/dist/lib/modules/spend-to-get-history/routers/spend-to-get-history.router.js +62 -0
- package/dist/lib/modules/spend-to-get-history/routers/spend-to-get-history.router.js.map +1 -0
- package/dist/lib/modules/spend-to-get-history/services/index.d.ts +2 -0
- package/dist/lib/modules/spend-to-get-history/services/index.d.ts.map +1 -0
- package/dist/lib/modules/spend-to-get-history/services/index.js +18 -0
- package/dist/lib/modules/spend-to-get-history/services/index.js.map +1 -0
- package/dist/lib/modules/spend-to-get-history/services/spend-to-get-history.service.d.ts +24 -0
- package/dist/lib/modules/spend-to-get-history/services/spend-to-get-history.service.d.ts.map +1 -0
- package/dist/lib/modules/spend-to-get-history/services/spend-to-get-history.service.js +136 -0
- package/dist/lib/modules/spend-to-get-history/services/spend-to-get-history.service.js.map +1 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.d.ts +24 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.d.ts.map +1 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.js +97 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.js.map +1 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.d.ts +271 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.d.ts.map +1 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.js +62 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.js.map +1 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.d.ts +24 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.d.ts.map +1 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.js +116 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.js.map +1 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.d.ts +232 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.d.ts.map +1 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.js +30 -0
- package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.js.map +1 -0
- package/dist/lib/modules/spend-to-get-history/validations/index.d.ts +2 -0
- package/dist/lib/modules/spend-to-get-history/validations/index.d.ts.map +1 -0
- package/dist/lib/modules/spend-to-get-history/validations/index.js +18 -0
- package/dist/lib/modules/spend-to-get-history/validations/index.js.map +1 -0
- package/dist/lib/modules/spend-to-get-history/validations/spend-to-get-history.validation.d.ts +232 -0
- package/dist/lib/modules/spend-to-get-history/validations/spend-to-get-history.validation.d.ts.map +1 -0
- package/dist/lib/modules/spend-to-get-history/validations/spend-to-get-history.validation.js +30 -0
- package/dist/lib/modules/spend-to-get-history/validations/spend-to-get-history.validation.js.map +1 -0
- package/dist/lib/modules/tournament/match/events/match-ended.consumer.d.ts +2 -0
- package/dist/lib/modules/tournament/match/events/match-ended.consumer.d.ts.map +1 -0
- package/dist/lib/modules/tournament/match/events/match-ended.consumer.js +15 -0
- package/dist/lib/modules/tournament/match/events/match-ended.consumer.js.map +1 -0
- package/dist/lib/modules/tournament/match/events/match-ended.event.d.ts +14 -0
- package/dist/lib/modules/tournament/match/events/match-ended.event.d.ts.map +1 -0
- package/dist/lib/modules/tournament/match/events/match-ended.event.js +12 -0
- package/dist/lib/modules/tournament/match/events/match-ended.event.js.map +1 -0
- package/dist/lib/modules/tournament/notification/jobs/notification.producer.d.ts +10 -0
- package/dist/lib/modules/tournament/notification/jobs/notification.producer.d.ts.map +1 -0
- package/dist/lib/modules/tournament/notification/jobs/notification.producer.js +23 -0
- package/dist/lib/modules/tournament/notification/jobs/notification.producer.js.map +1 -0
- package/dist/lib/modules/tournament/notification/jobs/notification.worker.d.ts +9 -0
- package/dist/lib/modules/tournament/notification/jobs/notification.worker.d.ts.map +1 -0
- package/dist/lib/modules/tournament/notification/jobs/notification.worker.js +82 -0
- package/dist/lib/modules/tournament/notification/jobs/notification.worker.js.map +1 -0
- package/dist/lib/modules/tournament/notification/notification.schedule.config.d.ts +10 -0
- package/dist/lib/modules/tournament/notification/notification.schedule.config.d.ts.map +1 -0
- package/dist/lib/modules/tournament/notification/notification.schedule.config.js +15 -0
- package/dist/lib/modules/tournament/notification/notification.schedule.config.js.map +1 -0
- package/dist/lib/modules/tournament/notification/notification.scheduler.service.d.ts +10 -0
- package/dist/lib/modules/tournament/notification/notification.scheduler.service.d.ts.map +1 -0
- package/dist/lib/modules/tournament/notification/notification.scheduler.service.js +73 -0
- package/dist/lib/modules/tournament/notification/notification.scheduler.service.js.map +1 -0
- package/dist/types/event/event-initializations.d.ts.map +1 -1
- package/dist/types/event/event-listeners/event-listeners.d.ts +2 -0
- package/dist/types/event/event-listeners/event-listeners.d.ts.map +1 -1
- package/dist/types/event/events/marketing-product-seed.event.d.ts +1 -2
- package/dist/types/event/events/marketing-product-seed.event.d.ts.map +1 -1
- package/dist/types/event/events/marketing-product-sync.event.d.ts +11 -0
- package/dist/types/event/events/marketing-product-sync.event.d.ts.map +1 -0
- 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 +8175 -33
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/modules/coupon/routers/coupon.router.d.ts +7630 -2
- package/dist/types/modules/coupon/routers/coupon.router.d.ts.map +1 -1
- package/dist/types/modules/coupon/services/coupon.service.d.ts +0 -1
- package/dist/types/modules/coupon/services/coupon.service.d.ts.map +1 -1
- package/dist/types/modules/coupon/validations/coupon.validation.d.ts +6 -6
- 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 +54 -8
- 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 +0 -1
- 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 +16 -3
- 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 +2 -0
- 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 +242 -35
- 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 +8 -1
- 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 +3 -0
- 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 +249 -18
- 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 +2 -0
- 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 +24 -3
- 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 +10 -0
- 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 +195 -10
- 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.service.d.ts +1 -0
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts.map +1 -0
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts +428 -33
- 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 +7 -4
- 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 +14 -3
- package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/session/limited-time-offer-campaign-session.repository.d.ts +13 -0
- package/dist/types/modules/limited-time-offer/session/limited-time-offer-campaign-session.repository.d.ts.map +1 -0
- package/dist/types/modules/limited-time-offer/session/limited-time-offer-campaign-session.service.d.ts +21 -0
- package/dist/types/modules/limited-time-offer/session/limited-time-offer-campaign-session.service.d.ts.map +1 -0
- package/dist/types/modules/marketing/patterns/repository/MarketingMetricsRepository.d.ts +1 -0
- package/dist/types/modules/marketing/patterns/repository/MarketingMetricsRepository.d.ts.map +1 -1
- package/dist/types/modules/marketing/routers/marketing.router.d.ts +14 -0
- package/dist/types/modules/marketing/routers/marketing.router.d.ts.map +1 -1
- package/dist/types/modules/marketing/services/index.d.ts +3 -0
- package/dist/types/modules/marketing/services/index.d.ts.map +1 -1
- package/dist/types/modules/marketing/services/marketing-conflict.repository.d.ts +9 -0
- package/dist/types/modules/marketing/services/marketing-conflict.repository.d.ts.map +1 -0
- package/dist/types/modules/marketing/services/marketing-conflict.service.d.ts +41 -0
- package/dist/types/modules/marketing/services/marketing-conflict.service.d.ts.map +1 -0
- package/dist/types/modules/marketing/services/marketing.service.d.ts +7 -2
- package/dist/types/modules/marketing/services/marketing.service.d.ts.map +1 -1
- package/dist/types/modules/marketing/services/product-marketing.service.d.ts +7 -3
- package/dist/types/modules/marketing/services/product-marketing.service.d.ts.map +1 -1
- package/dist/types/modules/marketing/services/spend-to-get-marketing.repository.d.ts +14 -0
- package/dist/types/modules/marketing/services/spend-to-get-marketing.repository.d.ts.map +1 -0
- package/dist/types/modules/marketing/services/spend-to-get-marketing.service.d.ts +20 -0
- package/dist/types/modules/marketing/services/spend-to-get-marketing.service.d.ts.map +1 -0
- package/dist/types/modules/marketing/services/spend-to-get-progress.repository.d.ts +9 -0
- package/dist/types/modules/marketing/services/spend-to-get-progress.repository.d.ts.map +1 -0
- package/dist/types/modules/marketing/services/spend-to-get-progress.service.d.ts +37 -0
- package/dist/types/modules/marketing/services/spend-to-get-progress.service.d.ts.map +1 -0
- package/dist/types/modules/marketing/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 +1 -0
- package/dist/types/modules/marketing/validations/index.d.ts.map +1 -1
- package/dist/types/modules/marketing/validations/marketing.validation.d.ts +17 -0
- package/dist/types/modules/marketing/validations/marketing.validation.d.ts.map +1 -1
- package/dist/types/modules/marketing/validations/product-marketing.validation.d.ts +2 -2
- package/dist/types/modules/marketing/validations/spend-to-get-marketing.validation.d.ts +630 -0
- package/dist/types/modules/marketing/validations/spend-to-get-marketing.validation.d.ts.map +1 -0
- package/dist/types/modules/punch-marketing-history/routers/punch-marketing-history.router.d.ts +1 -1
- package/dist/types/modules/punch-marketing-history/services/punch-marketing-history.service.d.ts +0 -5
- 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/dist/types/modules/spend-to-get-history/routers/index.d.ts +2 -0
- package/dist/types/modules/spend-to-get-history/routers/index.d.ts.map +1 -0
- package/dist/types/modules/spend-to-get-history/services/index.d.ts +2 -0
- package/dist/types/modules/spend-to-get-history/services/index.d.ts.map +1 -0
- package/dist/types/modules/spend-to-get-history/services/spend-to-get-history.service.d.ts +56 -0
- package/dist/types/modules/spend-to-get-history/services/spend-to-get-history.service.d.ts.map +1 -0
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.repository.d.ts +24 -0
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.repository.d.ts.map +1 -0
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.router.d.ts +271 -0
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.router.d.ts.map +1 -0
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.service.d.ts +56 -0
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.service.d.ts.map +1 -0
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.validation.d.ts +241 -0
- package/dist/types/modules/spend-to-get-history/spend-to-get-history.validation.d.ts.map +1 -0
- package/dist/types/modules/spend-to-get-history/validations/index.d.ts +2 -0
- package/dist/types/modules/spend-to-get-history/validations/index.d.ts.map +1 -0
- package/dist/types/modules/spend-to-get-history/validations/spend-to-get-history.validation.d.ts +241 -0
- package/dist/types/modules/spend-to-get-history/validations/spend-to-get-history.validation.d.ts.map +1 -0
- package/dist/types/modules/tournament/config/tournament-config.validation.d.ts +201 -0
- package/dist/types/modules/tournament/config/tournament-config.validation.d.ts.map +1 -0
- package/dist/types/modules/tournament/match/events/match-ended.consumer.d.ts +2 -0
- package/dist/types/modules/tournament/match/events/match-ended.consumer.d.ts.map +1 -0
- package/dist/types/modules/tournament/match/events/match-ended.event.d.ts +14 -0
- package/dist/types/modules/tournament/match/events/match-ended.event.d.ts.map +1 -0
- package/dist/types/modules/tournament/notification/jobs/notification.producer.d.ts +10 -0
- package/dist/types/modules/tournament/notification/jobs/notification.producer.d.ts.map +1 -0
- package/dist/types/modules/tournament/notification/jobs/notification.worker.d.ts +9 -0
- package/dist/types/modules/tournament/notification/jobs/notification.worker.d.ts.map +1 -0
- package/dist/types/modules/tournament/notification/notification.schedule.config.d.ts +10 -0
- package/dist/types/modules/tournament/notification/notification.schedule.config.d.ts.map +1 -0
- package/dist/types/modules/tournament/notification/notification.scheduler.service.d.ts +10 -0
- package/dist/types/modules/tournament/notification/notification.scheduler.service.d.ts.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CouponRepository.js","sourceRoot":"/","sources":["modules/coupon/services/patterns/repository/CouponRepository.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tBaseCoupon,\n\tCoupon,\n\tCouponModel,\n\tgetCoreUserModel,\n\tOrderModel,\n\tReferralSetting,\n\tReferralSettingModel,\n\tUser,\n\tUserModel,\n\tZoneModel,\n} from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { mongoose } from '@typegoose/typegoose';\nimport { getRoundSecondaryCurrencyStage } from '@lyxa.ai/core/dist/utilities/pipelines/common-pipeline-functions';\nimport {\n\tCouponType,\n\tItemType,\n\tRegularOrderStatus,\n\tServiceBookingStatus,\n\tStatus,\n\tValueType,\n} from '@lyxa.ai/core/dist/utilities/enum';\nimport { getExchangeRate } from '@lyxa.ai/core/dist/utilities/currency';\nimport { roundSecondaryCurrency } from '@lyxa.ai/core/dist/utilities/shared';\nimport { dayjs } from '@lyxa.ai/core/dist/utilities/dayjs';\nimport { CouponUsersRequestDTO, SingleCouppnOrdersRequestDTO } from '@modules/coupon/validations';\nimport { paginateAggregation, RawPaginatedResult } from '@lyxa.ai/core/dist/utilities/pagination';\nimport { buildSearchQuery } from '@lyxa.ai/core/dist/utilities/search';\n\nexport class CouponRepository {\n\tprivate readonly model: typeof CouponModel & SoftDeleteModel<Coupon>;\n\tprivate readonly userModel: typeof UserModel & SoftDeleteModel<User>;\n\tprivate readonly referralSettingsModel: typeof ReferralSettingModel & SoftDeleteModel<ReferralSetting>;\n\tprivate readonly zoneModel: typeof ZoneModel;\n\tprivate _coreUserModel: ReturnType<typeof getCoreUserModel> | null = null;\n\tprivate orderModel: typeof OrderModel;\n\n\tconstructor() {\n\t\tthis.model = CouponModel as typeof CouponModel & SoftDeleteModel<Coupon>;\n\t\tthis.userModel = UserModel as typeof UserModel & SoftDeleteModel<User>;\n\t\tthis.referralSettingsModel = ReferralSettingModel as typeof ReferralSettingModel &\n\t\t\tSoftDeleteModel<ReferralSetting>;\n\t\tthis.zoneModel = ZoneModel;\n\t\tthis.orderModel = OrderModel as typeof OrderModel;\n\t}\n\n\tprivate get coreUserModel() {\n\t\tif (!this._coreUserModel) {\n\t\t\tthis._coreUserModel = getCoreUserModel();\n\t\t}\n\t\treturn this._coreUserModel;\n\t}\n\n\tpublic async getUserCoupons(\n\t\tuser: mongoose.Types.ObjectId | undefined,\n\t\tshop: mongoose.Types.ObjectId | undefined,\n\t\tvendor: mongoose.Types.ObjectId | undefined,\n\t\titemType: ItemType | undefined\n\t): Promise<any> {\n\t\tconst [exchangeRate, referralSettings] = await Promise.all([\n\t\t\tgetExchangeRate(),\n\t\t\tthis.referralSettingsModel.findOne(),\n\t\t]);\n\n\t\tconst secondaryReferralReceiverValue =\n\t\t\treferralSettings?.receiver?.valueType == ValueType.PERCENTAGE\n\t\t\t\t? null\n\t\t\t\t: roundSecondaryCurrency((referralSettings?.receiver?.value ?? 0) * exchangeRate);\n\n\t\tconst secondaryReferralReceiverMinOrderAmount = roundSecondaryCurrency(\n\t\t\t(referralSettings?.receiver?.minimumOrderValue ?? 0) * exchangeRate\n\t\t);\n\n\t\tconst now = dayjs().toDate();\n\n\t\tconst pipeline: mongoose.PipelineStage[] = [\n\t\t\t// Match the user\n\t\t\t{\n\t\t\t\t$match: { _id: user },\n\t\t\t},\n\n\t\t\t// Lookup coupons with nested referral/influencer/shop\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: 'coupons',\n\t\t\t\t\tlocalField: 'coupons',\n\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\tas: 'couponDocs',\n\t\t\t\t\tpipeline: [\n\t\t\t\t\t\t// Active and started\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t\t$expr: {\n\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t{ $eq: [{ $ifNull: ['$status', Status.ACTIVE] }, Status.ACTIVE] },\n\t\t\t\t\t\t\t\t\t\t{ $lte: [{ $ifNull: ['$duration.start', now] }, now] },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t...(shop || vendor\n\t\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t$nor: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ couponType: CouponType.INDIVIDUAL_STORE },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ couponType: CouponType.SHOPS_CATEGORIES },\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ couponType: { $ne: CouponType.CUSTOM_COUPON } },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ $or: [{ shops: { $exists: false } }, { shops: { $size: 0 } }] },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ $or: [{ vendors: { $exists: false } }, { vendors: { $size: 0 } }] },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ $or: [{ itemTypes: { $exists: false } }, { itemTypes: { $size: 0 } }] },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t// Lookup referralUser and influencer\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$lookup: {\n\t\t\t\t\t\t\t\tfrom: 'users',\n\t\t\t\t\t\t\t\tlocalField: 'referralUser',\n\t\t\t\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\t\t\t\tas: 'referralUser',\n\t\t\t\t\t\t\t\tpipeline: [{ $project: { coreUser: 1 } }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$lookup: {\n\t\t\t\t\t\t\t\tfrom: 'users',\n\t\t\t\t\t\t\t\tlocalField: 'influencer',\n\t\t\t\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\t\t\t\tas: 'influencer',\n\t\t\t\t\t\t\t\tpipeline: [{ $project: { coreUser: 1 } }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t// Lookup shop\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$lookup: {\n\t\t\t\t\t\t\t\tfrom: 'shops',\n\t\t\t\t\t\t\t\tlocalField: 'shop',\n\t\t\t\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\t\t\t\tas: 'shop',\n\t\t\t\t\t\t\t\tpipeline: [{ $project: { name: 1 } }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t// Lookup vendor\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$lookup: {\n\t\t\t\t\t\t\t\tfrom: 'vendors',\n\t\t\t\t\t\t\t\tlocalField: 'vendor',\n\t\t\t\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\t\t\t\tas: 'vendor',\n\t\t\t\t\t\t\t\tpipeline: [{ $project: { name: 1 } }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ $unwind: { path: '$shop', preserveNullAndEmptyArrays: true } },\n\t\t\t\t\t\t{ $unwind: { path: '$vendor', preserveNullAndEmptyArrays: true } },\n\t\t\t\t\t\t{ $unwind: { path: '$referralUser', preserveNullAndEmptyArrays: true } },\n\t\t\t\t\t\t{ $unwind: { path: '$influencer', preserveNullAndEmptyArrays: true } },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$addFields: {\n\t\t\t\t\t\t\t\treferringUser: { $ifNull: ['$referralUser.coreUser', '$influencer.coreUser'] },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ $project: { referralUser: 0, influencer: 0 } },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// Lookup orders once and compute:\n\t\t\t// - total usage per coupon\n\t\t\t// - all shops user ordered from\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: 'orders',\n\t\t\t\t\tlet: { userId: '$_id' },\n\t\t\t\t\tpipeline: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t\t$expr: { $eq: ['$user', '$$userId'] },\n\t\t\t\t\t\t\t\tstatus: { $ne: RegularOrderStatus.CANCELLED },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$facet: {\n\t\t\t\t\t\t\t\t// ordered shops for first-order logic\n\t\t\t\t\t\t\t\torderedShops: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$group: {\n\t\t\t\t\t\t\t\t\t\t\t_id: null,\n\t\t\t\t\t\t\t\t\t\t\tshops: { $addToSet: '$shop' },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\n\t\t\t\t\t\t\t\t// coupon usage WITH SNAPSHOT\n\t\t\t\t\t\t\t\tcouponUsage: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t\t\t\t\t'adjustedFinance.coupon.coupon': { $exists: true },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$group: {\n\t\t\t\t\t\t\t\t\t\t\t_id: '$adjustedFinance.coupon.coupon',\n\t\t\t\t\t\t\t\t\t\t\tsnap: { $first: '$adjustedFinance.coupon' },\n\t\t\t\t\t\t\t\t\t\t\tcount: { $sum: 1 },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tas: 'orderStats',\n\t\t\t\t},\n\t\t\t},\n\t\t\t// Lookup service bookings once and compute vendor-side first-order/usage data.\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: 'serviceBookings',\n\t\t\t\t\tlet: { userId: '$_id' },\n\t\t\t\t\tpipeline: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t\t$expr: { $eq: ['$user', '$$userId'] },\n\t\t\t\t\t\t\t\tstatus: { $ne: ServiceBookingStatus.CANCELLED },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$facet: {\n\t\t\t\t\t\t\t\torderedVendors: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$group: {\n\t\t\t\t\t\t\t\t\t\t\t_id: null,\n\t\t\t\t\t\t\t\t\t\t\tvendors: { $addToSet: '$vendor' },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tcouponUsage: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t\t\t\t\t'adjustedFinance.coupon.coupon': { $exists: true },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$group: {\n\t\t\t\t\t\t\t\t\t\t\t_id: '$adjustedFinance.coupon.coupon',\n\t\t\t\t\t\t\t\t\t\t\tsnap: { $first: '$adjustedFinance.coupon' },\n\t\t\t\t\t\t\t\t\t\t\tcount: { $sum: 1 },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tas: 'serviceBookingStats',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\torderedShops: {\n\t\t\t\t\t\t$ifNull: [{ $arrayElemAt: ['$orderStats.orderedShops.shops', 0] }, []],\n\t\t\t\t\t},\n\t\t\t\t\torderedVendors: {\n\t\t\t\t\t\t$ifNull: [{ $arrayElemAt: ['$serviceBookingStats.orderedVendors.vendors', 0] }, []],\n\t\t\t\t\t},\n\t\t\t\t\tcouponUsage: {\n\t\t\t\t\t\t$concatArrays: [\n\t\t\t\t\t\t\t{ $ifNull: [{ $arrayElemAt: ['$orderStats.couponUsage', 0] }, []] },\n\t\t\t\t\t\t\t{ $ifNull: [{ $arrayElemAt: ['$serviceBookingStats.couponUsage', 0] }, []] },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// Unwind coupons to classify individually\n\t\t\t{ $unwind: '$couponDocs' },\n\n\t\t\t// Filter coupons by shop/vendor/itemType\n\t\t\t...(shop || vendor ? this.filterShopVendorCoupons(shop, vendor, itemType) : []),\n\n\t\t\t// First-order-only coupon filter\n\t\t\t...this.filterFirstOrderOnlyCoupons({ shop, vendor }),\n\n\t\t\t// Compute usage count per coupon\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\tusageData: {\n\t\t\t\t\t\t$arrayElemAt: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$filter: {\n\t\t\t\t\t\t\t\t\tinput: '$couponUsage',\n\t\t\t\t\t\t\t\t\tas: 'cu',\n\t\t\t\t\t\t\t\t\tcond: { $eq: ['$$cu._id', '$couponDocs._id'] },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\tusedCount: {\n\t\t\t\t\t\t$sum: {\n\t\t\t\t\t\t\t$map: {\n\t\t\t\t\t\t\t\tinput: {\n\t\t\t\t\t\t\t\t\t$filter: {\n\t\t\t\t\t\t\t\t\t\tinput: '$couponUsage',\n\t\t\t\t\t\t\t\t\t\tas: 'cu',\n\t\t\t\t\t\t\t\t\t\tcond: { $eq: ['$$cu._id', '$couponDocs._id'] },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tas: 'cu',\n\t\t\t\t\t\t\t\tin: { $ifNull: ['$$cu.count', 0] },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// Expiration & secondary currency\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\tisExpired: {\n\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t{ $gt: [{ $strLenCP: { $ifNull: ['$couponDocs.expirationReason', ''] } }, 0] },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t{ $ifNull: ['$couponDocs.duration.end', false] },\n\t\t\t\t\t\t\t\t\t{ $lt: ['$couponDocs.duration.end', now] },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\texchangeRate,\n\t\t\t\t\t'couponDocs.value': {\n\t\t\t\t\t\t$switch: {\n\t\t\t\t\t\t\tbranches: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcase: { $eq: ['$couponDocs.couponType', CouponType.REFERRAL_CODE] },\n\t\t\t\t\t\t\t\t\tthen: referralSettings?.receiver?.value ?? 0,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tdefault: '$couponDocs.value',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'couponDocs.valueType': {\n\t\t\t\t\t\t$switch: {\n\t\t\t\t\t\t\tbranches: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcase: { $eq: ['$couponDocs.couponType', CouponType.REFERRAL_CODE] },\n\t\t\t\t\t\t\t\t\tthen: referralSettings?.receiver?.valueType ?? 0,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tdefault: '$couponDocs.valueType',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'couponDocs.secondaryCurrencyValue': {\n\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t{ $eq: ['$couponDocs.valueType', ValueType.PERCENTAGE] },\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$switch: {\n\t\t\t\t\t\t\t\t\tbranches: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tcase: { $eq: ['$couponDocs.couponType', CouponType.REFERRAL_CODE] },\n\t\t\t\t\t\t\t\t\t\t\tthen: secondaryReferralReceiverValue,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tdefault: getRoundSecondaryCurrencyStage({\n\t\t\t\t\t\t\t\t\t\t$multiply: ['$couponDocs.value', exchangeRate],\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t'couponDocs.secondaryCurrencyMaxDiscountLimit': {\n\t\t\t\t\t\t$switch: {\n\t\t\t\t\t\t\tbranches: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcase: { $eq: ['$couponDocs.couponType', CouponType.REFERRAL_CODE] },\n\t\t\t\t\t\t\t\t\tthen: null,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tdefault: getRoundSecondaryCurrencyStage({\n\t\t\t\t\t\t\t\t$multiply: ['$couponDocs.maxDiscountLimit', exchangeRate],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'couponDocs.secondaryCurrencyMinOrderValue': {\n\t\t\t\t\t\t$switch: {\n\t\t\t\t\t\t\tbranches: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcase: { $eq: ['$couponDocs.couponType', CouponType.REFERRAL_CODE] },\n\t\t\t\t\t\t\t\t\tthen: secondaryReferralReceiverMinOrderAmount,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tdefault: getRoundSecondaryCurrencyStage({\n\t\t\t\t\t\t\t\t$multiply: ['$couponDocs.minOrderValue', exchangeRate],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// Classify category\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\tcategory: {\n\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t'$isExpired',\n\t\t\t\t\t\t\t'expired',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t\t\t{ $gt: ['$usedCount', 0] },\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ $not: ['$couponDocs.orderLimitPerUser'] },\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ $lt: ['$usedCount', '$couponDocs.orderLimitPerUser'] },\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t'available',\n\t\t\t\t\t\t\t\t\t\t\t'used',\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t'available',\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// Group into arrays\n\t\t\t{\n\t\t\t\t$group: {\n\t\t\t\t\t_id: '$_id',\n\t\t\t\t\tavailable: {\n\t\t\t\t\t\t$push: { $cond: [{ $eq: ['$category', 'available'] }, '$couponDocs', '$$REMOVE'] },\n\t\t\t\t\t},\n\t\t\t\t\tused: {\n\t\t\t\t\t\t$push: { $cond: [{ $eq: ['$category', 'used'] }, '$couponDocs', '$$REMOVE'] },\n\t\t\t\t\t},\n\t\t\t\t\texpired: {\n\t\t\t\t\t\t$push: { $cond: [{ $eq: ['$category', 'expired'] }, '$couponDocs', '$$REMOVE'] },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{ $project: { _id: 0 } },\n\t\t];\n\n\t\tconst [results] = await this.userModel.aggregate(pipeline);\n\n\t\tif (!results) {\n\t\t\treturn {\n\t\t\t\tavailable: [],\n\t\t\t\tused: [],\n\t\t\t\texpired: [],\n\t\t\t};\n\t\t}\n\n\t\tconst populatedResults = await this.userModel.populate(results, {\n\t\t\tpath: 'available.referringUser',\n\t\t\tmodel: this.coreUserModel,\n\t\t\tselect: { _id: 0, name: 1 },\n\t\t});\n\n\t\treturn populatedResults;\n\t}\n\n\tpublic addLabelsToAllCoupons(coupons: any): any {\n\t\treturn {\n\t\t\tavailable: this.addLabelsToCoupons(coupons.available).reverse(),\n\t\t\tused: this.addLabelsToCoupons(coupons.used).reverse(),\n\t\t\texpired: this.addLabelsToCoupons(coupons.expired).reverse(),\n\t\t};\n\t}\n\n\tpublic addLabelsToCoupons(coupons: any[]): any[] {\n\t\tconst resultsWithLabels = coupons.map(coupon => {\n\t\t\tconst valuePart =\n\t\t\t\tcoupon.valueType === 'fixed'\n\t\t\t\t\t? this.formatCurrency(coupon.value, coupon.secondaryCurrencyValue)\n\t\t\t\t\t: `${coupon.value}%`;\n\n\t\t\tconst maxDiscountPart =\n\t\t\t\tcoupon.isMaxDiscountLimitEnabled && coupon.maxDiscountLimit > 0\n\t\t\t\t\t? ` up to ${this.formatCurrency(coupon.maxDiscountLimit, coupon.secondaryCurrencyMaxDiscountLimit)}`\n\t\t\t\t\t: '';\n\n\t\t\tconst influencerPart = coupon.referringUser ? ` (Referred by ${coupon.referringUser.name})` : '';\n\n\t\t\tcoupon.couponOfferLabel = `Save ${valuePart}${maxDiscountPart}${influencerPart}`;\n\n\t\t\tlet validityParts: string[] = [];\n\n\t\t\tif (coupon.couponType === CouponType.REFERRAL_CODE) {\n\t\t\t\tvalidityParts.push(\n\t\t\t\t\t`Minimum order ${this.formatCurrency(null, coupon.secondaryCurrencyMinOrderValue)}`\n\t\t\t\t);\n\t\t\t} else if (coupon.isMinOrderValueEnabled && coupon.minOrderValue > 0) {\n\t\t\t\tvalidityParts.push(\n\t\t\t\t\t`Minimum order ${this.formatCurrency(coupon.minOrderValue, coupon.secondaryCurrencyMinOrderValue)}`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (coupon.isOrderLimitPerUserEnabled && coupon.orderLimitPerUser > 0) {\n\t\t\t\tvalidityParts.push(`Applied on ${coupon.orderLimitPerUser} order`);\n\t\t\t}\n\n\t\t\tcoupon.couponValidityLabel = validityParts.join('. ');\n\n\t\t\treturn coupon;\n\t\t});\n\n\t\treturn resultsWithLabels;\n\t}\n\n\tprivate formatCurrency(value: any, secondaryCurrencyValue: any) {\n\t\tconst formatterUSD = new Intl.NumberFormat('en-US', {\n\t\t\tminimumFractionDigits: 0,\n\t\t\tmaximumFractionDigits: 2,\n\t\t});\n\n\t\tconst formatterLBP = new Intl.NumberFormat('en-US', {\n\t\t\tminimumFractionDigits: 0,\n\t\t});\n\n\t\tif (secondaryCurrencyValue !== null && secondaryCurrencyValue !== undefined) {\n\t\t\treturn 'LBP ' + formatterLBP.format(Number(secondaryCurrencyValue));\n\t\t}\n\n\t\treturn '$' + formatterUSD.format(Number(value ?? 0));\n\t}\n\n\tprivate filterShopVendorCoupons(\n\t\tshop?: mongoose.Types.ObjectId,\n\t\tvendor?: mongoose.Types.ObjectId,\n\t\titemType?: ItemType\n\t): mongoose.PipelineStage[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\t$match: {\n\t\t\t\t\t$expr: {\n\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t{ $eq: ['$couponDocs.couponType', CouponType.INDIVIDUAL_STORE] },\n\t\t\t\t\t\t\t\t\tshop\n\t\t\t\t\t\t\t\t\t\t? { $eq: ['$couponDocs.shop._id', shop] }\n\t\t\t\t\t\t\t\t\t\t: { $eq: ['$couponDocs.vendor._id', vendor] },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t{ $eq: ['$couponDocs.couponType', CouponType.SHOPS_CATEGORIES] },\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t\t\t\t\t{ $in: [itemType, { $ifNull: ['$couponDocs.itemTypes', []] }] },\n\t\t\t\t\t\t\t\t\t\t\t...(shop ? [{ $in: [shop, { $ifNull: ['$couponDocs.shops', []] }] }] : []),\n\t\t\t\t\t\t\t\t\t\t\t...(vendor ? [{ $in: [vendor, { $ifNull: ['$couponDocs.vendors', []] }] }] : []),\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t{ $eq: ['$couponDocs.couponType', CouponType.INDIVIDUAL_USER] },\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t\t\t\t\t{ $in: [itemType, { $ifNull: ['$couponDocs.itemTypes', []] }] },\n\t\t\t\t\t\t\t\t\t\t\t...(shop ? [{ $in: [shop, { $ifNull: ['$couponDocs.shops', []] }] }] : []),\n\t\t\t\t\t\t\t\t\t\t\t...(vendor ? [{ $in: [vendor, { $ifNull: ['$couponDocs.vendors', []] }] }] : []),\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ $eq: [{ $size: { $ifNull: ['$couponDocs.shops', []] } }, 0] },\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ $eq: [{ $size: { $ifNull: ['$couponDocs.vendors', []] } }, 0] },\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ $eq: [{ $size: { $ifNull: ['$couponDocs.itemTypes', []] } }, 0] },\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$not: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$in: [\n\t\t\t\t\t\t\t\t\t\t\t'$couponDocs.couponType',\n\t\t\t\t\t\t\t\t\t\t\t[CouponType.INDIVIDUAL_STORE, CouponType.SHOPS_CATEGORIES, CouponType.INDIVIDUAL_USER],\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\t}\n\n\tprivate filterFirstOrderOnlyCoupons(data: {\n\t\tshop?: mongoose.Types.ObjectId;\n\t\tvendor?: mongoose.Types.ObjectId;\n\t}): mongoose.PipelineStage[] {\n\t\tconst { shop, vendor } = data;\n\t\tconst hasOrderedFromStore = vendor\n\t\t\t? { $in: [vendor, '$orderedVendors'] }\n\t\t\t: shop\n\t\t\t\t? { $in: [shop, '$orderedShops'] }\n\t\t\t\t: {\n\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t{ $in: ['$couponDocs.shop._id', '$orderedShops'] },\n\t\t\t\t\t\t\t{ $in: ['$couponDocs.vendor._id', '$orderedVendors'] },\n\t\t\t\t\t\t],\n\t\t\t\t\t};\n\t\tconst hasUnusedStoreInCategory = vendor\n\t\t\t? { $in: [vendor, '$orderedVendors'] }\n\t\t\t: shop\n\t\t\t\t? { $in: [shop, '$orderedShops'] }\n\t\t\t\t: {\n\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$eq: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$size: {\n\t\t\t\t\t\t\t\t\t\t\t$setDifference: [{ $ifNull: ['$couponDocs.shops', []] }, '$orderedShops'],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$eq: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$size: {\n\t\t\t\t\t\t\t\t\t\t\t$setDifference: [{ $ifNull: ['$couponDocs.vendors', []] }, '$orderedVendors'],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t};\n\n\t\treturn [\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\thasOrderedFromStore: {\n\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t{ $eq: ['$couponDocs.couponType', CouponType.INDIVIDUAL_STORE] },\n\t\t\t\t\t\t\thasOrderedFromStore,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\thasUnusedShopInCategory: {\n\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t{ $eq: ['$couponDocs.couponType', CouponType.SHOPS_CATEGORIES] },\n\t\t\t\t\t\t\thasUnusedStoreInCategory,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t$match: {\n\t\t\t\t\t$expr: {\n\t\t\t\t\t\t$not: {\n\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t$in: ['$couponDocs.couponType', [CouponType.INDIVIDUAL_STORE, CouponType.SHOPS_CATEGORIES]],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ $eq: ['$couponDocs.firstOrderOnly', true] },\n\t\t\t\t\t\t\t\t{ $or: ['$hasOrderedFromStore', '$hasUnusedShopInCategory'] },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\t}\n\n\tpublic findById(couponId: string) {\n\t\treturn this.model.findOne({ _id: couponId, deletedAt: null }).lean<BaseCoupon>().exec();\n\t}\n\n\tpublic async singleCouponUsers(params: CouponUsersRequestDTO) {\n\t\tconst { page = 1, size = 10, sort, search } = params;\n\n\t\tconst pipeline = this.buildCouponUsersPipeline(params);\n\n\t\tconst result = await paginateAggregation(\n\t\t\tthis.orderModel,\n\t\t\tpipeline,\n\t\t\tpage,\n\t\t\tsize,\n\t\t\tsort ?? { creationDate: -1 }\n\t\t);\n\n\t\tawait this.attachCoreUsers(result.documents);\n\n\t\tif (search) {\n\t\t\tconst keyword = search.toLowerCase();\n\n\t\t\tresult.documents = result.documents.filter((doc: any) => {\n\t\t\t\tconst searchableFields = ['name', 'email', 'mobile', 'zone', 'id', 'status'];\n\n\t\t\t\treturn searchableFields.some(field =>\n\t\t\t\t\tString(doc[field] ?? '')\n\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t.includes(keyword)\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\n\t\tresult.metadata.totalElements = result.documents.length;\n\t\tresult.metadata.totalPages = Math.ceil(result.documents.length / size);\n\n\t\treturn result;\n\t}\n\n\tprivate buildCouponUsersPipeline(params: CouponUsersRequestDTO): mongoose.PipelineStage[] {\n\t\tconst { couponId, zone, startDate, endDate } = params;\n\n\t\tconst match: Record<string, any> = {\n\t\t\t'adjustedFinance.coupon.coupon': new mongoose.Types.ObjectId(couponId),\n\t\t\tstatus: RegularOrderStatus.DELIVERED,\n\t\t};\n\n\t\tif (zone) {\n\t\t\tmatch['deliveryAddress.zone'] = new mongoose.Types.ObjectId(zone);\n\t\t}\n\n\t\tif (startDate || endDate) {\n\t\t\tmatch.processedAt = {};\n\n\t\t\tif (startDate) {\n\t\t\t\tmatch.processedAt.$gte = startDate;\n\t\t\t}\n\n\t\t\tif (endDate) {\n\t\t\t\tmatch.processedAt.$lte = endDate;\n\t\t\t}\n\t\t}\n\n\t\treturn [\n\t\t\t{\n\t\t\t\t$match: match,\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$group: {\n\t\t\t\t\t_id: '$users',\n\t\t\t\t\torders: {\n\t\t\t\t\t\t$sum: 1,\n\t\t\t\t\t},\n\t\t\t\t\tzone: {\n\t\t\t\t\t\t$first: '$deliveryAddress.zone',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: this.userModel.collection.name,\n\t\t\t\t\tlocalField: '_id',\n\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\tas: 'user',\n\t\t\t\t\tpipeline: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$project: {\n\t\t\t\t\t\t\t\tcoreUser: 1,\n\t\t\t\t\t\t\t\tphoneNumber: 1,\n\t\t\t\t\t\t\t\tcreatedAt: 1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$unwind: '$user',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: this.zoneModel.collection.name,\n\t\t\t\t\tlocalField: 'zone',\n\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\tas: 'zoneDoc',\n\t\t\t\t\tpipeline: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$project: {\n\t\t\t\t\t\t\t\tname: 1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$unwind: {\n\t\t\t\t\tpath: '$zoneDoc',\n\t\t\t\t\tpreserveNullAndEmptyArrays: true,\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$project: {\n\t\t\t\t\t_id: 0,\n\n\t\t\t\t\tid: {\n\t\t\t\t\t\t$toString: '$user._id',\n\t\t\t\t\t},\n\n\t\t\t\t\tcoreUserId: {\n\t\t\t\t\t\t$toString: '$user.coreUser',\n\t\t\t\t\t},\n\n\t\t\t\t\tmobile: '$user.phoneNumber',\n\n\t\t\t\t\torders: 1,\n\n\t\t\t\t\tcreationDate: '$user.createdAt',\n\n\t\t\t\t\tzone: '$zoneDoc.name',\n\n\t\t\t\t\tzoneId: {\n\t\t\t\t\t\t$toString: '$zoneDoc._id',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\t}\n\n\tprivate async attachCoreUsers(documents: any[]) {\n\t\tconst coreUserIds = [...new Set(documents.map(doc => doc.coreUserId).filter(Boolean))];\n\n\t\tconst coreUsers = await this.coreUserModel\n\t\t\t.find(\n\t\t\t\t{\n\t\t\t\t\t_id: { $in: coreUserIds },\n\t\t\t\t\tstatus: Status.ACTIVE,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 1,\n\t\t\t\t\temail: 1,\n\t\t\t\t\tprofilePhoto: 1,\n\t\t\t\t\tstatus: 1,\n\t\t\t\t}\n\t\t\t)\n\t\t\t.lean();\n\n\t\tconst map = new Map(coreUsers.map(user => [user._id.toString(), user]));\n\n\t\tdocuments.forEach(doc => {\n\t\t\tconst coreUser = map.get(doc.coreUserId);\n\t\t\tdoc.name = coreUser?.name;\n\t\t\tdoc.avatar = coreUser?.profilePhoto;\n\t\t\tdoc.email = coreUser?.email;\n\t\t\tdoc.status = coreUser?.status;\n\t\t\tdelete doc.coreUserId;\n\t\t});\n\t}\n\n\tpublic async getSingleCouponOrders(params: SingleCouppnOrdersRequestDTO) {\n\t\tconst { couponId, page = 1, size = 10, sort, search, userId, zone, startDate, endDate } = params;\n\n\t\tconst match: Record<string, any> = {\n\t\t\t'adjustedFinance.coupon.coupon': new mongoose.Types.ObjectId(couponId),\n\t\t\tstatus: RegularOrderStatus.DELIVERED,\n\t\t};\n\n\t\tif (userId) {\n\t\t\tmatch.users = new mongoose.Types.ObjectId(userId);\n\t\t}\n\n\t\tif (zone) {\n\t\t\tmatch['deliveryAddress.zone'] = new mongoose.Types.ObjectId(zone);\n\t\t}\n\n\t\tif (startDate || endDate) {\n\t\t\tmatch.processedAt = {};\n\n\t\t\tif (startDate) {\n\t\t\t\tmatch.processedAt.$gte = new Date(startDate);\n\t\t\t}\n\n\t\t\tif (endDate) {\n\t\t\t\tmatch.processedAt.$lte = new Date(endDate);\n\t\t\t}\n\t\t}\n\n\t\tconst pipeline: mongoose.PipelineStage[] = [\n\t\t\t{\n\t\t\t\t$match: match,\n\t\t\t},\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: 'shops',\n\t\t\t\t\tlocalField: 'shop',\n\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\tas: 'shopDoc',\n\t\t\t\t\tpipeline: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$project: {\n\t\t\t\t\t\t\t\tname: 1,\n\t\t\t\t\t\t\t\tlogo: 1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t$unwind: {\n\t\t\t\t\tpath: '$shopDoc',\n\t\t\t\t\tpreserveNullAndEmptyArrays: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: 'users',\n\t\t\t\t\tlocalField: 'users',\n\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\tas: 'userDoc',\n\t\t\t\t\tpipeline: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$project: {\n\t\t\t\t\t\t\t\tcoreUser: 1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t$unwind: {\n\t\t\t\t\tpath: '$userDoc',\n\t\t\t\t\tpreserveNullAndEmptyArrays: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: 'zones',\n\t\t\t\t\tlocalField: 'deliveryAddress.zone',\n\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\tas: 'zoneDoc',\n\t\t\t\t\tpipeline: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$project: {\n\t\t\t\t\t\t\t\tname: 1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t$unwind: {\n\t\t\t\t\tpath: '$zoneDoc',\n\t\t\t\t\tpreserveNullAndEmptyArrays: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t$project: {\n\t\t\t\t\torder: {\n\t\t\t\t\t\t_id: { $toString: '$_id' },\n\t\t\t\t\t\torderId: { $toString: '$_id' },\n\t\t\t\t\t\torderAmount: {\n\t\t\t\t\t\t\t$ifNull: ['$adjustedFinance.pricing.total', 0],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\n\t\t\t\t\tuserDoc: {\n\t\t\t\t\t\t_id: '$userDoc._id',\n\t\t\t\t\t\tcoreUser: '$userDoc.coreUser',\n\t\t\t\t\t},\n\n\t\t\t\t\tshop: {\n\t\t\t\t\t\t_id: { $toString: '$shopDoc._id' },\n\t\t\t\t\t\tname: '$shopDoc.name',\n\t\t\t\t\t\tlogo: '$shopDoc.logo',\n\t\t\t\t\t},\n\n\t\t\t\t\tzone: {\n\t\t\t\t\t\t_id: {\n\t\t\t\t\t\t\t$toString: '$zoneDoc._id',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tname: '$zoneDoc.name',\n\t\t\t\t\t},\n\t\t\t\t\tcreationDate: '$createdAt',\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\n\t\tif (search) {\n\t\t\tconst userIds = await this.getCoreUserIds(search);\n\n\t\t\tpipeline.push({\n\t\t\t\t$match: {\n\t\t\t\t\t$or: [\n\t\t\t\t\t\tbuildSearchQuery(search, ['shop.name', 'zone.name']),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'userDoc.coreUser': {\n\t\t\t\t\t\t\t\t$in: userIds,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst result = await paginateAggregation(\n\t\t\tthis.orderModel,\n\t\t\tpipeline,\n\t\t\tpage,\n\t\t\tsize,\n\t\t\tsort ?? { createdAt: -1 },\n\t\t\t{\n\t\t\t\tpath: 'userDoc.coreUser',\n\t\t\t\tmodel: this.coreUserModel,\n\t\t\t\tselect: {\n\t\t\t\t\t_id: 0,\n\t\t\t\t\tname: 1,\n\t\t\t\t\tprofilePhoto: 1,\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\n\t\tfor (const doc of result.documents) {\n\t\t\tconst coreUser = doc.userDoc?.coreUser;\n\n\t\t\tdoc.user = {\n\t\t\t\t_id: String(doc.userDoc?._id ?? ''),\n\t\t\t\tname: coreUser?.name ?? null,\n\t\t\t\tphoto: coreUser?.profilePhoto ?? null,\n\t\t\t};\n\n\t\t\tdelete doc.userDoc;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tprivate async getCoreUserIds(searchKey: string) {\n\t\treturn this.coreUserModel.distinct('_id', {\n\t\t\tstatus: Status.ACTIVE,\n\t\t\t$or: [\n\t\t\t\t{\n\t\t\t\t\tname: {\n\t\t\t\t\t\t$regex: searchKey,\n\t\t\t\t\t\t$options: 'i',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\temail: {\n\t\t\t\t\t\t$regex: searchKey,\n\t\t\t\t\t\t$options: 'i',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tuserId: {\n\t\t\t\t\t\t$regex: searchKey,\n\t\t\t\t\t\t$options: 'i',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"CouponRepository.js","sourceRoot":"/","sources":["modules/coupon/services/patterns/repository/CouponRepository.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tBaseCoupon,\n\tCoupon,\n\tCouponModel,\n\tgetCoreUserModel,\n\tOrderModel,\n\tReferralSetting,\n\tReferralSettingModel,\n\tUser,\n\tUserModel,\n\tZoneModel,\n} from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { mongoose } from '@typegoose/typegoose';\nimport { getRoundSecondaryCurrencyStage } from '@lyxa.ai/core/dist/utilities/pipelines/common-pipeline-functions';\nimport {\n\tCouponType,\n\tItemType,\n\tRegularOrderStatus,\n\tServiceBookingStatus,\n\tStatus,\n\tValueType,\n} from '@lyxa.ai/core/dist/utilities/enum';\nimport { getExchangeRate } from '@lyxa.ai/core/dist/utilities/currency';\nimport { roundSecondaryCurrency } from '@lyxa.ai/core/dist/utilities/shared';\nimport { dayjs } from '@lyxa.ai/core/dist/utilities/dayjs';\nimport { CouponUsersRequestDTO, SingleCouppnOrdersRequestDTO } from '@modules/coupon/validations';\nimport { paginateAggregation, RawPaginatedResult } from '@lyxa.ai/core/dist/utilities/pagination';\nimport { buildSearchQuery } from '@lyxa.ai/core/dist/utilities/search';\n\nexport class CouponRepository {\n\tprivate readonly model: typeof CouponModel & SoftDeleteModel<Coupon>;\n\tprivate readonly userModel: typeof UserModel & SoftDeleteModel<User>;\n\tprivate readonly referralSettingsModel: typeof ReferralSettingModel & SoftDeleteModel<ReferralSetting>;\n\tprivate readonly zoneModel: typeof ZoneModel;\n\tprivate _coreUserModel: ReturnType<typeof getCoreUserModel> | null = null;\n\tprivate orderModel: typeof OrderModel;\n\n\tconstructor() {\n\t\tthis.model = CouponModel as typeof CouponModel & SoftDeleteModel<Coupon>;\n\t\tthis.userModel = UserModel as typeof UserModel & SoftDeleteModel<User>;\n\t\tthis.referralSettingsModel = ReferralSettingModel as typeof ReferralSettingModel &\n\t\t\tSoftDeleteModel<ReferralSetting>;\n\t\tthis.zoneModel = ZoneModel;\n\t\tthis.orderModel = OrderModel as typeof OrderModel;\n\t}\n\n\tprivate get coreUserModel() {\n\t\tif (!this._coreUserModel) {\n\t\t\tthis._coreUserModel = getCoreUserModel();\n\t\t}\n\t\treturn this._coreUserModel;\n\t}\n\n\tpublic async getUserCoupons(\n\t\tuser: mongoose.Types.ObjectId | undefined,\n\t\tshop: mongoose.Types.ObjectId | undefined,\n\t\tvendor: mongoose.Types.ObjectId | undefined,\n\t\titemType: ItemType | undefined\n\t): Promise<any> {\n\t\tconst [exchangeRate, referralSettings] = await Promise.all([\n\t\t\tgetExchangeRate(),\n\t\t\tthis.referralSettingsModel.findOne(),\n\t\t]);\n\n\t\tconst secondaryReferralReceiverValue =\n\t\t\treferralSettings?.receiver?.valueType == ValueType.PERCENTAGE\n\t\t\t\t? null\n\t\t\t\t: roundSecondaryCurrency((referralSettings?.receiver?.value ?? 0) * exchangeRate);\n\n\t\tconst secondaryReferralReceiverMinOrderAmount = roundSecondaryCurrency(\n\t\t\t(referralSettings?.receiver?.minimumOrderValue ?? 0) * exchangeRate\n\t\t);\n\n\t\tconst now = dayjs().toDate();\n\n\t\tconst pipeline: mongoose.PipelineStage[] = [\n\t\t\t// Match the user\n\t\t\t{\n\t\t\t\t$match: { _id: user },\n\t\t\t},\n\n\t\t\t// Lookup coupons with nested referral/influencer/shop\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: 'coupons',\n\t\t\t\t\tlocalField: 'coupons',\n\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\tas: 'couponDocs',\n\t\t\t\t\tpipeline: [\n\t\t\t\t\t\t// Active and started\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t\t$expr: {\n\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t{ $eq: [{ $ifNull: ['$status', Status.ACTIVE] }, Status.ACTIVE] },\n\t\t\t\t\t\t\t\t\t\t{ $lte: [{ $ifNull: ['$duration.start', now] }, now] },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t...(shop || vendor\n\t\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t$nor: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ couponType: CouponType.INDIVIDUAL_STORE },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ couponType: CouponType.SHOPS_CATEGORIES },\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ couponType: { $ne: CouponType.CUSTOM_COUPON } },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ $or: [{ shops: { $exists: false } }, { shops: { $size: 0 } }] },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ $or: [{ vendors: { $exists: false } }, { vendors: { $size: 0 } }] },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ $or: [{ itemTypes: { $exists: false } }, { itemTypes: { $size: 0 } }] },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t// Lookup referralUser and influencer\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$lookup: {\n\t\t\t\t\t\t\t\tfrom: 'users',\n\t\t\t\t\t\t\t\tlocalField: 'referralUser',\n\t\t\t\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\t\t\t\tas: 'referralUser',\n\t\t\t\t\t\t\t\tpipeline: [{ $project: { coreUser: 1 } }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$lookup: {\n\t\t\t\t\t\t\t\tfrom: 'users',\n\t\t\t\t\t\t\t\tlocalField: 'influencer',\n\t\t\t\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\t\t\t\tas: 'influencer',\n\t\t\t\t\t\t\t\tpipeline: [{ $project: { coreUser: 1 } }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t// Lookup shop\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$lookup: {\n\t\t\t\t\t\t\t\tfrom: 'shops',\n\t\t\t\t\t\t\t\tlocalField: 'shop',\n\t\t\t\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\t\t\t\tas: 'shop',\n\t\t\t\t\t\t\t\tpipeline: [{ $project: { name: 1 } }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t// Lookup vendor\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$lookup: {\n\t\t\t\t\t\t\t\tfrom: 'vendors',\n\t\t\t\t\t\t\t\tlocalField: 'vendor',\n\t\t\t\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\t\t\t\tas: 'vendor',\n\t\t\t\t\t\t\t\tpipeline: [{ $project: { name: 1 } }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ $unwind: { path: '$shop', preserveNullAndEmptyArrays: true } },\n\t\t\t\t\t\t{ $unwind: { path: '$vendor', preserveNullAndEmptyArrays: true } },\n\t\t\t\t\t\t{ $unwind: { path: '$referralUser', preserveNullAndEmptyArrays: true } },\n\t\t\t\t\t\t{ $unwind: { path: '$influencer', preserveNullAndEmptyArrays: true } },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$addFields: {\n\t\t\t\t\t\t\t\treferringUser: { $ifNull: ['$referralUser.coreUser', '$influencer.coreUser'] },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ $project: { referralUser: 0, influencer: 0 } },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// Lookup orders once and compute:\n\t\t\t// - total usage per coupon\n\t\t\t// - all shops user ordered from\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: 'orders',\n\t\t\t\t\tlet: { userId: '$_id' },\n\t\t\t\t\tpipeline: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t\t$expr: { $eq: ['$user', '$$userId'] },\n\t\t\t\t\t\t\t\tstatus: { $ne: RegularOrderStatus.CANCELLED },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$facet: {\n\t\t\t\t\t\t\t\t// ordered shops for first-order logic\n\t\t\t\t\t\t\t\torderedShops: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$group: {\n\t\t\t\t\t\t\t\t\t\t\t_id: null,\n\t\t\t\t\t\t\t\t\t\t\tshops: { $addToSet: '$shop' },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\n\t\t\t\t\t\t\t\t// coupon usage WITH SNAPSHOT\n\t\t\t\t\t\t\t\tcouponUsage: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t\t\t\t\t'adjustedFinance.coupon.coupon': { $exists: true },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$group: {\n\t\t\t\t\t\t\t\t\t\t\t_id: '$adjustedFinance.coupon.coupon',\n\t\t\t\t\t\t\t\t\t\t\tsnap: { $first: '$adjustedFinance.coupon' },\n\t\t\t\t\t\t\t\t\t\t\tcount: { $sum: 1 },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tas: 'orderStats',\n\t\t\t\t},\n\t\t\t},\n\t\t\t// Lookup service bookings once and compute vendor-side first-order/usage data.\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: 'serviceBookings',\n\t\t\t\t\tlet: { userId: '$_id' },\n\t\t\t\t\tpipeline: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t\t$expr: { $eq: ['$user', '$$userId'] },\n\t\t\t\t\t\t\t\tstatus: { $ne: ServiceBookingStatus.CANCELLED },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$facet: {\n\t\t\t\t\t\t\t\torderedVendors: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$group: {\n\t\t\t\t\t\t\t\t\t\t\t_id: null,\n\t\t\t\t\t\t\t\t\t\t\tvendors: { $addToSet: '$vendor' },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tcouponUsage: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t\t\t\t\t'adjustedFinance.coupon.coupon': { $exists: true },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$group: {\n\t\t\t\t\t\t\t\t\t\t\t_id: '$adjustedFinance.coupon.coupon',\n\t\t\t\t\t\t\t\t\t\t\tsnap: { $first: '$adjustedFinance.coupon' },\n\t\t\t\t\t\t\t\t\t\t\tcount: { $sum: 1 },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tas: 'serviceBookingStats',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\torderedShops: {\n\t\t\t\t\t\t$ifNull: [{ $arrayElemAt: ['$orderStats.orderedShops.shops', 0] }, []],\n\t\t\t\t\t},\n\t\t\t\t\torderedVendors: {\n\t\t\t\t\t\t$ifNull: [{ $arrayElemAt: ['$serviceBookingStats.orderedVendors.vendors', 0] }, []],\n\t\t\t\t\t},\n\t\t\t\t\tcouponUsage: {\n\t\t\t\t\t\t$concatArrays: [\n\t\t\t\t\t\t\t{ $ifNull: [{ $arrayElemAt: ['$orderStats.couponUsage', 0] }, []] },\n\t\t\t\t\t\t\t{ $ifNull: [{ $arrayElemAt: ['$serviceBookingStats.couponUsage', 0] }, []] },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// Unwind coupons to classify individually\n\t\t\t{ $unwind: '$couponDocs' },\n\n\t\t\t// Filter coupons by shop/vendor/itemType\n\t\t\t...(shop || vendor ? this.filterShopVendorCoupons(shop, vendor, itemType) : []),\n\n\t\t\t// First-order-only coupon filter\n\t\t\t...this.filterFirstOrderOnlyCoupons({ shop, vendor }),\n\n\t\t\t// Compute usage count per coupon\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\tusageData: {\n\t\t\t\t\t\t$arrayElemAt: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$filter: {\n\t\t\t\t\t\t\t\t\tinput: '$couponUsage',\n\t\t\t\t\t\t\t\t\tas: 'cu',\n\t\t\t\t\t\t\t\t\tcond: { $eq: ['$$cu._id', '$couponDocs._id'] },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\tusedCount: {\n\t\t\t\t\t\t$sum: {\n\t\t\t\t\t\t\t$map: {\n\t\t\t\t\t\t\t\tinput: {\n\t\t\t\t\t\t\t\t\t$filter: {\n\t\t\t\t\t\t\t\t\t\tinput: '$couponUsage',\n\t\t\t\t\t\t\t\t\t\tas: 'cu',\n\t\t\t\t\t\t\t\t\t\tcond: { $eq: ['$$cu._id', '$couponDocs._id'] },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tas: 'cu',\n\t\t\t\t\t\t\t\tin: { $ifNull: ['$$cu.count', 0] },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// Expiration & secondary currency\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\tisExpired: {\n\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t{ $gt: [{ $strLenCP: { $ifNull: ['$couponDocs.expirationReason', ''] } }, 0] },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t{ $ifNull: ['$couponDocs.duration.end', false] },\n\t\t\t\t\t\t\t\t\t{ $lt: ['$couponDocs.duration.end', now] },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\texchangeRate,\n\t\t\t\t\t'couponDocs.value': {\n\t\t\t\t\t\t$switch: {\n\t\t\t\t\t\t\tbranches: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcase: { $eq: ['$couponDocs.couponType', CouponType.REFERRAL_CODE] },\n\t\t\t\t\t\t\t\t\tthen: referralSettings?.receiver?.value ?? 0,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tdefault: '$couponDocs.value',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'couponDocs.valueType': {\n\t\t\t\t\t\t$switch: {\n\t\t\t\t\t\t\tbranches: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcase: { $eq: ['$couponDocs.couponType', CouponType.REFERRAL_CODE] },\n\t\t\t\t\t\t\t\t\tthen: referralSettings?.receiver?.valueType ?? 0,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tdefault: '$couponDocs.valueType',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'couponDocs.secondaryCurrencyValue': {\n\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t{ $eq: ['$couponDocs.valueType', ValueType.PERCENTAGE] },\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$switch: {\n\t\t\t\t\t\t\t\t\tbranches: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tcase: { $eq: ['$couponDocs.couponType', CouponType.REFERRAL_CODE] },\n\t\t\t\t\t\t\t\t\t\t\tthen: secondaryReferralReceiverValue,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tdefault: getRoundSecondaryCurrencyStage({\n\t\t\t\t\t\t\t\t\t\t$multiply: ['$couponDocs.value', exchangeRate],\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t'couponDocs.secondaryCurrencyMaxDiscountLimit': {\n\t\t\t\t\t\t$switch: {\n\t\t\t\t\t\t\tbranches: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcase: { $eq: ['$couponDocs.couponType', CouponType.REFERRAL_CODE] },\n\t\t\t\t\t\t\t\t\tthen: null,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tdefault: getRoundSecondaryCurrencyStage({\n\t\t\t\t\t\t\t\t$multiply: ['$couponDocs.maxDiscountLimit', exchangeRate],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'couponDocs.secondaryCurrencyMinOrderValue': {\n\t\t\t\t\t\t$switch: {\n\t\t\t\t\t\t\tbranches: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcase: { $eq: ['$couponDocs.couponType', CouponType.REFERRAL_CODE] },\n\t\t\t\t\t\t\t\t\tthen: secondaryReferralReceiverMinOrderAmount,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tdefault: getRoundSecondaryCurrencyStage({\n\t\t\t\t\t\t\t\t$multiply: ['$couponDocs.minOrderValue', exchangeRate],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// Classify category\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\tcategory: {\n\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t'$isExpired',\n\t\t\t\t\t\t\t'expired',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t\t\t{ $gt: ['$usedCount', 0] },\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ $not: ['$couponDocs.orderLimitPerUser'] },\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ $lt: ['$usedCount', '$couponDocs.orderLimitPerUser'] },\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t'available',\n\t\t\t\t\t\t\t\t\t\t\t'used',\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t'available',\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// Group into arrays\n\t\t\t{\n\t\t\t\t$group: {\n\t\t\t\t\t_id: '$_id',\n\t\t\t\t\tavailable: {\n\t\t\t\t\t\t$push: { $cond: [{ $eq: ['$category', 'available'] }, '$couponDocs', '$$REMOVE'] },\n\t\t\t\t\t},\n\t\t\t\t\tused: {\n\t\t\t\t\t\t$push: { $cond: [{ $eq: ['$category', 'used'] }, '$couponDocs', '$$REMOVE'] },\n\t\t\t\t\t},\n\t\t\t\t\texpired: {\n\t\t\t\t\t\t$push: { $cond: [{ $eq: ['$category', 'expired'] }, '$couponDocs', '$$REMOVE'] },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{ $project: { _id: 0 } },\n\t\t];\n\n\t\tconst [results] = await this.userModel.aggregate(pipeline);\n\n\t\tif (!results) {\n\t\t\treturn {\n\t\t\t\tavailable: [],\n\t\t\t\tused: [],\n\t\t\t\texpired: [],\n\t\t\t};\n\t\t}\n\n\t\tconst populatedResults = await this.userModel.populate(results, {\n\t\t\tpath: 'available.referringUser',\n\t\t\tmodel: this.coreUserModel,\n\t\t\tselect: { _id: 0, name: 1 },\n\t\t});\n\n\t\treturn populatedResults;\n\t}\n\n\tpublic addLabelsToAllCoupons(coupons: any): any {\n\t\treturn {\n\t\t\tavailable: this.addLabelsToCoupons(coupons.available).reverse(),\n\t\t\tused: this.addLabelsToCoupons(coupons.used).reverse(),\n\t\t\texpired: this.addLabelsToCoupons(coupons.expired).reverse(),\n\t\t};\n\t}\n\n\tpublic addLabelsToCoupons(coupons: any[]): any[] {\n\t\tconst resultsWithLabels = coupons.map(coupon => {\n\t\t\tconst valuePart =\n\t\t\t\tcoupon.valueType === 'fixed'\n\t\t\t\t\t? this.formatCurrency(coupon.value, coupon.secondaryCurrencyValue)\n\t\t\t\t\t: `${coupon.value}%`;\n\n\t\t\tconst maxDiscountPart =\n\t\t\t\tcoupon.isMaxDiscountLimitEnabled && coupon.maxDiscountLimit > 0\n\t\t\t\t\t? ` up to ${this.formatCurrency(coupon.maxDiscountLimit, coupon.secondaryCurrencyMaxDiscountLimit)}`\n\t\t\t\t\t: '';\n\n\t\t\tconst influencerPart = coupon.referringUser ? ` (Referred by ${coupon.referringUser.name})` : '';\n\n\t\t\tcoupon.couponOfferLabel = `Save ${valuePart}${maxDiscountPart}${influencerPart}`;\n\n\t\t\tlet validityParts: string[] = [];\n\n\t\t\tif (coupon.couponType === CouponType.REFERRAL_CODE) {\n\t\t\t\tvalidityParts.push(\n\t\t\t\t\t`Minimum order ${this.formatCurrency(null, coupon.secondaryCurrencyMinOrderValue)}`\n\t\t\t\t);\n\t\t\t} else if (coupon.isMinOrderValueEnabled && coupon.minOrderValue > 0) {\n\t\t\t\tvalidityParts.push(\n\t\t\t\t\t`Minimum order ${this.formatCurrency(coupon.minOrderValue, coupon.secondaryCurrencyMinOrderValue)}`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (coupon.isOrderLimitPerUserEnabled && coupon.orderLimitPerUser > 0) {\n\t\t\t\tvalidityParts.push(`Applied on ${coupon.orderLimitPerUser} order`);\n\t\t\t}\n\n\t\t\tcoupon.couponValidityLabel = validityParts.join('. ');\n\n\t\t\treturn coupon;\n\t\t});\n\n\t\treturn resultsWithLabels;\n\t}\n\n\tprivate formatCurrency(value: any, secondaryCurrencyValue: any) {\n\t\tconst formatterUSD = new Intl.NumberFormat('en-US', {\n\t\t\tminimumFractionDigits: 0,\n\t\t\tmaximumFractionDigits: 2,\n\t\t});\n\n\t\tconst formatterLBP = new Intl.NumberFormat('en-US', {\n\t\t\tminimumFractionDigits: 0,\n\t\t});\n\n\t\tif (secondaryCurrencyValue !== null && secondaryCurrencyValue !== undefined) {\n\t\t\treturn 'LBP ' + formatterLBP.format(Number(secondaryCurrencyValue));\n\t\t}\n\n\t\treturn '$' + formatterUSD.format(Number(value ?? 0));\n\t}\n\n\tprivate filterShopVendorCoupons(\n\t\tshop?: mongoose.Types.ObjectId,\n\t\tvendor?: mongoose.Types.ObjectId,\n\t\titemType?: ItemType\n\t): mongoose.PipelineStage[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\t$match: {\n\t\t\t\t\t$expr: {\n\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t{ $eq: ['$couponDocs.couponType', CouponType.INDIVIDUAL_STORE] },\n\t\t\t\t\t\t\t\t\tshop\n\t\t\t\t\t\t\t\t\t\t? { $eq: ['$couponDocs.shop._id', shop] }\n\t\t\t\t\t\t\t\t\t\t: { $eq: ['$couponDocs.vendor._id', vendor] },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t{ $eq: ['$couponDocs.couponType', CouponType.SHOPS_CATEGORIES] },\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t\t\t\t\t{ $in: [itemType, { $ifNull: ['$couponDocs.itemTypes', []] }] },\n\t\t\t\t\t\t\t\t\t\t\t...(shop ? [{ $in: [shop, { $ifNull: ['$couponDocs.shops', []] }] }] : []),\n\t\t\t\t\t\t\t\t\t\t\t...(vendor ? [{ $in: [vendor, { $ifNull: ['$couponDocs.vendors', []] }] }] : []),\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t{ $eq: ['$couponDocs.couponType', CouponType.INDIVIDUAL_USER] },\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t\t\t\t\t{ $in: [itemType, { $ifNull: ['$couponDocs.itemTypes', []] }] },\n\t\t\t\t\t\t\t\t\t\t\t...(shop ? [{ $in: [shop, { $ifNull: ['$couponDocs.shops', []] }] }] : []),\n\t\t\t\t\t\t\t\t\t\t\t...(vendor ? [{ $in: [vendor, { $ifNull: ['$couponDocs.vendors', []] }] }] : []),\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ $eq: [{ $size: { $ifNull: ['$couponDocs.shops', []] } }, 0] },\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ $eq: [{ $size: { $ifNull: ['$couponDocs.vendors', []] } }, 0] },\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ $eq: [{ $size: { $ifNull: ['$couponDocs.itemTypes', []] } }, 0] },\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$not: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$in: [\n\t\t\t\t\t\t\t\t\t\t\t'$couponDocs.couponType',\n\t\t\t\t\t\t\t\t\t\t\t[CouponType.INDIVIDUAL_STORE, CouponType.SHOPS_CATEGORIES, CouponType.INDIVIDUAL_USER],\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\t}\n\n\tprivate filterFirstOrderOnlyCoupons(data: {\n\t\tshop?: mongoose.Types.ObjectId;\n\t\tvendor?: mongoose.Types.ObjectId;\n\t}): mongoose.PipelineStage[] {\n\t\tconst { shop, vendor } = data;\n\t\tconst hasOrderedFromStore = vendor\n\t\t\t? { $in: [vendor, '$orderedVendors'] }\n\t\t\t: shop\n\t\t\t\t? { $in: [shop, '$orderedShops'] }\n\t\t\t\t: {\n\t\t\t\t\t\t$or: [\n\t\t\t\t\t\t\t{ $in: ['$couponDocs.shop._id', '$orderedShops'] },\n\t\t\t\t\t\t\t{ $in: ['$couponDocs.vendor._id', '$orderedVendors'] },\n\t\t\t\t\t\t],\n\t\t\t\t\t};\n\t\tconst hasUnusedStoreInCategory = vendor\n\t\t\t? { $in: [vendor, '$orderedVendors'] }\n\t\t\t: shop\n\t\t\t\t? { $in: [shop, '$orderedShops'] }\n\t\t\t\t: {\n\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$eq: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$size: {\n\t\t\t\t\t\t\t\t\t\t\t$setDifference: [{ $ifNull: ['$couponDocs.shops', []] }, '$orderedShops'],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$eq: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$size: {\n\t\t\t\t\t\t\t\t\t\t\t$setDifference: [{ $ifNull: ['$couponDocs.vendors', []] }, '$orderedVendors'],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t};\n\n\t\treturn [\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\thasOrderedFromStore: {\n\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t{ $eq: ['$couponDocs.couponType', CouponType.INDIVIDUAL_STORE] },\n\t\t\t\t\t\t\thasOrderedFromStore,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\thasUnusedShopInCategory: {\n\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t{ $eq: ['$couponDocs.couponType', CouponType.SHOPS_CATEGORIES] },\n\t\t\t\t\t\t\thasUnusedStoreInCategory,\n\t\t\t\t\t\t\tfalse,\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t$match: {\n\t\t\t\t\t$expr: {\n\t\t\t\t\t\t$not: {\n\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t$in: ['$couponDocs.couponType', [CouponType.INDIVIDUAL_STORE, CouponType.SHOPS_CATEGORIES]],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ $eq: ['$couponDocs.firstOrderOnly', true] },\n\t\t\t\t\t\t\t\t{ $or: ['$hasOrderedFromStore', '$hasUnusedShopInCategory'] },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\t}\n\n\tpublic findById(couponId: string) {\n\t\treturn this.model.findOne({ _id: couponId, deletedAt: null }).lean<BaseCoupon>().exec();\n\t}\n\n\tpublic async singleCouponUsers(params: CouponUsersRequestDTO) {\n\t\tconst { page = 1, size = 10, sort, search } = params;\n\n\t\tconst pipeline = this.buildCouponUsersPipeline(params);\n\n\t\tconst result = await paginateAggregation(\n\t\t\tthis.orderModel,\n\t\t\tpipeline,\n\t\t\tpage,\n\t\t\tsize,\n\t\t\tsort ?? { creationDate: -1 }\n\t\t);\n\n\t\tawait this.attachCoreUsers(result.documents);\n\n\t\tif (search) {\n\t\t\tconst keyword = search.toLowerCase();\n\n\t\t\tresult.documents = result.documents.filter((doc: any) => {\n\t\t\t\tconst searchableFields = ['name', 'email', 'mobile', 'zone', 'id', 'status'];\n\n\t\t\t\treturn searchableFields.some(field =>\n\t\t\t\t\tString(doc[field] ?? '')\n\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t.includes(keyword)\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\n\t\tresult.metadata.totalElements = result.documents.length;\n\t\tresult.metadata.totalPages = Math.ceil(result.documents.length / size);\n\n\t\treturn result;\n\t}\n\n\tprivate buildCouponUsersPipeline(params: CouponUsersRequestDTO): mongoose.PipelineStage[] {\n\t\tconst { couponId, zone, startDate, endDate } = params;\n\n\t\tconst match: Record<string, any> = {\n\t\t\t'adjustedFinance.coupon.coupon': new mongoose.Types.ObjectId(couponId),\n\t\t\tstatus: RegularOrderStatus.DELIVERED,\n\t\t};\n\n\t\tif (zone) {\n\t\t\tmatch['deliveryAddress.zone'] = new mongoose.Types.ObjectId(zone);\n\t\t}\n\n\t\tif (startDate || endDate) {\n\t\t\tmatch.processedAt = {};\n\n\t\t\tif (startDate) {\n\t\t\t\tmatch.processedAt.$gte = startDate;\n\t\t\t}\n\n\t\t\tif (endDate) {\n\t\t\t\tmatch.processedAt.$lte = endDate;\n\t\t\t}\n\t\t}\n\n\t\treturn [\n\t\t\t{\n\t\t\t\t$match: match,\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$group: {\n\t\t\t\t\t_id: '$users',\n\t\t\t\t\torders: {\n\t\t\t\t\t\t$sum: 1,\n\t\t\t\t\t},\n\t\t\t\t\tzone: {\n\t\t\t\t\t\t$first: '$deliveryAddress.zone',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: this.userModel.collection.name,\n\t\t\t\t\tlocalField: '_id',\n\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\tas: 'user',\n\t\t\t\t\tpipeline: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$project: {\n\t\t\t\t\t\t\t\tcoreUser: 1,\n\t\t\t\t\t\t\t\tphoneNumber: 1,\n\t\t\t\t\t\t\t\tcreatedAt: 1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$unwind: '$user',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: this.zoneModel.collection.name,\n\t\t\t\t\tlocalField: 'zone',\n\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\tas: 'zoneDoc',\n\t\t\t\t\tpipeline: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$project: {\n\t\t\t\t\t\t\t\tname: 1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$unwind: {\n\t\t\t\t\tpath: '$zoneDoc',\n\t\t\t\t\tpreserveNullAndEmptyArrays: true,\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$project: {\n\t\t\t\t\t_id: 0,\n\n\t\t\t\t\tid: {\n\t\t\t\t\t\t$toString: '$user._id',\n\t\t\t\t\t},\n\n\t\t\t\t\tcoreUserId: {\n\t\t\t\t\t\t$toString: '$user.coreUser',\n\t\t\t\t\t},\n\n\t\t\t\t\tmobile: '$user.phoneNumber',\n\n\t\t\t\t\torders: 1,\n\n\t\t\t\t\tcreationDate: '$user.createdAt',\n\n\t\t\t\t\tzone: '$zoneDoc.name',\n\n\t\t\t\t\tzoneId: {\n\t\t\t\t\t\t$toString: '$zoneDoc._id',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\t}\n\n\tprivate async attachCoreUsers(documents: any[]) {\n\t\tconst coreUserIds = [...new Set(documents.map(doc => doc.coreUserId).filter(Boolean))];\n\n\t\tconst coreUsers = await this.coreUserModel\n\t\t\t.find(\n\t\t\t\t{\n\t\t\t\t\t_id: { $in: coreUserIds },\n\t\t\t\t\tstatus: Status.ACTIVE,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 1,\n\t\t\t\t\temail: 1,\n\t\t\t\t\tprofilePhoto: 1,\n\t\t\t\t\tstatus: 1,\n\t\t\t\t}\n\t\t\t)\n\t\t\t.lean();\n\n\t\tconst map = new Map(coreUsers.map(user => [user._id.toString(), user]));\n\n\t\tdocuments.forEach(doc => {\n\t\t\tconst coreUser = map.get(doc.coreUserId);\n\t\t\tdoc.name = coreUser?.name;\n\t\t\tdoc.avatar = coreUser?.profilePhoto;\n\t\t\tdoc.email = coreUser?.email;\n\t\t\tdoc.status = coreUser?.status;\n\t\t\tdelete doc.coreUserId;\n\t\t});\n\t}\n\n\tpublic async getSingleCouponOrders(params: SingleCouppnOrdersRequestDTO) {\n\t\tconst { couponId, page = 1, size = 10, sort, search, userId, zone, startDate, endDate } = params;\n\n\t\tconst match: Record<string, any> = {\n\t\t\t'adjustedFinance.coupon.coupon': new mongoose.Types.ObjectId(couponId),\n\t\t\tstatus: RegularOrderStatus.DELIVERED,\n\t\t};\n\n\t\tif (userId) {\n\t\t\tmatch.users = new mongoose.Types.ObjectId(userId);\n\t\t}\n\n\t\tif (zone) {\n\t\t\tmatch['deliveryAddress.zone'] = new mongoose.Types.ObjectId(zone);\n\t\t}\n\n\t\tif (startDate || endDate) {\n\t\t\tmatch.processedAt = {};\n\n\t\t\tif (startDate) {\n\t\t\t\tmatch.processedAt.$gte = new Date(startDate);\n\t\t\t}\n\n\t\t\tif (endDate) {\n\t\t\t\tmatch.processedAt.$lte = new Date(endDate);\n\t\t\t}\n\t\t}\n\n\t\tconst pipeline: mongoose.PipelineStage[] = [\n\t\t\t{\n\t\t\t\t$match: match,\n\t\t\t},\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: 'shops',\n\t\t\t\t\tlocalField: 'shop',\n\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\tas: 'shopDoc',\n\t\t\t\t\tpipeline: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$project: {\n\t\t\t\t\t\t\t\tname: 1,\n\t\t\t\t\t\t\t\tlogo: 1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t$unwind: {\n\t\t\t\t\tpath: '$shopDoc',\n\t\t\t\t\tpreserveNullAndEmptyArrays: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: 'users',\n\t\t\t\t\tlocalField: 'users',\n\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\tas: 'userDoc',\n\t\t\t\t\tpipeline: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$project: {\n\t\t\t\t\t\t\t\tcoreUser: 1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t$unwind: {\n\t\t\t\t\tpath: '$userDoc',\n\t\t\t\t\tpreserveNullAndEmptyArrays: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: 'zones',\n\t\t\t\t\tlocalField: 'deliveryAddress.zone',\n\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\tas: 'zoneDoc',\n\t\t\t\t\tpipeline: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$project: {\n\t\t\t\t\t\t\t\tname: 1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t$unwind: {\n\t\t\t\t\tpath: '$zoneDoc',\n\t\t\t\t\tpreserveNullAndEmptyArrays: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t$project: {\n\t\t\t\t\torder: {\n\t\t\t\t\t\t_id: { $toString: '$_id' },\n\t\t\t\t\t\torderId: { $toString: '$orderId' },\n\t\t\t\t\t\torderAmount: {\n\t\t\t\t\t\t\t$ifNull: ['$adjustedFinance.pricing.total', 0],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\n\t\t\t\t\tuserDoc: {\n\t\t\t\t\t\t_id: '$userDoc._id',\n\t\t\t\t\t\tcoreUser: '$userDoc.coreUser',\n\t\t\t\t\t},\n\n\t\t\t\t\tshop: {\n\t\t\t\t\t\t_id: { $toString: '$shopDoc._id' },\n\t\t\t\t\t\tname: '$shopDoc.name',\n\t\t\t\t\t\tlogo: '$shopDoc.logo',\n\t\t\t\t\t},\n\n\t\t\t\t\tzone: {\n\t\t\t\t\t\t_id: {\n\t\t\t\t\t\t\t$toString: '$zoneDoc._id',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tname: '$zoneDoc.name',\n\t\t\t\t\t},\n\t\t\t\t\tcreationDate: '$createdAt',\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\n\t\tif (search) {\n\t\t\tconst userIds = await this.getCoreUserIds(search);\n\n\t\t\tpipeline.push({\n\t\t\t\t$match: {\n\t\t\t\t\t$or: [\n\t\t\t\t\t\tbuildSearchQuery(search, ['shop.name', 'zone.name', 'order.orderId']),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'userDoc.coreUser': {\n\t\t\t\t\t\t\t\t$in: userIds,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tconst result = await paginateAggregation(\n\t\t\tthis.orderModel,\n\t\t\tpipeline,\n\t\t\tpage,\n\t\t\tsize,\n\t\t\tsort ?? { createdAt: -1 },\n\t\t\t{\n\t\t\t\tpath: 'userDoc.coreUser',\n\t\t\t\tmodel: this.coreUserModel,\n\t\t\t\tselect: {\n\t\t\t\t\t_id: 0,\n\t\t\t\t\tname: 1,\n\t\t\t\t\tprofilePhoto: 1,\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\n\t\tfor (const doc of result.documents) {\n\t\t\tconst coreUser = doc.userDoc?.coreUser;\n\n\t\t\tdoc.user = {\n\t\t\t\t_id: String(doc.userDoc?._id ?? ''),\n\t\t\t\tname: coreUser?.name ?? null,\n\t\t\t\tphoto: coreUser?.profilePhoto ?? null,\n\t\t\t};\n\n\t\t\tdelete doc.userDoc;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tprivate async getCoreUserIds(searchKey: string) {\n\t\treturn this.coreUserModel.distinct('_id', {\n\t\t\tstatus: Status.ACTIVE,\n\t\t\t$or: [\n\t\t\t\t{\n\t\t\t\t\tname: {\n\t\t\t\t\t\t$regex: searchKey,\n\t\t\t\t\t\t$options: 'i',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\temail: {\n\t\t\t\t\t\t$regex: searchKey,\n\t\t\t\t\t\t$options: 'i',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tuserId: {\n\t\t\t\t\t\t$regex: searchKey,\n\t\t\t\t\t\t$options: 'i',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t}\n}\n"]}
|
|
@@ -1780,8 +1780,8 @@ export declare const singleCouponOrdersRequestSchema: z.ZodObject<{
|
|
|
1780
1780
|
userId: z.ZodOptional<z.ZodString>;
|
|
1781
1781
|
page: z.ZodDefault<z.ZodNumber>;
|
|
1782
1782
|
size: z.ZodDefault<z.ZodNumber>;
|
|
1783
|
-
startDate: z.ZodOptional<z.
|
|
1784
|
-
endDate: z.ZodOptional<z.
|
|
1783
|
+
startDate: z.ZodOptional<z.ZodString>;
|
|
1784
|
+
endDate: z.ZodOptional<z.ZodString>;
|
|
1785
1785
|
search: z.ZodOptional<z.ZodString>;
|
|
1786
1786
|
zone: z.ZodOptional<z.ZodString>;
|
|
1787
1787
|
sort: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<-1>]>>>;
|
|
@@ -1790,8 +1790,8 @@ export declare const singleCouponOrdersRequestSchema: z.ZodObject<{
|
|
|
1790
1790
|
size: number;
|
|
1791
1791
|
couponId: string;
|
|
1792
1792
|
sort?: Record<string, 1 | -1> | undefined;
|
|
1793
|
-
startDate?:
|
|
1794
|
-
endDate?:
|
|
1793
|
+
startDate?: string | undefined;
|
|
1794
|
+
endDate?: string | undefined;
|
|
1795
1795
|
search?: string | undefined;
|
|
1796
1796
|
zone?: string | undefined;
|
|
1797
1797
|
userId?: string | undefined;
|
|
@@ -1800,8 +1800,8 @@ export declare const singleCouponOrdersRequestSchema: z.ZodObject<{
|
|
|
1800
1800
|
sort?: Record<string, 1 | -1> | undefined;
|
|
1801
1801
|
page?: number | undefined;
|
|
1802
1802
|
size?: number | undefined;
|
|
1803
|
-
startDate?:
|
|
1804
|
-
endDate?:
|
|
1803
|
+
startDate?: string | undefined;
|
|
1804
|
+
endDate?: string | undefined;
|
|
1805
1805
|
search?: string | undefined;
|
|
1806
1806
|
zone?: string | undefined;
|
|
1807
1807
|
userId?: string | undefined;
|
|
@@ -211,8 +211,8 @@ exports.singleCouponOrdersRequestSchema = zod_1.z.object({
|
|
|
211
211
|
userId: zod_1.z.string().optional(),
|
|
212
212
|
page: zod_1.z.number().int().positive().default(1),
|
|
213
213
|
size: zod_1.z.number().int().positive().default(10),
|
|
214
|
-
startDate: zod_1.z.
|
|
215
|
-
endDate: zod_1.z.
|
|
214
|
+
startDate: zod_1.z.string().optional(),
|
|
215
|
+
endDate: zod_1.z.string().optional(),
|
|
216
216
|
search: zod_1.z.string().trim().optional(),
|
|
217
217
|
zone: zod_1.z.string().optional(),
|
|
218
218
|
sort: zod_1.z.record(zod_1.z.union([zod_1.z.literal(1), zod_1.z.literal(-1)])).optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coupon.validation.js","sourceRoot":"/","sources":["modules/coupon/validations/coupon.validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport {\n\tZodValidation,\n\tcreateSchemaBuilder,\n\tDTO,\n} from '@lyxa.ai/core/dist/utilities/validation/global-validation';\nimport {\n\tCouponExpirationReason,\n\tCouponType,\n\tGraphType,\n\tItemType,\n\tStatus,\n\tValueType,\n} from '@lyxa.ai/core/dist/utilities/enum';\nimport {\n\tcreateResponseSchema,\n\tDurationSchema,\n} from '@lyxa.ai/core/dist/utilities/validation/common-validation';\nimport { dayjs } from '@lyxa.ai/core/dist/utilities/dayjs';\n\n/**\n * Define the base parent schema fields\n */\nexport const couponFields = {\n\tcode: ZodValidation.string('Code', {\n\t\tregex: { pattern: new RegExp('^[A-Z0-9]+$'), message: 'Coupon name must be uppercase' },\n\t\tmaxLength: 10,\n\t\tminLength: 4,\n\t\tminMessage: 'Coupon must be 4 characters',\n\t\tmaxMessage: 'Coupon must be 10 characters',\n\t}),\n\torderLimitPerUser: ZodValidation.number('OrderLimitPerUser')\n\t\t.nonnegative()\n\t\t.optional()\n\t\t.nullable()\n\t\t.default(null),\n\tisOrderLimitPerUserEnabled: ZodValidation.boolean('Is order limit per user enabled')\n\t\t.optional()\n\t\t.default(false),\n\tcreatedBy: ZodValidation.objectId('Created by').optional(),\n\tisExpired: ZodValidation.boolean('Is expired').optional(),\n};\n\nexport const baseFields = {\n\t...couponFields,\n\tvalueType: ZodValidation.enumType(ValueType, 'Value type'),\n\tvalue: ZodValidation.number('Value'),\n\tsecondaryCurrencyValue: ZodValidation.number('Secondary currency value').optional(),\n\tmaxDiscountLimit: ZodValidation.number('Max discount limit').optional().nullable().default(null),\n\tsecondaryCurrencyMaxDiscountLimit: ZodValidation.number('Secondary currency max discount limit').optional(),\n\tisMaxDiscountLimitEnabled: ZodValidation.boolean('Is max discount limit enabled').optional().default(false),\n\tduration: DurationSchema\n\t\t// .refine((d: any) => d.start >= new Date() && d.end >= new Date(), {\n\t\t// \tmessage: 'Start and end dates must not be in the past',\n\t\t// })\n\t\t.transform(duration => {\n\t\t\tduration.start = dayjs(duration.start).toDate();\n\t\t\tduration.end = dayjs(duration.end).toDate();\n\t\t\treturn duration;\n\t\t}),\n\tspendLimit: ZodValidation.number('Spend limit').optional().nullable().default(null),\n\tisSpendLimitEnabled: ZodValidation.boolean('Is spend limit enabled').optional().default(false),\n\ttotalOrderLimit: ZodValidation.number('Total order limit').optional().nullable().default(null),\n\tisTotalOrderLimitEnabled: ZodValidation.boolean('Is total order limit enabled').optional().default(false),\n\tminOrderValue: ZodValidation.number('Min order value').nullable().default(null),\n\tsecondaryCurrencyMinOrderValue: ZodValidation.number('Secondary currency min order value').optional(),\n\tisMinOrderValueEnabled: ZodValidation.boolean('Is min order value enabled').optional().default(false),\n\tforNewUserOnly: ZodValidation.boolean('ForNewUserOnly').optional().default(false),\n\tstatus: ZodValidation.enumType(Status, 'Status').optional().default(Status.ACTIVE),\n\texpirationReason: ZodValidation.enumType(CouponExpirationReason, 'Expiration reason')\n\t\t.optional()\n\t\t.nullable()\n\t\t.default(null),\n\treferringUser: z\n\t\t.object({\n\t\t\tname: ZodValidation.string('Referring user name').optional(),\n\t\t})\n\t\t.optional(),\n};\n\n/**\n * Create schema builder for Parent entity\n * - Includes timestamps\n * - Excludes 'createdAt' from update operations\n */\nconst schemaBuilder = createSchemaBuilder(baseFields);\n\n/**\n * Get all schemas for the Parent entity\n */\nconst {\n\tBaseSchema: CouponValidationSchema,\n\tEntitySchema: CouponSchema,\n\tIdSchema: CouponIdSchema,\n\tUpdateSchema: UpdateCouponSchema,\n} = schemaBuilder.getAllSchemas({ createdAt: true });\n\n/**\n * Export schemas\n */\nexport const GetUserCouponsResponseSchema = z.object({\n\tavailable: z.array(CouponSchema),\n\tused: z.array(CouponSchema),\n\texpired: z.array(CouponSchema),\n});\n\nexport {\n\tCouponValidationSchema,\n\tCouponSchema,\n\tCouponIdSchema as CouponIdValidationSchema,\n\tUpdateCouponSchema,\n};\n\n/**\n * Schema for getting user coupons\n */\nexport const GetUserCouponSchema = z.object({\n\tuser: ZodValidation.objectId('User').optional(),\n\tshop: ZodValidation.objectId('Shop').optional(),\n\tvendor: ZodValidation.objectId('Vendor').optional(),\n\tpage: ZodValidation.number('Page').optional().default(0),\n\tsize: ZodValidation.number('Page size').optional().default(100),\n});\n\n/**\n * Schema for validating coupons\n */\nexport const ValidateCouponSchema = z\n\t.object({\n\t\tuser: ZodValidation.objectIdOrStringSchema,\n\t\tshop: ZodValidation.objectIdOrStringSchema.optional(),\n\t\tvendor: ZodValidation.objectIdOrStringSchema.optional(),\n\t\tcoupon: ZodValidation.string('Coupon').optional(),\n\t\tamountBeforeCoupon: ZodValidation.number('Amount before coupon'),\n\t\tsecondaryAmountBeforeCoupon: ZodValidation.number('Secondary amount before coupon'),\n\t\tscheduledAt: ZodValidation.date('Scheduled at').optional(),\n\t})\n\t.superRefine((data, ctx) => {\n\t\tif (!data.shop && !data.vendor) {\n\t\t\tctx.addIssue({\n\t\t\t\tpath: ['shop', 'vendor'],\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'Shop or vendor is required.',\n\t\t\t});\n\t\t}\n\t\tif (data.shop && data.vendor) {\n\t\t\tctx.addIssue({\n\t\t\t\tpath: ['shop', 'vendor'],\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'Only one of Shop or vendor should be provided.',\n\t\t\t});\n\t\t}\n\t});\n\nconst discountCutSchema = z.object({\n\tcompanyCut: ZodValidation.number('companyCut').optional(),\n\tsecondaryCompanyCut: ZodValidation.number('secondaryCompanyCut').optional(),\n\tshopCut: ZodValidation.number('shopCut').optional(),\n\tsecondaryShopCut: ZodValidation.number('secondaryShopCut').optional(),\n\tvendorCut: ZodValidation.number('vendorCut').optional(),\n\tsecondaryVendorCut: ZodValidation.number('secondaryVendorCut').optional(),\n});\n\n/**\n * Schema for coupon validation output\n */\nexport const CouponValidationOutputSchema = z.object({\n\tisValid: ZodValidation.boolean('IsValid').default(false),\n\tmessage: ZodValidation.string('Message').optional(),\n\tamountAfterCoupon: ZodValidation.number('Amount after coupon').optional(),\n\tsecondaryAmountAfterCoupon: ZodValidation.number('Secondary amount after coupon').optional(),\n\tdiscountAmount: ZodValidation.number('Coupon Discount').optional(),\n\tsecondaryDiscountAmount: ZodValidation.number('Secondary coupon discount').optional(),\n\tdiscountCut: discountCutSchema.optional(),\n\tcouponDetails: z.record(z.unknown()).optional(), // Flexible field for any additional coupon details\n\tcouponInfo: z.record(z.unknown()).optional(),\n});\n\nexport const CouponCodeSchema = z.object({\n\tcouponCode: ZodValidation.string('Coupon code'),\n});\n\nexport const UpdateCouponStatusSchema = z.object({\n\t_id: ZodValidation.objectIdOrStringSchema,\n\tstatus: ZodValidation.enumType(Status, 'Status').optional().default(Status.ACTIVE),\n});\n\nexport const CheckExistingNewUserCouponOutputSchema = z.object({\n\texists: ZodValidation.boolean('Exists').default(false),\n});\n\nexport const CouponValidationResponseSchema = createResponseSchema(CouponValidationOutputSchema);\n\nexport const DeviceIdSchema = z.object({ deviceId: z.string() });\nexport const IsNewUserGiftBoxShownSchema = z.object({ isNewUserGiftBoxShown: z.boolean() });\n\nexport const BaseDateInputSchema = z\n\t.object({\n\t\tstartDate: ZodValidation.date('Start Date').transform(val => dayjs(val).startOf('day').toDate()),\n\t\tendDate: ZodValidation.date('End Date').transform(val => dayjs(val).endOf('day').toDate()),\n\t})\n\t.strict();\n\nexport const DateInputSchema = BaseDateInputSchema.refine(\n\tdata => !dayjs(data.startDate).isAfter(dayjs(data.endDate)),\n\t{\n\t\tmessage: 'Start date cannot be after end date',\n\t\tpath: ['startDate'],\n\t}\n);\n\nexport const GraphInputSchema = BaseDateInputSchema.extend({\n\tgraphType: ZodValidation.enumType(GraphType, 'Type').optional(),\n\titemType: ZodValidation.enumType(ItemType, 'Item Type').optional(),\n}).refine(data => !dayjs(data.startDate).isAfter(dayjs(data.endDate)), {\n\tmessage: 'Start date cannot be after end date',\n\tpath: ['startDate'],\n});\n\nexport const CouponMetricsOutputSchema = z.object({\n\tactiveCoupons: ZodValidation.number('Active coupons').default(0),\n\ttotalCreated: ZodValidation.number('Total created coupons').default(0),\n\ttotalRedeemedCoupons: ZodValidation.number('Total redeemed coupons').default(0),\n\tredemptionRate: ZodValidation.number('Redemption rate').default(0),\n\ttotalCouponOrders: ZodValidation.number('Total coupon orders').default(0),\n\ttotalRevenue: ZodValidation.number('Total revenue from coupons').default(0),\n\ttotalProfit: ZodValidation.number('Total profit from coupons').default(0),\n});\n\nexport const CouponMetricsByTypeSchema = z.object({\n\tcouponType: ZodValidation.enumType(CouponType, 'Coupon Type'),\n\tcouponTypeTitle: ZodValidation.string('Coupon Type Title'),\n\ttotalCouponOrders: ZodValidation.number('Total coupon orders').default(0),\n\ttotalRevenue: ZodValidation.number('Total revenue from coupons').default(0),\n\taverageOrderValue: ZodValidation.number('Average order value for coupons of this type').default(0),\n\tusage: ZodValidation.number('Usage').default(0),\n\tongoing: ZodValidation.number('Ongoing').default(0),\n\tamountSpent: ZodValidation.number('Amount spent on coupons of this type').default(0),\n\tredemptionRate: ZodValidation.number('Redemption rate for this coupon type').default(0),\n});\n\nexport const GraphSchema = z.object({\n\tcategories: ZodValidation.array(ZodValidation.string('Category labels')),\n\tseries: ZodValidation.array(\n\t\tz.object({\n\t\t\tname: ZodValidation.string('Name of the series'),\n\t\t\tdata: ZodValidation.array(ZodValidation.number('Series data')),\n\t\t})\n\t),\n});\n\nexport const TotalProfitGraphSchema = GraphSchema.extend({\n\ttotalProfit: ZodValidation.number('Total profit').default(0),\n});\n\nexport const CouponListRequestSchema = z.object({\n\tpage: ZodValidation.number('Page', { isInt: true, isPositive: true, min: 1 }),\n\tsize: ZodValidation.number('Page', { isInt: true, isPositive: true, min: 1, max: 100 }),\n\tcouponTypes: ZodValidation.array(ZodValidation.enumType(CouponType, 'Coupon type'), 'Coupon types'),\n\tfromDate: ZodValidation.date('From date'),\n\ttoDate: ZodValidation.date('To date'),\n\tstatus: ZodValidation.enumType(Status, 'Status').optional(),\n\tsearchKey: ZodValidation.string('Search key').optional(),\n\tpopulate: ZodValidation.array(\n\t\tz.object({\n\t\t\tpath: ZodValidation.string(),\n\t\t\tselect: z\n\t\t\t\t.union([ZodValidation.string(), z.record(z.string(), z.union([z.literal(0), z.literal(1)]))])\n\t\t\t\t.optional(),\n\t\t}),\n\t\t'Populate'\n\t).optional(),\n});\n\nexport const CouponUsersRequestSchema = z.object({\n\tstartDate: z.date().optional(),\n\tendDate: z.date().optional(),\n\tcouponId: z.string(),\n\tpage: z.number().int().positive().default(1),\n\tsize: z.number().int().positive().default(10),\n\tsearch: z.string().trim().optional(),\n\tzone: z.string().optional(),\n\tsort: z.record(z.union([z.literal(1), z.literal(-1)])).optional(),\n});\n\nexport const singleCouponOrdersRequestSchema = z.object({\n\tcouponId: z.string(),\n\tuserId: z.string().optional(),\n\tpage: z.number().int().positive().default(1),\n\tsize: z.number().int().positive().default(10),\n\tstartDate: z.date().optional(),\n\tendDate: z.date().optional(),\n\tsearch: z.string().trim().optional(),\n\tzone: z.string().optional(),\n\tsort: z.record(z.union([z.literal(1), z.literal(-1)])).optional(),\n});\n\nexport const CouponUserItemSchema = z.object({\n\tid: z.string(),\n\tname: z.string(),\n\tavatar: z.string().nullable().optional(),\n\tzone: z.string().nullable(),\n\tzoneId: z.string().nullable(),\n\temail: z.string().nullable(),\n\tmobile: z.string().nullable(),\n\torders: z.number(),\n\tcreationDate: z.coerce.date(),\n\tstatus: z.nativeEnum(Status),\n});\n\nexport const CouponSingleUserOrderItemSchema = z.object({\n\torder: z.object({\n\t\t_id: z.string(),\n\t\torderId: z.string().optional(),\n\t\torderAmount: z.number().optional(),\n\t}),\n\tuser: z.object({\n\t\t_id: z.string(),\n\t\tname: z.string().optional(),\n\t\tphoto: z.string().nullable().optional(),\n\t}),\n\tshop: z.object({\n\t\t_id: z.string(),\n\t\tname: z.string().optional(),\n\t\tlogo: z.string().nullable().optional(),\n\t}),\n\tzone: z.string().nullable().optional(),\n\tcreationDate: z.coerce.date().optional(),\n});\n\nexport const CouponMetricsResponseSchema = createResponseSchema(CouponMetricsOutputSchema);\nexport const CouponMetricsByTypeResponseSchema = createResponseSchema(CouponMetricsByTypeSchema.array());\nexport const GraphResponseSchema = createResponseSchema(GraphSchema);\nexport const TotalProfitGraphResponseSchema = createResponseSchema(TotalProfitGraphSchema);\n\n/**\n * Export DTO types\n */\nexport type CreateCouponDTO = DTO<typeof CouponValidationSchema>;\nexport type CouponDTO = DTO<typeof CouponSchema>;\nexport type UpdateCouponDTO = DTO<typeof UpdateCouponSchema>;\nexport type GetUserCouponDTO = DTO<typeof GetUserCouponSchema>;\nexport type ValidateCouponDTO = DTO<typeof ValidateCouponSchema>;\nexport type CouponValidationOutputDTO = DTO<typeof CouponValidationOutputSchema>;\nexport type GetUserCouponsResponseDTO = DTO<typeof GetUserCouponsResponseSchema>;\nexport type UpdateCouponStatusDTO = DTO<typeof UpdateCouponStatusSchema>;\nexport type CheckExistingNewUserCouponOutputDTO = DTO<typeof CheckExistingNewUserCouponOutputSchema>;\nexport type DeviceIdDTO = DTO<typeof DeviceIdSchema>;\nexport type IsNewUserGiftBoxShownDTO = DTO<typeof IsNewUserGiftBoxShownSchema>;\nexport type DateInputDTO = DTO<typeof DateInputSchema>;\nexport type GraphInputDTO = DTO<typeof GraphInputSchema>;\nexport type CouponMetricsOutputDTO = DTO<typeof CouponMetricsOutputSchema>;\nexport type CouponMetricsByTypeDTO = DTO<typeof CouponMetricsByTypeSchema>;\nexport type GraphDTO = DTO<typeof GraphSchema>;\nexport type TotalProfitGraphDTO = DTO<typeof TotalProfitGraphSchema>;\nexport type CouponListRequestDTO = DTO<typeof CouponListRequestSchema>;\nexport type CouponUsersRequestDTO = DTO<typeof CouponUsersRequestSchema>;\nexport type SingleCouppnOrdersRequestDTO = DTO<typeof singleCouponOrdersRequestSchema>;\n\nexport type CouponUserItemDTO = DTO<typeof CouponUserItemSchema>;\n"]}
|
|
1
|
+
{"version":3,"file":"coupon.validation.js","sourceRoot":"/","sources":["modules/coupon/validations/coupon.validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport {\n\tZodValidation,\n\tcreateSchemaBuilder,\n\tDTO,\n} from '@lyxa.ai/core/dist/utilities/validation/global-validation';\nimport {\n\tCouponExpirationReason,\n\tCouponType,\n\tGraphType,\n\tItemType,\n\tStatus,\n\tValueType,\n} from '@lyxa.ai/core/dist/utilities/enum';\nimport {\n\tcreateResponseSchema,\n\tDurationSchema,\n} from '@lyxa.ai/core/dist/utilities/validation/common-validation';\nimport { dayjs } from '@lyxa.ai/core/dist/utilities/dayjs';\n\n/**\n * Define the base parent schema fields\n */\nexport const couponFields = {\n\tcode: ZodValidation.string('Code', {\n\t\tregex: { pattern: new RegExp('^[A-Z0-9]+$'), message: 'Coupon name must be uppercase' },\n\t\tmaxLength: 10,\n\t\tminLength: 4,\n\t\tminMessage: 'Coupon must be 4 characters',\n\t\tmaxMessage: 'Coupon must be 10 characters',\n\t}),\n\torderLimitPerUser: ZodValidation.number('OrderLimitPerUser')\n\t\t.nonnegative()\n\t\t.optional()\n\t\t.nullable()\n\t\t.default(null),\n\tisOrderLimitPerUserEnabled: ZodValidation.boolean('Is order limit per user enabled')\n\t\t.optional()\n\t\t.default(false),\n\tcreatedBy: ZodValidation.objectId('Created by').optional(),\n\tisExpired: ZodValidation.boolean('Is expired').optional(),\n};\n\nexport const baseFields = {\n\t...couponFields,\n\tvalueType: ZodValidation.enumType(ValueType, 'Value type'),\n\tvalue: ZodValidation.number('Value'),\n\tsecondaryCurrencyValue: ZodValidation.number('Secondary currency value').optional(),\n\tmaxDiscountLimit: ZodValidation.number('Max discount limit').optional().nullable().default(null),\n\tsecondaryCurrencyMaxDiscountLimit: ZodValidation.number('Secondary currency max discount limit').optional(),\n\tisMaxDiscountLimitEnabled: ZodValidation.boolean('Is max discount limit enabled').optional().default(false),\n\tduration: DurationSchema\n\t\t// .refine((d: any) => d.start >= new Date() && d.end >= new Date(), {\n\t\t// \tmessage: 'Start and end dates must not be in the past',\n\t\t// })\n\t\t.transform(duration => {\n\t\t\tduration.start = dayjs(duration.start).toDate();\n\t\t\tduration.end = dayjs(duration.end).toDate();\n\t\t\treturn duration;\n\t\t}),\n\tspendLimit: ZodValidation.number('Spend limit').optional().nullable().default(null),\n\tisSpendLimitEnabled: ZodValidation.boolean('Is spend limit enabled').optional().default(false),\n\ttotalOrderLimit: ZodValidation.number('Total order limit').optional().nullable().default(null),\n\tisTotalOrderLimitEnabled: ZodValidation.boolean('Is total order limit enabled').optional().default(false),\n\tminOrderValue: ZodValidation.number('Min order value').nullable().default(null),\n\tsecondaryCurrencyMinOrderValue: ZodValidation.number('Secondary currency min order value').optional(),\n\tisMinOrderValueEnabled: ZodValidation.boolean('Is min order value enabled').optional().default(false),\n\tforNewUserOnly: ZodValidation.boolean('ForNewUserOnly').optional().default(false),\n\tstatus: ZodValidation.enumType(Status, 'Status').optional().default(Status.ACTIVE),\n\texpirationReason: ZodValidation.enumType(CouponExpirationReason, 'Expiration reason')\n\t\t.optional()\n\t\t.nullable()\n\t\t.default(null),\n\treferringUser: z\n\t\t.object({\n\t\t\tname: ZodValidation.string('Referring user name').optional(),\n\t\t})\n\t\t.optional(),\n};\n\n/**\n * Create schema builder for Parent entity\n * - Includes timestamps\n * - Excludes 'createdAt' from update operations\n */\nconst schemaBuilder = createSchemaBuilder(baseFields);\n\n/**\n * Get all schemas for the Parent entity\n */\nconst {\n\tBaseSchema: CouponValidationSchema,\n\tEntitySchema: CouponSchema,\n\tIdSchema: CouponIdSchema,\n\tUpdateSchema: UpdateCouponSchema,\n} = schemaBuilder.getAllSchemas({ createdAt: true });\n\n/**\n * Export schemas\n */\nexport const GetUserCouponsResponseSchema = z.object({\n\tavailable: z.array(CouponSchema),\n\tused: z.array(CouponSchema),\n\texpired: z.array(CouponSchema),\n});\n\nexport {\n\tCouponValidationSchema,\n\tCouponSchema,\n\tCouponIdSchema as CouponIdValidationSchema,\n\tUpdateCouponSchema,\n};\n\n/**\n * Schema for getting user coupons\n */\nexport const GetUserCouponSchema = z.object({\n\tuser: ZodValidation.objectId('User').optional(),\n\tshop: ZodValidation.objectId('Shop').optional(),\n\tvendor: ZodValidation.objectId('Vendor').optional(),\n\tpage: ZodValidation.number('Page').optional().default(0),\n\tsize: ZodValidation.number('Page size').optional().default(100),\n});\n\n/**\n * Schema for validating coupons\n */\nexport const ValidateCouponSchema = z\n\t.object({\n\t\tuser: ZodValidation.objectIdOrStringSchema,\n\t\tshop: ZodValidation.objectIdOrStringSchema.optional(),\n\t\tvendor: ZodValidation.objectIdOrStringSchema.optional(),\n\t\tcoupon: ZodValidation.string('Coupon').optional(),\n\t\tamountBeforeCoupon: ZodValidation.number('Amount before coupon'),\n\t\tsecondaryAmountBeforeCoupon: ZodValidation.number('Secondary amount before coupon'),\n\t\tscheduledAt: ZodValidation.date('Scheduled at').optional(),\n\t})\n\t.superRefine((data, ctx) => {\n\t\tif (!data.shop && !data.vendor) {\n\t\t\tctx.addIssue({\n\t\t\t\tpath: ['shop', 'vendor'],\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'Shop or vendor is required.',\n\t\t\t});\n\t\t}\n\t\tif (data.shop && data.vendor) {\n\t\t\tctx.addIssue({\n\t\t\t\tpath: ['shop', 'vendor'],\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'Only one of Shop or vendor should be provided.',\n\t\t\t});\n\t\t}\n\t});\n\nconst discountCutSchema = z.object({\n\tcompanyCut: ZodValidation.number('companyCut').optional(),\n\tsecondaryCompanyCut: ZodValidation.number('secondaryCompanyCut').optional(),\n\tshopCut: ZodValidation.number('shopCut').optional(),\n\tsecondaryShopCut: ZodValidation.number('secondaryShopCut').optional(),\n\tvendorCut: ZodValidation.number('vendorCut').optional(),\n\tsecondaryVendorCut: ZodValidation.number('secondaryVendorCut').optional(),\n});\n\n/**\n * Schema for coupon validation output\n */\nexport const CouponValidationOutputSchema = z.object({\n\tisValid: ZodValidation.boolean('IsValid').default(false),\n\tmessage: ZodValidation.string('Message').optional(),\n\tamountAfterCoupon: ZodValidation.number('Amount after coupon').optional(),\n\tsecondaryAmountAfterCoupon: ZodValidation.number('Secondary amount after coupon').optional(),\n\tdiscountAmount: ZodValidation.number('Coupon Discount').optional(),\n\tsecondaryDiscountAmount: ZodValidation.number('Secondary coupon discount').optional(),\n\tdiscountCut: discountCutSchema.optional(),\n\tcouponDetails: z.record(z.unknown()).optional(), // Flexible field for any additional coupon details\n\tcouponInfo: z.record(z.unknown()).optional(),\n});\n\nexport const CouponCodeSchema = z.object({\n\tcouponCode: ZodValidation.string('Coupon code'),\n});\n\nexport const UpdateCouponStatusSchema = z.object({\n\t_id: ZodValidation.objectIdOrStringSchema,\n\tstatus: ZodValidation.enumType(Status, 'Status').optional().default(Status.ACTIVE),\n});\n\nexport const CheckExistingNewUserCouponOutputSchema = z.object({\n\texists: ZodValidation.boolean('Exists').default(false),\n});\n\nexport const CouponValidationResponseSchema = createResponseSchema(CouponValidationOutputSchema);\n\nexport const DeviceIdSchema = z.object({ deviceId: z.string() });\nexport const IsNewUserGiftBoxShownSchema = z.object({ isNewUserGiftBoxShown: z.boolean() });\n\nexport const BaseDateInputSchema = z\n\t.object({\n\t\tstartDate: ZodValidation.date('Start Date').transform(val => dayjs(val).startOf('day').toDate()),\n\t\tendDate: ZodValidation.date('End Date').transform(val => dayjs(val).endOf('day').toDate()),\n\t})\n\t.strict();\n\nexport const DateInputSchema = BaseDateInputSchema.refine(\n\tdata => !dayjs(data.startDate).isAfter(dayjs(data.endDate)),\n\t{\n\t\tmessage: 'Start date cannot be after end date',\n\t\tpath: ['startDate'],\n\t}\n);\n\nexport const GraphInputSchema = BaseDateInputSchema.extend({\n\tgraphType: ZodValidation.enumType(GraphType, 'Type').optional(),\n\titemType: ZodValidation.enumType(ItemType, 'Item Type').optional(),\n}).refine(data => !dayjs(data.startDate).isAfter(dayjs(data.endDate)), {\n\tmessage: 'Start date cannot be after end date',\n\tpath: ['startDate'],\n});\n\nexport const CouponMetricsOutputSchema = z.object({\n\tactiveCoupons: ZodValidation.number('Active coupons').default(0),\n\ttotalCreated: ZodValidation.number('Total created coupons').default(0),\n\ttotalRedeemedCoupons: ZodValidation.number('Total redeemed coupons').default(0),\n\tredemptionRate: ZodValidation.number('Redemption rate').default(0),\n\ttotalCouponOrders: ZodValidation.number('Total coupon orders').default(0),\n\ttotalRevenue: ZodValidation.number('Total revenue from coupons').default(0),\n\ttotalProfit: ZodValidation.number('Total profit from coupons').default(0),\n});\n\nexport const CouponMetricsByTypeSchema = z.object({\n\tcouponType: ZodValidation.enumType(CouponType, 'Coupon Type'),\n\tcouponTypeTitle: ZodValidation.string('Coupon Type Title'),\n\ttotalCouponOrders: ZodValidation.number('Total coupon orders').default(0),\n\ttotalRevenue: ZodValidation.number('Total revenue from coupons').default(0),\n\taverageOrderValue: ZodValidation.number('Average order value for coupons of this type').default(0),\n\tusage: ZodValidation.number('Usage').default(0),\n\tongoing: ZodValidation.number('Ongoing').default(0),\n\tamountSpent: ZodValidation.number('Amount spent on coupons of this type').default(0),\n\tredemptionRate: ZodValidation.number('Redemption rate for this coupon type').default(0),\n});\n\nexport const GraphSchema = z.object({\n\tcategories: ZodValidation.array(ZodValidation.string('Category labels')),\n\tseries: ZodValidation.array(\n\t\tz.object({\n\t\t\tname: ZodValidation.string('Name of the series'),\n\t\t\tdata: ZodValidation.array(ZodValidation.number('Series data')),\n\t\t})\n\t),\n});\n\nexport const TotalProfitGraphSchema = GraphSchema.extend({\n\ttotalProfit: ZodValidation.number('Total profit').default(0),\n});\n\nexport const CouponListRequestSchema = z.object({\n\tpage: ZodValidation.number('Page', { isInt: true, isPositive: true, min: 1 }),\n\tsize: ZodValidation.number('Page', { isInt: true, isPositive: true, min: 1, max: 100 }),\n\tcouponTypes: ZodValidation.array(ZodValidation.enumType(CouponType, 'Coupon type'), 'Coupon types'),\n\tfromDate: ZodValidation.date('From date'),\n\ttoDate: ZodValidation.date('To date'),\n\tstatus: ZodValidation.enumType(Status, 'Status').optional(),\n\tsearchKey: ZodValidation.string('Search key').optional(),\n\tpopulate: ZodValidation.array(\n\t\tz.object({\n\t\t\tpath: ZodValidation.string(),\n\t\t\tselect: z\n\t\t\t\t.union([ZodValidation.string(), z.record(z.string(), z.union([z.literal(0), z.literal(1)]))])\n\t\t\t\t.optional(),\n\t\t}),\n\t\t'Populate'\n\t).optional(),\n});\n\nexport const CouponUsersRequestSchema = z.object({\n\tstartDate: z.date().optional(),\n\tendDate: z.date().optional(),\n\tcouponId: z.string(),\n\tpage: z.number().int().positive().default(1),\n\tsize: z.number().int().positive().default(10),\n\tsearch: z.string().trim().optional(),\n\tzone: z.string().optional(),\n\tsort: z.record(z.union([z.literal(1), z.literal(-1)])).optional(),\n});\n\nexport const singleCouponOrdersRequestSchema = z.object({\n\tcouponId: z.string(),\n\tuserId: z.string().optional(),\n\tpage: z.number().int().positive().default(1),\n\tsize: z.number().int().positive().default(10),\n\tstartDate: z.string().optional(),\n\tendDate: z.string().optional(),\n\tsearch: z.string().trim().optional(),\n\tzone: z.string().optional(),\n\tsort: z.record(z.union([z.literal(1), z.literal(-1)])).optional(),\n});\n\nexport const CouponUserItemSchema = z.object({\n\tid: z.string(),\n\tname: z.string(),\n\tavatar: z.string().nullable().optional(),\n\tzone: z.string().nullable(),\n\tzoneId: z.string().nullable(),\n\temail: z.string().nullable(),\n\tmobile: z.string().nullable(),\n\torders: z.number(),\n\tcreationDate: z.coerce.date(),\n\tstatus: z.nativeEnum(Status),\n});\n\nexport const CouponSingleUserOrderItemSchema = z.object({\n\torder: z.object({\n\t\t_id: z.string(),\n\t\torderId: z.string().optional(),\n\t\torderAmount: z.number().optional(),\n\t}),\n\tuser: z.object({\n\t\t_id: z.string(),\n\t\tname: z.string().optional(),\n\t\tphoto: z.string().nullable().optional(),\n\t}),\n\tshop: z.object({\n\t\t_id: z.string(),\n\t\tname: z.string().optional(),\n\t\tlogo: z.string().nullable().optional(),\n\t}),\n\tzone: z.string().nullable().optional(),\n\tcreationDate: z.coerce.date().optional(),\n});\n\nexport const CouponMetricsResponseSchema = createResponseSchema(CouponMetricsOutputSchema);\nexport const CouponMetricsByTypeResponseSchema = createResponseSchema(CouponMetricsByTypeSchema.array());\nexport const GraphResponseSchema = createResponseSchema(GraphSchema);\nexport const TotalProfitGraphResponseSchema = createResponseSchema(TotalProfitGraphSchema);\n\n/**\n * Export DTO types\n */\nexport type CreateCouponDTO = DTO<typeof CouponValidationSchema>;\nexport type CouponDTO = DTO<typeof CouponSchema>;\nexport type UpdateCouponDTO = DTO<typeof UpdateCouponSchema>;\nexport type GetUserCouponDTO = DTO<typeof GetUserCouponSchema>;\nexport type ValidateCouponDTO = DTO<typeof ValidateCouponSchema>;\nexport type CouponValidationOutputDTO = DTO<typeof CouponValidationOutputSchema>;\nexport type GetUserCouponsResponseDTO = DTO<typeof GetUserCouponsResponseSchema>;\nexport type UpdateCouponStatusDTO = DTO<typeof UpdateCouponStatusSchema>;\nexport type CheckExistingNewUserCouponOutputDTO = DTO<typeof CheckExistingNewUserCouponOutputSchema>;\nexport type DeviceIdDTO = DTO<typeof DeviceIdSchema>;\nexport type IsNewUserGiftBoxShownDTO = DTO<typeof IsNewUserGiftBoxShownSchema>;\nexport type DateInputDTO = DTO<typeof DateInputSchema>;\nexport type GraphInputDTO = DTO<typeof GraphInputSchema>;\nexport type CouponMetricsOutputDTO = DTO<typeof CouponMetricsOutputSchema>;\nexport type CouponMetricsByTypeDTO = DTO<typeof CouponMetricsByTypeSchema>;\nexport type GraphDTO = DTO<typeof GraphSchema>;\nexport type TotalProfitGraphDTO = DTO<typeof TotalProfitGraphSchema>;\nexport type CouponListRequestDTO = DTO<typeof CouponListRequestSchema>;\nexport type CouponUsersRequestDTO = DTO<typeof CouponUsersRequestSchema>;\nexport type SingleCouppnOrdersRequestDTO = DTO<typeof singleCouponOrdersRequestSchema>;\n\nexport type CouponUserItemDTO = DTO<typeof CouponUserItemSchema>;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-coupon.validation.d.ts","sourceRoot":"/","sources":["modules/coupon/validations/create-coupon.validation.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"create-coupon.validation.d.ts","sourceRoot":"/","sources":["modules/coupon/validations/create-coupon.validation.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe9B,CAAC"}
|
|
@@ -3,7 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CreateCouponSchema = void 0;
|
|
4
4
|
const all_coupons_validation_1 = require("./all-coupons.validation");
|
|
5
5
|
exports.CreateCouponSchema = all_coupons_validation_1.AllCouponsValidationSchema.refine((data) => {
|
|
6
|
-
if (data.orderLimitPerUser === null ||
|
|
6
|
+
if (data.orderLimitPerUser === null ||
|
|
7
|
+
data.totalOrderLimit === null ||
|
|
8
|
+
!data.isOrderLimitPerUserEnabled ||
|
|
9
|
+
!data.isTotalOrderLimitEnabled)
|
|
7
10
|
return true;
|
|
8
11
|
return data.orderLimitPerUser <= data.totalOrderLimit;
|
|
9
12
|
}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-coupon.validation.js","sourceRoot":"/","sources":["modules/coupon/validations/create-coupon.validation.ts"],"names":[],"mappings":";;;AAAA,qEAA8F;AAEjF,QAAA,kBAAkB,GAAG,mDAA0B,CAAC,MAAM,CAClE,CAAC,IAAS,EAAE,EAAE;IACb,
|
|
1
|
+
{"version":3,"file":"create-coupon.validation.js","sourceRoot":"/","sources":["modules/coupon/validations/create-coupon.validation.ts"],"names":[],"mappings":";;;AAAA,qEAA8F;AAEjF,QAAA,kBAAkB,GAAG,mDAA0B,CAAC,MAAM,CAClE,CAAC,IAAS,EAAE,EAAE;IACb,IACC,IAAI,CAAC,iBAAiB,KAAK,IAAI;QAC/B,IAAI,CAAC,eAAe,KAAK,IAAI;QAC7B,CAAC,IAAI,CAAC,0BAA0B;QAChC,CAAC,IAAI,CAAC,wBAAwB;QAE9B,OAAO,IAAI,CAAC;IACb,OAAO,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,eAAe,CAAC;AACvD,CAAC,EACD;IACC,OAAO,EAAE,mEAAmE;IAC5E,IAAI,EAAE,CAAC,mBAAmB,CAAC;CAC3B,CACD,CAAC","sourcesContent":["import { AllCouponsValidationSchema, AllCouponsUpdateSchema } from './all-coupons.validation';\n\nexport const CreateCouponSchema = AllCouponsValidationSchema.refine(\n\t(data: any) => {\n\t\tif (\n\t\t\tdata.orderLimitPerUser === null ||\n\t\t\tdata.totalOrderLimit === null ||\n\t\t\t!data.isOrderLimitPerUserEnabled ||\n\t\t\t!data.isTotalOrderLimitEnabled\n\t\t)\n\t\t\treturn true;\n\t\treturn data.orderLimitPerUser <= data.totalOrderLimit;\n\t},\n\t{\n\t\tmessage: 'Order limit per user cannot be greater than the total order limit',\n\t\tpath: ['orderLimitPerUser'],\n\t}\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deal-setting.service.d.ts","sourceRoot":"/","sources":["modules/deal-setting/services/deal-setting.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAElG,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAoB,WAAW,IAAI,KAAK,EAAE,MAAM,2CAA2C,CAAC;AACnG,OAAO,EACN,oBAAoB,IAAI,SAAS,EACjC,oBAAoB,IAAI,SAAS,EACjC,mBAAmB,IAAI,YAAY,EACnC,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"deal-setting.service.d.ts","sourceRoot":"/","sources":["modules/deal-setting/services/deal-setting.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAElG,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAoB,WAAW,IAAI,KAAK,EAAE,MAAM,2CAA2C,CAAC;AACnG,OAAO,EACN,oBAAoB,IAAI,SAAS,EACjC,oBAAoB,IAAI,SAAS,EACjC,mBAAmB,IAAI,YAAY,EACnC,MAAM,mCAAmC,CAAC;AAY3C,qBACa,kBAAkB;IAC9B,OAAO,CAAC,KAAK,CAAmD;IAChE,OAAO,CAAC,kBAAkB,CAcxB;;IAUW,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IA4BrE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAkB5E,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YA2B1F,yBAAyB;IAyB1B,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IA4BjF,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAkB9E,8BAA8B;IAmB/B,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAoCzE;AAED,eAAO,MAAM,kBAAkB,oBAAoC,CAAC"}
|
|
@@ -61,7 +61,10 @@ let DealSettingService = class DealSettingService {
|
|
|
61
61
|
enum_1.ItemType.PET,
|
|
62
62
|
enum_1.ItemType.CLEANING,
|
|
63
63
|
enum_1.ItemType.LAUNDRY,
|
|
64
|
-
enum_1.ItemType.SALOON
|
|
64
|
+
enum_1.ItemType.SALOON,
|
|
65
|
+
enum_1.ItemType.WELLNESS,
|
|
66
|
+
enum_1.ItemType.ELECTRONICS,
|
|
67
|
+
enum_1.ItemType.BEAUTY,
|
|
65
68
|
];
|
|
66
69
|
constructor() {
|
|
67
70
|
this.model = models_1.DealSettingModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deal-setting.service.js","sourceRoot":"/","sources":["modules/deal-setting/services/deal-setting.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA4C;AAC5C,yCAAyC;AACzC,oDAA+E;AAE/E,wEAA6G;AAE7G,sEAAmG;AAOnG,8DAAkE;AAElE,iGAAoG;AACpG,4DAAyF;AACzF,4EAAgH;AAGzG,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IACtB,KAAK,CAAmD;IACxD,kBAAkB,GAAG;QAC5B,eAAQ,CAAC,IAAI;QACb,eAAQ,CAAC,OAAO;QAEhB,eAAQ,CAAC,MAAM;QACf,eAAQ,CAAC,GAAG;QAGZ,eAAQ,CAAC,QAAQ;QACjB,eAAQ,CAAC,OAAO;QAChB,eAAQ,CAAC,MAAM;KACf,CAAC;IAEF;QACC,IAAI,CAAC,KAAK,GAAG,yBAAoE,CAAC;IACnF,CAAC;IAMM,KAAK,CAAC,MAAM,CAAC,IAAe,EAAE,KAAc;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CAAC;QACH,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,8BAA8B,IAAI,CAAC,QAAQ,uDAAuD;aAC3G,CAAC,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,8BAA8B,CAClC,IAAI,oBAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAClC,iCAA0B,CAAC,0BAA0B,EACrD,EAAE,EACF,MAAM,CACN,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAMM,KAAK,CAAC,QAAQ,CAAC,EAAoC;QACzD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACvC,GAAG,EAAE,EAAE;YACP,SAAS,EAAE,IAAI;SACf,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,kBAAkB;aAC3B,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAMM,KAAK,CAAC,IAAI,CAAC,IAAyB;QAC1C,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE,CAAA;YAC/B,KAAK,CAAC,QAAQ,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAA;YAEjD,MAAM,QAAQ,GAAG,IAAA,6CAAgC,EAAC,IAAI,CAAC,KAA2C,CAAC,CAAC;YACpG,MAAM,OAAO,GAAmC;gBAC/C,IAAI,EAAE,IAAI,EAAE,IAAI;gBAChB,IAAI,EAAE,IAAI,EAAE,IAAI;gBAChB,IAAI,EAAE,IAAI,EAAE,IAAI;gBAChB,KAAK;gBACL,MAAM,EAAE,IAAI,EAAE,MAAM;gBACpB,QAAQ,EAAE,IAAI,EAAE,QAAQ;aACxB,CAAC;YACF,IAAI,eAAe,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;YAE9C,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,eAAe,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;gBAC7F,MAAM,IAAI,CAAC,yBAAyB,CAAC,eAAe,CAAC,SAA6C,CAAC,CAAC;gBACpG,eAAe,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC3C,CAAC;YAED,OAAO,eAAe,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,IAAA,kCAAmB,EAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QACpC,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,SAAgC;QACvE,MAAM,iBAAiB,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/F,MAAM,cAAc,GAAG;YACtB,iBAAiB,EAAE,EAAE;YACrB,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,KAAK;YACjB,cAAc,EAAE,KAAK;YACrB,gBAAgB,EAAE,KAAK;SACvB,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,MAAM,CAAC;gBACjB,GAAG,cAAc;gBACjB,QAAQ,EAAE,IAAgB;aAC1B,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAQM,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAAe,EAAE,KAAc;QAC9D,IAAI,CAAC,KAAK;YAAE,IAAA,4BAAa,EAAC,iBAAiB,CAAC,CAAC;QAE7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM;YAAE,IAAA,4BAAa,EAAC,kBAAkB,CAAC,CAAC;QAE/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,EAAE;YAC3D,GAAG,EAAE,IAAI;YACT,aAAa,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM;YAAE,IAAA,4BAAa,EAAC,kBAAkB,CAAC,CAAC;QAE/C,IAAI,CAAC,8BAA8B,CAClC,IAAI,oBAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAClC,iCAA0B,CAAC,4BAA4B,EACvD,MAAM,EACN,MAAM,CACN,CAAC;QAEF,OAAO,MAAM,CAAC;IACf,CAAC;IAOM,KAAK,CAAC,SAAS,CAAC,IAAoB,EAAE,KAAc;QAE1D,IAAI,CAAC,KAAK;YAAE,IAAA,4BAAa,EAAC,iBAAiB,CAAC,CAAC;QAE7C,MAAM,OAAO,GAA0B,EAAE,CAAC;QAE1C,KAAK,MAAM,WAAW,IAAI,IAAI,EAAE,CAAC;YAChC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,WAAuE,CAAC;YAEjG,IAAI,CAAC,GAAG;gBAAE,SAAS;YAEnB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAoB,EAAE,KAAK,CAAC,CAAC;YAC5E,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,OAAO,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,8BAA8B,CAC3C,KAA8B,EAC9B,UAAsC,EACtC,WAAiB,EACjB,WAAiB;QAEjB,MAAM,sBAAsB,GAAuC,IAAI,yCAAsB,CAAC;YAC7F,KAAK;YACL,YAAY,EAAE,UAAU;YACxB,WAAW,EAAE,WAAW,IAAI,EAAE;YAC9B,WAAW,EAAE,WAAW,IAAI,EAAE;SAC9B,CAAC,CAAC;QACH,MAAM,IAAA,oBAAY,EAAC,sBAAsB,CAAC,CAAC;IAC5C,CAAC;IAMM,KAAK,CAAC,UAAU,CAAC,IAAe,EAAE,KAAc;QACtD,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAEjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,iBAAiB;aAC1B,CAAC,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,kBAAkB;aAC3B,CAAC,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;QACnF,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,yBAAyB;aAClC,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,8BAA8B,CAClC,IAAI,oBAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAClC,iCAA0B,CAAC,0BAA0B,EACrD,MAAM,EACN,MAAM,CACN,CAAC;QAEF,OAAO,6BAA6B,CAAC;IACtC,CAAC;CACD,CAAA;AA9NY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,gBAAO,GAAE;;GACG,kBAAkB,CA8N9B;AAEY,QAAA,kBAAkB,GAAG,gBAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC","sourcesContent":["import Container, { Service } from 'typedi';\nimport { TRPCError } from '@trpc/server';\nimport { DocumentType, mongoose, ReturnModelType } from '@typegoose/typegoose';\nimport { FilterDTO, PaginatedResponse, DeleteDTO } from '@lyxa.ai/core/dist/utilities/validation';\nimport { createRawDocumentPaginatorObject, PaginatorOptions } from '@lyxa.ai/core/dist/utilities/pagination';\nimport { ModelType } from '@typegoose/typegoose/lib/types';\nimport { DealSettingModel, DealSetting as Model } from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {\n\tCreateDealSettingDTO as CreateDTO,\n\tUpdateDealSettingDTO as UpdateDTO,\n\tDealSettingArrayDTO as UpdateAllDTO,\n} from '@modules/deal-setting/validations';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { publishEvent } from '@lyxa.ai/core/dist/libraries/event';\nimport { BaseEvent } from '@lyxa.ai/core/dist/libraries/event/BaseEvent';\nimport { AdminActivityLogsEvent } from '@lyxa.ai/core/dist/libraries/event/events/admin-logs-event';\nimport { AdminLogsUpdatedFieldsType, ItemType } from '@lyxa.ai/core/dist/utilities/enum';\nimport { badRequestError, internalServerError, notFoundError } from '@lyxa.ai/core/dist/utilities/error-common';\n\n@Service()\nexport class DealSettingService {\n\tprivate model: typeof DealSettingModel & SoftDeleteModel<Model>;\n\tprivate ALLOWED_ITEM_TYPES = [\n\t\tItemType.FOOD,\n\t\tItemType.GROCERY,\n\t\t// ItemType.COFFEE, // removed because https://trello.com/c/x19zLU0A/2935-marketing-remove-coffee\n\t\tItemType.FLOWER,\n\t\tItemType.PET,\n\t\t// ItemType.PHARMACY,\n\t\t// ItemType.HEALTHY_CORNER,\n\t\tItemType.CLEANING,\n\t\tItemType.LAUNDRY,\n\t\tItemType.SALOON\n\t];\n\n\tconstructor() {\n\t\tthis.model = DealSettingModel as typeof DealSettingModel & SoftDeleteModel<Model>;\n\t}\n\n\t/**\n\t * Create a new record\n\t * @param data Data for the new record\n\t */\n\tpublic async create(data: CreateDTO, admin?: string): Promise<DocumentType<Model>> {\n\t\tconst exists = await this.model.exists({\n\t\t\titemType: data.itemType,\n\t\t});\n\t\tif (exists) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'CONFLICT',\n\t\t\t\tmessage: `Deal settings for itemType ${data.itemType} already exists. Please update the existing settings.`,\n\t\t\t});\n\t\t}\n\t\tconst result = await this.model.create(data);\n\n\t\tif (admin) {\n\t\t\tthis.logMarketingSettingAdminAction(\n\t\t\t\tnew mongoose.Types.ObjectId(admin),\n\t\t\t\tAdminLogsUpdatedFieldsType.CREATED_MARKETING_SETTINGS,\n\t\t\t\t'',\n\t\t\t\tresult\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Get record by ID\n\t * @param id ID of the record\n\t */\n\tpublic async findById(id: string | mongoose.Types.ObjectId): Promise<DocumentType<Model>> {\n\t\tconst result = await this.model.findOne({\n\t\t\t_id: id,\n\t\t\tdeletedAt: null,\n\t\t});\n\t\tif (!result) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Record not found',\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * Get records\n\t * @param query Query to find records\n\t */\n\tpublic async find(data?: Partial<FilterDTO>): Promise<PaginatedResponse<DocumentType<ModelType<Model>>>> {\n\t\ttry {\n\t\t\tconst query = data?.query ?? {}\n\t\t\tquery.itemType = { $in: this.ALLOWED_ITEM_TYPES }\n\n\t\t\tconst paginate = createRawDocumentPaginatorObject(this.model as ReturnModelType<typeof this.model>);\n\t\t\tconst options: PaginatorOptions<typeof Model> = {\n\t\t\t\tpage: data?.page,\n\t\t\t\tsize: data?.size,\n\t\t\t\tsort: data?.sort,\n\t\t\t\tquery,\n\t\t\t\tselect: data?.select,\n\t\t\t\tpopulate: data?.populate,\n\t\t\t};\n\t\t\tlet paginatedResult = await paginate(options);\n\n\t\t\tif (!data?.query && paginatedResult.metadata.totalElements < this.ALLOWED_ITEM_TYPES.length) {\n\t\t\t\tawait this.createDefaultDealSettings(paginatedResult.documents as unknown as DocumentType<Model>[]);\n\t\t\t\tpaginatedResult = await paginate(options);\n\t\t\t}\n\n\t\t\treturn paginatedResult;\n\t\t} catch (err) {\n\t\t\tinternalServerError(`err: ${err}`);\n\t\t}\n\t}\n\n\tprivate async createDefaultDealSettings(documents: DocumentType<Model>[]): Promise<void> {\n\t\tconst existingItemTypes = documents.map(deal => deal.itemType);\n\t\tconst newItemTypes = this.ALLOWED_ITEM_TYPES.filter(item => !existingItemTypes.includes(item));\n\t\tconst defaultSetting = {\n\t\t\tpercentageBundles: [],\n\t\t\tisDiscount: false,\n\t\t\tisBuy1Get1: false,\n\t\t\tisFreeDelivery: false,\n\t\t\tisPunchMarketing: false,\n\t\t};\n\n\t\tfor (const item of newItemTypes) {\n\t\t\tawait this.create({\n\t\t\t\t...defaultSetting,\n\t\t\t\titemType: item as ItemType,\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Update record\n\t * @param id ID of the record\n\t * @param data Data to update\n\t * @param admin Admin id\n\t */\n\tpublic async update(id: string, data: UpdateDTO, admin?: string): Promise<DocumentType<Model>> {\n\t\tif (!admin) notFoundError('Admin not found');\n\n\t\tconst record = await this.model.findById(id);\n\t\tif (!record) notFoundError('Record not found');\n\n\t\tconst result = await this.model.findByIdAndUpdate(id, data, {\n\t\t\tnew: true,\n\t\t\trunValidators: true,\n\t\t});\n\n\t\tif (!result) notFoundError('Record not found');\n\n\t\tthis.logMarketingSettingAdminAction(\n\t\t\tnew mongoose.Types.ObjectId(admin),\n\t\t\tAdminLogsUpdatedFieldsType.CHANGE_IN_MARKETING_SETTINGS,\n\t\t\trecord,\n\t\t\tresult\n\t\t);\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Update all records\n\t * @param data Data to update\n\t * @param admin Admin id\n\t */\n\tpublic async updateAll(data: UpdateAllDTO[], admin?: string): Promise<DocumentType<Model>[]> {\n\t\t// Check admin existence\n\t\tif (!admin) notFoundError('Admin not found');\n\n\t\tconst results: DocumentType<Model>[] = [];\n\n\t\tfor (const dealSetting of data) {\n\t\t\tconst { _id, ...rest } = dealSetting as UpdateAllDTO & { _id: string | mongoose.Types.ObjectId };\n\n\t\t\tif (!_id) continue;\n\n\t\t\tconst updated = await this.update(String(_id), rest as UpdateAllDTO, admin);\n\t\t\tresults.push(updated);\n\t\t}\n\n\t\treturn results;\n\t}\n\n\tprivate async logMarketingSettingAdminAction(\n\t\tadmin: mongoose.Types.ObjectId,\n\t\tactionType: AdminLogsUpdatedFieldsType,\n\t\toldDocument?: any,\n\t\tnewDocument?: any\n\t) {\n\t\tconst adminActivityLogsEvent: BaseEvent<Record<string, unknown>> = new AdminActivityLogsEvent({\n\t\t\tadmin,\n\t\t\tupdatedField: actionType,\n\t\t\toldDocument: oldDocument ?? '',\n\t\t\tnewDocument: newDocument ?? '',\n\t\t});\n\t\tawait publishEvent(adminActivityLogsEvent);\n\t}\n\n\t/**\n\t * Delete record\n\t * @param data Data for delete\n\t */\n\tpublic async deleteById(data: DeleteDTO, admin?: string): Promise<string> {\n\t\tconst { _id, softDelete } = data;\n\n\t\tif (!admin) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Admin not found',\n\t\t\t});\n\t\t}\n\n\t\tconst record = await this.model.findById(_id);\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\tconst result = await this.model.deleteRecord({ _id, deletedAt: null }, softDelete);\n\t\tif (!result) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Unable to delete record',\n\t\t\t});\n\t\t}\n\n\t\tthis.logMarketingSettingAdminAction(\n\t\t\tnew mongoose.Types.ObjectId(admin),\n\t\t\tAdminLogsUpdatedFieldsType.DELETED_MARKETING_SETTINGS,\n\t\t\trecord,\n\t\t\tresult\n\t\t);\n\n\t\treturn 'Record deleted successfully';\n\t}\n}\n\nexport const dealSettingService = Container.get(DealSettingService);\n"]}
|
|
1
|
+
{"version":3,"file":"deal-setting.service.js","sourceRoot":"/","sources":["modules/deal-setting/services/deal-setting.service.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, { Service } from 'typedi';\nimport { TRPCError } from '@trpc/server';\nimport { DocumentType, mongoose, ReturnModelType } from '@typegoose/typegoose';\nimport { FilterDTO, PaginatedResponse, DeleteDTO } from '@lyxa.ai/core/dist/utilities/validation';\nimport { createRawDocumentPaginatorObject, PaginatorOptions } from '@lyxa.ai/core/dist/utilities/pagination';\nimport { ModelType } from '@typegoose/typegoose/lib/types';\nimport { DealSettingModel, DealSetting as Model } from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {\n\tCreateDealSettingDTO as CreateDTO,\n\tUpdateDealSettingDTO as UpdateDTO,\n\tDealSettingArrayDTO as UpdateAllDTO,\n} from '@modules/deal-setting/validations';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { publishEvent } from '@lyxa.ai/core/dist/libraries/event';\nimport { BaseEvent } from '@lyxa.ai/core/dist/libraries/event/BaseEvent';\nimport { AdminActivityLogsEvent } from '@lyxa.ai/core/dist/libraries/event/events/admin-logs-event';\nimport { AdminLogsUpdatedFieldsType, ItemType } from '@lyxa.ai/core/dist/utilities/enum';\nimport {\n\tbadRequestError,\n\tinternalServerError,\n\tnotFoundError,\n} from '@lyxa.ai/core/dist/utilities/error-common';\n\n@Service()\nexport class DealSettingService {\n\tprivate model: typeof DealSettingModel & SoftDeleteModel<Model>;\n\tprivate ALLOWED_ITEM_TYPES = [\n\t\tItemType.FOOD,\n\t\tItemType.GROCERY,\n\t\t// ItemType.COFFEE, // removed because https://trello.com/c/x19zLU0A/2935-marketing-remove-coffee\n\t\tItemType.FLOWER,\n\t\tItemType.PET,\n\t\t// ItemType.PHARMACY,\n\t\t// ItemType.HEALTHY_CORNER,\n\t\tItemType.CLEANING,\n\t\tItemType.LAUNDRY,\n\t\tItemType.SALOON,\n\t\tItemType.WELLNESS,\n\t\tItemType.ELECTRONICS,\n\t\tItemType.BEAUTY,\n\t];\n\n\tconstructor() {\n\t\tthis.model = DealSettingModel as typeof DealSettingModel & SoftDeleteModel<Model>;\n\t}\n\n\t/**\n\t * Create a new record\n\t * @param data Data for the new record\n\t */\n\tpublic async create(data: CreateDTO, admin?: string): Promise<DocumentType<Model>> {\n\t\tconst exists = await this.model.exists({\n\t\t\titemType: data.itemType,\n\t\t});\n\t\tif (exists) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'CONFLICT',\n\t\t\t\tmessage: `Deal settings for itemType ${data.itemType} already exists. Please update the existing settings.`,\n\t\t\t});\n\t\t}\n\t\tconst result = await this.model.create(data);\n\n\t\tif (admin) {\n\t\t\tthis.logMarketingSettingAdminAction(\n\t\t\t\tnew mongoose.Types.ObjectId(admin),\n\t\t\t\tAdminLogsUpdatedFieldsType.CREATED_MARKETING_SETTINGS,\n\t\t\t\t'',\n\t\t\t\tresult\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Get record by ID\n\t * @param id ID of the record\n\t */\n\tpublic async findById(id: string | mongoose.Types.ObjectId): Promise<DocumentType<Model>> {\n\t\tconst result = await this.model.findOne({\n\t\t\t_id: id,\n\t\t\tdeletedAt: null,\n\t\t});\n\t\tif (!result) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Record not found',\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * Get records\n\t * @param query Query to find records\n\t */\n\tpublic async find(data?: Partial<FilterDTO>): Promise<PaginatedResponse<DocumentType<ModelType<Model>>>> {\n\t\ttry {\n\t\t\tconst query = data?.query ?? {};\n\t\t\tquery.itemType = { $in: this.ALLOWED_ITEM_TYPES };\n\n\t\t\tconst paginate = createRawDocumentPaginatorObject(this.model as ReturnModelType<typeof this.model>);\n\t\t\tconst options: PaginatorOptions<typeof Model> = {\n\t\t\t\tpage: data?.page,\n\t\t\t\tsize: data?.size,\n\t\t\t\tsort: data?.sort,\n\t\t\t\tquery,\n\t\t\t\tselect: data?.select,\n\t\t\t\tpopulate: data?.populate,\n\t\t\t};\n\t\t\tlet paginatedResult = await paginate(options);\n\n\t\t\tif (!data?.query && paginatedResult.metadata.totalElements < this.ALLOWED_ITEM_TYPES.length) {\n\t\t\t\tawait this.createDefaultDealSettings(paginatedResult.documents as unknown as DocumentType<Model>[]);\n\t\t\t\tpaginatedResult = await paginate(options);\n\t\t\t}\n\n\t\t\treturn paginatedResult;\n\t\t} catch (err) {\n\t\t\tinternalServerError(`err: ${err}`);\n\t\t}\n\t}\n\n\tprivate async createDefaultDealSettings(documents: DocumentType<Model>[]): Promise<void> {\n\t\tconst existingItemTypes = documents.map(deal => deal.itemType);\n\t\tconst newItemTypes = this.ALLOWED_ITEM_TYPES.filter(item => !existingItemTypes.includes(item));\n\t\tconst defaultSetting = {\n\t\t\tpercentageBundles: [],\n\t\t\tisDiscount: false,\n\t\t\tisBuy1Get1: false,\n\t\t\tisFreeDelivery: false,\n\t\t\tisPunchMarketing: false,\n\t\t};\n\n\t\tfor (const item of newItemTypes) {\n\t\t\tawait this.create({\n\t\t\t\t...defaultSetting,\n\t\t\t\titemType: item as ItemType,\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Update record\n\t * @param id ID of the record\n\t * @param data Data to update\n\t * @param admin Admin id\n\t */\n\tpublic async update(id: string, data: UpdateDTO, admin?: string): Promise<DocumentType<Model>> {\n\t\tif (!admin) notFoundError('Admin not found');\n\n\t\tconst record = await this.model.findById(id);\n\t\tif (!record) notFoundError('Record not found');\n\n\t\tconst result = await this.model.findByIdAndUpdate(id, data, {\n\t\t\tnew: true,\n\t\t\trunValidators: true,\n\t\t});\n\n\t\tif (!result) notFoundError('Record not found');\n\n\t\tthis.logMarketingSettingAdminAction(\n\t\t\tnew mongoose.Types.ObjectId(admin),\n\t\t\tAdminLogsUpdatedFieldsType.CHANGE_IN_MARKETING_SETTINGS,\n\t\t\trecord,\n\t\t\tresult\n\t\t);\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Update all records\n\t * @param data Data to update\n\t * @param admin Admin id\n\t */\n\tpublic async updateAll(data: UpdateAllDTO[], admin?: string): Promise<DocumentType<Model>[]> {\n\t\t// Check admin existence\n\t\tif (!admin) notFoundError('Admin not found');\n\n\t\tconst results: DocumentType<Model>[] = [];\n\n\t\tfor (const dealSetting of data) {\n\t\t\tconst { _id, ...rest } = dealSetting as UpdateAllDTO & { _id: string | mongoose.Types.ObjectId };\n\n\t\t\tif (!_id) continue;\n\n\t\t\tconst updated = await this.update(String(_id), rest as UpdateAllDTO, admin);\n\t\t\tresults.push(updated);\n\t\t}\n\n\t\treturn results;\n\t}\n\n\tprivate async logMarketingSettingAdminAction(\n\t\tadmin: mongoose.Types.ObjectId,\n\t\tactionType: AdminLogsUpdatedFieldsType,\n\t\toldDocument?: any,\n\t\tnewDocument?: any\n\t) {\n\t\tconst adminActivityLogsEvent: BaseEvent<Record<string, unknown>> = new AdminActivityLogsEvent({\n\t\t\tadmin,\n\t\t\tupdatedField: actionType,\n\t\t\toldDocument: oldDocument ?? '',\n\t\t\tnewDocument: newDocument ?? '',\n\t\t});\n\t\tawait publishEvent(adminActivityLogsEvent);\n\t}\n\n\t/**\n\t * Delete record\n\t * @param data Data for delete\n\t */\n\tpublic async deleteById(data: DeleteDTO, admin?: string): Promise<string> {\n\t\tconst { _id, softDelete } = data;\n\n\t\tif (!admin) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Admin not found',\n\t\t\t});\n\t\t}\n\n\t\tconst record = await this.model.findById(_id);\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\tconst result = await this.model.deleteRecord({ _id, deletedAt: null }, softDelete);\n\t\tif (!result) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Unable to delete record',\n\t\t\t});\n\t\t}\n\n\t\tthis.logMarketingSettingAdminAction(\n\t\t\tnew mongoose.Types.ObjectId(admin),\n\t\t\tAdminLogsUpdatedFieldsType.DELETED_MARKETING_SETTINGS,\n\t\t\trecord,\n\t\t\tresult\n\t\t);\n\n\t\treturn 'Record deleted successfully';\n\t}\n}\n\nexport const dealSettingService = Container.get(DealSettingService);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"featured-setting.service.d.ts","sourceRoot":"/","sources":["modules/featured-setting/services/featured-setting.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAElG,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAwB,eAAe,IAAI,KAAK,EAAE,MAAM,4CAA4C,CAAC;AAC5G,OAAO,EACN,wBAAwB,IAAI,SAAS,EACrC,wBAAwB,IAAI,SAAS,EACrC,MAAM,uCAAuC,CAAC;AAO/C,qBACa,sBAAsB;IAClC,OAAO,CAAC,KAAK,CAAuD;IACpE,OAAO,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"featured-setting.service.d.ts","sourceRoot":"/","sources":["modules/featured-setting/services/featured-setting.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAElG,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAwB,eAAe,IAAI,KAAK,EAAE,MAAM,4CAA4C,CAAC;AAC5G,OAAO,EACN,wBAAwB,IAAI,SAAS,EACrC,wBAAwB,IAAI,SAAS,EACrC,MAAM,uCAAuC,CAAC;AAO/C,qBACa,sBAAsB;IAClC,OAAO,CAAC,KAAK,CAAuD;IACpE,OAAO,CAAC,UAAU,CAWhB;;IAUW,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IA4BrE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAkB5E,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YA6B1F,6BAA6B;IA+C9B,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAsChF,8BAA8B;IAmB/B,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAoCzE;AAED,eAAO,MAAM,sBAAsB,wBAAwC,CAAC"}
|
|
@@ -59,6 +59,9 @@ let FeaturedSettingService = class FeaturedSettingService {
|
|
|
59
59
|
enum_1.ItemType.COFFEE,
|
|
60
60
|
enum_1.ItemType.FLOWER,
|
|
61
61
|
enum_1.ItemType.PET,
|
|
62
|
+
enum_1.ItemType.WELLNESS,
|
|
63
|
+
enum_1.ItemType.ELECTRONICS,
|
|
64
|
+
enum_1.ItemType.BEAUTY,
|
|
62
65
|
];
|
|
63
66
|
constructor() {
|
|
64
67
|
this.model = models_1.FeaturedSettingModel;
|