@lyxa.ai/marketing 1.0.52 → 1.0.54
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/index.d.ts +946 -53
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/modules/coupon/routers/coupon.router.d.ts +647 -0
- package/dist/lib/modules/coupon/routers/coupon.router.d.ts.map +1 -1
- package/dist/lib/modules/coupon/routers/coupon.router.js +7 -0
- package/dist/lib/modules/coupon/routers/coupon.router.js.map +1 -1
- package/dist/lib/modules/coupon/services/coupon.service.d.ts +8 -1
- package/dist/lib/modules/coupon/services/coupon.service.d.ts.map +1 -1
- package/dist/lib/modules/coupon/services/coupon.service.js +231 -27
- package/dist/lib/modules/coupon/services/coupon.service.js.map +1 -1
- package/dist/lib/modules/coupon/services/patterns/repository/CouponMetricsRepository.d.ts.map +1 -1
- package/dist/lib/modules/coupon/services/patterns/repository/CouponMetricsRepository.js +17 -4
- package/dist/lib/modules/coupon/services/patterns/repository/CouponMetricsRepository.js.map +1 -1
- package/dist/lib/modules/coupon/validations/coupon.validation.d.ts +26 -0
- package/dist/lib/modules/coupon/validations/coupon.validation.d.ts.map +1 -1
- package/dist/lib/modules/coupon/validations/coupon.validation.js +10 -1
- package/dist/lib/modules/coupon/validations/coupon.validation.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/campaign/campaign.router.d.ts +40 -40
- package/dist/lib/modules/limited-time-offer/campaign/campaign.router.js +9 -9
- package/dist/lib/modules/limited-time-offer/campaign/campaign.router.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 -5
- 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 +1 -0
- 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 +2 -0
- 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.validation.d.ts +53 -40
- 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 +3 -2
- 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.service.d.ts +3 -9
- 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 +4 -7
- 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/config/limited-time-offer-config.service.d.ts +1 -0
- package/dist/lib/modules/limited-time-offer/config/limited-time-offer-config.service.d.ts.map +1 -1
- package/dist/lib/modules/limited-time-offer/config/limited-time-offer-config.service.js +15 -0
- package/dist/lib/modules/limited-time-offer/config/limited-time-offer-config.service.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/limited-time-offer.router.d.ts +88 -42
- 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.router.js +23 -0
- package/dist/lib/modules/limited-time-offer/limited-time-offer.router.js.map +1 -1
- package/dist/lib/modules/limited-time-offer/limited-time-offer.service.d.ts +19 -0
- package/dist/lib/modules/limited-time-offer/limited-time-offer.service.d.ts.map +1 -0
- package/dist/lib/modules/limited-time-offer/limited-time-offer.service.js +84 -0
- package/dist/lib/modules/limited-time-offer/limited-time-offer.service.js.map +1 -0
- package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.builder.d.ts +13 -0
- package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.builder.d.ts.map +1 -0
- package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.builder.js +22 -0
- package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.builder.js.map +1 -0
- package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.d.ts +20 -0
- package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.d.ts.map +1 -0
- package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.js +26 -0
- package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.js.map +1 -0
- package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.service.d.ts +8 -0
- package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.service.d.ts.map +1 -0
- package/dist/lib/modules/{tournament/notification/notification.scheduler.service.js → limited-time-offer/notification/limited-time-offer-notification.service.js} +15 -28
- package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.service.js.map +1 -0
- package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.type.d.ts +5 -0
- package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.type.d.ts.map +1 -0
- package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.type.js +3 -0
- package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.type.js.map +1 -0
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.js +1 -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 +13 -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 +75 -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 +6 -2
- 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.service.d.ts +1 -0
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts.map +1 -0
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.service.js +2 -0
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.service.js.map +1 -0
- package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts +6 -1
- 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 +3 -2
- 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.service.d.ts +12 -2
- 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 +80 -27
- package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.js.map +1 -1
- package/dist/lib/modules/marketing/services/marketing.service.d.ts +1 -0
- package/dist/lib/modules/marketing/services/marketing.service.d.ts.map +1 -1
- package/dist/lib/modules/marketing/services/marketing.service.js +9 -0
- package/dist/lib/modules/marketing/services/marketing.service.js.map +1 -1
- package/dist/lib/modules/marketing/validations/product-marketing.validation.d.ts +2 -2
- package/dist/lib/modules/punch-marketing-history/routers/punch-marketing-history.router.d.ts +1 -1
- package/dist/lib/modules/punch-marketing-history/validations/punch-marketing-history.validation.d.ts +2 -2
- package/dist/lib/modules/tournament/config/config.builder.d.ts.map +1 -1
- package/dist/lib/modules/tournament/config/config.builder.js +4 -0
- package/dist/lib/modules/tournament/config/config.builder.js.map +1 -1
- package/dist/lib/modules/tournament/config/config.repository.d.ts +8 -2
- package/dist/lib/modules/tournament/config/config.repository.d.ts.map +1 -1
- package/dist/lib/modules/tournament/config/config.repository.js +30 -1
- package/dist/lib/modules/tournament/config/config.repository.js.map +1 -1
- package/dist/lib/modules/tournament/config/config.router.d.ts +92 -2
- package/dist/lib/modules/tournament/config/config.router.d.ts.map +1 -1
- package/dist/lib/modules/tournament/config/config.types.d.ts +15 -0
- package/dist/lib/modules/tournament/config/config.types.d.ts.map +1 -0
- package/dist/lib/modules/tournament/config/config.types.js +3 -0
- package/dist/lib/modules/tournament/config/config.types.js.map +1 -0
- package/dist/lib/modules/tournament/config/config.validation.d.ts +395 -15
- package/dist/lib/modules/tournament/config/config.validation.d.ts.map +1 -1
- package/dist/lib/modules/tournament/config/config.validation.js +17 -2
- package/dist/lib/modules/tournament/config/config.validation.js.map +1 -1
- package/dist/lib/modules/tournament/integration/integration.factory.d.ts +4 -0
- package/dist/lib/modules/tournament/integration/integration.factory.d.ts.map +1 -0
- package/dist/lib/modules/tournament/integration/integration.factory.js +18 -0
- package/dist/lib/modules/tournament/integration/integration.factory.js.map +1 -0
- package/dist/lib/modules/tournament/integration/interfaces/ITournamentService.d.ts +36 -0
- package/dist/lib/modules/tournament/integration/interfaces/ITournamentService.d.ts.map +1 -0
- package/dist/lib/modules/tournament/integration/interfaces/ITournamentService.js +3 -0
- package/dist/lib/modules/tournament/integration/interfaces/ITournamentService.js.map +1 -0
- package/dist/lib/modules/tournament/integration/providers/api-football/api-football.provider.d.ts +14 -0
- package/dist/lib/modules/tournament/integration/providers/api-football/api-football.provider.d.ts.map +1 -0
- package/dist/lib/modules/tournament/integration/providers/api-football/api-football.provider.js +92 -0
- package/dist/lib/modules/tournament/integration/providers/api-football/api-football.provider.js.map +1 -0
- package/dist/lib/modules/tournament/integration/providers/api-football/api-football.types.d.ts +51 -0
- package/dist/lib/modules/tournament/integration/providers/api-football/api-football.types.d.ts.map +1 -0
- package/dist/lib/modules/tournament/integration/providers/api-football/api-football.types.js +3 -0
- package/dist/lib/modules/tournament/integration/providers/api-football/api-football.types.js.map +1 -0
- package/dist/lib/modules/tournament/integration/providers/api-football/index.d.ts +3 -0
- package/dist/lib/modules/tournament/integration/providers/api-football/index.d.ts.map +1 -0
- package/dist/lib/modules/tournament/integration/providers/api-football/index.js +19 -0
- package/dist/lib/modules/tournament/integration/providers/api-football/index.js.map +1 -0
- package/dist/lib/modules/tournament/integration/providers/index.d.ts +3 -0
- package/dist/lib/modules/tournament/integration/providers/index.d.ts.map +1 -0
- package/dist/lib/modules/tournament/integration/providers/index.js +19 -0
- package/dist/lib/modules/tournament/integration/providers/index.js.map +1 -0
- package/dist/lib/modules/tournament/integration/providers/mock.provider.d.ts +7 -0
- package/dist/lib/modules/tournament/integration/providers/mock.provider.d.ts.map +1 -0
- package/dist/lib/modules/tournament/integration/providers/mock.provider.js +22 -0
- package/dist/lib/modules/tournament/integration/providers/mock.provider.js.map +1 -0
- package/dist/lib/modules/tournament/integration/tournamentService.d.ts +9 -0
- package/dist/lib/modules/tournament/integration/tournamentService.d.ts.map +1 -0
- package/dist/lib/modules/tournament/integration/tournamentService.js +20 -0
- package/dist/lib/modules/tournament/integration/tournamentService.js.map +1 -0
- package/dist/lib/modules/tournament/match/events/evaluate-predictions.consumer.d.ts.map +1 -1
- package/dist/lib/modules/tournament/match/events/evaluate-predictions.consumer.js +47 -11
- package/dist/lib/modules/tournament/match/events/evaluate-predictions.consumer.js.map +1 -1
- package/dist/lib/modules/tournament/match/events/evaluate-predictions.event.d.ts +7 -3
- package/dist/lib/modules/tournament/match/events/evaluate-predictions.event.d.ts.map +1 -1
- package/dist/lib/modules/tournament/match/events/evaluate-predictions.event.js +1 -1
- package/dist/lib/modules/tournament/match/events/evaluate-predictions.event.js.map +1 -1
- package/dist/lib/modules/tournament/match/events/match-evaluation.orchestrator.d.ts +14 -0
- package/dist/lib/modules/tournament/match/events/match-evaluation.orchestrator.d.ts.map +1 -0
- package/dist/lib/modules/tournament/{notification/jobs/notification.worker.js → match/events/match-evaluation.orchestrator.js} +31 -27
- package/dist/lib/modules/tournament/match/events/match-evaluation.orchestrator.js.map +1 -0
- package/dist/lib/modules/tournament/match/match.builder.d.ts +13 -34
- package/dist/lib/modules/tournament/match/match.builder.d.ts.map +1 -1
- package/dist/lib/modules/tournament/match/match.builder.js +31 -10
- package/dist/lib/modules/tournament/match/match.builder.js.map +1 -1
- package/dist/lib/modules/tournament/match/match.repository.d.ts +1 -1
- package/dist/lib/modules/tournament/match/match.repository.d.ts.map +1 -1
- package/dist/lib/modules/tournament/match/match.repository.js.map +1 -1
- package/dist/lib/modules/tournament/match/match.router.d.ts +36 -0
- package/dist/lib/modules/tournament/match/match.router.d.ts.map +1 -1
- package/dist/lib/modules/tournament/match/match.service.d.ts +3 -0
- package/dist/lib/modules/tournament/match/match.service.d.ts.map +1 -1
- package/dist/lib/modules/tournament/match/match.service.js +15 -12
- package/dist/lib/modules/tournament/match/match.service.js.map +1 -1
- package/dist/lib/modules/tournament/match/match.types.d.ts +51 -0
- package/dist/lib/modules/tournament/match/match.types.d.ts.map +1 -0
- package/dist/lib/modules/tournament/match/match.types.js +3 -0
- package/dist/lib/modules/tournament/match/match.types.js.map +1 -0
- package/dist/lib/modules/tournament/notification/notification-template.repository.d.ts +2 -1
- package/dist/lib/modules/tournament/notification/notification-template.repository.d.ts.map +1 -1
- package/dist/lib/modules/tournament/notification/notification-template.repository.js +2 -1
- package/dist/lib/modules/tournament/notification/notification-template.repository.js.map +1 -1
- package/dist/lib/modules/tournament/notification/notification.builder.d.ts +30 -0
- package/dist/lib/modules/tournament/notification/notification.builder.d.ts.map +1 -0
- package/dist/lib/modules/tournament/notification/notification.builder.js +35 -0
- package/dist/lib/modules/tournament/notification/notification.builder.js.map +1 -0
- package/dist/lib/modules/tournament/notification/notification.config.d.ts +10 -9
- package/dist/lib/modules/tournament/notification/notification.config.d.ts.map +1 -1
- package/dist/lib/modules/tournament/notification/notification.config.js +0 -12
- package/dist/lib/modules/tournament/notification/notification.config.js.map +1 -1
- package/dist/lib/modules/tournament/notification/notification.service.d.ts +5 -3
- package/dist/lib/modules/tournament/notification/notification.service.d.ts.map +1 -1
- package/dist/lib/modules/tournament/notification/notification.service.js +23 -15
- package/dist/lib/modules/tournament/notification/notification.service.js.map +1 -1
- package/dist/lib/modules/tournament/participant/participant.builder.d.ts +12 -0
- package/dist/lib/modules/tournament/participant/participant.builder.d.ts.map +1 -0
- package/dist/lib/modules/tournament/participant/participant.builder.js +17 -0
- package/dist/lib/modules/tournament/participant/participant.builder.js.map +1 -0
- package/dist/lib/modules/tournament/participant/participant.repository.d.ts +8 -7
- package/dist/lib/modules/tournament/participant/participant.repository.d.ts.map +1 -1
- package/dist/lib/modules/tournament/participant/participant.repository.js +12 -2
- package/dist/lib/modules/tournament/participant/participant.repository.js.map +1 -1
- package/dist/lib/modules/tournament/participant/participant.service.d.ts +1 -0
- package/dist/lib/modules/tournament/participant/participant.service.d.ts.map +1 -1
- package/dist/lib/modules/tournament/participant/participant.service.js +15 -17
- package/dist/lib/modules/tournament/participant/participant.service.js.map +1 -1
- package/dist/lib/modules/tournament/prediction/prediction.builder.d.ts +3 -9
- package/dist/lib/modules/tournament/prediction/prediction.builder.d.ts.map +1 -1
- package/dist/lib/modules/tournament/prediction/prediction.builder.js.map +1 -1
- package/dist/lib/modules/tournament/prediction/prediction.repository.d.ts +11 -3
- package/dist/lib/modules/tournament/prediction/prediction.repository.d.ts.map +1 -1
- package/dist/lib/modules/tournament/prediction/prediction.repository.js +47 -0
- package/dist/lib/modules/tournament/prediction/prediction.repository.js.map +1 -1
- package/dist/lib/modules/tournament/prediction/prediction.service.d.ts +1 -1
- package/dist/lib/modules/tournament/prediction/prediction.service.d.ts.map +1 -1
- package/dist/lib/modules/tournament/prediction/prediction.service.js +16 -26
- package/dist/lib/modules/tournament/prediction/prediction.service.js.map +1 -1
- package/dist/lib/modules/tournament/prediction/prediction.types.d.ts +17 -0
- package/dist/lib/modules/tournament/prediction/prediction.types.d.ts.map +1 -0
- package/dist/lib/modules/tournament/prediction/prediction.types.js +3 -0
- package/dist/lib/modules/tournament/prediction/prediction.types.js.map +1 -0
- package/dist/lib/modules/tournament/reward/handlers/coupon-reward.handler.d.ts +8 -5
- package/dist/lib/modules/tournament/reward/handlers/coupon-reward.handler.d.ts.map +1 -1
- package/dist/lib/modules/tournament/reward/handlers/coupon-reward.handler.js +58 -16
- package/dist/lib/modules/tournament/reward/handlers/coupon-reward.handler.js.map +1 -1
- package/dist/lib/modules/tournament/reward/reward.builder.d.ts +5 -2
- package/dist/lib/modules/tournament/reward/reward.builder.d.ts.map +1 -1
- package/dist/lib/modules/tournament/reward/reward.builder.js +44 -28
- package/dist/lib/modules/tournament/reward/reward.builder.js.map +1 -1
- package/dist/lib/modules/tournament/reward/reward.factory.d.ts +1 -1
- package/dist/lib/modules/tournament/reward/reward.factory.d.ts.map +1 -1
- package/dist/lib/modules/tournament/reward/reward.factory.js.map +1 -1
- package/dist/lib/modules/tournament/reward/reward.interface.d.ts +2 -2
- package/dist/lib/modules/tournament/reward/reward.interface.d.ts.map +1 -1
- package/dist/lib/modules/tournament/reward/reward.interface.js.map +1 -1
- package/dist/lib/modules/tournament/reward/reward.service.d.ts +1 -1
- package/dist/lib/modules/tournament/reward/reward.service.d.ts.map +1 -1
- package/dist/lib/modules/tournament/reward/reward.service.js +1 -1
- package/dist/lib/modules/tournament/reward/reward.service.js.map +1 -1
- package/dist/lib/modules/tournament/reward/reward.types.d.ts +35 -2
- package/dist/lib/modules/tournament/reward/reward.types.d.ts.map +1 -1
- package/dist/lib/modules/tournament/reward/reward.types.js.map +1 -1
- package/dist/lib/modules/tournament/schedule/schedule.router.d.ts.map +1 -1
- package/dist/lib/modules/tournament/schedule/schedule.router.js +1 -3
- package/dist/lib/modules/tournament/schedule/schedule.router.js.map +1 -1
- package/dist/lib/modules/tournament/schedule/schedule.service.d.ts +3 -0
- package/dist/lib/modules/tournament/schedule/schedule.service.d.ts.map +1 -1
- package/dist/lib/modules/tournament/schedule/schedule.service.js +30 -1
- package/dist/lib/modules/tournament/schedule/schedule.service.js.map +1 -1
- package/dist/lib/modules/tournament/score/score.repository.d.ts +13 -0
- package/dist/lib/modules/tournament/score/score.repository.d.ts.map +1 -1
- package/dist/lib/modules/tournament/score/score.repository.js +20 -0
- package/dist/lib/modules/tournament/score/score.repository.js.map +1 -1
- package/dist/lib/modules/tournament/score/score.service.d.ts +3 -0
- package/dist/lib/modules/tournament/score/score.service.d.ts.map +1 -1
- package/dist/lib/modules/tournament/score/score.service.js +3 -0
- package/dist/lib/modules/tournament/score/score.service.js.map +1 -1
- package/dist/lib/modules/tournament/statistics/statistics.builder.d.ts +5 -0
- package/dist/lib/modules/tournament/statistics/statistics.builder.d.ts.map +1 -1
- package/dist/lib/modules/tournament/statistics/statistics.builder.js +47 -28
- package/dist/lib/modules/tournament/statistics/statistics.builder.js.map +1 -1
- package/dist/lib/modules/tournament/statistics/statistics.router.d.ts +4 -2
- package/dist/lib/modules/tournament/statistics/statistics.router.d.ts.map +1 -1
- package/dist/lib/modules/tournament/statistics/statistics.service.js +4 -4
- package/dist/lib/modules/tournament/statistics/statistics.service.js.map +1 -1
- package/dist/lib/modules/tournament/statistics/statistics.validation.d.ts +32 -14
- package/dist/lib/modules/tournament/statistics/statistics.validation.d.ts.map +1 -1
- package/dist/lib/modules/tournament/statistics/statistics.validation.js +2 -1
- package/dist/lib/modules/tournament/statistics/statistics.validation.js.map +1 -1
- package/dist/lib/modules/tournament/sync/sync.repository.d.ts +11 -0
- package/dist/lib/modules/tournament/sync/sync.repository.d.ts.map +1 -0
- package/dist/lib/modules/tournament/sync/sync.repository.js +67 -0
- package/dist/lib/modules/tournament/sync/sync.repository.js.map +1 -0
- package/dist/lib/modules/tournament/sync/sync.router.d.ts +27 -0
- package/dist/lib/modules/tournament/sync/sync.router.d.ts.map +1 -0
- package/dist/lib/modules/tournament/sync/sync.router.js +15 -0
- package/dist/lib/modules/tournament/sync/sync.router.js.map +1 -0
- package/dist/lib/modules/tournament/sync/sync.service.d.ts +9 -0
- package/dist/lib/modules/tournament/sync/sync.service.d.ts.map +1 -0
- package/dist/lib/modules/tournament/sync/sync.service.js +117 -0
- package/dist/lib/modules/tournament/sync/sync.service.js.map +1 -0
- package/dist/lib/modules/tournament/team/team.builder.d.ts +4 -0
- package/dist/lib/modules/tournament/team/team.builder.d.ts.map +1 -1
- package/dist/lib/modules/tournament/team/team.builder.js +6 -0
- package/dist/lib/modules/tournament/team/team.builder.js.map +1 -1
- package/dist/lib/modules/tournament/team/team.repository.d.ts +3 -0
- package/dist/lib/modules/tournament/team/team.repository.d.ts.map +1 -1
- package/dist/lib/modules/tournament/team/team.repository.js +6 -0
- package/dist/lib/modules/tournament/team/team.repository.js.map +1 -1
- package/dist/lib/modules/tournament/team/team.router.d.ts +22 -4
- package/dist/lib/modules/tournament/team/team.router.d.ts.map +1 -1
- package/dist/lib/modules/tournament/team/team.router.js +1 -1
- package/dist/lib/modules/tournament/team/team.router.js.map +1 -1
- package/dist/lib/modules/tournament/team/team.service.d.ts +2 -1
- package/dist/lib/modules/tournament/team/team.service.d.ts.map +1 -1
- package/dist/lib/modules/tournament/team/team.service.js +26 -23
- package/dist/lib/modules/tournament/team/team.service.js.map +1 -1
- package/dist/lib/modules/tournament/team/team.validation.d.ts +23 -24
- package/dist/lib/modules/tournament/team/team.validation.d.ts.map +1 -1
- package/dist/lib/modules/tournament/team/team.validation.js +3 -4
- package/dist/lib/modules/tournament/team/team.validation.js.map +1 -1
- package/dist/lib/modules/tournament/tournament.builder.d.ts +11 -0
- package/dist/lib/modules/tournament/tournament.builder.d.ts.map +1 -0
- package/dist/lib/modules/tournament/tournament.builder.js +34 -0
- package/dist/lib/modules/tournament/tournament.builder.js.map +1 -0
- package/dist/lib/modules/tournament/tournament.router.d.ts +210 -10
- package/dist/lib/modules/tournament/tournament.router.d.ts.map +1 -1
- package/dist/lib/modules/tournament/tournament.router.js +2 -0
- package/dist/lib/modules/tournament/tournament.router.js.map +1 -1
- package/dist/lib/modules/tournament/tournament.service.d.ts.map +1 -1
- package/dist/lib/modules/tournament/tournament.service.js +3 -10
- package/dist/lib/modules/tournament/tournament.service.js.map +1 -1
- package/dist/lib/modules/tournament/tournament.utils.d.ts +4 -0
- package/dist/lib/modules/tournament/tournament.utils.d.ts.map +1 -1
- package/dist/lib/modules/tournament/tournament.utils.js +8 -1
- package/dist/lib/modules/tournament/tournament.utils.js.map +1 -1
- package/dist/lib/modules/tournament/tournament.validation.d.ts +205 -1
- package/dist/lib/modules/tournament/tournament.validation.d.ts.map +1 -1
- package/dist/lib/modules/tournament/tournament.validation.js +23 -2
- package/dist/lib/modules/tournament/tournament.validation.js.map +1 -1
- package/dist/types/index.d.ts +946 -53
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/modules/coupon/routers/coupon.router.d.ts +647 -0
- package/dist/types/modules/coupon/routers/coupon.router.d.ts.map +1 -1
- package/dist/types/modules/coupon/services/coupon.service.d.ts +8 -1
- package/dist/types/modules/coupon/services/coupon.service.d.ts.map +1 -1
- package/dist/types/modules/coupon/services/patterns/repository/CouponMetricsRepository.d.ts.map +1 -1
- package/dist/types/modules/coupon/validations/coupon.validation.d.ts +26 -0
- package/dist/types/modules/coupon/validations/coupon.validation.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/campaign/campaign.router.d.ts +42 -40
- package/dist/types/modules/limited-time-offer/campaign/campaign.router.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 +1 -0
- 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.validation.d.ts +53 -40
- 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.service.d.ts +3 -9
- 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/config/limited-time-offer-config.service.d.ts +1 -0
- package/dist/types/modules/limited-time-offer/config/limited-time-offer-config.service.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/limited-time-offer.router.d.ts +88 -42
- 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 +24 -0
- package/dist/types/modules/limited-time-offer/limited-time-offer.service.d.ts.map +1 -0
- package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.builder.d.ts +13 -0
- package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.builder.d.ts.map +1 -0
- package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.constants.d.ts +20 -0
- package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.constants.d.ts.map +1 -0
- package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.service.d.ts +8 -0
- package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.service.d.ts.map +1 -0
- package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.type.d.ts +5 -0
- package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.type.d.ts.map +1 -0
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.repository.d.ts +13 -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 +6 -2
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts.map +1 -1
- package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts +6 -1
- 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.service.d.ts +22 -2
- package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts.map +1 -1
- package/dist/types/modules/marketing/services/marketing.service.d.ts +1 -0
- package/dist/types/modules/marketing/services/marketing.service.d.ts.map +1 -1
- package/dist/types/modules/marketing/validations/product-marketing.validation.d.ts +2 -2
- package/dist/types/modules/punch-marketing-history/routers/punch-marketing-history.router.d.ts +1 -1
- package/dist/types/modules/punch-marketing-history/validations/punch-marketing-history.validation.d.ts +2 -2
- package/dist/types/modules/tournament/config/config.builder.d.ts.map +1 -1
- package/dist/types/modules/tournament/config/config.repository.d.ts +8 -2
- package/dist/types/modules/tournament/config/config.repository.d.ts.map +1 -1
- package/dist/types/modules/tournament/config/config.router.d.ts +92 -2
- package/dist/types/modules/tournament/config/config.router.d.ts.map +1 -1
- package/dist/types/modules/tournament/config/config.types.d.ts +15 -0
- package/dist/types/modules/tournament/config/config.types.d.ts.map +1 -0
- package/dist/types/modules/tournament/config/config.validation.d.ts +395 -15
- package/dist/types/modules/tournament/config/config.validation.d.ts.map +1 -1
- package/dist/types/modules/tournament/integration/integration.factory.d.ts +4 -0
- package/dist/types/modules/tournament/integration/integration.factory.d.ts.map +1 -0
- package/dist/types/modules/tournament/integration/interfaces/ITournamentService.d.ts +36 -0
- package/dist/types/modules/tournament/integration/interfaces/ITournamentService.d.ts.map +1 -0
- package/dist/types/modules/tournament/integration/providers/api-football/api-football.provider.d.ts +14 -0
- package/dist/types/modules/tournament/integration/providers/api-football/api-football.provider.d.ts.map +1 -0
- package/dist/types/modules/tournament/integration/providers/api-football/api-football.types.d.ts +51 -0
- package/dist/types/modules/tournament/integration/providers/api-football/api-football.types.d.ts.map +1 -0
- package/dist/types/modules/tournament/integration/providers/api-football/index.d.ts +3 -0
- package/dist/types/modules/tournament/integration/providers/api-football/index.d.ts.map +1 -0
- package/dist/types/modules/tournament/integration/providers/index.d.ts +3 -0
- package/dist/types/modules/tournament/integration/providers/index.d.ts.map +1 -0
- package/dist/types/modules/tournament/integration/providers/mock.provider.d.ts +7 -0
- package/dist/types/modules/tournament/integration/providers/mock.provider.d.ts.map +1 -0
- package/dist/types/modules/tournament/integration/tournamentService.d.ts +9 -0
- package/dist/types/modules/tournament/integration/tournamentService.d.ts.map +1 -0
- package/dist/types/modules/tournament/match/events/evaluate-predictions.consumer.d.ts.map +1 -1
- package/dist/types/modules/tournament/match/events/evaluate-predictions.event.d.ts +7 -3
- package/dist/types/modules/tournament/match/events/evaluate-predictions.event.d.ts.map +1 -1
- package/dist/types/modules/tournament/match/events/match-evaluation.orchestrator.d.ts +14 -0
- package/dist/types/modules/tournament/match/events/match-evaluation.orchestrator.d.ts.map +1 -0
- package/dist/types/modules/tournament/match/match.builder.d.ts +13 -34
- package/dist/types/modules/tournament/match/match.builder.d.ts.map +1 -1
- package/dist/types/modules/tournament/match/match.repository.d.ts +1 -1
- package/dist/types/modules/tournament/match/match.repository.d.ts.map +1 -1
- package/dist/types/modules/tournament/match/match.router.d.ts +36 -0
- package/dist/types/modules/tournament/match/match.router.d.ts.map +1 -1
- package/dist/types/modules/tournament/match/match.service.d.ts +3 -0
- package/dist/types/modules/tournament/match/match.service.d.ts.map +1 -1
- package/dist/types/modules/tournament/match/match.types.d.ts +51 -0
- package/dist/types/modules/tournament/match/match.types.d.ts.map +1 -0
- package/dist/types/modules/tournament/notification/notification-template.repository.d.ts +2 -1
- package/dist/types/modules/tournament/notification/notification-template.repository.d.ts.map +1 -1
- package/dist/types/modules/tournament/notification/notification.builder.d.ts +30 -0
- package/dist/types/modules/tournament/notification/notification.builder.d.ts.map +1 -0
- package/dist/types/modules/tournament/notification/notification.config.d.ts +10 -9
- package/dist/types/modules/tournament/notification/notification.config.d.ts.map +1 -1
- package/dist/types/modules/tournament/notification/notification.service.d.ts +5 -3
- package/dist/types/modules/tournament/notification/notification.service.d.ts.map +1 -1
- package/dist/types/modules/tournament/participant/participant.builder.d.ts +12 -0
- package/dist/types/modules/tournament/participant/participant.builder.d.ts.map +1 -0
- package/dist/types/modules/tournament/participant/participant.repository.d.ts +8 -7
- package/dist/types/modules/tournament/participant/participant.repository.d.ts.map +1 -1
- package/dist/types/modules/tournament/participant/participant.service.d.ts +1 -0
- package/dist/types/modules/tournament/participant/participant.service.d.ts.map +1 -1
- package/dist/types/modules/tournament/prediction/prediction.builder.d.ts +3 -9
- package/dist/types/modules/tournament/prediction/prediction.builder.d.ts.map +1 -1
- package/dist/types/modules/tournament/prediction/prediction.repository.d.ts +11 -3
- package/dist/types/modules/tournament/prediction/prediction.repository.d.ts.map +1 -1
- package/dist/types/modules/tournament/prediction/prediction.service.d.ts +1 -1
- package/dist/types/modules/tournament/prediction/prediction.service.d.ts.map +1 -1
- package/dist/types/modules/tournament/prediction/prediction.types.d.ts +17 -0
- package/dist/types/modules/tournament/prediction/prediction.types.d.ts.map +1 -0
- package/dist/types/modules/tournament/reward/handlers/coupon-reward.handler.d.ts +8 -5
- package/dist/types/modules/tournament/reward/handlers/coupon-reward.handler.d.ts.map +1 -1
- package/dist/types/modules/tournament/reward/reward.builder.d.ts +5 -2
- package/dist/types/modules/tournament/reward/reward.builder.d.ts.map +1 -1
- package/dist/types/modules/tournament/reward/reward.factory.d.ts +1 -1
- package/dist/types/modules/tournament/reward/reward.factory.d.ts.map +1 -1
- package/dist/types/modules/tournament/reward/reward.interface.d.ts +2 -2
- package/dist/types/modules/tournament/reward/reward.interface.d.ts.map +1 -1
- package/dist/types/modules/tournament/reward/reward.service.d.ts +1 -1
- package/dist/types/modules/tournament/reward/reward.service.d.ts.map +1 -1
- package/dist/types/modules/tournament/reward/reward.types.d.ts +35 -2
- package/dist/types/modules/tournament/reward/reward.types.d.ts.map +1 -1
- package/dist/types/modules/tournament/schedule/schedule.router.d.ts.map +1 -1
- package/dist/types/modules/tournament/schedule/schedule.service.d.ts +3 -0
- package/dist/types/modules/tournament/schedule/schedule.service.d.ts.map +1 -1
- package/dist/types/modules/tournament/score/score.repository.d.ts +13 -0
- package/dist/types/modules/tournament/score/score.repository.d.ts.map +1 -1
- package/dist/types/modules/tournament/score/score.service.d.ts +3 -0
- package/dist/types/modules/tournament/score/score.service.d.ts.map +1 -1
- package/dist/types/modules/tournament/statistics/statistics.builder.d.ts +5 -0
- package/dist/types/modules/tournament/statistics/statistics.builder.d.ts.map +1 -1
- package/dist/types/modules/tournament/statistics/statistics.router.d.ts +4 -2
- package/dist/types/modules/tournament/statistics/statistics.router.d.ts.map +1 -1
- package/dist/types/modules/tournament/statistics/statistics.validation.d.ts +32 -14
- package/dist/types/modules/tournament/statistics/statistics.validation.d.ts.map +1 -1
- package/dist/types/modules/tournament/sync/sync.repository.d.ts +11 -0
- package/dist/types/modules/tournament/sync/sync.repository.d.ts.map +1 -0
- package/dist/types/modules/tournament/sync/sync.router.d.ts +27 -0
- package/dist/types/modules/tournament/sync/sync.router.d.ts.map +1 -0
- package/dist/types/modules/tournament/sync/sync.service.d.ts +9 -0
- package/dist/types/modules/tournament/sync/sync.service.d.ts.map +1 -0
- package/dist/types/modules/tournament/team/team.builder.d.ts +4 -0
- package/dist/types/modules/tournament/team/team.builder.d.ts.map +1 -1
- package/dist/types/modules/tournament/team/team.repository.d.ts +3 -0
- package/dist/types/modules/tournament/team/team.repository.d.ts.map +1 -1
- package/dist/types/modules/tournament/team/team.router.d.ts +22 -4
- package/dist/types/modules/tournament/team/team.router.d.ts.map +1 -1
- package/dist/types/modules/tournament/team/team.service.d.ts +2 -1
- package/dist/types/modules/tournament/team/team.service.d.ts.map +1 -1
- package/dist/types/modules/tournament/team/team.validation.d.ts +23 -24
- package/dist/types/modules/tournament/team/team.validation.d.ts.map +1 -1
- package/dist/types/modules/tournament/tournament.builder.d.ts +11 -0
- package/dist/types/modules/tournament/tournament.builder.d.ts.map +1 -0
- package/dist/types/modules/tournament/tournament.router.d.ts +210 -10
- package/dist/types/modules/tournament/tournament.router.d.ts.map +1 -1
- package/dist/types/modules/tournament/tournament.service.d.ts.map +1 -1
- package/dist/types/modules/tournament/tournament.utils.d.ts +4 -0
- package/dist/types/modules/tournament/tournament.utils.d.ts.map +1 -1
- package/dist/types/modules/tournament/tournament.validation.d.ts +205 -1
- package/dist/types/modules/tournament/tournament.validation.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/lib/modules/tournament/match/events/match-ended.consumer.d.ts +0 -2
- package/dist/lib/modules/tournament/match/events/match-ended.consumer.d.ts.map +0 -1
- package/dist/lib/modules/tournament/match/events/match-ended.consumer.js +0 -15
- package/dist/lib/modules/tournament/match/events/match-ended.consumer.js.map +0 -1
- package/dist/lib/modules/tournament/match/events/match-ended.event.d.ts +0 -14
- package/dist/lib/modules/tournament/match/events/match-ended.event.d.ts.map +0 -1
- package/dist/lib/modules/tournament/match/events/match-ended.event.js +0 -12
- package/dist/lib/modules/tournament/match/events/match-ended.event.js.map +0 -1
- package/dist/lib/modules/tournament/notification/jobs/notification.producer.d.ts +0 -10
- package/dist/lib/modules/tournament/notification/jobs/notification.producer.d.ts.map +0 -1
- package/dist/lib/modules/tournament/notification/jobs/notification.producer.js +0 -23
- package/dist/lib/modules/tournament/notification/jobs/notification.producer.js.map +0 -1
- package/dist/lib/modules/tournament/notification/jobs/notification.worker.d.ts +0 -9
- package/dist/lib/modules/tournament/notification/jobs/notification.worker.d.ts.map +0 -1
- package/dist/lib/modules/tournament/notification/jobs/notification.worker.js.map +0 -1
- package/dist/lib/modules/tournament/notification/notification.schedule.config.d.ts +0 -10
- package/dist/lib/modules/tournament/notification/notification.schedule.config.d.ts.map +0 -1
- package/dist/lib/modules/tournament/notification/notification.schedule.config.js +0 -15
- package/dist/lib/modules/tournament/notification/notification.schedule.config.js.map +0 -1
- package/dist/lib/modules/tournament/notification/notification.scheduler.service.d.ts +0 -10
- package/dist/lib/modules/tournament/notification/notification.scheduler.service.d.ts.map +0 -1
- package/dist/lib/modules/tournament/notification/notification.scheduler.service.js.map +0 -1
- package/dist/types/events/event-initializations.d.ts +0 -2
- package/dist/types/events/event-initializations.d.ts.map +0 -1
- package/dist/types/modules/tournament/config/tournament-config.validation.d.ts +0 -201
- package/dist/types/modules/tournament/config/tournament-config.validation.d.ts.map +0 -1
- package/dist/types/modules/tournament/match/events/match-ended.consumer.d.ts +0 -2
- package/dist/types/modules/tournament/match/events/match-ended.consumer.d.ts.map +0 -1
- package/dist/types/modules/tournament/match/events/match-ended.event.d.ts +0 -14
- package/dist/types/modules/tournament/match/events/match-ended.event.d.ts.map +0 -1
- package/dist/types/modules/tournament/notification/jobs/notification.producer.d.ts +0 -10
- package/dist/types/modules/tournament/notification/jobs/notification.producer.d.ts.map +0 -1
- package/dist/types/modules/tournament/notification/jobs/notification.worker.d.ts +0 -9
- package/dist/types/modules/tournament/notification/jobs/notification.worker.d.ts.map +0 -1
- package/dist/types/modules/tournament/notification/notification.schedule.config.d.ts +0 -10
- package/dist/types/modules/tournament/notification/notification.schedule.config.d.ts.map +0 -1
- package/dist/types/modules/tournament/notification/notification.scheduler.service.d.ts +0 -10
- package/dist/types/modules/tournament/notification/notification.scheduler.service.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CouponMetricsRepository.js","sourceRoot":"/","sources":["modules/coupon/services/patterns/repository/CouponMetricsRepository.ts"],"names":[],"mappings":"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","sourcesContent":["import { Coupon, CouponModel, OrderModel } from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport { Duration } from '@lyxa.ai/core/dist/libraries/mongo/models/shared/duration.model';\nimport { dayjs } from '@lyxa.ai/core/dist/utilities/dayjs';\nimport {\n\tCouponType,\n\tGraphType,\n\tItemType,\n\tOrderType,\n\tRegularOrderStatus,\n\tStatus,\n} from '@lyxa.ai/core/dist/utilities/enum';\nimport { roundBaseCurrency } from '@lyxa.ai/core/dist/utilities/shared';\nimport { LyxaTimezone } from '@lyxa.ai/core/dist/utilities/time';\nimport {\n\tCouponMetricsByTypeDTO,\n\tCouponMetricsOutputDTO,\n\tDateInputDTO,\n\tGraphDTO,\n\tGraphInputDTO,\n\tTotalProfitGraphDTO,\n} from '@modules/coupon/validations/coupon.validation';\nimport { mongoose } from '@typegoose/typegoose';\nimport { fillMissingPeriods } from '@utility/utils';\n\nexport class CouponMetricsRepository {\n\tprivate readonly model: typeof CouponModel;\n\tprivate orderModel: typeof OrderModel;\n\n\tconstructor() {\n\t\tthis.model = CouponModel as typeof CouponModel;\n\t\tthis.orderModel = OrderModel as typeof OrderModel;\n\t}\n\n\tprivate getBaseCouponFilter(): mongoose.FilterQuery<Coupon> {\n\t\treturn {\n\t\t\tupdatedVersion: { $exists: false },\n\t\t\tcouponType: { $nin: [CouponType.REFERRAL_CODE, CouponType.REFERRAL_REWARD] },\n\t\t\tdeletedAt: null,\n\t\t};\n\t}\n\n\tprivate getCouponCreatedWithinDateRangeFilter(\n\t\tstartDate: Date,\n\t\tendDate: Date\n\t): mongoose.FilterQuery<Coupon> {\n\t\treturn {\n\t\t\t...this.getBaseCouponFilter(),\n\t\t\tcreatedAt: {\n\t\t\t\t$gte: startDate,\n\t\t\t\t$lte: endDate,\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate getCouponOrderMatch(startDate: Date, endDate: Date): mongoose.PipelineStage.Match['$match'] {\n\t\treturn {\n\t\t\tplacedAt: {\n\t\t\t\t$gte: startDate,\n\t\t\t\t$lte: endDate,\n\t\t\t},\n\t\t\tstatus: RegularOrderStatus.DELIVERED,\n\t\t\t'adjustedFinance.coupon.coupon': { $ne: null },\n\t\t};\n\t}\n\n\tprivate async getActiveCouponsCount(now: Date) {\n\t\treturn this.model.countDocuments({\n\t\t\t...this.getBaseCouponFilter(),\n\t\t\tstatus: Status.ACTIVE,\n\t\t\t'duration.start': { $lte: now },\n\t\t\t'duration.end': { $gte: now },\n\t\t});\n\t}\n\n\tprivate async getTotalCreatedCoupons(startDate: Date, endDate: Date) {\n\t\treturn this.model\n\t\t\t.find({\n\t\t\t\t...this.getCouponCreatedWithinDateRangeFilter(startDate, endDate),\n\t\t\t})\n\t\t\t.select('_id');\n\t}\n\n\tprivate async getCouponUsageMetrics(\n\t\tstartDate: Date,\n\t\tendDate: Date,\n\t\tcoupons: mongoose.Types.ObjectId[] = []\n\t) {\n\t\tconst match = {\n\t\t\t...this.getCouponOrderMatch(startDate, endDate),\n\t\t\t'adjustedFinance.coupon.coupon': { $in: coupons },\n\t\t};\n\n\t\tconst [result] = await this.orderModel.aggregate<{\n\t\t\ttotalCouponOrders: number;\n\t\t\ttotalRevenue: number;\n\t\t\ttotalProfit: number;\n\t\t\tredeemedCoupons: number;\n\t\t}>([\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: null,\n\n\t\t\t\t\ttotalCouponOrders: { $sum: 1 },\n\n\t\t\t\t\ttotalRevenue: {\n\t\t\t\t\t\t$sum: '$adjustedFinance.pricing.total',\n\t\t\t\t\t},\n\n\t\t\t\t\ttotalProfit: {\n\t\t\t\t\t\t$sum: '$adjustedFinance.companyProfit.totalProfit',\n\t\t\t\t\t},\n\n\t\t\t\t\tuniqueCoupons: {\n\t\t\t\t\t\t$addToSet: '$adjustedFinance.coupon.coupon',\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$project: {\n\t\t\t\t\t_id: 0,\n\t\t\t\t\ttotalCouponOrders: 1,\n\t\t\t\t\ttotalRevenue: 1,\n\t\t\t\t\ttotalProfit: 1,\n\t\t\t\t\tredeemedCoupons: {\n\t\t\t\t\t\t$size: '$uniqueCoupons',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t]);\n\n\t\treturn (\n\t\t\tresult ?? {\n\t\t\t\ttotalCouponOrders: 0,\n\t\t\t\ttotalRevenue: 0,\n\t\t\t\ttotalProfit: 0,\n\t\t\t\tredeemedCoupons: 0,\n\t\t\t}\n\t\t);\n\t}\n\n\tprivate getEffectiveGraphType(type: GraphType | undefined, startDate: Date, endDate: Date): GraphType {\n\t\tif (type !== undefined && type !== null) {\n\t\t\treturn type;\n\t\t}\n\n\t\tconst durationDays = dayjs(endDate).endOf('day').diff(dayjs(startDate).startOf('day'), 'day') + 1;\n\t\treturn durationDays > 31 ? GraphType.MONTHLY : GraphType.DAILY;\n\t}\n\n\tprivate getPeriodKeys(startDate: Date, endDate: Date, type: GraphType): string[] {\n\t\tconst unit = type === GraphType.MONTHLY ? 'month' : 'day';\n\t\tconst format = type === GraphType.MONTHLY ? 'YYYY-MM' : 'YYYY-MM-DD';\n\t\tconst keys: string[] = [];\n\t\tlet current = dayjs(startDate).startOf(unit);\n\t\tconst end = dayjs(endDate).startOf(unit);\n\n\t\twhile (current.isBefore(end) || current.isSame(end)) {\n\t\t\tkeys.push(current.format(format));\n\t\t\tcurrent = current.add(1, unit);\n\t\t}\n\n\t\treturn keys;\n\t}\n\n\tprivate formatPeriodLabel(dateKey: string, type: GraphType): string {\n\t\tif (type === GraphType.MONTHLY) {\n\t\t\treturn new Date(dateKey).toLocaleString('default', { month: 'short' });\n\t\t}\n\n\t\treturn new Date(dateKey).toLocaleString('default', { day: 'numeric', month: 'short' });\n\t}\n\n\tpublic async getCouponMetricsByType(duration: DateInputDTO) {\n\t\tconst startDate = dayjs(duration.startDate).startOf('day').toDate();\n\t\tconst endDate = dayjs(duration.endDate).endOf('day').toDate();\n\n\t\tconst [totalOrders, activeCouponsCount] = await Promise.all([\n\t\t\tthis.orderModel.countDocuments({\n\t\t\t\tplacedAt: {\n\t\t\t\t\t$gte: startDate,\n\t\t\t\t\t$lte: endDate,\n\t\t\t\t},\n\t\t\t\tstatus: RegularOrderStatus.DELIVERED,\n\t\t\t}),\n\t\t\tthis.model.aggregate([\n\t\t\t\t{\n\t\t\t\t\t$match: {\n\t\t\t\t\t\t...this.getBaseCouponFilter(),\n\t\t\t\t\t\tstatus: Status.ACTIVE,\n\t\t\t\t\t\t'duration.start': { $lte: dayjs().toDate() },\n\t\t\t\t\t\t'duration.end': { $gte: dayjs().toDate() },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t$group: {\n\t\t\t\t\t\t_id: '$couponType',\n\t\t\t\t\t\tcount: { $sum: 1 },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t]),\n\t\t]);\n\n\t\tconst activeCouponsMap = activeCouponsCount.reduce(\n\t\t\t(acc, curr) => {\n\t\t\t\tacc[curr._id] = curr.count;\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{} as Record<string, number>\n\t\t);\n\n\t\tconst result = await this.orderModel.aggregate([\n\t\t\t{\n\t\t\t\t$match: {\n\t\t\t\t\t...this.getCouponOrderMatch(startDate, endDate),\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: 'coupons',\n\t\t\t\t\tlocalField: 'adjustedFinance.coupon.coupon',\n\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\tas: 'couponDetails',\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$unwind: '$couponDetails',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$match: {\n\t\t\t\t\t'couponDetails.couponType': { $nin: [CouponType.REFERRAL_CODE, CouponType.REFERRAL_REWARD] },\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$group: {\n\t\t\t\t\t_id: '$couponDetails.couponType',\n\n\t\t\t\t\tcouponType: { $first: '$couponDetails.couponType' },\n\n\t\t\t\t\ttotalCouponOrders: { $sum: 1 },\n\n\t\t\t\t\ttotalRevenue: {\n\t\t\t\t\t\t$sum: '$adjustedFinance.pricing.total',\n\t\t\t\t\t},\n\n\t\t\t\t\tamountSpent: {\n\t\t\t\t\t\t$sum: '$adjustedFinance.pricing.couponDiscount',\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$addFields: {\n\t\t\t\t\taverageOrderValue: {\n\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t{ $eq: ['$totalCouponOrders', 0] },\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$round: [{ $divide: ['$totalRevenue', '$totalCouponOrders'] }, 2],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\n\t\t\t\t\tusage: {\n\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t{ $eq: [totalOrders, 0] },\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$multiply: [\n\t\t\t\t\t\t\t\t\t100,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$round: [{ $divide: ['$totalCouponOrders', totalOrders] }, 2],\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\n\t\t\t{\n\t\t\t\t$project: {\n\t\t\t\t\t_id: 0,\n\t\t\t\t\tcouponType: 1,\n\t\t\t\t\ttotalCouponOrders: 1,\n\t\t\t\t\ttotalRevenue: { $round: ['$totalRevenue', 2] },\n\t\t\t\t\taverageOrderValue: 1,\n\t\t\t\t\tusage: 1,\n\t\t\t\t\tamountSpent: { $round: ['$amountSpent', 2] },\n\t\t\t\t},\n\t\t\t},\n\t\t]);\n\n\t\tthis.fillMissingRows(result);\n\n\t\tconst tableData = result.map(item => ({\n\t\t\t...item,\n\t\t\tcouponTypeTitle: this.getCouponTypeTitle(item.couponType),\n\t\t\tongoing: activeCouponsMap[item.couponType] ?? 0,\n\t\t\tredemptionRate: 0, // calculate after business discussion on how to define redemption rate by coupon type\n\t\t}));\n\n\t\treturn tableData;\n\t}\n\n\tprivate getCouponTypeTitle(couponType: CouponType) {\n\t\tconst couponTypeTitles: Record<CouponType, string> = {\n\t\t\t[CouponType.GLOBAL]: 'Global',\n\t\t\t[CouponType.SHOPS_CATEGORIES]: 'Shop/Category',\n\t\t\t[CouponType.INDIVIDUAL_STORE]: 'Single Shop',\n\t\t\t[CouponType.INDIVIDUAL_USER]: 'Individual User',\n\t\t\t[CouponType.CUSTOM_COUPON]: 'Customized Coupon',\n\t\t\t[CouponType.REFERRAL_CODE]: 'Referral Code',\n\t\t\t[CouponType.REFERRAL_REWARD]: 'Referral Reward',\n\t\t};\n\t\treturn couponTypeTitles[couponType] || 'Unknown';\n\t}\n\n\tprivate fillMissingRows(data: CouponMetricsByTypeDTO[]) {\n\t\tconst missingTypes = Object.values(CouponType).filter(\n\t\t\ttype =>\n\t\t\t\t![CouponType.REFERRAL_CODE, CouponType.REFERRAL_REWARD].includes(type) &&\n\t\t\t\t!data.some(row => row.couponType === type)\n\t\t);\n\n\t\tmissingTypes.forEach(type => {\n\t\t\tdata.push({\n\t\t\t\tcouponType: type,\n\t\t\t\tcouponTypeTitle: this.getCouponTypeTitle(type),\n\t\t\t\ttotalCouponOrders: 0,\n\t\t\t\ttotalRevenue: 0,\n\t\t\t\taverageOrderValue: 0,\n\t\t\t\tusage: 0,\n\t\t\t\tongoing: 0,\n\t\t\t\tredemptionRate: 0,\n\t\t\t\tamountSpent: 0,\n\t\t\t});\n\t\t});\n\n\t\tdata.sort((a, b) => this.compareCouponTypes(a.couponType, b.couponType));\n\t}\n\n\tprivate compareCouponTypes(a: CouponType, b: CouponType) {\n\t\tconst order = [\n\t\t\tCouponType.GLOBAL,\n\t\t\tCouponType.SHOPS_CATEGORIES,\n\t\t\tCouponType.INDIVIDUAL_STORE,\n\t\t\tCouponType.INDIVIDUAL_USER,\n\t\t\tCouponType.CUSTOM_COUPON,\n\t\t];\n\t\treturn order.indexOf(a) - order.indexOf(b);\n\t}\n\n\tprivate calculateRedemptionRate(totalCreated: number, redeemedCoupons: number) {\n\t\tif (totalCreated <= 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn Number(((redeemedCoupons / totalCreated) * 100).toFixed(2));\n\t}\n\n\tpublic async getCouponMetrics(duration: DateInputDTO): Promise<CouponMetricsOutputDTO> {\n\t\tconst startDate = dayjs(duration.startDate).startOf('day').toDate();\n\t\tconst endDate = dayjs(duration.endDate).endOf('day').toDate();\n\t\tconst now = new Date();\n\n\t\tconst [activeCoupons, createdCoupons] = await Promise.all([\n\t\t\tthis.getActiveCouponsCount(now),\n\t\t\tthis.getTotalCreatedCoupons(startDate, endDate),\n\t\t]);\n\n\t\tconst createdCouponIds = createdCoupons.map(coupon => coupon._id);\n\n\t\tconst usageMetrics = await this.getCouponUsageMetrics(startDate, endDate, createdCouponIds);\n\n\t\tconst redemptionRate = this.calculateRedemptionRate(\n\t\t\tcreatedCouponIds.length,\n\t\t\tusageMetrics.redeemedCoupons\n\t\t);\n\n\t\treturn {\n\t\t\tactiveCoupons,\n\n\t\t\ttotalCreated: createdCouponIds.length,\n\t\t\ttotalRedeemedCoupons: usageMetrics.totalCouponOrders,\n\t\t\tredemptionRate,\n\n\t\t\ttotalCouponOrders: usageMetrics.totalCouponOrders,\n\t\t\ttotalRevenue: roundBaseCurrency(usageMetrics.totalRevenue),\n\t\t\ttotalProfit: roundBaseCurrency(usageMetrics.totalProfit),\n\t\t};\n\t}\n\n\tpublic getOrderGraphMatchStage(startDate: Date, endDate: Date, itemType?: ItemType) {\n\t\treturn {\n\t\t\tplacedAt: {\n\t\t\t\t$gte: startDate,\n\t\t\t\t$lte: endDate,\n\t\t\t},\n\t\t\torderType: OrderType.REGULAR,\n\t\t\tstatus: RegularOrderStatus.DELIVERED,\n\t\t\t...(itemType\n\t\t\t\t? {\n\t\t\t\t\t\titemType,\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t};\n\t}\n\n\tpublic async getCouponOrdersGraphData(data: GraphInputDTO): Promise<GraphDTO> {\n\t\tconst startDate = dayjs(data.startDate).startOf('day').toDate();\n\t\tconst endDate = dayjs(data.endDate).endOf('day').toDate();\n\n\t\tconst graphType = this.getEffectiveGraphType(data.graphType, data.startDate, data.endDate);\n\t\tconst dateFormat = graphType === GraphType.MONTHLY ? '%Y-%m' : '%Y-%m-%d';\n\n\t\tconst result = await this.orderModel.aggregate([\n\t\t\t{\n\t\t\t\t$match: {\n\t\t\t\t\t...this.getOrderGraphMatchStage(startDate, endDate, data.itemType),\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\thasCoupon: {\n\t\t\t\t\t\t$cond: [{ $ifNull: ['$adjustedFinance.coupon.coupon', false] }, 1, 0],\n\t\t\t\t\t},\n\t\t\t\t\tdate: {\n\t\t\t\t\t\t$dateToString: {\n\t\t\t\t\t\t\tformat: dateFormat,\n\t\t\t\t\t\t\tdate: '$placedAt',\n\t\t\t\t\t\t\ttimezone: LyxaTimezone,\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$group: {\n\t\t\t\t\t_id: '$date',\n\n\t\t\t\t\ttotalOrders: { $sum: 1 },\n\n\t\t\t\t\tordersWithCoupon: {\n\t\t\t\t\t\t$sum: '$hasCoupon',\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$project: {\n\t\t\t\t\t_id: 0,\n\t\t\t\t\tdate: '$_id',\n\t\t\t\t\ttotalOrders: 1,\n\t\t\t\t\tordersWithCoupon: 1,\n\t\t\t\t\tordersWithoutCoupon: { $subtract: ['$totalOrders', '$ordersWithCoupon'] },\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$sort: { date: 1 },\n\t\t\t},\n\t\t]);\n\n\t\t// Fill in missing dates with zero for graph continuity\n\t\tconst graphData = fillMissingPeriods(result, data.startDate, data.endDate, graphType, {\n\t\t\ttotalOrders: 0,\n\t\t\tordersWithCoupon: 0,\n\t\t\tordersWithoutCoupon: 0,\n\t\t});\n\n\t\treturn this.convertToCouponOrdersGraphFormat(graphData, graphType, data.startDate, data.endDate);\n\t}\n\n\tprivate convertToCouponOrdersGraphFormat(\n\t\tdata: Array<{ date: string; totalOrders: number; ordersWithCoupon: number; ordersWithoutCoupon: number }>,\n\t\tgraphType: GraphType,\n\t\tstartDate: Date,\n\t\tendDate: Date\n\t): GraphDTO {\n\t\tconst periodKeys = this.getPeriodKeys(startDate, endDate, graphType);\n\t\tconst categories = periodKeys.map(key => this.formatPeriodLabel(key, graphType));\n\n\t\tconst series = [\n\t\t\t{\n\t\t\t\tname: 'Coupon',\n\t\t\t\tdata: data.map(item => item.ordersWithCoupon),\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'No Coupon',\n\t\t\t\tdata: data.map(item => item.ordersWithoutCoupon),\n\t\t\t},\n\t\t];\n\n\t\treturn {\n\t\t\tcategories,\n\t\t\tseries,\n\t\t};\n\t}\n\n\tpublic async getUsersNewVsReturningGraphData(data: GraphInputDTO): Promise<GraphDTO> {\n\t\tconst startDate = dayjs(data.startDate).startOf('day').toDate();\n\t\tconst endDate = dayjs(data.endDate).endOf('day').toDate();\n\n\t\tconst graphType = this.getEffectiveGraphType(data.graphType, data.startDate, data.endDate);\n\t\tconst dateFormat = graphType === GraphType.MONTHLY ? '%Y-%m' : '%Y-%m-%d';\n\n\t\tconst result = await this.orderModel.aggregate([\n\t\t\t// Orders in selected period\n\t\t\t{\n\t\t\t\t$match: {\n\t\t\t\t\t...this.getOrderGraphMatchStage(startDate, endDate, data.itemType),\n\t\t\t\t\t'adjustedFinance.coupon.coupon': { $ne: null },\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// Build graph bucket\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\tdate: {\n\t\t\t\t\t\t$dateToString: {\n\t\t\t\t\t\t\tformat: dateFormat,\n\t\t\t\t\t\t\tdate: '$placedAt',\n\t\t\t\t\t\t\ttimezone: LyxaTimezone,\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// Unique user per period bucket\n\t\t\t{\n\t\t\t\t$group: {\n\t\t\t\t\t_id: {\n\t\t\t\t\t\tuser: '$user',\n\t\t\t\t\t\tdate: '$date',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// Lookup prior order (existence check)\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.user' },\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: {\n\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t{ $eq: ['$user', '$$userId'] },\n\t\t\t\t\t\t\t\t\t\t{ $eq: ['$status', RegularOrderStatus.DELIVERED] },\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t$expr: {\n\t\t\t\t\t\t\t\t\t\t\t\t$lt: [\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\t\t$ifNull: ['$placedAt', '$createdAt'],\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\tstartDate,\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},\n\t\t\t\t\t\t{ $limit: 1 },\n\t\t\t\t\t],\n\t\t\t\t\tas: 'previousOrders',\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// Classify\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\tisReturning: {\n\t\t\t\t\t\t$gt: [{ $size: '$previousOrders' }, 0],\n\t\t\t\t\t},\n\t\t\t\t\tdate: '$_id.date',\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// Aggregate graph metrics\n\t\t\t{\n\t\t\t\t$group: {\n\t\t\t\t\t_id: '$date',\n\n\t\t\t\t\ttotalUsers: { $sum: 1 },\n\n\t\t\t\t\treturningUsers: {\n\t\t\t\t\t\t$sum: {\n\t\t\t\t\t\t\t$cond: ['$isReturning', 1, 0],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\n\t\t\t\t\tnewUsers: {\n\t\t\t\t\t\t$sum: {\n\t\t\t\t\t\t\t$cond: ['$isReturning', 0, 1],\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$project: {\n\t\t\t\t\t_id: 0,\n\t\t\t\t\tdate: '$_id',\n\t\t\t\t\ttotalUsers: 1,\n\t\t\t\t\tnewUsers: 1,\n\t\t\t\t\treturningUsers: 1,\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{ $sort: { date: 1 } },\n\t\t]);\n\n\t\tconst graphData = fillMissingPeriods(result, data.startDate, data.endDate, graphType, {\n\t\t\ttotalUsers: 0,\n\t\t\tnewUsers: 0,\n\t\t\treturningUsers: 0,\n\t\t});\n\n\t\treturn this.convertToUsersNewVsReturningGraphFormat(graphData, graphType, data.startDate, data.endDate);\n\t}\n\n\tprivate convertToUsersNewVsReturningGraphFormat(\n\t\tdata: Array<{ date: string; totalUsers: number; newUsers: number; returningUsers: number }>,\n\t\tgraphType: GraphType,\n\t\tstartDate: Date,\n\t\tendDate: Date\n\t): GraphDTO {\n\t\tconst periodKeys = this.getPeriodKeys(startDate, endDate, graphType);\n\t\tconst categories = periodKeys.map(key => this.formatPeriodLabel(key, graphType));\n\n\t\tconst series = [\n\t\t\t{\n\t\t\t\tname: 'New Users',\n\t\t\t\tdata: data.map(item => item.newUsers),\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Returning Users',\n\t\t\t\tdata: data.map(item => item.returningUsers),\n\t\t\t},\n\t\t];\n\n\t\treturn {\n\t\t\tcategories,\n\t\t\tseries,\n\t\t};\n\t}\n\n\tpublic async getCouponProfitGraphData(data: GraphInputDTO): Promise<TotalProfitGraphDTO> {\n\t\tconst startDate = dayjs(data.startDate).startOf('day').toDate();\n\t\tconst endDate = dayjs(data.endDate).endOf('day').toDate();\n\n\t\tconst graphType = this.getEffectiveGraphType(data.graphType, data.startDate, data.endDate);\n\t\tconst dateFormat = graphType === GraphType.MONTHLY ? '%Y-%m' : '%Y-%m-%d';\n\n\t\tconst result = await this.orderModel.aggregate([\n\t\t\t{\n\t\t\t\t$match: {\n\t\t\t\t\t...this.getOrderGraphMatchStage(startDate, endDate, data.itemType),\n\t\t\t\t\t'adjustedFinance.coupon.coupon': { $ne: null },\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\tdate: {\n\t\t\t\t\t\t$dateToString: {\n\t\t\t\t\t\t\tformat: dateFormat,\n\t\t\t\t\t\t\tdate: '$placedAt',\n\t\t\t\t\t\t\ttimezone: LyxaTimezone,\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$group: {\n\t\t\t\t\t_id: '$date',\n\n\t\t\t\t\ttotalProfit: {\n\t\t\t\t\t\t$sum: '$adjustedFinance.companyProfit.totalProfit',\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$project: {\n\t\t\t\t\t_id: 0,\n\t\t\t\t\tdate: '$_id',\n\t\t\t\t\ttotalProfit: 1,\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$sort: { date: 1 },\n\t\t\t},\n\t\t]);\n\n\t\t// Fill in missing dates with zero for graph continuity\n\t\tconst graphData = fillMissingPeriods(result, data.startDate, data.endDate, graphType, {\n\t\t\ttotalProfit: 0,\n\t\t});\n\n\t\treturn this.convertToCouponProfitGraphFormat(graphData, graphType, data.startDate, data.endDate);\n\t}\n\n\tprivate convertToCouponProfitGraphFormat(\n\t\tdata: Array<{ date: string; totalProfit: number }>,\n\t\tgraphType: GraphType,\n\t\tstartDate: Date,\n\t\tendDate: Date\n\t): TotalProfitGraphDTO {\n\t\tconst periodKeys = this.getPeriodKeys(startDate, endDate, graphType);\n\t\tconst categories = periodKeys.map(key => this.formatPeriodLabel(key, graphType));\n\n\t\tconst series = [\n\t\t\t{\n\t\t\t\tname: 'Profit',\n\t\t\t\tdata: data.map(item => item.totalProfit),\n\t\t\t},\n\t\t];\n\n\t\treturn {\n\t\t\tcategories,\n\t\t\tseries,\n\t\t\ttotalProfit: data.reduce((sum, item) => sum + item.totalProfit, 0),\n\t\t};\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"CouponMetricsRepository.js","sourceRoot":"/","sources":["modules/coupon/services/patterns/repository/CouponMetricsRepository.ts"],"names":[],"mappings":";;;AAAA,sEAA4F;AAE5F,8DAA2D;AAC3D,4DAO2C;AAC3C,gEAAwE;AACxE,4DAAiE;AAUjE,0CAAoD;AAEpD,MAAa,uBAAuB;IAClB,KAAK,CAAqB;IACnC,UAAU,CAAoB;IAEtC;QACC,IAAI,CAAC,KAAK,GAAG,oBAAiC,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,mBAA+B,CAAC;IACnD,CAAC;IAEO,mBAAmB;QAC1B,OAAO;YACN,cAAc,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;YAClC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,iBAAU,CAAC,aAAa,EAAE,iBAAU,CAAC,eAAe,CAAC,EAAE;YAC5E,SAAS,EAAE,IAAI;SACf,CAAC;IACH,CAAC;IAEO,qCAAqC,CAC5C,SAAe,EACf,OAAa;QAEb,OAAO;YACN,GAAG,IAAI,CAAC,mBAAmB,EAAE;YAC7B,SAAS,EAAE;gBACV,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,OAAO;aACb;SACD,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,SAAe,EAAE,OAAa;QACzD,OAAO;YACN,QAAQ,EAAE;gBACT,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,OAAO;aACb;YACD,MAAM,EAAE,yBAAkB,CAAC,SAAS;YACpC,+BAA+B,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;SAC9C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,GAAS;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;YAChC,GAAG,IAAI,CAAC,mBAAmB,EAAE;YAC7B,MAAM,EAAE,aAAM,CAAC,MAAM;YACrB,gBAAgB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;YAC/B,cAAc,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;SAC7B,CAAC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,SAAe,EAAE,OAAa;QAClE,OAAO,IAAI,CAAC,KAAK;aACf,IAAI,CAAC;YACL,GAAG,IAAI,CAAC,qCAAqC,CAAC,SAAS,EAAE,OAAO,CAAC;SACjE,CAAC;aACD,MAAM,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAClC,SAAe,EACf,OAAa,EACb,UAAqC,EAAE;QAEvC,MAAM,KAAK,GAAG;YACb,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC;YAC/C,+BAA+B,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;SACjD,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAK7C;YACF;gBACC,MAAM,EAAE,KAAK;aACb;YAED;gBACC,MAAM,EAAE;oBACP,GAAG,EAAE,IAAI;oBAET,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;oBAE9B,YAAY,EAAE;wBACb,IAAI,EAAE;4BACL,SAAS,EAAE;gCACV,mCAAmC;gCACnC,EAAE,OAAO,EAAE,CAAC,yCAAyC,EAAE,CAAC,CAAC,EAAE;6BAC3D;yBACD;qBACD;oBAED,WAAW,EAAE;wBACZ,IAAI,EAAE,+CAA+C;qBACrD;oBAED,aAAa,EAAE;wBACd,SAAS,EAAE,gCAAgC;qBAC3C;iBACD;aACD;YAED;gBACC,QAAQ,EAAE;oBACT,GAAG,EAAE,CAAC;oBACN,iBAAiB,EAAE,CAAC;oBACpB,YAAY,EAAE,CAAC;oBACf,WAAW,EAAE,CAAC;oBACd,eAAe,EAAE;wBAChB,KAAK,EAAE,gBAAgB;qBACvB;iBACD;aACD;SACD,CAAC,CAAC;QAEH,OAAO,CACN,MAAM,IAAI;YACT,iBAAiB,EAAE,CAAC;YACpB,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,CAAC;YACd,eAAe,EAAE,CAAC;SAClB,CACD,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,IAA2B,EAAE,SAAe,EAAE,OAAa;QACxF,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,YAAY,GAAG,IAAA,aAAK,EAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAA,aAAK,EAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAClG,OAAO,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC,gBAAS,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAS,CAAC,KAAK,CAAC;IAChE,CAAC;IAEO,aAAa,CAAC,SAAe,EAAE,OAAa,EAAE,IAAe;QACpE,MAAM,IAAI,GAAG,IAAI,KAAK,gBAAS,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,KAAK,gBAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;QACrE,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,OAAO,GAAG,IAAA,aAAK,EAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAA,aAAK,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEzC,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAClC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAEO,iBAAiB,CAAC,OAAe,EAAE,IAAe;QACzD,IAAI,IAAI,KAAK,gBAAS,CAAC,OAAO,EAAE,CAAC;YAChC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACxF,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,QAAsB;QACzD,MAAM,SAAS,GAAG,IAAA,aAAK,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QACpE,MAAM,OAAO,GAAG,IAAA,aAAK,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAE9D,MAAM,CAAC,WAAW,EAAE,kBAAkB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC3D,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;gBAC9B,QAAQ,EAAE;oBACT,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,OAAO;iBACb;gBACD,MAAM,EAAE,yBAAkB,CAAC,SAAS;aACpC,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBACpB;oBACC,MAAM,EAAE;wBACP,GAAG,IAAI,CAAC,mBAAmB,EAAE;wBAC7B,MAAM,EAAE,aAAM,CAAC,MAAM;wBACrB,gBAAgB,EAAE,EAAE,IAAI,EAAE,IAAA,aAAK,GAAE,CAAC,MAAM,EAAE,EAAE;wBAC5C,cAAc,EAAE,EAAE,IAAI,EAAE,IAAA,aAAK,GAAE,CAAC,MAAM,EAAE,EAAE;qBAC1C;iBACD;gBACD;oBACC,MAAM,EAAE;wBACP,GAAG,EAAE,aAAa;wBAClB,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;qBAClB;iBACD;aACD,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,CACjD,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACb,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAC3B,OAAO,GAAG,CAAC;QACZ,CAAC,EACD,EAA4B,CAC5B,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAC9C;gBACC,MAAM,EAAE;oBACP,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC;iBAC/C;aACD;YAED;gBACC,OAAO,EAAE;oBACR,IAAI,EAAE,SAAS;oBACf,UAAU,EAAE,+BAA+B;oBAC3C,YAAY,EAAE,KAAK;oBACnB,EAAE,EAAE,eAAe;iBACnB;aACD;YAED;gBACC,OAAO,EAAE,gBAAgB;aACzB;YAED;gBACC,MAAM,EAAE;oBACP,0BAA0B,EAAE,EAAE,IAAI,EAAE,CAAC,iBAAU,CAAC,aAAa,EAAE,iBAAU,CAAC,eAAe,CAAC,EAAE;iBAC5F;aACD;YAED;gBACC,MAAM,EAAE;oBACP,GAAG,EAAE,2BAA2B;oBAEhC,UAAU,EAAE,EAAE,MAAM,EAAE,2BAA2B,EAAE;oBAEnD,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;oBAE9B,gBAAgB,EAAE;wBACjB,IAAI,EAAE,gCAAgC;qBACtC;oBAED,YAAY,EAAE;wBACb,IAAI,EAAE;4BACL,SAAS,EAAE;gCACV,gCAAgC;gCAChC,EAAE,OAAO,EAAE,CAAC,yCAAyC,EAAE,CAAC,CAAC,EAAE;6BAC3D;yBACD;qBACD;oBAED,WAAW,EAAE;wBACZ,IAAI,EAAE,yCAAyC;qBAC/C;iBACD;aACD;YAED;gBACC,UAAU,EAAE;oBACX,iBAAiB,EAAE;wBAClB,KAAK,EAAE;4BACN,EAAE,GAAG,EAAE,CAAC,oBAAoB,EAAE,CAAC,CAAC,EAAE;4BAClC,CAAC;4BACD;gCACC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,EAAE,EAAE,CAAC,CAAC;6BACrE;yBACD;qBACD;oBAED,KAAK,EAAE;wBACN,KAAK,EAAE;4BACN,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE;4BACzB,CAAC;4BACD;gCACC,SAAS,EAAE;oCACV,GAAG;oCACH;wCACC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,oBAAoB,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;qCAC7D;iCACD;6BACD;yBACD;qBACD;iBACD;aACD;YAED;gBACC,QAAQ,EAAE;oBACT,GAAG,EAAE,CAAC;oBACN,UAAU,EAAE,CAAC;oBACb,iBAAiB,EAAE,CAAC;oBACpB,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE;oBAC9C,iBAAiB,EAAE,CAAC;oBACpB,KAAK,EAAE,CAAC;oBACR,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE;iBAC5C;aACD;SACD,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAE7B,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrC,GAAG,IAAI;YACP,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;YACzD,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAC/C,cAAc,EAAE,CAAC;SACjB,CAAC,CAAC,CAAC;QAEJ,OAAO,SAAS,CAAC;IAClB,CAAC;IAEO,kBAAkB,CAAC,UAAsB;QAChD,MAAM,gBAAgB,GAA+B;YACpD,CAAC,iBAAU,CAAC,MAAM,CAAC,EAAE,QAAQ;YAC7B,CAAC,iBAAU,CAAC,gBAAgB,CAAC,EAAE,eAAe;YAC9C,CAAC,iBAAU,CAAC,gBAAgB,CAAC,EAAE,aAAa;YAC5C,CAAC,iBAAU,CAAC,eAAe,CAAC,EAAE,iBAAiB;YAC/C,CAAC,iBAAU,CAAC,aAAa,CAAC,EAAE,mBAAmB;YAC/C,CAAC,iBAAU,CAAC,aAAa,CAAC,EAAE,eAAe;YAC3C,CAAC,iBAAU,CAAC,eAAe,CAAC,EAAE,iBAAiB;SAC/C,CAAC;QACF,OAAO,gBAAgB,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC;IAClD,CAAC;IAEO,eAAe,CAAC,IAA8B;QACrD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAU,CAAC,CAAC,MAAM,CACpD,IAAI,CAAC,EAAE,CACN,CAAC,CAAC,iBAAU,CAAC,aAAa,EAAE,iBAAU,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YACtE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,CAC3C,CAAC;QAEF,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC3B,IAAI,CAAC,IAAI,CAAC;gBACT,UAAU,EAAE,IAAI;gBAChB,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;gBAC9C,iBAAiB,EAAE,CAAC;gBACpB,YAAY,EAAE,CAAC;gBACf,iBAAiB,EAAE,CAAC;gBACpB,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE,CAAC;gBACV,cAAc,EAAE,CAAC;gBACjB,WAAW,EAAE,CAAC;aACd,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1E,CAAC;IAEO,kBAAkB,CAAC,CAAa,EAAE,CAAa;QACtD,MAAM,KAAK,GAAG;YACb,iBAAU,CAAC,MAAM;YACjB,iBAAU,CAAC,gBAAgB;YAC3B,iBAAU,CAAC,gBAAgB;YAC3B,iBAAU,CAAC,eAAe;YAC1B,iBAAU,CAAC,aAAa;SACxB,CAAC;QACF,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAEO,uBAAuB,CAAC,YAAoB,EAAE,eAAuB;QAC5E,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,CAAC;QACV,CAAC;QAED,OAAO,MAAM,CAAC,CAAC,CAAC,eAAe,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,QAAsB;QACnD,MAAM,SAAS,GAAG,IAAA,aAAK,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QACpE,MAAM,OAAO,GAAG,IAAA,aAAK,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAC9D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACzD,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;YAC/B,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC;SAC/C,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAElE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;QAE5F,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAClD,gBAAgB,CAAC,MAAM,EACvB,YAAY,CAAC,eAAe,CAC5B,CAAC;QAEF,OAAO;YACN,aAAa;YAEb,YAAY,EAAE,gBAAgB,CAAC,MAAM;YACrC,oBAAoB,EAAE,YAAY,CAAC,iBAAiB;YACpD,cAAc;YAEd,iBAAiB,EAAE,YAAY,CAAC,iBAAiB;YACjD,YAAY,EAAE,IAAA,0BAAiB,EAAC,YAAY,CAAC,YAAY,CAAC;YAC1D,WAAW,EAAE,IAAA,0BAAiB,EAAC,YAAY,CAAC,WAAW,CAAC;SACxD,CAAC;IACH,CAAC;IAEM,uBAAuB,CAAC,SAAe,EAAE,OAAa,EAAE,QAAmB;QACjF,OAAO;YACN,QAAQ,EAAE;gBACT,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,OAAO;aACb;YACD,SAAS,EAAE,gBAAS,CAAC,OAAO;YAC5B,MAAM,EAAE,yBAAkB,CAAC,SAAS;YACpC,GAAG,CAAC,QAAQ;gBACX,CAAC,CAAC;oBACA,QAAQ;iBACR;gBACF,CAAC,CAAC,EAAE,CAAC;SACN,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,wBAAwB,CAAC,IAAmB;QACxD,MAAM,SAAS,GAAG,IAAA,aAAK,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAChE,MAAM,OAAO,GAAG,IAAA,aAAK,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAE1D,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3F,MAAM,UAAU,GAAG,SAAS,KAAK,gBAAS,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;QAE1E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAC9C;gBACC,MAAM,EAAE;oBACP,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC;iBAClE;aACD;YAED;gBACC,UAAU,EAAE;oBACX,SAAS,EAAE;wBACV,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,gCAAgC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;qBACrE;oBACD,IAAI,EAAE;wBACL,aAAa,EAAE;4BACd,MAAM,EAAE,UAAU;4BAClB,IAAI,EAAE,WAAW;4BACjB,QAAQ,EAAE,mBAAY;yBACtB;qBACD;iBACD;aACD;YAED;gBACC,MAAM,EAAE;oBACP,GAAG,EAAE,OAAO;oBAEZ,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;oBAExB,gBAAgB,EAAE;wBACjB,IAAI,EAAE,YAAY;qBAClB;iBACD;aACD;YAED;gBACC,QAAQ,EAAE;oBACT,GAAG,EAAE,CAAC;oBACN,IAAI,EAAE,MAAM;oBACZ,WAAW,EAAE,CAAC;oBACd,gBAAgB,EAAE,CAAC;oBACnB,mBAAmB,EAAE,EAAE,SAAS,EAAE,CAAC,cAAc,EAAE,mBAAmB,CAAC,EAAE;iBACzE;aACD;YAED;gBACC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;aAClB;SACD,CAAC,CAAC;QAGH,MAAM,SAAS,GAAG,IAAA,0BAAkB,EAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE;YACrF,WAAW,EAAE,CAAC;YACd,gBAAgB,EAAE,CAAC;YACnB,mBAAmB,EAAE,CAAC;SACtB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,gCAAgC,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAClG,CAAC;IAEO,gCAAgC,CACvC,IAAyG,EACzG,SAAoB,EACpB,SAAe,EACf,OAAa;QAEb,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;QAEjF,MAAM,MAAM,GAAG;YACd;gBACC,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC;aAC7C;YACD;gBACC,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC;aAChD;SACD,CAAC;QAEF,OAAO;YACN,UAAU;YACV,MAAM;SACN,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,+BAA+B,CAAC,IAAmB;QAC/D,MAAM,SAAS,GAAG,IAAA,aAAK,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAChE,MAAM,OAAO,GAAG,IAAA,aAAK,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAE1D,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3F,MAAM,UAAU,GAAG,SAAS,KAAK,gBAAS,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;QAE1E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAE9C;gBACC,MAAM,EAAE;oBACP,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC;oBAClE,+BAA+B,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;iBAC9C;aACD;YAGD;gBACC,UAAU,EAAE;oBACX,IAAI,EAAE;wBACL,aAAa,EAAE;4BACd,MAAM,EAAE,UAAU;4BAClB,IAAI,EAAE,WAAW;4BACjB,QAAQ,EAAE,mBAAY;yBACtB;qBACD;iBACD;aACD;YAGD;gBACC,MAAM,EAAE;oBACP,GAAG,EAAE;wBACJ,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,OAAO;qBACb;iBACD;aACD;YAGD;gBACC,OAAO,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;oBAC5B,QAAQ,EAAE;wBACT;4BACC,MAAM,EAAE;gCACP,KAAK,EAAE;oCACN,IAAI,EAAE;wCACL,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE;wCAC9B,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,yBAAkB,CAAC,SAAS,CAAC,EAAE;wCAClD;4CACC,KAAK,EAAE;gDACN,GAAG,EAAE;oDACJ;wDACC,OAAO,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;qDACpC;oDACD,SAAS;iDACT;6CACD;yCACD;qCACD;iCACD;6BACD;yBACD;wBACD,EAAE,MAAM,EAAE,CAAC,EAAE;qBACb;oBACD,EAAE,EAAE,gBAAgB;iBACpB;aACD;YAGD;gBACC,UAAU,EAAE;oBACX,WAAW,EAAE;wBACZ,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;qBACtC;oBACD,IAAI,EAAE,WAAW;iBACjB;aACD;YAGD;gBACC,MAAM,EAAE;oBACP,GAAG,EAAE,OAAO;oBAEZ,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;oBAEvB,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,KAAK,EAAE,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;yBAC7B;qBACD;oBAED,QAAQ,EAAE;wBACT,IAAI,EAAE;4BACL,KAAK,EAAE,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;yBAC7B;qBACD;iBACD;aACD;YAED;gBACC,QAAQ,EAAE;oBACT,GAAG,EAAE,CAAC;oBACN,IAAI,EAAE,MAAM;oBACZ,UAAU,EAAE,CAAC;oBACb,QAAQ,EAAE,CAAC;oBACX,cAAc,EAAE,CAAC;iBACjB;aACD;YAED,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;SACtB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAA,0BAAkB,EAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE;YACrF,UAAU,EAAE,CAAC;YACb,QAAQ,EAAE,CAAC;YACX,cAAc,EAAE,CAAC;SACjB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,uCAAuC,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzG,CAAC;IAEO,uCAAuC,CAC9C,IAA2F,EAC3F,SAAoB,EACpB,SAAe,EACf,OAAa;QAEb,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;QAEjF,MAAM,MAAM,GAAG;YACd;gBACC,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;aACrC;YACD;gBACC,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC;aAC3C;SACD,CAAC;QAEF,OAAO;YACN,UAAU;YACV,MAAM;SACN,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,wBAAwB,CAAC,IAAmB;QACxD,MAAM,SAAS,GAAG,IAAA,aAAK,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAChE,MAAM,OAAO,GAAG,IAAA,aAAK,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAE1D,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3F,MAAM,UAAU,GAAG,SAAS,KAAK,gBAAS,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;QAE1E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAC9C;gBACC,MAAM,EAAE;oBACP,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC;oBAClE,+BAA+B,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;iBAC9C;aACD;YAED;gBACC,UAAU,EAAE;oBACX,IAAI,EAAE;wBACL,aAAa,EAAE;4BACd,MAAM,EAAE,UAAU;4BAClB,IAAI,EAAE,WAAW;4BACjB,QAAQ,EAAE,mBAAY;yBACtB;qBACD;iBACD;aACD;YAED;gBACC,MAAM,EAAE;oBACP,GAAG,EAAE,OAAO;oBAEZ,WAAW,EAAE;wBACZ,IAAI,EAAE,4CAA4C;qBAClD;iBACD;aACD;YAED;gBACC,QAAQ,EAAE;oBACT,GAAG,EAAE,CAAC;oBACN,IAAI,EAAE,MAAM;oBACZ,WAAW,EAAE,CAAC;iBACd;aACD;YAED;gBACC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;aAClB;SACD,CAAC,CAAC;QAGH,MAAM,SAAS,GAAG,IAAA,0BAAkB,EAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE;YACrF,WAAW,EAAE,CAAC;SACd,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,gCAAgC,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAClG,CAAC;IAEO,gCAAgC,CACvC,IAAkD,EAClD,SAAoB,EACpB,SAAe,EACf,OAAa;QAEb,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;QAEjF,MAAM,MAAM,GAAG;YACd;gBACC,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;aACxC;SACD,CAAC;QAEF,OAAO;YACN,UAAU;YACV,MAAM;YACN,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;SAClE,CAAC;IACH,CAAC;CACD;AAztBD,0DAytBC","sourcesContent":["import { Coupon, CouponModel, OrderModel } from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport { Duration } from '@lyxa.ai/core/dist/libraries/mongo/models/shared/duration.model';\nimport { dayjs } from '@lyxa.ai/core/dist/utilities/dayjs';\nimport {\n\tCouponType,\n\tGraphType,\n\tItemType,\n\tOrderType,\n\tRegularOrderStatus,\n\tStatus,\n} from '@lyxa.ai/core/dist/utilities/enum';\nimport { roundBaseCurrency } from '@lyxa.ai/core/dist/utilities/shared';\nimport { LyxaTimezone } from '@lyxa.ai/core/dist/utilities/time';\nimport {\n\tCouponMetricsByTypeDTO,\n\tCouponMetricsOutputDTO,\n\tDateInputDTO,\n\tGraphDTO,\n\tGraphInputDTO,\n\tTotalProfitGraphDTO,\n} from '@modules/coupon/validations/coupon.validation';\nimport { mongoose } from '@typegoose/typegoose';\nimport { fillMissingPeriods } from '@utility/utils';\n\nexport class CouponMetricsRepository {\n\tprivate readonly model: typeof CouponModel;\n\tprivate orderModel: typeof OrderModel;\n\n\tconstructor() {\n\t\tthis.model = CouponModel as typeof CouponModel;\n\t\tthis.orderModel = OrderModel as typeof OrderModel;\n\t}\n\n\tprivate getBaseCouponFilter(): mongoose.FilterQuery<Coupon> {\n\t\treturn {\n\t\t\tupdatedVersion: { $exists: false },\n\t\t\tcouponType: { $nin: [CouponType.REFERRAL_CODE, CouponType.REFERRAL_REWARD] },\n\t\t\tdeletedAt: null,\n\t\t};\n\t}\n\n\tprivate getCouponCreatedWithinDateRangeFilter(\n\t\tstartDate: Date,\n\t\tendDate: Date\n\t): mongoose.FilterQuery<Coupon> {\n\t\treturn {\n\t\t\t...this.getBaseCouponFilter(),\n\t\t\tcreatedAt: {\n\t\t\t\t$gte: startDate,\n\t\t\t\t$lte: endDate,\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate getCouponOrderMatch(startDate: Date, endDate: Date): mongoose.PipelineStage.Match['$match'] {\n\t\treturn {\n\t\t\tplacedAt: {\n\t\t\t\t$gte: startDate,\n\t\t\t\t$lte: endDate,\n\t\t\t},\n\t\t\tstatus: RegularOrderStatus.DELIVERED,\n\t\t\t'adjustedFinance.coupon.coupon': { $ne: null },\n\t\t};\n\t}\n\n\tprivate async getActiveCouponsCount(now: Date) {\n\t\treturn this.model.countDocuments({\n\t\t\t...this.getBaseCouponFilter(),\n\t\t\tstatus: Status.ACTIVE,\n\t\t\t'duration.start': { $lte: now },\n\t\t\t'duration.end': { $gte: now },\n\t\t});\n\t}\n\n\tprivate async getTotalCreatedCoupons(startDate: Date, endDate: Date) {\n\t\treturn this.model\n\t\t\t.find({\n\t\t\t\t...this.getCouponCreatedWithinDateRangeFilter(startDate, endDate),\n\t\t\t})\n\t\t\t.select('_id');\n\t}\n\n\tprivate async getCouponUsageMetrics(\n\t\tstartDate: Date,\n\t\tendDate: Date,\n\t\tcoupons: mongoose.Types.ObjectId[] = []\n\t) {\n\t\tconst match = {\n\t\t\t...this.getCouponOrderMatch(startDate, endDate),\n\t\t\t'adjustedFinance.coupon.coupon': { $in: coupons },\n\t\t};\n\n\t\tconst [result] = await this.orderModel.aggregate<{\n\t\t\ttotalCouponOrders: number;\n\t\t\ttotalRevenue: number;\n\t\t\ttotalProfit: number;\n\t\t\tredeemedCoupons: number;\n\t\t}>([\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: null,\n\n\t\t\t\t\ttotalCouponOrders: { $sum: 1 },\n\n\t\t\t\t\ttotalRevenue: {\n\t\t\t\t\t\t$sum: {\n\t\t\t\t\t\t\t$subtract: [\n\t\t\t\t\t\t\t\t'$adjustedFinance.pricing.subtotal',\n\t\t\t\t\t\t\t\t{ $ifNull: ['$adjustedFinance.shopProfit.totalProfit', 0] },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\n\t\t\t\t\ttotalProfit: {\n\t\t\t\t\t\t$sum: '$adjustedFinance.companyProfit.profitFromItem',\n\t\t\t\t\t},\n\n\t\t\t\t\tuniqueCoupons: {\n\t\t\t\t\t\t$addToSet: '$adjustedFinance.coupon.coupon',\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$project: {\n\t\t\t\t\t_id: 0,\n\t\t\t\t\ttotalCouponOrders: 1,\n\t\t\t\t\ttotalRevenue: 1,\n\t\t\t\t\ttotalProfit: 1,\n\t\t\t\t\tredeemedCoupons: {\n\t\t\t\t\t\t$size: '$uniqueCoupons',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t]);\n\n\t\treturn (\n\t\t\tresult ?? {\n\t\t\t\ttotalCouponOrders: 0,\n\t\t\t\ttotalRevenue: 0,\n\t\t\t\ttotalProfit: 0,\n\t\t\t\tredeemedCoupons: 0,\n\t\t\t}\n\t\t);\n\t}\n\n\tprivate getEffectiveGraphType(type: GraphType | undefined, startDate: Date, endDate: Date): GraphType {\n\t\tif (type !== undefined && type !== null) {\n\t\t\treturn type;\n\t\t}\n\n\t\tconst durationDays = dayjs(endDate).endOf('day').diff(dayjs(startDate).startOf('day'), 'day') + 1;\n\t\treturn durationDays > 31 ? GraphType.MONTHLY : GraphType.DAILY;\n\t}\n\n\tprivate getPeriodKeys(startDate: Date, endDate: Date, type: GraphType): string[] {\n\t\tconst unit = type === GraphType.MONTHLY ? 'month' : 'day';\n\t\tconst format = type === GraphType.MONTHLY ? 'YYYY-MM' : 'YYYY-MM-DD';\n\t\tconst keys: string[] = [];\n\t\tlet current = dayjs(startDate).startOf(unit);\n\t\tconst end = dayjs(endDate).startOf(unit);\n\n\t\twhile (current.isBefore(end) || current.isSame(end)) {\n\t\t\tkeys.push(current.format(format));\n\t\t\tcurrent = current.add(1, unit);\n\t\t}\n\n\t\treturn keys;\n\t}\n\n\tprivate formatPeriodLabel(dateKey: string, type: GraphType): string {\n\t\tif (type === GraphType.MONTHLY) {\n\t\t\treturn new Date(dateKey).toLocaleString('default', { month: 'short' });\n\t\t}\n\n\t\treturn new Date(dateKey).toLocaleString('default', { day: 'numeric', month: 'short' });\n\t}\n\n\tpublic async getCouponMetricsByType(duration: DateInputDTO) {\n\t\tconst startDate = dayjs(duration.startDate).startOf('day').toDate();\n\t\tconst endDate = dayjs(duration.endDate).endOf('day').toDate();\n\n\t\tconst [totalOrders, activeCouponsCount] = await Promise.all([\n\t\t\tthis.orderModel.countDocuments({\n\t\t\t\tplacedAt: {\n\t\t\t\t\t$gte: startDate,\n\t\t\t\t\t$lte: endDate,\n\t\t\t\t},\n\t\t\t\tstatus: RegularOrderStatus.DELIVERED,\n\t\t\t}),\n\t\t\tthis.model.aggregate([\n\t\t\t\t{\n\t\t\t\t\t$match: {\n\t\t\t\t\t\t...this.getBaseCouponFilter(),\n\t\t\t\t\t\tstatus: Status.ACTIVE,\n\t\t\t\t\t\t'duration.start': { $lte: dayjs().toDate() },\n\t\t\t\t\t\t'duration.end': { $gte: dayjs().toDate() },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t$group: {\n\t\t\t\t\t\t_id: '$couponType',\n\t\t\t\t\t\tcount: { $sum: 1 },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t]),\n\t\t]);\n\n\t\tconst activeCouponsMap = activeCouponsCount.reduce(\n\t\t\t(acc, curr) => {\n\t\t\t\tacc[curr._id] = curr.count;\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{} as Record<string, number>\n\t\t);\n\n\t\tconst result = await this.orderModel.aggregate([\n\t\t\t{\n\t\t\t\t$match: {\n\t\t\t\t\t...this.getCouponOrderMatch(startDate, endDate),\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: 'coupons',\n\t\t\t\t\tlocalField: 'adjustedFinance.coupon.coupon',\n\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\tas: 'couponDetails',\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$unwind: '$couponDetails',\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$match: {\n\t\t\t\t\t'couponDetails.couponType': { $nin: [CouponType.REFERRAL_CODE, CouponType.REFERRAL_REWARD] },\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$group: {\n\t\t\t\t\t_id: '$couponDetails.couponType',\n\n\t\t\t\t\tcouponType: { $first: '$couponDetails.couponType' },\n\n\t\t\t\t\ttotalCouponOrders: { $sum: 1 },\n\n\t\t\t\t\ttotalOrderAmount: {\n\t\t\t\t\t\t$sum: '$adjustedFinance.pricing.total',\n\t\t\t\t\t},\n\n\t\t\t\t\ttotalRevenue: {\n\t\t\t\t\t\t$sum: {\n\t\t\t\t\t\t\t$subtract: [\n\t\t\t\t\t\t\t\t'$adjustedFinance.pricing.total',\n\t\t\t\t\t\t\t\t{ $ifNull: ['$adjustedFinance.shopProfit.totalProfit', 0] },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\n\t\t\t\t\tamountSpent: {\n\t\t\t\t\t\t$sum: '$adjustedFinance.pricing.couponDiscount',\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$addFields: {\n\t\t\t\t\taverageOrderValue: {\n\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t{ $eq: ['$totalCouponOrders', 0] },\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$round: [{ $divide: ['$totalOrderAmount', '$totalCouponOrders'] }, 2],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\n\t\t\t\t\tusage: {\n\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t{ $eq: [totalOrders, 0] },\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t$multiply: [\n\t\t\t\t\t\t\t\t\t100,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t$round: [{ $divide: ['$totalCouponOrders', totalOrders] }, 2],\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\n\t\t\t{\n\t\t\t\t$project: {\n\t\t\t\t\t_id: 0,\n\t\t\t\t\tcouponType: 1,\n\t\t\t\t\ttotalCouponOrders: 1,\n\t\t\t\t\ttotalRevenue: { $round: ['$totalRevenue', 2] },\n\t\t\t\t\taverageOrderValue: 1,\n\t\t\t\t\tusage: 1,\n\t\t\t\t\tamountSpent: { $round: ['$amountSpent', 2] },\n\t\t\t\t},\n\t\t\t},\n\t\t]);\n\n\t\tthis.fillMissingRows(result);\n\n\t\tconst tableData = result.map(item => ({\n\t\t\t...item,\n\t\t\tcouponTypeTitle: this.getCouponTypeTitle(item.couponType),\n\t\t\tongoing: activeCouponsMap[item.couponType] ?? 0,\n\t\t\tredemptionRate: 0, // calculate after business discussion on how to define redemption rate by coupon type\n\t\t}));\n\n\t\treturn tableData;\n\t}\n\n\tprivate getCouponTypeTitle(couponType: CouponType) {\n\t\tconst couponTypeTitles: Record<CouponType, string> = {\n\t\t\t[CouponType.GLOBAL]: 'Global',\n\t\t\t[CouponType.SHOPS_CATEGORIES]: 'Shop/Category',\n\t\t\t[CouponType.INDIVIDUAL_STORE]: 'Single Shop',\n\t\t\t[CouponType.INDIVIDUAL_USER]: 'Individual User',\n\t\t\t[CouponType.CUSTOM_COUPON]: 'Customized Coupon',\n\t\t\t[CouponType.REFERRAL_CODE]: 'Referral Code',\n\t\t\t[CouponType.REFERRAL_REWARD]: 'Referral Reward',\n\t\t};\n\t\treturn couponTypeTitles[couponType] || 'Unknown';\n\t}\n\n\tprivate fillMissingRows(data: CouponMetricsByTypeDTO[]) {\n\t\tconst missingTypes = Object.values(CouponType).filter(\n\t\t\ttype =>\n\t\t\t\t![CouponType.REFERRAL_CODE, CouponType.REFERRAL_REWARD].includes(type) &&\n\t\t\t\t!data.some(row => row.couponType === type)\n\t\t);\n\n\t\tmissingTypes.forEach(type => {\n\t\t\tdata.push({\n\t\t\t\tcouponType: type,\n\t\t\t\tcouponTypeTitle: this.getCouponTypeTitle(type),\n\t\t\t\ttotalCouponOrders: 0,\n\t\t\t\ttotalRevenue: 0,\n\t\t\t\taverageOrderValue: 0,\n\t\t\t\tusage: 0,\n\t\t\t\tongoing: 0,\n\t\t\t\tredemptionRate: 0,\n\t\t\t\tamountSpent: 0,\n\t\t\t});\n\t\t});\n\n\t\tdata.sort((a, b) => this.compareCouponTypes(a.couponType, b.couponType));\n\t}\n\n\tprivate compareCouponTypes(a: CouponType, b: CouponType) {\n\t\tconst order = [\n\t\t\tCouponType.GLOBAL,\n\t\t\tCouponType.SHOPS_CATEGORIES,\n\t\t\tCouponType.INDIVIDUAL_STORE,\n\t\t\tCouponType.INDIVIDUAL_USER,\n\t\t\tCouponType.CUSTOM_COUPON,\n\t\t];\n\t\treturn order.indexOf(a) - order.indexOf(b);\n\t}\n\n\tprivate calculateRedemptionRate(totalCreated: number, redeemedCoupons: number) {\n\t\tif (totalCreated <= 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn Number(((redeemedCoupons / totalCreated) * 100).toFixed(2));\n\t}\n\n\tpublic async getCouponMetrics(duration: DateInputDTO): Promise<CouponMetricsOutputDTO> {\n\t\tconst startDate = dayjs(duration.startDate).startOf('day').toDate();\n\t\tconst endDate = dayjs(duration.endDate).endOf('day').toDate();\n\t\tconst now = new Date();\n\n\t\tconst [activeCoupons, createdCoupons] = await Promise.all([\n\t\t\tthis.getActiveCouponsCount(now),\n\t\t\tthis.getTotalCreatedCoupons(startDate, endDate),\n\t\t]);\n\n\t\tconst createdCouponIds = createdCoupons.map(coupon => coupon._id);\n\n\t\tconst usageMetrics = await this.getCouponUsageMetrics(startDate, endDate, createdCouponIds);\n\n\t\tconst redemptionRate = this.calculateRedemptionRate(\n\t\t\tcreatedCouponIds.length,\n\t\t\tusageMetrics.redeemedCoupons\n\t\t);\n\n\t\treturn {\n\t\t\tactiveCoupons,\n\n\t\t\ttotalCreated: createdCouponIds.length,\n\t\t\ttotalRedeemedCoupons: usageMetrics.totalCouponOrders,\n\t\t\tredemptionRate,\n\n\t\t\ttotalCouponOrders: usageMetrics.totalCouponOrders,\n\t\t\ttotalRevenue: roundBaseCurrency(usageMetrics.totalRevenue),\n\t\t\ttotalProfit: roundBaseCurrency(usageMetrics.totalProfit),\n\t\t};\n\t}\n\n\tpublic getOrderGraphMatchStage(startDate: Date, endDate: Date, itemType?: ItemType) {\n\t\treturn {\n\t\t\tplacedAt: {\n\t\t\t\t$gte: startDate,\n\t\t\t\t$lte: endDate,\n\t\t\t},\n\t\t\torderType: OrderType.REGULAR,\n\t\t\tstatus: RegularOrderStatus.DELIVERED,\n\t\t\t...(itemType\n\t\t\t\t? {\n\t\t\t\t\t\titemType,\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t};\n\t}\n\n\tpublic async getCouponOrdersGraphData(data: GraphInputDTO): Promise<GraphDTO> {\n\t\tconst startDate = dayjs(data.startDate).startOf('day').toDate();\n\t\tconst endDate = dayjs(data.endDate).endOf('day').toDate();\n\n\t\tconst graphType = this.getEffectiveGraphType(data.graphType, data.startDate, data.endDate);\n\t\tconst dateFormat = graphType === GraphType.MONTHLY ? '%Y-%m' : '%Y-%m-%d';\n\n\t\tconst result = await this.orderModel.aggregate([\n\t\t\t{\n\t\t\t\t$match: {\n\t\t\t\t\t...this.getOrderGraphMatchStage(startDate, endDate, data.itemType),\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\thasCoupon: {\n\t\t\t\t\t\t$cond: [{ $ifNull: ['$adjustedFinance.coupon.coupon', false] }, 1, 0],\n\t\t\t\t\t},\n\t\t\t\t\tdate: {\n\t\t\t\t\t\t$dateToString: {\n\t\t\t\t\t\t\tformat: dateFormat,\n\t\t\t\t\t\t\tdate: '$placedAt',\n\t\t\t\t\t\t\ttimezone: LyxaTimezone,\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$group: {\n\t\t\t\t\t_id: '$date',\n\n\t\t\t\t\ttotalOrders: { $sum: 1 },\n\n\t\t\t\t\tordersWithCoupon: {\n\t\t\t\t\t\t$sum: '$hasCoupon',\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$project: {\n\t\t\t\t\t_id: 0,\n\t\t\t\t\tdate: '$_id',\n\t\t\t\t\ttotalOrders: 1,\n\t\t\t\t\tordersWithCoupon: 1,\n\t\t\t\t\tordersWithoutCoupon: { $subtract: ['$totalOrders', '$ordersWithCoupon'] },\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$sort: { date: 1 },\n\t\t\t},\n\t\t]);\n\n\t\t// Fill in missing dates with zero for graph continuity\n\t\tconst graphData = fillMissingPeriods(result, data.startDate, data.endDate, graphType, {\n\t\t\ttotalOrders: 0,\n\t\t\tordersWithCoupon: 0,\n\t\t\tordersWithoutCoupon: 0,\n\t\t});\n\n\t\treturn this.convertToCouponOrdersGraphFormat(graphData, graphType, data.startDate, data.endDate);\n\t}\n\n\tprivate convertToCouponOrdersGraphFormat(\n\t\tdata: Array<{ date: string; totalOrders: number; ordersWithCoupon: number; ordersWithoutCoupon: number }>,\n\t\tgraphType: GraphType,\n\t\tstartDate: Date,\n\t\tendDate: Date\n\t): GraphDTO {\n\t\tconst periodKeys = this.getPeriodKeys(startDate, endDate, graphType);\n\t\tconst categories = periodKeys.map(key => this.formatPeriodLabel(key, graphType));\n\n\t\tconst series = [\n\t\t\t{\n\t\t\t\tname: 'Coupon',\n\t\t\t\tdata: data.map(item => item.ordersWithCoupon),\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'No Coupon',\n\t\t\t\tdata: data.map(item => item.ordersWithoutCoupon),\n\t\t\t},\n\t\t];\n\n\t\treturn {\n\t\t\tcategories,\n\t\t\tseries,\n\t\t};\n\t}\n\n\tpublic async getUsersNewVsReturningGraphData(data: GraphInputDTO): Promise<GraphDTO> {\n\t\tconst startDate = dayjs(data.startDate).startOf('day').toDate();\n\t\tconst endDate = dayjs(data.endDate).endOf('day').toDate();\n\n\t\tconst graphType = this.getEffectiveGraphType(data.graphType, data.startDate, data.endDate);\n\t\tconst dateFormat = graphType === GraphType.MONTHLY ? '%Y-%m' : '%Y-%m-%d';\n\n\t\tconst result = await this.orderModel.aggregate([\n\t\t\t// Orders in selected period\n\t\t\t{\n\t\t\t\t$match: {\n\t\t\t\t\t...this.getOrderGraphMatchStage(startDate, endDate, data.itemType),\n\t\t\t\t\t'adjustedFinance.coupon.coupon': { $ne: null },\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// Build graph bucket\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\tdate: {\n\t\t\t\t\t\t$dateToString: {\n\t\t\t\t\t\t\tformat: dateFormat,\n\t\t\t\t\t\t\tdate: '$placedAt',\n\t\t\t\t\t\t\ttimezone: LyxaTimezone,\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// Unique user per period bucket\n\t\t\t{\n\t\t\t\t$group: {\n\t\t\t\t\t_id: {\n\t\t\t\t\t\tuser: '$user',\n\t\t\t\t\t\tdate: '$date',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// Lookup prior order (existence check)\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.user' },\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: {\n\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t{ $eq: ['$user', '$$userId'] },\n\t\t\t\t\t\t\t\t\t\t{ $eq: ['$status', RegularOrderStatus.DELIVERED] },\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t$expr: {\n\t\t\t\t\t\t\t\t\t\t\t\t$lt: [\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\t\t$ifNull: ['$placedAt', '$createdAt'],\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\tstartDate,\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},\n\t\t\t\t\t\t{ $limit: 1 },\n\t\t\t\t\t],\n\t\t\t\t\tas: 'previousOrders',\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// Classify\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\tisReturning: {\n\t\t\t\t\t\t$gt: [{ $size: '$previousOrders' }, 0],\n\t\t\t\t\t},\n\t\t\t\t\tdate: '$_id.date',\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// Aggregate graph metrics\n\t\t\t{\n\t\t\t\t$group: {\n\t\t\t\t\t_id: '$date',\n\n\t\t\t\t\ttotalUsers: { $sum: 1 },\n\n\t\t\t\t\treturningUsers: {\n\t\t\t\t\t\t$sum: {\n\t\t\t\t\t\t\t$cond: ['$isReturning', 1, 0],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\n\t\t\t\t\tnewUsers: {\n\t\t\t\t\t\t$sum: {\n\t\t\t\t\t\t\t$cond: ['$isReturning', 0, 1],\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$project: {\n\t\t\t\t\t_id: 0,\n\t\t\t\t\tdate: '$_id',\n\t\t\t\t\ttotalUsers: 1,\n\t\t\t\t\tnewUsers: 1,\n\t\t\t\t\treturningUsers: 1,\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{ $sort: { date: 1 } },\n\t\t]);\n\n\t\tconst graphData = fillMissingPeriods(result, data.startDate, data.endDate, graphType, {\n\t\t\ttotalUsers: 0,\n\t\t\tnewUsers: 0,\n\t\t\treturningUsers: 0,\n\t\t});\n\n\t\treturn this.convertToUsersNewVsReturningGraphFormat(graphData, graphType, data.startDate, data.endDate);\n\t}\n\n\tprivate convertToUsersNewVsReturningGraphFormat(\n\t\tdata: Array<{ date: string; totalUsers: number; newUsers: number; returningUsers: number }>,\n\t\tgraphType: GraphType,\n\t\tstartDate: Date,\n\t\tendDate: Date\n\t): GraphDTO {\n\t\tconst periodKeys = this.getPeriodKeys(startDate, endDate, graphType);\n\t\tconst categories = periodKeys.map(key => this.formatPeriodLabel(key, graphType));\n\n\t\tconst series = [\n\t\t\t{\n\t\t\t\tname: 'New Users',\n\t\t\t\tdata: data.map(item => item.newUsers),\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'Returning Users',\n\t\t\t\tdata: data.map(item => item.returningUsers),\n\t\t\t},\n\t\t];\n\n\t\treturn {\n\t\t\tcategories,\n\t\t\tseries,\n\t\t};\n\t}\n\n\tpublic async getCouponProfitGraphData(data: GraphInputDTO): Promise<TotalProfitGraphDTO> {\n\t\tconst startDate = dayjs(data.startDate).startOf('day').toDate();\n\t\tconst endDate = dayjs(data.endDate).endOf('day').toDate();\n\n\t\tconst graphType = this.getEffectiveGraphType(data.graphType, data.startDate, data.endDate);\n\t\tconst dateFormat = graphType === GraphType.MONTHLY ? '%Y-%m' : '%Y-%m-%d';\n\n\t\tconst result = await this.orderModel.aggregate([\n\t\t\t{\n\t\t\t\t$match: {\n\t\t\t\t\t...this.getOrderGraphMatchStage(startDate, endDate, data.itemType),\n\t\t\t\t\t'adjustedFinance.coupon.coupon': { $ne: null },\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$addFields: {\n\t\t\t\t\tdate: {\n\t\t\t\t\t\t$dateToString: {\n\t\t\t\t\t\t\tformat: dateFormat,\n\t\t\t\t\t\t\tdate: '$placedAt',\n\t\t\t\t\t\t\ttimezone: LyxaTimezone,\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$group: {\n\t\t\t\t\t_id: '$date',\n\n\t\t\t\t\ttotalProfit: {\n\t\t\t\t\t\t$sum: '$adjustedFinance.companyProfit.totalProfit',\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$project: {\n\t\t\t\t\t_id: 0,\n\t\t\t\t\tdate: '$_id',\n\t\t\t\t\ttotalProfit: 1,\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t{\n\t\t\t\t$sort: { date: 1 },\n\t\t\t},\n\t\t]);\n\n\t\t// Fill in missing dates with zero for graph continuity\n\t\tconst graphData = fillMissingPeriods(result, data.startDate, data.endDate, graphType, {\n\t\t\ttotalProfit: 0,\n\t\t});\n\n\t\treturn this.convertToCouponProfitGraphFormat(graphData, graphType, data.startDate, data.endDate);\n\t}\n\n\tprivate convertToCouponProfitGraphFormat(\n\t\tdata: Array<{ date: string; totalProfit: number }>,\n\t\tgraphType: GraphType,\n\t\tstartDate: Date,\n\t\tendDate: Date\n\t): TotalProfitGraphDTO {\n\t\tconst periodKeys = this.getPeriodKeys(startDate, endDate, graphType);\n\t\tconst categories = periodKeys.map(key => this.formatPeriodLabel(key, graphType));\n\n\t\tconst series = [\n\t\t\t{\n\t\t\t\tname: 'Profit',\n\t\t\t\tdata: data.map(item => item.totalProfit),\n\t\t\t},\n\t\t];\n\n\t\treturn {\n\t\t\tcategories,\n\t\t\tseries,\n\t\t\ttotalProfit: data.reduce((sum, item) => sum + item.totalProfit, 0),\n\t\t};\n\t}\n}\n"]}
|
|
@@ -1704,6 +1704,31 @@ export declare const TotalProfitGraphSchema: z.ZodObject<{
|
|
|
1704
1704
|
}[];
|
|
1705
1705
|
totalProfit?: number | undefined;
|
|
1706
1706
|
}>;
|
|
1707
|
+
export declare const CouponListRequestSchema: z.ZodObject<{
|
|
1708
|
+
page: z.ZodNumber;
|
|
1709
|
+
size: z.ZodNumber;
|
|
1710
|
+
couponTypes: z.ZodArray<z.ZodNativeEnum<typeof CouponType>, "many">;
|
|
1711
|
+
fromDate: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, Date, string>, z.ZodDate]>, Date, string | Date>, Date, string | Date>;
|
|
1712
|
+
toDate: z.ZodEffects<z.ZodEffects<z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, Date, string>, z.ZodDate]>, Date, string | Date>, Date, string | Date>;
|
|
1713
|
+
status: z.ZodOptional<z.ZodNativeEnum<typeof Status>>;
|
|
1714
|
+
searchKey: z.ZodOptional<z.ZodString> | z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>;
|
|
1715
|
+
}, "strip", z.ZodTypeAny, {
|
|
1716
|
+
page: number;
|
|
1717
|
+
size: number;
|
|
1718
|
+
couponTypes: CouponType[];
|
|
1719
|
+
fromDate: Date;
|
|
1720
|
+
toDate: Date;
|
|
1721
|
+
status?: Status | undefined;
|
|
1722
|
+
searchKey?: string | undefined;
|
|
1723
|
+
}, {
|
|
1724
|
+
page: number;
|
|
1725
|
+
size: number;
|
|
1726
|
+
couponTypes: CouponType[];
|
|
1727
|
+
fromDate: string | Date;
|
|
1728
|
+
toDate: string | Date;
|
|
1729
|
+
status?: Status | undefined;
|
|
1730
|
+
searchKey?: string | undefined;
|
|
1731
|
+
}>;
|
|
1707
1732
|
export declare const CouponMetricsResponseSchema: z.ZodObject<{
|
|
1708
1733
|
success: z.ZodBoolean;
|
|
1709
1734
|
message: z.ZodString | z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
|
|
@@ -2283,4 +2308,5 @@ export type CouponMetricsOutputDTO = DTO<typeof CouponMetricsOutputSchema>;
|
|
|
2283
2308
|
export type CouponMetricsByTypeDTO = DTO<typeof CouponMetricsByTypeSchema>;
|
|
2284
2309
|
export type GraphDTO = DTO<typeof GraphSchema>;
|
|
2285
2310
|
export type TotalProfitGraphDTO = DTO<typeof TotalProfitGraphSchema>;
|
|
2311
|
+
export type CouponListRequestDTO = DTO<typeof CouponListRequestSchema>;
|
|
2286
2312
|
//# sourceMappingURL=coupon.validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coupon.validation.d.ts","sourceRoot":"/","sources":["modules/coupon/validations/coupon.validation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coupon.validation.d.ts","sourceRoot":"/","sources":["modules/coupon/validations/coupon.validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TotalProfitGraphResponseSchema = exports.GraphResponseSchema = exports.CouponMetricsByTypeResponseSchema = exports.CouponMetricsResponseSchema = exports.TotalProfitGraphSchema = exports.GraphSchema = exports.CouponMetricsByTypeSchema = exports.CouponMetricsOutputSchema = exports.GraphInputSchema = exports.DateInputSchema = exports.BaseDateInputSchema = exports.IsNewUserGiftBoxShownSchema = exports.DeviceIdSchema = exports.CouponValidationResponseSchema = exports.CheckExistingNewUserCouponOutputSchema = exports.UpdateCouponStatusSchema = exports.CouponCodeSchema = exports.CouponValidationOutputSchema = exports.ValidateCouponSchema = exports.GetUserCouponSchema = exports.UpdateCouponSchema = exports.CouponIdValidationSchema = exports.CouponSchema = exports.CouponValidationSchema = exports.GetUserCouponsResponseSchema = exports.baseFields = exports.couponFields = void 0;
|
|
3
|
+
exports.TotalProfitGraphResponseSchema = exports.GraphResponseSchema = exports.CouponMetricsByTypeResponseSchema = exports.CouponMetricsResponseSchema = exports.CouponListRequestSchema = exports.TotalProfitGraphSchema = exports.GraphSchema = exports.CouponMetricsByTypeSchema = exports.CouponMetricsOutputSchema = exports.GraphInputSchema = exports.DateInputSchema = exports.BaseDateInputSchema = exports.IsNewUserGiftBoxShownSchema = exports.DeviceIdSchema = exports.CouponValidationResponseSchema = exports.CheckExistingNewUserCouponOutputSchema = exports.UpdateCouponStatusSchema = exports.CouponCodeSchema = exports.CouponValidationOutputSchema = exports.ValidateCouponSchema = exports.GetUserCouponSchema = exports.UpdateCouponSchema = exports.CouponIdValidationSchema = exports.CouponSchema = exports.CouponValidationSchema = exports.GetUserCouponsResponseSchema = exports.baseFields = exports.couponFields = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const global_validation_1 = require("@lyxa.ai/core/dist/utilities/validation/global-validation");
|
|
6
6
|
const enum_1 = require("@lyxa.ai/core/dist/utilities/enum");
|
|
@@ -181,6 +181,15 @@ exports.GraphSchema = zod_1.z.object({
|
|
|
181
181
|
exports.TotalProfitGraphSchema = exports.GraphSchema.extend({
|
|
182
182
|
totalProfit: global_validation_1.ZodValidation.number('Total profit').default(0),
|
|
183
183
|
});
|
|
184
|
+
exports.CouponListRequestSchema = zod_1.z.object({
|
|
185
|
+
page: global_validation_1.ZodValidation.number('Page', { isInt: true, isPositive: true, min: 1 }),
|
|
186
|
+
size: global_validation_1.ZodValidation.number('Page', { isInt: true, isPositive: true, min: 1, max: 100 }),
|
|
187
|
+
couponTypes: global_validation_1.ZodValidation.array(global_validation_1.ZodValidation.enumType(enum_1.CouponType, 'Coupon type'), 'Coupon types'),
|
|
188
|
+
fromDate: global_validation_1.ZodValidation.date('From date'),
|
|
189
|
+
toDate: global_validation_1.ZodValidation.date('To date'),
|
|
190
|
+
status: global_validation_1.ZodValidation.enumType(enum_1.Status, 'Status').optional(),
|
|
191
|
+
searchKey: global_validation_1.ZodValidation.string('Search key').optional(),
|
|
192
|
+
});
|
|
184
193
|
exports.CouponMetricsResponseSchema = (0, common_validation_1.createResponseSchema)(exports.CouponMetricsOutputSchema);
|
|
185
194
|
exports.CouponMetricsByTypeResponseSchema = (0, common_validation_1.createResponseSchema)(exports.CouponMetricsByTypeSchema.array());
|
|
186
195
|
exports.GraphResponseSchema = (0, common_validation_1.createResponseSchema)(exports.GraphSchema);
|
|
@@ -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 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>;\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});\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>;\n"]}
|
|
@@ -34,9 +34,9 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
34
34
|
updatedAt?: Date | null | undefined;
|
|
35
35
|
title?: string | undefined;
|
|
36
36
|
subTitle?: string | undefined;
|
|
37
|
+
archivedAt?: Date | null | undefined;
|
|
37
38
|
discountOptions?: number[] | undefined;
|
|
38
39
|
maxDiscountCaps?: number[] | undefined;
|
|
39
|
-
archivedAt?: Date | null | undefined;
|
|
40
40
|
} | {
|
|
41
41
|
documents: {
|
|
42
42
|
status: import("@lyxa.ai/core/dist/utilities/enum").LimitedTimeOfferCampaignStatus;
|
|
@@ -48,9 +48,9 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
48
48
|
updatedAt?: Date | null | undefined;
|
|
49
49
|
title?: string | undefined;
|
|
50
50
|
subTitle?: string | undefined;
|
|
51
|
+
archivedAt?: Date | null | undefined;
|
|
51
52
|
discountOptions?: number[] | undefined;
|
|
52
53
|
maxDiscountCaps?: number[] | undefined;
|
|
53
|
-
archivedAt?: Date | null | undefined;
|
|
54
54
|
}[];
|
|
55
55
|
metadata?: {
|
|
56
56
|
page: number;
|
|
@@ -77,9 +77,9 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
77
77
|
updatedAt?: Date | null | undefined;
|
|
78
78
|
title?: string | undefined;
|
|
79
79
|
subTitle?: string | undefined;
|
|
80
|
+
archivedAt?: Date | null | undefined;
|
|
80
81
|
discountOptions?: number[] | undefined;
|
|
81
82
|
maxDiscountCaps?: number[] | undefined;
|
|
82
|
-
archivedAt?: Date | null | undefined;
|
|
83
83
|
} | {
|
|
84
84
|
documents: ({
|
|
85
85
|
status: import("@lyxa.ai/core/dist/utilities/enum").LimitedTimeOfferCampaignStatus;
|
|
@@ -91,41 +91,9 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
91
91
|
updatedAt?: Date | null | undefined;
|
|
92
92
|
title?: string | undefined;
|
|
93
93
|
subTitle?: string | undefined;
|
|
94
|
+
archivedAt?: Date | null | undefined;
|
|
94
95
|
discountOptions?: number[] | undefined;
|
|
95
96
|
maxDiscountCaps?: number[] | undefined;
|
|
96
|
-
archivedAt?: Date | null | undefined;
|
|
97
|
-
} | null)[];
|
|
98
|
-
metadata?: {
|
|
99
|
-
page: number;
|
|
100
|
-
size: number;
|
|
101
|
-
totalElements: number;
|
|
102
|
-
totalPages: number;
|
|
103
|
-
} | undefined;
|
|
104
|
-
} | null | undefined;
|
|
105
|
-
};
|
|
106
|
-
meta: object;
|
|
107
|
-
}>;
|
|
108
|
-
getActive: import("@trpc/server").TRPCQueryProcedure<{
|
|
109
|
-
input: {
|
|
110
|
-
latitude?: number | undefined;
|
|
111
|
-
longitude?: number | undefined;
|
|
112
|
-
};
|
|
113
|
-
output: {
|
|
114
|
-
message: string;
|
|
115
|
-
success: boolean;
|
|
116
|
-
data?: {
|
|
117
|
-
_id: string | import("mongoose").Types.ObjectId;
|
|
118
|
-
title?: string | undefined;
|
|
119
|
-
subtitle?: string | undefined;
|
|
120
|
-
startTime?: Date | null | undefined;
|
|
121
|
-
endTime?: Date | null | undefined;
|
|
122
|
-
} | {
|
|
123
|
-
documents: ({
|
|
124
|
-
_id: string | import("mongoose").Types.ObjectId;
|
|
125
|
-
title?: string | undefined;
|
|
126
|
-
subtitle?: string | undefined;
|
|
127
|
-
startTime?: Date | null | undefined;
|
|
128
|
-
endTime?: Date | null | undefined;
|
|
129
97
|
} | null)[];
|
|
130
98
|
metadata?: {
|
|
131
99
|
page: number;
|
|
@@ -154,9 +122,9 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
154
122
|
updatedAt?: Date | null | undefined;
|
|
155
123
|
title?: string | undefined;
|
|
156
124
|
subTitle?: string | undefined;
|
|
125
|
+
archivedAt?: Date | null | undefined;
|
|
157
126
|
discountOptions?: number[] | undefined;
|
|
158
127
|
maxDiscountCaps?: number[] | undefined;
|
|
159
|
-
archivedAt?: Date | null | undefined;
|
|
160
128
|
} | {
|
|
161
129
|
documents: {
|
|
162
130
|
status: import("@lyxa.ai/core/dist/utilities/enum").LimitedTimeOfferCampaignStatus;
|
|
@@ -168,9 +136,9 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
168
136
|
updatedAt?: Date | null | undefined;
|
|
169
137
|
title?: string | undefined;
|
|
170
138
|
subTitle?: string | undefined;
|
|
139
|
+
archivedAt?: Date | null | undefined;
|
|
171
140
|
discountOptions?: number[] | undefined;
|
|
172
141
|
maxDiscountCaps?: number[] | undefined;
|
|
173
|
-
archivedAt?: Date | null | undefined;
|
|
174
142
|
}[];
|
|
175
143
|
metadata?: {
|
|
176
144
|
page: number;
|
|
@@ -243,9 +211,9 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
243
211
|
updatedAt?: Date | null | undefined;
|
|
244
212
|
title?: string | undefined;
|
|
245
213
|
subTitle?: string | undefined;
|
|
214
|
+
archivedAt?: Date | null | undefined;
|
|
246
215
|
discountOptions?: number[] | undefined;
|
|
247
216
|
maxDiscountCaps?: number[] | undefined;
|
|
248
|
-
archivedAt?: Date | null | undefined;
|
|
249
217
|
} | {
|
|
250
218
|
documents: {
|
|
251
219
|
status: import("@lyxa.ai/core/dist/utilities/enum").LimitedTimeOfferCampaignStatus;
|
|
@@ -257,9 +225,9 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
257
225
|
updatedAt?: Date | null | undefined;
|
|
258
226
|
title?: string | undefined;
|
|
259
227
|
subTitle?: string | undefined;
|
|
228
|
+
archivedAt?: Date | null | undefined;
|
|
260
229
|
discountOptions?: number[] | undefined;
|
|
261
230
|
maxDiscountCaps?: number[] | undefined;
|
|
262
|
-
archivedAt?: Date | null | undefined;
|
|
263
231
|
}[];
|
|
264
232
|
metadata?: {
|
|
265
233
|
page: number;
|
|
@@ -271,6 +239,38 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
271
239
|
};
|
|
272
240
|
meta: object;
|
|
273
241
|
}>;
|
|
242
|
+
getActive: import("@trpc/server").TRPCQueryProcedure<{
|
|
243
|
+
input: {
|
|
244
|
+
latitude: number;
|
|
245
|
+
longitude: number;
|
|
246
|
+
};
|
|
247
|
+
output: {
|
|
248
|
+
message: string;
|
|
249
|
+
success: boolean;
|
|
250
|
+
data?: {
|
|
251
|
+
_id: string | import("mongoose").Types.ObjectId;
|
|
252
|
+
title?: string | undefined;
|
|
253
|
+
subtitle?: string | undefined;
|
|
254
|
+
startTime?: Date | null | undefined;
|
|
255
|
+
endTime?: Date | null | undefined;
|
|
256
|
+
} | {
|
|
257
|
+
documents: ({
|
|
258
|
+
_id: string | import("mongoose").Types.ObjectId;
|
|
259
|
+
title?: string | undefined;
|
|
260
|
+
subtitle?: string | undefined;
|
|
261
|
+
startTime?: Date | null | undefined;
|
|
262
|
+
endTime?: Date | null | undefined;
|
|
263
|
+
} | null)[];
|
|
264
|
+
metadata?: {
|
|
265
|
+
page: number;
|
|
266
|
+
size: number;
|
|
267
|
+
totalElements: number;
|
|
268
|
+
totalPages: number;
|
|
269
|
+
} | undefined;
|
|
270
|
+
} | null | undefined;
|
|
271
|
+
};
|
|
272
|
+
meta: object;
|
|
273
|
+
}>;
|
|
274
274
|
cancel: import("@trpc/server").TRPCMutationProcedure<{
|
|
275
275
|
input: {
|
|
276
276
|
campaignId: string | import("mongoose").Types.ObjectId;
|
|
@@ -10,8 +10,8 @@ const enum_1 = require("@lyxa.ai/core/dist/utilities/enum");
|
|
|
10
10
|
const error_handler_1 = require("@lyxa.ai/core/dist/utilities/error-handler");
|
|
11
11
|
const response_1 = require("@lyxa.ai/core/dist/utilities/response");
|
|
12
12
|
const validation_1 = require("@lyxa.ai/core/dist/utilities/validation");
|
|
13
|
+
const limited_time_offer_service_1 = require("../../limited-time-offer/limited-time-offer.service");
|
|
13
14
|
const crmProcedure = (0, auth_1.createAuthenticatedProcedure)({ entityTypes: [enum_1.AuthEntityType.CRM] });
|
|
14
|
-
const sellerProcedure = (0, auth_1.createAuthenticatedProcedure)({ entityTypes: [enum_1.AuthEntityType.SELLER] });
|
|
15
15
|
exports.campaignRouter = (0, trpc_1.createTRPCRouter)({
|
|
16
16
|
create: crmProcedure
|
|
17
17
|
.input(limited_time_offer_campaign_validation_1.CreateLtoCampaignSchema)
|
|
@@ -26,13 +26,6 @@ exports.campaignRouter = (0, trpc_1.createTRPCRouter)({
|
|
|
26
26
|
const result = await limited_time_offer_campaign_service_1.ltoCampaignService.getCurrent();
|
|
27
27
|
return (0, response_1.response)('Current campaign fetched successfully', result);
|
|
28
28
|
})),
|
|
29
|
-
getActive: trpc_1.publicProcedure
|
|
30
|
-
.input(limited_time_offer_campaign_validation_1.GetActiveCampaignSchema)
|
|
31
|
-
.output(limited_time_offer_campaign_validation_1.LtoActiveCampaignResponseSchema)
|
|
32
|
-
.query(async ({ input }) => error_handler_1.ErrorHandler.wrapAsync(async () => {
|
|
33
|
-
const result = await limited_time_offer_campaign_service_1.ltoCampaignService.getActive(input);
|
|
34
|
-
return (0, response_1.response)('Active campaign fetched successfully', result);
|
|
35
|
-
})),
|
|
36
29
|
getById: crmProcedure
|
|
37
30
|
.input(zod_1.z.object({ campaignId: validation_1.ZodValidation.objectId() }))
|
|
38
31
|
.output(limited_time_offer_campaign_validation_1.LtoCampaignResponseSchema)
|
|
@@ -54,11 +47,18 @@ exports.campaignRouter = (0, trpc_1.createTRPCRouter)({
|
|
|
54
47
|
const result = await limited_time_offer_campaign_service_1.ltoCampaignService.update(input);
|
|
55
48
|
return (0, response_1.response)('Campaign updated successfully', result);
|
|
56
49
|
})),
|
|
50
|
+
getActive: trpc_1.publicProcedure
|
|
51
|
+
.input(limited_time_offer_campaign_validation_1.GetActiveCampaignSchema)
|
|
52
|
+
.output(limited_time_offer_campaign_validation_1.LtoActiveCampaignResponseSchema)
|
|
53
|
+
.query(async ({ input }) => error_handler_1.ErrorHandler.wrapAsync(async () => {
|
|
54
|
+
const result = await limited_time_offer_service_1.limitedTimeOfferService.getActiveCampaign(input);
|
|
55
|
+
return (0, response_1.response)('Active campaign fetched successfully', result);
|
|
56
|
+
})),
|
|
57
57
|
cancel: crmProcedure
|
|
58
58
|
.input(zod_1.z.object({ campaignId: validation_1.ZodValidation.objectId() }))
|
|
59
59
|
.output(limited_time_offer_campaign_validation_1.LtoEmptyResponseSchema)
|
|
60
60
|
.mutation(async ({ input }) => error_handler_1.ErrorHandler.wrapAsync(async () => {
|
|
61
|
-
await
|
|
61
|
+
await limited_time_offer_service_1.limitedTimeOfferService.cancelCampaign(input.campaignId);
|
|
62
62
|
return (0, response_1.response)('Campaign cancelled successfully');
|
|
63
63
|
})),
|
|
64
64
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"campaign.router.js","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/campaign.router.ts"],"names":[],"mappings":";;;AAAA,6BAAsB;AACtB,wGAA6F;AAC7F,qGAUkD;AAClD,4DAAoF;AACpF,6EAAgG;AAChG,4DAAiE;AACjE,8EAAwE;AACxE,oEAA+D;AAC/D,wEAAsE;
|
|
1
|
+
{"version":3,"file":"campaign.router.js","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/campaign.router.ts"],"names":[],"mappings":"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","sourcesContent":["import {z} from 'zod';\nimport {ltoCampaignService as service} from './services/limited-time-offer-campaign.service';\nimport {\n CreateLtoCampaignSchema,\n GetActiveCampaignSchema,\n GetLtoCampaignHistorySchema,\n LtoActiveCampaignResponseSchema,\n LtoCampaignHistoryResponseSchema,\n LtoCampaignNullableResponseSchema,\n LtoCampaignResponseSchema,\n LtoEmptyResponseSchema,\n UpdateLtoCampaignSchema,\n} from './limited-time-offer-campaign.validation';\nimport {createTRPCRouter, publicProcedure} from '@lyxa.ai/core/dist/libraries/trpc';\nimport {createAuthenticatedProcedure} from '@lyxa.ai/core/dist/libraries/trpc/middlewares/auth';\nimport {AuthEntityType} from '@lyxa.ai/core/dist/utilities/enum';\nimport {ErrorHandler} from '@lyxa.ai/core/dist/utilities/error-handler';\nimport {response} from '@lyxa.ai/core/dist/utilities/response';\nimport {ZodValidation} from '@lyxa.ai/core/dist/utilities/validation';\nimport {limitedTimeOfferService as orchestrator} from '@modules/limited-time-offer/limited-time-offer.service';\n\nconst crmProcedure = createAuthenticatedProcedure({entityTypes: [AuthEntityType.CRM]});\n\nexport const campaignRouter = createTRPCRouter({\n create: crmProcedure\n .input(CreateLtoCampaignSchema)\n .output(LtoCampaignResponseSchema)\n .mutation(async ({input}) =>\n ErrorHandler.wrapAsync(async () => {\n const result = await service.create(input);\n return response('Campaign created successfully', result);\n })\n ),\n\n getCurrent: createAuthenticatedProcedure({entityTypes: [AuthEntityType.CRM, AuthEntityType.SELLER]})\n .output(LtoCampaignNullableResponseSchema)\n .query(async () =>\n ErrorHandler.wrapAsync(async () => {\n const result = await service.getCurrent();\n return response('Current campaign fetched successfully', result);\n })\n ),\n\n getById: crmProcedure\n .input(z.object({campaignId: ZodValidation.objectId()}))\n .output(LtoCampaignResponseSchema)\n .query(async ({input}) =>\n ErrorHandler.wrapAsync(async () => {\n const result = await service.getById(input.campaignId);\n return response('Campaign fetched successfully', result);\n })\n ),\n\n getHistory: crmProcedure\n .input(GetLtoCampaignHistorySchema)\n .output(LtoCampaignHistoryResponseSchema)\n .query(async ({input}) =>\n ErrorHandler.wrapAsync(async () => {\n const result = await service.getHistory(input);\n return response('Campaign history fetched successfully', result);\n })\n ),\n\n update: crmProcedure\n .input(UpdateLtoCampaignSchema)\n .output(LtoCampaignResponseSchema)\n .mutation(async ({input}) =>\n ErrorHandler.wrapAsync(async () => {\n const result = await service.update(input);\n return response('Campaign updated successfully', result);\n })\n ),\n\n /** @deprecated use lto.getActive */\n getActive: publicProcedure\n .input(GetActiveCampaignSchema)\n .output(LtoActiveCampaignResponseSchema)\n .query(async ({input}) =>\n ErrorHandler.wrapAsync(async () => {\n const result = await orchestrator.getActiveCampaign(input);\n return response('Active campaign fetched successfully', result);\n })\n ),\n\n /** @deprecated use lto.cancel */\n cancel: crmProcedure\n .input(z.object({campaignId: ZodValidation.objectId()}))\n .output(LtoEmptyResponseSchema)\n .mutation(async ({input}) =>\n ErrorHandler.wrapAsync(async () => {\n await orchestrator.cancelCampaign(input.campaignId);\n return response('Campaign cancelled successfully');\n })\n ),\n});\n"]}
|