@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.
Files changed (509) hide show
  1. package/dist/lib/index.d.ts +946 -53
  2. package/dist/lib/index.d.ts.map +1 -1
  3. package/dist/lib/index.js +1 -1
  4. package/dist/lib/index.js.map +1 -1
  5. package/dist/lib/modules/coupon/routers/coupon.router.d.ts +647 -0
  6. package/dist/lib/modules/coupon/routers/coupon.router.d.ts.map +1 -1
  7. package/dist/lib/modules/coupon/routers/coupon.router.js +7 -0
  8. package/dist/lib/modules/coupon/routers/coupon.router.js.map +1 -1
  9. package/dist/lib/modules/coupon/services/coupon.service.d.ts +8 -1
  10. package/dist/lib/modules/coupon/services/coupon.service.d.ts.map +1 -1
  11. package/dist/lib/modules/coupon/services/coupon.service.js +231 -27
  12. package/dist/lib/modules/coupon/services/coupon.service.js.map +1 -1
  13. package/dist/lib/modules/coupon/services/patterns/repository/CouponMetricsRepository.d.ts.map +1 -1
  14. package/dist/lib/modules/coupon/services/patterns/repository/CouponMetricsRepository.js +17 -4
  15. package/dist/lib/modules/coupon/services/patterns/repository/CouponMetricsRepository.js.map +1 -1
  16. package/dist/lib/modules/coupon/validations/coupon.validation.d.ts +26 -0
  17. package/dist/lib/modules/coupon/validations/coupon.validation.d.ts.map +1 -1
  18. package/dist/lib/modules/coupon/validations/coupon.validation.js +10 -1
  19. package/dist/lib/modules/coupon/validations/coupon.validation.js.map +1 -1
  20. package/dist/lib/modules/limited-time-offer/campaign/campaign.router.d.ts +40 -40
  21. package/dist/lib/modules/limited-time-offer/campaign/campaign.router.js +9 -9
  22. package/dist/lib/modules/limited-time-offer/campaign/campaign.router.js.map +1 -1
  23. package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts +0 -1
  24. package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts.map +1 -1
  25. package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.js +2 -5
  26. package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.js.map +1 -1
  27. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts +1 -0
  28. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts.map +1 -1
  29. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.js +2 -0
  30. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.js.map +1 -1
  31. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts +53 -40
  32. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts.map +1 -1
  33. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.js +3 -2
  34. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.js.map +1 -1
  35. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts +3 -9
  36. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts.map +1 -1
  37. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.js +4 -7
  38. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.js.map +1 -1
  39. package/dist/lib/modules/limited-time-offer/config/limited-time-offer-config.service.d.ts +1 -0
  40. package/dist/lib/modules/limited-time-offer/config/limited-time-offer-config.service.d.ts.map +1 -1
  41. package/dist/lib/modules/limited-time-offer/config/limited-time-offer-config.service.js +15 -0
  42. package/dist/lib/modules/limited-time-offer/config/limited-time-offer-config.service.js.map +1 -1
  43. package/dist/lib/modules/limited-time-offer/limited-time-offer.router.d.ts +88 -42
  44. package/dist/lib/modules/limited-time-offer/limited-time-offer.router.d.ts.map +1 -1
  45. package/dist/lib/modules/limited-time-offer/limited-time-offer.router.js +23 -0
  46. package/dist/lib/modules/limited-time-offer/limited-time-offer.router.js.map +1 -1
  47. package/dist/lib/modules/limited-time-offer/limited-time-offer.service.d.ts +19 -0
  48. package/dist/lib/modules/limited-time-offer/limited-time-offer.service.d.ts.map +1 -0
  49. package/dist/lib/modules/limited-time-offer/limited-time-offer.service.js +84 -0
  50. package/dist/lib/modules/limited-time-offer/limited-time-offer.service.js.map +1 -0
  51. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.builder.d.ts +13 -0
  52. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.builder.d.ts.map +1 -0
  53. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.builder.js +22 -0
  54. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.builder.js.map +1 -0
  55. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.d.ts +20 -0
  56. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.d.ts.map +1 -0
  57. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.js +26 -0
  58. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.js.map +1 -0
  59. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.service.d.ts +8 -0
  60. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.service.d.ts.map +1 -0
  61. package/dist/lib/modules/{tournament/notification/notification.scheduler.service.js → limited-time-offer/notification/limited-time-offer-notification.service.js} +15 -28
  62. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.service.js.map +1 -0
  63. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.type.d.ts +5 -0
  64. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.type.d.ts.map +1 -0
  65. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.type.js +3 -0
  66. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.type.js.map +1 -0
  67. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.js +1 -1
  68. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.js.map +1 -1
  69. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.repository.d.ts +13 -0
  70. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.repository.d.ts.map +1 -1
  71. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.repository.js +75 -0
  72. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.repository.js.map +1 -1
  73. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts +6 -2
  74. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts.map +1 -1
  75. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts +1 -0
  76. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts.map +1 -0
  77. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.service.js +2 -0
  78. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.service.js.map +1 -0
  79. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts +6 -1
  80. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts.map +1 -1
  81. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.js +3 -2
  82. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.js.map +1 -1
  83. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts +12 -2
  84. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts.map +1 -1
  85. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.js +80 -27
  86. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.js.map +1 -1
  87. package/dist/lib/modules/marketing/services/marketing.service.d.ts +1 -0
  88. package/dist/lib/modules/marketing/services/marketing.service.d.ts.map +1 -1
  89. package/dist/lib/modules/marketing/services/marketing.service.js +9 -0
  90. package/dist/lib/modules/marketing/services/marketing.service.js.map +1 -1
  91. package/dist/lib/modules/marketing/validations/product-marketing.validation.d.ts +2 -2
  92. package/dist/lib/modules/punch-marketing-history/routers/punch-marketing-history.router.d.ts +1 -1
  93. package/dist/lib/modules/punch-marketing-history/validations/punch-marketing-history.validation.d.ts +2 -2
  94. package/dist/lib/modules/tournament/config/config.builder.d.ts.map +1 -1
  95. package/dist/lib/modules/tournament/config/config.builder.js +4 -0
  96. package/dist/lib/modules/tournament/config/config.builder.js.map +1 -1
  97. package/dist/lib/modules/tournament/config/config.repository.d.ts +8 -2
  98. package/dist/lib/modules/tournament/config/config.repository.d.ts.map +1 -1
  99. package/dist/lib/modules/tournament/config/config.repository.js +30 -1
  100. package/dist/lib/modules/tournament/config/config.repository.js.map +1 -1
  101. package/dist/lib/modules/tournament/config/config.router.d.ts +92 -2
  102. package/dist/lib/modules/tournament/config/config.router.d.ts.map +1 -1
  103. package/dist/lib/modules/tournament/config/config.types.d.ts +15 -0
  104. package/dist/lib/modules/tournament/config/config.types.d.ts.map +1 -0
  105. package/dist/lib/modules/tournament/config/config.types.js +3 -0
  106. package/dist/lib/modules/tournament/config/config.types.js.map +1 -0
  107. package/dist/lib/modules/tournament/config/config.validation.d.ts +395 -15
  108. package/dist/lib/modules/tournament/config/config.validation.d.ts.map +1 -1
  109. package/dist/lib/modules/tournament/config/config.validation.js +17 -2
  110. package/dist/lib/modules/tournament/config/config.validation.js.map +1 -1
  111. package/dist/lib/modules/tournament/integration/integration.factory.d.ts +4 -0
  112. package/dist/lib/modules/tournament/integration/integration.factory.d.ts.map +1 -0
  113. package/dist/lib/modules/tournament/integration/integration.factory.js +18 -0
  114. package/dist/lib/modules/tournament/integration/integration.factory.js.map +1 -0
  115. package/dist/lib/modules/tournament/integration/interfaces/ITournamentService.d.ts +36 -0
  116. package/dist/lib/modules/tournament/integration/interfaces/ITournamentService.d.ts.map +1 -0
  117. package/dist/lib/modules/tournament/integration/interfaces/ITournamentService.js +3 -0
  118. package/dist/lib/modules/tournament/integration/interfaces/ITournamentService.js.map +1 -0
  119. package/dist/lib/modules/tournament/integration/providers/api-football/api-football.provider.d.ts +14 -0
  120. package/dist/lib/modules/tournament/integration/providers/api-football/api-football.provider.d.ts.map +1 -0
  121. package/dist/lib/modules/tournament/integration/providers/api-football/api-football.provider.js +92 -0
  122. package/dist/lib/modules/tournament/integration/providers/api-football/api-football.provider.js.map +1 -0
  123. package/dist/lib/modules/tournament/integration/providers/api-football/api-football.types.d.ts +51 -0
  124. package/dist/lib/modules/tournament/integration/providers/api-football/api-football.types.d.ts.map +1 -0
  125. package/dist/lib/modules/tournament/integration/providers/api-football/api-football.types.js +3 -0
  126. package/dist/lib/modules/tournament/integration/providers/api-football/api-football.types.js.map +1 -0
  127. package/dist/lib/modules/tournament/integration/providers/api-football/index.d.ts +3 -0
  128. package/dist/lib/modules/tournament/integration/providers/api-football/index.d.ts.map +1 -0
  129. package/dist/lib/modules/tournament/integration/providers/api-football/index.js +19 -0
  130. package/dist/lib/modules/tournament/integration/providers/api-football/index.js.map +1 -0
  131. package/dist/lib/modules/tournament/integration/providers/index.d.ts +3 -0
  132. package/dist/lib/modules/tournament/integration/providers/index.d.ts.map +1 -0
  133. package/dist/lib/modules/tournament/integration/providers/index.js +19 -0
  134. package/dist/lib/modules/tournament/integration/providers/index.js.map +1 -0
  135. package/dist/lib/modules/tournament/integration/providers/mock.provider.d.ts +7 -0
  136. package/dist/lib/modules/tournament/integration/providers/mock.provider.d.ts.map +1 -0
  137. package/dist/lib/modules/tournament/integration/providers/mock.provider.js +22 -0
  138. package/dist/lib/modules/tournament/integration/providers/mock.provider.js.map +1 -0
  139. package/dist/lib/modules/tournament/integration/tournamentService.d.ts +9 -0
  140. package/dist/lib/modules/tournament/integration/tournamentService.d.ts.map +1 -0
  141. package/dist/lib/modules/tournament/integration/tournamentService.js +20 -0
  142. package/dist/lib/modules/tournament/integration/tournamentService.js.map +1 -0
  143. package/dist/lib/modules/tournament/match/events/evaluate-predictions.consumer.d.ts.map +1 -1
  144. package/dist/lib/modules/tournament/match/events/evaluate-predictions.consumer.js +47 -11
  145. package/dist/lib/modules/tournament/match/events/evaluate-predictions.consumer.js.map +1 -1
  146. package/dist/lib/modules/tournament/match/events/evaluate-predictions.event.d.ts +7 -3
  147. package/dist/lib/modules/tournament/match/events/evaluate-predictions.event.d.ts.map +1 -1
  148. package/dist/lib/modules/tournament/match/events/evaluate-predictions.event.js +1 -1
  149. package/dist/lib/modules/tournament/match/events/evaluate-predictions.event.js.map +1 -1
  150. package/dist/lib/modules/tournament/match/events/match-evaluation.orchestrator.d.ts +14 -0
  151. package/dist/lib/modules/tournament/match/events/match-evaluation.orchestrator.d.ts.map +1 -0
  152. package/dist/lib/modules/tournament/{notification/jobs/notification.worker.js → match/events/match-evaluation.orchestrator.js} +31 -27
  153. package/dist/lib/modules/tournament/match/events/match-evaluation.orchestrator.js.map +1 -0
  154. package/dist/lib/modules/tournament/match/match.builder.d.ts +13 -34
  155. package/dist/lib/modules/tournament/match/match.builder.d.ts.map +1 -1
  156. package/dist/lib/modules/tournament/match/match.builder.js +31 -10
  157. package/dist/lib/modules/tournament/match/match.builder.js.map +1 -1
  158. package/dist/lib/modules/tournament/match/match.repository.d.ts +1 -1
  159. package/dist/lib/modules/tournament/match/match.repository.d.ts.map +1 -1
  160. package/dist/lib/modules/tournament/match/match.repository.js.map +1 -1
  161. package/dist/lib/modules/tournament/match/match.router.d.ts +36 -0
  162. package/dist/lib/modules/tournament/match/match.router.d.ts.map +1 -1
  163. package/dist/lib/modules/tournament/match/match.service.d.ts +3 -0
  164. package/dist/lib/modules/tournament/match/match.service.d.ts.map +1 -1
  165. package/dist/lib/modules/tournament/match/match.service.js +15 -12
  166. package/dist/lib/modules/tournament/match/match.service.js.map +1 -1
  167. package/dist/lib/modules/tournament/match/match.types.d.ts +51 -0
  168. package/dist/lib/modules/tournament/match/match.types.d.ts.map +1 -0
  169. package/dist/lib/modules/tournament/match/match.types.js +3 -0
  170. package/dist/lib/modules/tournament/match/match.types.js.map +1 -0
  171. package/dist/lib/modules/tournament/notification/notification-template.repository.d.ts +2 -1
  172. package/dist/lib/modules/tournament/notification/notification-template.repository.d.ts.map +1 -1
  173. package/dist/lib/modules/tournament/notification/notification-template.repository.js +2 -1
  174. package/dist/lib/modules/tournament/notification/notification-template.repository.js.map +1 -1
  175. package/dist/lib/modules/tournament/notification/notification.builder.d.ts +30 -0
  176. package/dist/lib/modules/tournament/notification/notification.builder.d.ts.map +1 -0
  177. package/dist/lib/modules/tournament/notification/notification.builder.js +35 -0
  178. package/dist/lib/modules/tournament/notification/notification.builder.js.map +1 -0
  179. package/dist/lib/modules/tournament/notification/notification.config.d.ts +10 -9
  180. package/dist/lib/modules/tournament/notification/notification.config.d.ts.map +1 -1
  181. package/dist/lib/modules/tournament/notification/notification.config.js +0 -12
  182. package/dist/lib/modules/tournament/notification/notification.config.js.map +1 -1
  183. package/dist/lib/modules/tournament/notification/notification.service.d.ts +5 -3
  184. package/dist/lib/modules/tournament/notification/notification.service.d.ts.map +1 -1
  185. package/dist/lib/modules/tournament/notification/notification.service.js +23 -15
  186. package/dist/lib/modules/tournament/notification/notification.service.js.map +1 -1
  187. package/dist/lib/modules/tournament/participant/participant.builder.d.ts +12 -0
  188. package/dist/lib/modules/tournament/participant/participant.builder.d.ts.map +1 -0
  189. package/dist/lib/modules/tournament/participant/participant.builder.js +17 -0
  190. package/dist/lib/modules/tournament/participant/participant.builder.js.map +1 -0
  191. package/dist/lib/modules/tournament/participant/participant.repository.d.ts +8 -7
  192. package/dist/lib/modules/tournament/participant/participant.repository.d.ts.map +1 -1
  193. package/dist/lib/modules/tournament/participant/participant.repository.js +12 -2
  194. package/dist/lib/modules/tournament/participant/participant.repository.js.map +1 -1
  195. package/dist/lib/modules/tournament/participant/participant.service.d.ts +1 -0
  196. package/dist/lib/modules/tournament/participant/participant.service.d.ts.map +1 -1
  197. package/dist/lib/modules/tournament/participant/participant.service.js +15 -17
  198. package/dist/lib/modules/tournament/participant/participant.service.js.map +1 -1
  199. package/dist/lib/modules/tournament/prediction/prediction.builder.d.ts +3 -9
  200. package/dist/lib/modules/tournament/prediction/prediction.builder.d.ts.map +1 -1
  201. package/dist/lib/modules/tournament/prediction/prediction.builder.js.map +1 -1
  202. package/dist/lib/modules/tournament/prediction/prediction.repository.d.ts +11 -3
  203. package/dist/lib/modules/tournament/prediction/prediction.repository.d.ts.map +1 -1
  204. package/dist/lib/modules/tournament/prediction/prediction.repository.js +47 -0
  205. package/dist/lib/modules/tournament/prediction/prediction.repository.js.map +1 -1
  206. package/dist/lib/modules/tournament/prediction/prediction.service.d.ts +1 -1
  207. package/dist/lib/modules/tournament/prediction/prediction.service.d.ts.map +1 -1
  208. package/dist/lib/modules/tournament/prediction/prediction.service.js +16 -26
  209. package/dist/lib/modules/tournament/prediction/prediction.service.js.map +1 -1
  210. package/dist/lib/modules/tournament/prediction/prediction.types.d.ts +17 -0
  211. package/dist/lib/modules/tournament/prediction/prediction.types.d.ts.map +1 -0
  212. package/dist/lib/modules/tournament/prediction/prediction.types.js +3 -0
  213. package/dist/lib/modules/tournament/prediction/prediction.types.js.map +1 -0
  214. package/dist/lib/modules/tournament/reward/handlers/coupon-reward.handler.d.ts +8 -5
  215. package/dist/lib/modules/tournament/reward/handlers/coupon-reward.handler.d.ts.map +1 -1
  216. package/dist/lib/modules/tournament/reward/handlers/coupon-reward.handler.js +58 -16
  217. package/dist/lib/modules/tournament/reward/handlers/coupon-reward.handler.js.map +1 -1
  218. package/dist/lib/modules/tournament/reward/reward.builder.d.ts +5 -2
  219. package/dist/lib/modules/tournament/reward/reward.builder.d.ts.map +1 -1
  220. package/dist/lib/modules/tournament/reward/reward.builder.js +44 -28
  221. package/dist/lib/modules/tournament/reward/reward.builder.js.map +1 -1
  222. package/dist/lib/modules/tournament/reward/reward.factory.d.ts +1 -1
  223. package/dist/lib/modules/tournament/reward/reward.factory.d.ts.map +1 -1
  224. package/dist/lib/modules/tournament/reward/reward.factory.js.map +1 -1
  225. package/dist/lib/modules/tournament/reward/reward.interface.d.ts +2 -2
  226. package/dist/lib/modules/tournament/reward/reward.interface.d.ts.map +1 -1
  227. package/dist/lib/modules/tournament/reward/reward.interface.js.map +1 -1
  228. package/dist/lib/modules/tournament/reward/reward.service.d.ts +1 -1
  229. package/dist/lib/modules/tournament/reward/reward.service.d.ts.map +1 -1
  230. package/dist/lib/modules/tournament/reward/reward.service.js +1 -1
  231. package/dist/lib/modules/tournament/reward/reward.service.js.map +1 -1
  232. package/dist/lib/modules/tournament/reward/reward.types.d.ts +35 -2
  233. package/dist/lib/modules/tournament/reward/reward.types.d.ts.map +1 -1
  234. package/dist/lib/modules/tournament/reward/reward.types.js.map +1 -1
  235. package/dist/lib/modules/tournament/schedule/schedule.router.d.ts.map +1 -1
  236. package/dist/lib/modules/tournament/schedule/schedule.router.js +1 -3
  237. package/dist/lib/modules/tournament/schedule/schedule.router.js.map +1 -1
  238. package/dist/lib/modules/tournament/schedule/schedule.service.d.ts +3 -0
  239. package/dist/lib/modules/tournament/schedule/schedule.service.d.ts.map +1 -1
  240. package/dist/lib/modules/tournament/schedule/schedule.service.js +30 -1
  241. package/dist/lib/modules/tournament/schedule/schedule.service.js.map +1 -1
  242. package/dist/lib/modules/tournament/score/score.repository.d.ts +13 -0
  243. package/dist/lib/modules/tournament/score/score.repository.d.ts.map +1 -1
  244. package/dist/lib/modules/tournament/score/score.repository.js +20 -0
  245. package/dist/lib/modules/tournament/score/score.repository.js.map +1 -1
  246. package/dist/lib/modules/tournament/score/score.service.d.ts +3 -0
  247. package/dist/lib/modules/tournament/score/score.service.d.ts.map +1 -1
  248. package/dist/lib/modules/tournament/score/score.service.js +3 -0
  249. package/dist/lib/modules/tournament/score/score.service.js.map +1 -1
  250. package/dist/lib/modules/tournament/statistics/statistics.builder.d.ts +5 -0
  251. package/dist/lib/modules/tournament/statistics/statistics.builder.d.ts.map +1 -1
  252. package/dist/lib/modules/tournament/statistics/statistics.builder.js +47 -28
  253. package/dist/lib/modules/tournament/statistics/statistics.builder.js.map +1 -1
  254. package/dist/lib/modules/tournament/statistics/statistics.router.d.ts +4 -2
  255. package/dist/lib/modules/tournament/statistics/statistics.router.d.ts.map +1 -1
  256. package/dist/lib/modules/tournament/statistics/statistics.service.js +4 -4
  257. package/dist/lib/modules/tournament/statistics/statistics.service.js.map +1 -1
  258. package/dist/lib/modules/tournament/statistics/statistics.validation.d.ts +32 -14
  259. package/dist/lib/modules/tournament/statistics/statistics.validation.d.ts.map +1 -1
  260. package/dist/lib/modules/tournament/statistics/statistics.validation.js +2 -1
  261. package/dist/lib/modules/tournament/statistics/statistics.validation.js.map +1 -1
  262. package/dist/lib/modules/tournament/sync/sync.repository.d.ts +11 -0
  263. package/dist/lib/modules/tournament/sync/sync.repository.d.ts.map +1 -0
  264. package/dist/lib/modules/tournament/sync/sync.repository.js +67 -0
  265. package/dist/lib/modules/tournament/sync/sync.repository.js.map +1 -0
  266. package/dist/lib/modules/tournament/sync/sync.router.d.ts +27 -0
  267. package/dist/lib/modules/tournament/sync/sync.router.d.ts.map +1 -0
  268. package/dist/lib/modules/tournament/sync/sync.router.js +15 -0
  269. package/dist/lib/modules/tournament/sync/sync.router.js.map +1 -0
  270. package/dist/lib/modules/tournament/sync/sync.service.d.ts +9 -0
  271. package/dist/lib/modules/tournament/sync/sync.service.d.ts.map +1 -0
  272. package/dist/lib/modules/tournament/sync/sync.service.js +117 -0
  273. package/dist/lib/modules/tournament/sync/sync.service.js.map +1 -0
  274. package/dist/lib/modules/tournament/team/team.builder.d.ts +4 -0
  275. package/dist/lib/modules/tournament/team/team.builder.d.ts.map +1 -1
  276. package/dist/lib/modules/tournament/team/team.builder.js +6 -0
  277. package/dist/lib/modules/tournament/team/team.builder.js.map +1 -1
  278. package/dist/lib/modules/tournament/team/team.repository.d.ts +3 -0
  279. package/dist/lib/modules/tournament/team/team.repository.d.ts.map +1 -1
  280. package/dist/lib/modules/tournament/team/team.repository.js +6 -0
  281. package/dist/lib/modules/tournament/team/team.repository.js.map +1 -1
  282. package/dist/lib/modules/tournament/team/team.router.d.ts +22 -4
  283. package/dist/lib/modules/tournament/team/team.router.d.ts.map +1 -1
  284. package/dist/lib/modules/tournament/team/team.router.js +1 -1
  285. package/dist/lib/modules/tournament/team/team.router.js.map +1 -1
  286. package/dist/lib/modules/tournament/team/team.service.d.ts +2 -1
  287. package/dist/lib/modules/tournament/team/team.service.d.ts.map +1 -1
  288. package/dist/lib/modules/tournament/team/team.service.js +26 -23
  289. package/dist/lib/modules/tournament/team/team.service.js.map +1 -1
  290. package/dist/lib/modules/tournament/team/team.validation.d.ts +23 -24
  291. package/dist/lib/modules/tournament/team/team.validation.d.ts.map +1 -1
  292. package/dist/lib/modules/tournament/team/team.validation.js +3 -4
  293. package/dist/lib/modules/tournament/team/team.validation.js.map +1 -1
  294. package/dist/lib/modules/tournament/tournament.builder.d.ts +11 -0
  295. package/dist/lib/modules/tournament/tournament.builder.d.ts.map +1 -0
  296. package/dist/lib/modules/tournament/tournament.builder.js +34 -0
  297. package/dist/lib/modules/tournament/tournament.builder.js.map +1 -0
  298. package/dist/lib/modules/tournament/tournament.router.d.ts +210 -10
  299. package/dist/lib/modules/tournament/tournament.router.d.ts.map +1 -1
  300. package/dist/lib/modules/tournament/tournament.router.js +2 -0
  301. package/dist/lib/modules/tournament/tournament.router.js.map +1 -1
  302. package/dist/lib/modules/tournament/tournament.service.d.ts.map +1 -1
  303. package/dist/lib/modules/tournament/tournament.service.js +3 -10
  304. package/dist/lib/modules/tournament/tournament.service.js.map +1 -1
  305. package/dist/lib/modules/tournament/tournament.utils.d.ts +4 -0
  306. package/dist/lib/modules/tournament/tournament.utils.d.ts.map +1 -1
  307. package/dist/lib/modules/tournament/tournament.utils.js +8 -1
  308. package/dist/lib/modules/tournament/tournament.utils.js.map +1 -1
  309. package/dist/lib/modules/tournament/tournament.validation.d.ts +205 -1
  310. package/dist/lib/modules/tournament/tournament.validation.d.ts.map +1 -1
  311. package/dist/lib/modules/tournament/tournament.validation.js +23 -2
  312. package/dist/lib/modules/tournament/tournament.validation.js.map +1 -1
  313. package/dist/types/index.d.ts +946 -53
  314. package/dist/types/index.d.ts.map +1 -1
  315. package/dist/types/modules/coupon/routers/coupon.router.d.ts +647 -0
  316. package/dist/types/modules/coupon/routers/coupon.router.d.ts.map +1 -1
  317. package/dist/types/modules/coupon/services/coupon.service.d.ts +8 -1
  318. package/dist/types/modules/coupon/services/coupon.service.d.ts.map +1 -1
  319. package/dist/types/modules/coupon/services/patterns/repository/CouponMetricsRepository.d.ts.map +1 -1
  320. package/dist/types/modules/coupon/validations/coupon.validation.d.ts +26 -0
  321. package/dist/types/modules/coupon/validations/coupon.validation.d.ts.map +1 -1
  322. package/dist/types/modules/limited-time-offer/campaign/campaign.router.d.ts +42 -40
  323. package/dist/types/modules/limited-time-offer/campaign/campaign.router.d.ts.map +1 -1
  324. package/dist/types/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts +0 -1
  325. package/dist/types/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts.map +1 -1
  326. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts +1 -0
  327. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts.map +1 -1
  328. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts +53 -40
  329. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts.map +1 -1
  330. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts +3 -9
  331. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts.map +1 -1
  332. package/dist/types/modules/limited-time-offer/config/limited-time-offer-config.service.d.ts +1 -0
  333. package/dist/types/modules/limited-time-offer/config/limited-time-offer-config.service.d.ts.map +1 -1
  334. package/dist/types/modules/limited-time-offer/limited-time-offer.router.d.ts +88 -42
  335. package/dist/types/modules/limited-time-offer/limited-time-offer.router.d.ts.map +1 -1
  336. package/dist/types/modules/limited-time-offer/limited-time-offer.service.d.ts +24 -0
  337. package/dist/types/modules/limited-time-offer/limited-time-offer.service.d.ts.map +1 -0
  338. package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.builder.d.ts +13 -0
  339. package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.builder.d.ts.map +1 -0
  340. package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.constants.d.ts +20 -0
  341. package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.constants.d.ts.map +1 -0
  342. package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.service.d.ts +8 -0
  343. package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.service.d.ts.map +1 -0
  344. package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.type.d.ts +5 -0
  345. package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.type.d.ts.map +1 -0
  346. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.repository.d.ts +13 -0
  347. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.repository.d.ts.map +1 -1
  348. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts +6 -2
  349. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts.map +1 -1
  350. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts +6 -1
  351. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts.map +1 -1
  352. package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts +22 -2
  353. package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts.map +1 -1
  354. package/dist/types/modules/marketing/services/marketing.service.d.ts +1 -0
  355. package/dist/types/modules/marketing/services/marketing.service.d.ts.map +1 -1
  356. package/dist/types/modules/marketing/validations/product-marketing.validation.d.ts +2 -2
  357. package/dist/types/modules/punch-marketing-history/routers/punch-marketing-history.router.d.ts +1 -1
  358. package/dist/types/modules/punch-marketing-history/validations/punch-marketing-history.validation.d.ts +2 -2
  359. package/dist/types/modules/tournament/config/config.builder.d.ts.map +1 -1
  360. package/dist/types/modules/tournament/config/config.repository.d.ts +8 -2
  361. package/dist/types/modules/tournament/config/config.repository.d.ts.map +1 -1
  362. package/dist/types/modules/tournament/config/config.router.d.ts +92 -2
  363. package/dist/types/modules/tournament/config/config.router.d.ts.map +1 -1
  364. package/dist/types/modules/tournament/config/config.types.d.ts +15 -0
  365. package/dist/types/modules/tournament/config/config.types.d.ts.map +1 -0
  366. package/dist/types/modules/tournament/config/config.validation.d.ts +395 -15
  367. package/dist/types/modules/tournament/config/config.validation.d.ts.map +1 -1
  368. package/dist/types/modules/tournament/integration/integration.factory.d.ts +4 -0
  369. package/dist/types/modules/tournament/integration/integration.factory.d.ts.map +1 -0
  370. package/dist/types/modules/tournament/integration/interfaces/ITournamentService.d.ts +36 -0
  371. package/dist/types/modules/tournament/integration/interfaces/ITournamentService.d.ts.map +1 -0
  372. package/dist/types/modules/tournament/integration/providers/api-football/api-football.provider.d.ts +14 -0
  373. package/dist/types/modules/tournament/integration/providers/api-football/api-football.provider.d.ts.map +1 -0
  374. package/dist/types/modules/tournament/integration/providers/api-football/api-football.types.d.ts +51 -0
  375. package/dist/types/modules/tournament/integration/providers/api-football/api-football.types.d.ts.map +1 -0
  376. package/dist/types/modules/tournament/integration/providers/api-football/index.d.ts +3 -0
  377. package/dist/types/modules/tournament/integration/providers/api-football/index.d.ts.map +1 -0
  378. package/dist/types/modules/tournament/integration/providers/index.d.ts +3 -0
  379. package/dist/types/modules/tournament/integration/providers/index.d.ts.map +1 -0
  380. package/dist/types/modules/tournament/integration/providers/mock.provider.d.ts +7 -0
  381. package/dist/types/modules/tournament/integration/providers/mock.provider.d.ts.map +1 -0
  382. package/dist/types/modules/tournament/integration/tournamentService.d.ts +9 -0
  383. package/dist/types/modules/tournament/integration/tournamentService.d.ts.map +1 -0
  384. package/dist/types/modules/tournament/match/events/evaluate-predictions.consumer.d.ts.map +1 -1
  385. package/dist/types/modules/tournament/match/events/evaluate-predictions.event.d.ts +7 -3
  386. package/dist/types/modules/tournament/match/events/evaluate-predictions.event.d.ts.map +1 -1
  387. package/dist/types/modules/tournament/match/events/match-evaluation.orchestrator.d.ts +14 -0
  388. package/dist/types/modules/tournament/match/events/match-evaluation.orchestrator.d.ts.map +1 -0
  389. package/dist/types/modules/tournament/match/match.builder.d.ts +13 -34
  390. package/dist/types/modules/tournament/match/match.builder.d.ts.map +1 -1
  391. package/dist/types/modules/tournament/match/match.repository.d.ts +1 -1
  392. package/dist/types/modules/tournament/match/match.repository.d.ts.map +1 -1
  393. package/dist/types/modules/tournament/match/match.router.d.ts +36 -0
  394. package/dist/types/modules/tournament/match/match.router.d.ts.map +1 -1
  395. package/dist/types/modules/tournament/match/match.service.d.ts +3 -0
  396. package/dist/types/modules/tournament/match/match.service.d.ts.map +1 -1
  397. package/dist/types/modules/tournament/match/match.types.d.ts +51 -0
  398. package/dist/types/modules/tournament/match/match.types.d.ts.map +1 -0
  399. package/dist/types/modules/tournament/notification/notification-template.repository.d.ts +2 -1
  400. package/dist/types/modules/tournament/notification/notification-template.repository.d.ts.map +1 -1
  401. package/dist/types/modules/tournament/notification/notification.builder.d.ts +30 -0
  402. package/dist/types/modules/tournament/notification/notification.builder.d.ts.map +1 -0
  403. package/dist/types/modules/tournament/notification/notification.config.d.ts +10 -9
  404. package/dist/types/modules/tournament/notification/notification.config.d.ts.map +1 -1
  405. package/dist/types/modules/tournament/notification/notification.service.d.ts +5 -3
  406. package/dist/types/modules/tournament/notification/notification.service.d.ts.map +1 -1
  407. package/dist/types/modules/tournament/participant/participant.builder.d.ts +12 -0
  408. package/dist/types/modules/tournament/participant/participant.builder.d.ts.map +1 -0
  409. package/dist/types/modules/tournament/participant/participant.repository.d.ts +8 -7
  410. package/dist/types/modules/tournament/participant/participant.repository.d.ts.map +1 -1
  411. package/dist/types/modules/tournament/participant/participant.service.d.ts +1 -0
  412. package/dist/types/modules/tournament/participant/participant.service.d.ts.map +1 -1
  413. package/dist/types/modules/tournament/prediction/prediction.builder.d.ts +3 -9
  414. package/dist/types/modules/tournament/prediction/prediction.builder.d.ts.map +1 -1
  415. package/dist/types/modules/tournament/prediction/prediction.repository.d.ts +11 -3
  416. package/dist/types/modules/tournament/prediction/prediction.repository.d.ts.map +1 -1
  417. package/dist/types/modules/tournament/prediction/prediction.service.d.ts +1 -1
  418. package/dist/types/modules/tournament/prediction/prediction.service.d.ts.map +1 -1
  419. package/dist/types/modules/tournament/prediction/prediction.types.d.ts +17 -0
  420. package/dist/types/modules/tournament/prediction/prediction.types.d.ts.map +1 -0
  421. package/dist/types/modules/tournament/reward/handlers/coupon-reward.handler.d.ts +8 -5
  422. package/dist/types/modules/tournament/reward/handlers/coupon-reward.handler.d.ts.map +1 -1
  423. package/dist/types/modules/tournament/reward/reward.builder.d.ts +5 -2
  424. package/dist/types/modules/tournament/reward/reward.builder.d.ts.map +1 -1
  425. package/dist/types/modules/tournament/reward/reward.factory.d.ts +1 -1
  426. package/dist/types/modules/tournament/reward/reward.factory.d.ts.map +1 -1
  427. package/dist/types/modules/tournament/reward/reward.interface.d.ts +2 -2
  428. package/dist/types/modules/tournament/reward/reward.interface.d.ts.map +1 -1
  429. package/dist/types/modules/tournament/reward/reward.service.d.ts +1 -1
  430. package/dist/types/modules/tournament/reward/reward.service.d.ts.map +1 -1
  431. package/dist/types/modules/tournament/reward/reward.types.d.ts +35 -2
  432. package/dist/types/modules/tournament/reward/reward.types.d.ts.map +1 -1
  433. package/dist/types/modules/tournament/schedule/schedule.router.d.ts.map +1 -1
  434. package/dist/types/modules/tournament/schedule/schedule.service.d.ts +3 -0
  435. package/dist/types/modules/tournament/schedule/schedule.service.d.ts.map +1 -1
  436. package/dist/types/modules/tournament/score/score.repository.d.ts +13 -0
  437. package/dist/types/modules/tournament/score/score.repository.d.ts.map +1 -1
  438. package/dist/types/modules/tournament/score/score.service.d.ts +3 -0
  439. package/dist/types/modules/tournament/score/score.service.d.ts.map +1 -1
  440. package/dist/types/modules/tournament/statistics/statistics.builder.d.ts +5 -0
  441. package/dist/types/modules/tournament/statistics/statistics.builder.d.ts.map +1 -1
  442. package/dist/types/modules/tournament/statistics/statistics.router.d.ts +4 -2
  443. package/dist/types/modules/tournament/statistics/statistics.router.d.ts.map +1 -1
  444. package/dist/types/modules/tournament/statistics/statistics.validation.d.ts +32 -14
  445. package/dist/types/modules/tournament/statistics/statistics.validation.d.ts.map +1 -1
  446. package/dist/types/modules/tournament/sync/sync.repository.d.ts +11 -0
  447. package/dist/types/modules/tournament/sync/sync.repository.d.ts.map +1 -0
  448. package/dist/types/modules/tournament/sync/sync.router.d.ts +27 -0
  449. package/dist/types/modules/tournament/sync/sync.router.d.ts.map +1 -0
  450. package/dist/types/modules/tournament/sync/sync.service.d.ts +9 -0
  451. package/dist/types/modules/tournament/sync/sync.service.d.ts.map +1 -0
  452. package/dist/types/modules/tournament/team/team.builder.d.ts +4 -0
  453. package/dist/types/modules/tournament/team/team.builder.d.ts.map +1 -1
  454. package/dist/types/modules/tournament/team/team.repository.d.ts +3 -0
  455. package/dist/types/modules/tournament/team/team.repository.d.ts.map +1 -1
  456. package/dist/types/modules/tournament/team/team.router.d.ts +22 -4
  457. package/dist/types/modules/tournament/team/team.router.d.ts.map +1 -1
  458. package/dist/types/modules/tournament/team/team.service.d.ts +2 -1
  459. package/dist/types/modules/tournament/team/team.service.d.ts.map +1 -1
  460. package/dist/types/modules/tournament/team/team.validation.d.ts +23 -24
  461. package/dist/types/modules/tournament/team/team.validation.d.ts.map +1 -1
  462. package/dist/types/modules/tournament/tournament.builder.d.ts +11 -0
  463. package/dist/types/modules/tournament/tournament.builder.d.ts.map +1 -0
  464. package/dist/types/modules/tournament/tournament.router.d.ts +210 -10
  465. package/dist/types/modules/tournament/tournament.router.d.ts.map +1 -1
  466. package/dist/types/modules/tournament/tournament.service.d.ts.map +1 -1
  467. package/dist/types/modules/tournament/tournament.utils.d.ts +4 -0
  468. package/dist/types/modules/tournament/tournament.utils.d.ts.map +1 -1
  469. package/dist/types/modules/tournament/tournament.validation.d.ts +205 -1
  470. package/dist/types/modules/tournament/tournament.validation.d.ts.map +1 -1
  471. package/package.json +2 -2
  472. package/dist/lib/modules/tournament/match/events/match-ended.consumer.d.ts +0 -2
  473. package/dist/lib/modules/tournament/match/events/match-ended.consumer.d.ts.map +0 -1
  474. package/dist/lib/modules/tournament/match/events/match-ended.consumer.js +0 -15
  475. package/dist/lib/modules/tournament/match/events/match-ended.consumer.js.map +0 -1
  476. package/dist/lib/modules/tournament/match/events/match-ended.event.d.ts +0 -14
  477. package/dist/lib/modules/tournament/match/events/match-ended.event.d.ts.map +0 -1
  478. package/dist/lib/modules/tournament/match/events/match-ended.event.js +0 -12
  479. package/dist/lib/modules/tournament/match/events/match-ended.event.js.map +0 -1
  480. package/dist/lib/modules/tournament/notification/jobs/notification.producer.d.ts +0 -10
  481. package/dist/lib/modules/tournament/notification/jobs/notification.producer.d.ts.map +0 -1
  482. package/dist/lib/modules/tournament/notification/jobs/notification.producer.js +0 -23
  483. package/dist/lib/modules/tournament/notification/jobs/notification.producer.js.map +0 -1
  484. package/dist/lib/modules/tournament/notification/jobs/notification.worker.d.ts +0 -9
  485. package/dist/lib/modules/tournament/notification/jobs/notification.worker.d.ts.map +0 -1
  486. package/dist/lib/modules/tournament/notification/jobs/notification.worker.js.map +0 -1
  487. package/dist/lib/modules/tournament/notification/notification.schedule.config.d.ts +0 -10
  488. package/dist/lib/modules/tournament/notification/notification.schedule.config.d.ts.map +0 -1
  489. package/dist/lib/modules/tournament/notification/notification.schedule.config.js +0 -15
  490. package/dist/lib/modules/tournament/notification/notification.schedule.config.js.map +0 -1
  491. package/dist/lib/modules/tournament/notification/notification.scheduler.service.d.ts +0 -10
  492. package/dist/lib/modules/tournament/notification/notification.scheduler.service.d.ts.map +0 -1
  493. package/dist/lib/modules/tournament/notification/notification.scheduler.service.js.map +0 -1
  494. package/dist/types/events/event-initializations.d.ts +0 -2
  495. package/dist/types/events/event-initializations.d.ts.map +0 -1
  496. package/dist/types/modules/tournament/config/tournament-config.validation.d.ts +0 -201
  497. package/dist/types/modules/tournament/config/tournament-config.validation.d.ts.map +0 -1
  498. package/dist/types/modules/tournament/match/events/match-ended.consumer.d.ts +0 -2
  499. package/dist/types/modules/tournament/match/events/match-ended.consumer.d.ts.map +0 -1
  500. package/dist/types/modules/tournament/match/events/match-ended.event.d.ts +0 -14
  501. package/dist/types/modules/tournament/match/events/match-ended.event.d.ts.map +0 -1
  502. package/dist/types/modules/tournament/notification/jobs/notification.producer.d.ts +0 -10
  503. package/dist/types/modules/tournament/notification/jobs/notification.producer.d.ts.map +0 -1
  504. package/dist/types/modules/tournament/notification/jobs/notification.worker.d.ts +0 -9
  505. package/dist/types/modules/tournament/notification/jobs/notification.worker.d.ts.map +0 -1
  506. package/dist/types/modules/tournament/notification/notification.schedule.config.d.ts +0 -10
  507. package/dist/types/modules/tournament/notification/notification.schedule.config.d.ts.map +0 -1
  508. package/dist/types/modules/tournament/notification/notification.scheduler.service.d.ts +0 -10
  509. package/dist/types/modules/tournament/notification/notification.scheduler.service.d.ts.map +0 -1
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NOTIFICATION_BUILDERS = void 0;
4
+ const notification_1 = require("@lyxa.ai/core/dist/libraries/notification");
5
+ const limited_time_offer_notification_constants_1 = require("./limited-time-offer-notification.constants");
6
+ exports.NOTIFICATION_BUILDERS = {
7
+ [limited_time_offer_notification_constants_1.NotificationType.Cancel]: ({ recipientId, campaignId, accountType }) => new notification_1.NotificationEvent({
8
+ title: limited_time_offer_notification_constants_1.NOTIFICATIONS.CAMPAIGN_CANCELLED.title,
9
+ body: limited_time_offer_notification_constants_1.NOTIFICATIONS.CAMPAIGN_CANCELLED.body,
10
+ invisible: false,
11
+ sound: limited_time_offer_notification_constants_1.NOTIFICATIONS.CAMPAIGN_CANCELLED.sound,
12
+ data: { recipientId, campaignId, isClickable: false, accountType },
13
+ }),
14
+ [limited_time_offer_notification_constants_1.NotificationType.Activate]: ({ recipientId, campaignId, accountType }) => new notification_1.NotificationEvent({
15
+ title: limited_time_offer_notification_constants_1.NOTIFICATIONS.CAMPAIGN_ACTIVATED.title,
16
+ body: limited_time_offer_notification_constants_1.NOTIFICATIONS.CAMPAIGN_ACTIVATED.body,
17
+ invisible: false,
18
+ sound: limited_time_offer_notification_constants_1.NOTIFICATIONS.CAMPAIGN_ACTIVATED.sound,
19
+ data: { recipientId, campaignId, isClickable: false, accountType },
20
+ }),
21
+ };
22
+ //# sourceMappingURL=limited-time-offer-notification.builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limited-time-offer-notification.builder.js","sourceRoot":"/","sources":["modules/limited-time-offer/notification/limited-time-offer-notification.builder.ts"],"names":[],"mappings":";;;AACA,4EAA4E;AAE5E,2GAA6F;AAUhF,QAAA,qBAAqB,GAAkD;IAChF,CAAC,4DAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAC,EAAE,EAAE,CAClE,IAAI,gCAAiB,CAAC;QAClB,KAAK,EAAE,yDAAa,CAAC,kBAAkB,CAAC,KAAK;QAC7C,IAAI,EAAE,yDAAa,CAAC,kBAAkB,CAAC,IAAI;QAC3C,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,yDAAa,CAAC,kBAAkB,CAAC,KAAK;QAC7C,IAAI,EAAE,EAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAC;KACnE,CAAC;IACN,CAAC,4DAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAC,EAAE,EAAE,CACpE,IAAI,gCAAiB,CAAC;QAClB,KAAK,EAAE,yDAAa,CAAC,kBAAkB,CAAC,KAAK;QAC7C,IAAI,EAAE,yDAAa,CAAC,kBAAkB,CAAC,IAAI;QAC3C,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,yDAAa,CAAC,kBAAkB,CAAC,KAAK;QAC7C,IAAI,EAAE,EAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAC;KACnE,CAAC;CACT,CAAC","sourcesContent":["import {mongoose} from \"@typegoose/typegoose\";\nimport {NotificationEvent} from \"@lyxa.ai/core/dist/libraries/notification\";\nimport {NotificationAccountType} from \"@lyxa.ai/core/dist/utilities/enum\";\nimport {NOTIFICATIONS, NotificationType,} from \"./limited-time-offer-notification.constants\";\n\nexport interface NotificationBuilderArgs {\n campaignId: mongoose.Types.ObjectId;\n recipientId: mongoose.Types.ObjectId;\n accountType: NotificationAccountType;\n}\n\ntype NotificationBuilder = (args: NotificationBuilderArgs) => NotificationEvent;\n\nexport const NOTIFICATION_BUILDERS: Record<NotificationType, NotificationBuilder> = {\n [NotificationType.Cancel]: ({recipientId, campaignId, accountType}) =>\n new NotificationEvent({\n title: NOTIFICATIONS.CAMPAIGN_CANCELLED.title,\n body: NOTIFICATIONS.CAMPAIGN_CANCELLED.body,\n invisible: false,\n sound: NOTIFICATIONS.CAMPAIGN_CANCELLED.sound,\n data: {recipientId, campaignId, isClickable: false, accountType},\n }),\n [NotificationType.Activate]: ({recipientId, campaignId, accountType}) =>\n new NotificationEvent({\n title: NOTIFICATIONS.CAMPAIGN_ACTIVATED.title,\n body: NOTIFICATIONS.CAMPAIGN_ACTIVATED.body,\n invisible: false,\n sound: NOTIFICATIONS.CAMPAIGN_ACTIVATED.sound,\n data: {recipientId, campaignId, isClickable: false, accountType},\n }),\n};"]}
@@ -0,0 +1,20 @@
1
+ import { NotificationAccountType } from "@lyxa.ai/core/dist/utilities/enum";
2
+ export declare const NotificationType: {
3
+ readonly Cancel: "cancel";
4
+ readonly Activate: "activate";
5
+ };
6
+ export type NotificationType = (typeof NotificationType)[keyof typeof NotificationType];
7
+ export declare const TARGET_ACCOUNT_TYPES: readonly [NotificationAccountType.SHOP, NotificationAccountType.SHOP_CONSOLE];
8
+ export declare const NOTIFICATIONS: {
9
+ readonly CAMPAIGN_CANCELLED: {
10
+ readonly title: "Lyxa deleted the current campaign";
11
+ readonly body: "The ongoing limited time offer campaign has been deleted by lyxa.";
12
+ readonly sound: "notification_sound";
13
+ };
14
+ readonly CAMPAIGN_ACTIVATED: {
15
+ readonly title: "Limited Time Offer is Live!";
16
+ readonly body: "A new limited time offer has started. Check it out now!";
17
+ readonly sound: "notification_sound";
18
+ };
19
+ };
20
+ //# sourceMappingURL=limited-time-offer-notification.constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limited-time-offer-notification.constants.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/notification/limited-time-offer-notification.constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,uBAAuB,EAAC,MAAM,mCAAmC,CAAC;AAE1E,eAAO,MAAM,gBAAgB;;;CAGnB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GACxB,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC;AAG7D,eAAO,MAAM,oBAAoB,+EAGvB,CAAC;AAIX,eAAO,MAAM,aAAa;;;;;;;;;;;CAWhB,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NOTIFICATIONS = exports.TARGET_ACCOUNT_TYPES = exports.NotificationType = void 0;
4
+ const enum_1 = require("@lyxa.ai/core/dist/utilities/enum");
5
+ exports.NotificationType = {
6
+ Cancel: "cancel",
7
+ Activate: "activate",
8
+ };
9
+ exports.TARGET_ACCOUNT_TYPES = [
10
+ enum_1.NotificationAccountType.SHOP,
11
+ enum_1.NotificationAccountType.SHOP_CONSOLE,
12
+ ];
13
+ const CUSTOM_NOTIFICATION_SOUND = 'notification_sound';
14
+ exports.NOTIFICATIONS = {
15
+ CAMPAIGN_CANCELLED: {
16
+ title: "Lyxa deleted the current campaign",
17
+ body: "The ongoing limited time offer campaign has been deleted by lyxa.",
18
+ sound: CUSTOM_NOTIFICATION_SOUND
19
+ },
20
+ CAMPAIGN_ACTIVATED: {
21
+ title: "Limited Time Offer is Live!",
22
+ body: "A new limited time offer has started. Check it out now!",
23
+ sound: CUSTOM_NOTIFICATION_SOUND
24
+ },
25
+ };
26
+ //# sourceMappingURL=limited-time-offer-notification.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limited-time-offer-notification.constants.js","sourceRoot":"/","sources":["modules/limited-time-offer/notification/limited-time-offer-notification.constants.ts"],"names":[],"mappings":";;;AAAA,4DAA0E;AAE7D,QAAA,gBAAgB,GAAG;IAC5B,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;CACd,CAAC;AAME,QAAA,oBAAoB,GAAG;IAChC,8BAAuB,CAAC,IAAI;IAC5B,8BAAuB,CAAC,YAAY;CAC9B,CAAC;AAEX,MAAM,yBAAyB,GAAG,oBAAoB,CAAC;AAE1C,QAAA,aAAa,GAAG;IACzB,kBAAkB,EAAE;QAChB,KAAK,EAAE,mCAAmC;QAC1C,IAAI,EAAE,mEAAmE;QACzE,KAAK,EAAE,yBAAyB;KACnC;IACD,kBAAkB,EAAE;QAChB,KAAK,EAAE,6BAA6B;QACpC,IAAI,EAAE,yDAAyD;QAC/D,KAAK,EAAE,yBAAyB;KACnC;CACK,CAAC","sourcesContent":["import {NotificationAccountType} from \"@lyxa.ai/core/dist/utilities/enum\";\n\nexport const NotificationType = {\n Cancel: \"cancel\",\n Activate: \"activate\",\n} as const;\n\nexport type NotificationType =\n (typeof NotificationType)[keyof typeof NotificationType];\n\n\nexport const TARGET_ACCOUNT_TYPES = [\n NotificationAccountType.SHOP,\n NotificationAccountType.SHOP_CONSOLE,\n] as const;\n\nconst CUSTOM_NOTIFICATION_SOUND = 'notification_sound';\n\nexport const NOTIFICATIONS = {\n CAMPAIGN_CANCELLED: {\n title: \"Lyxa deleted the current campaign\",\n body: \"The ongoing limited time offer campaign has been deleted by lyxa.\",\n sound: CUSTOM_NOTIFICATION_SOUND\n },\n CAMPAIGN_ACTIVATED: {\n title: \"Limited Time Offer is Live!\",\n body: \"A new limited time offer has started. Check it out now!\",\n sound: CUSTOM_NOTIFICATION_SOUND\n },\n} as const;"]}
@@ -0,0 +1,8 @@
1
+ import { mongoose } from "@typegoose/typegoose";
2
+ import { NotificationType } from "./limited-time-offer-notification.constants";
3
+ import { SendLimitedTimeOfferNotificationDto } from "./limited-time-offer-notification.type";
4
+ export declare class LimitedTimeOfferNotificationService {
5
+ send(type: NotificationType, recipientIds: mongoose.Types.ObjectId[], dto: SendLimitedTimeOfferNotificationDto): Promise<void>;
6
+ }
7
+ export declare const limitedTimeOfferNotificationService: LimitedTimeOfferNotificationService;
8
+ //# sourceMappingURL=limited-time-offer-notification.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limited-time-offer-notification.service.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/notification/limited-time-offer-notification.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EAAC,gBAAgB,EAAwB,MAAM,6CAA6C,CAAC;AAEpG,OAAO,EAAC,mCAAmC,EAAC,MAAM,wCAAwC,CAAC;AAE3F,qBACa,mCAAmC;IACtC,IAAI,CACN,IAAI,EAAE,gBAAgB,EACtB,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EACvC,GAAG,EAAE,mCAAmC,GACzC,OAAO,CAAC,IAAI,CAAC;CAWnB;AAED,eAAO,MAAM,mCAAmC,qCAE/C,CAAC"}
@@ -39,35 +39,22 @@ var __importStar = (this && this.__importStar) || (function () {
39
39
  };
40
40
  })();
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.notificationSchedulerService = exports.NotificationSchedulerService = void 0;
42
+ exports.limitedTimeOfferNotificationService = exports.LimitedTimeOfferNotificationService = void 0;
43
+ const event_1 = require("@lyxa.ai/core/dist/libraries/event");
43
44
  const typedi_1 = __importStar(require("typedi"));
44
- const notification_producer_1 = require("./jobs/notification.producer");
45
- let NotificationSchedulerService = class NotificationSchedulerService {
46
- jobId(type, matchId) {
47
- return `tournament-${type}-${matchId}`;
48
- }
49
- buildJobData(tournamentId, matchId, target) {
50
- return { tournamentId: tournamentId.toString(), matchId: matchId.toString(), target };
51
- }
52
- async scheduleForMatch(matchId, tournamentId, startingDate, scheduledNotifications) {
53
- await Promise.all(scheduledNotifications.map(({ type, durationMins, target }) => {
54
- const delay = startingDate.getTime() - durationMins * 60 * 1000 - Date.now();
55
- if (delay <= 0)
56
- return Promise.resolve();
57
- return (0, notification_producer_1.addNotificationJob)(type, this.buildJobData(tournamentId, matchId, target), {
58
- delay,
59
- jobId: this.jobId(type, matchId),
60
- removeOnComplete: true,
61
- });
62
- }));
63
- }
64
- async cancelForMatch(matchId, scheduledNotifications) {
65
- await Promise.all(scheduledNotifications.map(({ type }) => (0, notification_producer_1.removeNotificationJob)(this.jobId(type, matchId))));
45
+ const limited_time_offer_notification_constants_1 = require("./limited-time-offer-notification.constants");
46
+ const limited_time_offer_notification_builder_1 = require("./limited-time-offer-notification.builder");
47
+ let LimitedTimeOfferNotificationService = class LimitedTimeOfferNotificationService {
48
+ async send(type, recipientIds, dto) {
49
+ const builder = limited_time_offer_notification_builder_1.NOTIFICATION_BUILDERS[type];
50
+ const { campaignId } = dto;
51
+ const events = recipientIds.flatMap((recipientId) => limited_time_offer_notification_constants_1.TARGET_ACCOUNT_TYPES.map((accountType) => builder({ campaignId, recipientId, accountType })));
52
+ await Promise.all(events.map(event_1.publishEvent));
66
53
  }
67
54
  };
68
- exports.NotificationSchedulerService = NotificationSchedulerService;
69
- exports.NotificationSchedulerService = NotificationSchedulerService = __decorate([
55
+ exports.LimitedTimeOfferNotificationService = LimitedTimeOfferNotificationService;
56
+ exports.LimitedTimeOfferNotificationService = LimitedTimeOfferNotificationService = __decorate([
70
57
  (0, typedi_1.Service)()
71
- ], NotificationSchedulerService);
72
- exports.notificationSchedulerService = typedi_1.default.get(NotificationSchedulerService);
73
- //# sourceMappingURL=notification.scheduler.service.js.map
58
+ ], LimitedTimeOfferNotificationService);
59
+ exports.limitedTimeOfferNotificationService = typedi_1.default.get(LimitedTimeOfferNotificationService);
60
+ //# sourceMappingURL=limited-time-offer-notification.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limited-time-offer-notification.service.js","sourceRoot":"/","sources":["modules/limited-time-offer/notification/limited-time-offer-notification.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAAgE;AAEhE,iDAA0C;AAE1C,2GAAoG;AACpG,uGAAgF;AAIzE,IAAM,mCAAmC,GAAzC,MAAM,mCAAmC;IAC5C,KAAK,CAAC,IAAI,CACN,IAAsB,EACtB,YAAuC,EACvC,GAAwC;QAExC,MAAM,OAAO,GAAG,+DAAqB,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,EAAC,UAAU,EAAC,GAAG,GAAG,CAAC;QAEzB,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAChD,gEAAoB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CACrC,OAAO,CAAC,EAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAC,CAAC,CAClD,CACJ,CAAC;QACF,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAY,CAAC,CAAC,CAAC;IAChD,CAAC;CACJ,CAAA;AAhBY,kFAAmC;8CAAnC,mCAAmC;IAD/C,IAAA,gBAAO,GAAE;GACG,mCAAmC,CAgB/C;AAEY,QAAA,mCAAmC,GAAG,gBAAS,CAAC,GAAG,CAC5D,mCAAmC,CACtC,CAAC","sourcesContent":["import {publishEvent} from \"@lyxa.ai/core/dist/libraries/event\";\nimport {mongoose} from \"@typegoose/typegoose\";\nimport Container, {Service} from \"typedi\";\n\nimport {NotificationType, TARGET_ACCOUNT_TYPES,} from \"./limited-time-offer-notification.constants\";\nimport {NOTIFICATION_BUILDERS} from \"./limited-time-offer-notification.builder\";\nimport {SendLimitedTimeOfferNotificationDto} from \"./limited-time-offer-notification.type\";\n\n@Service()\nexport class LimitedTimeOfferNotificationService {\n async send(\n type: NotificationType,\n recipientIds: mongoose.Types.ObjectId[],\n dto: SendLimitedTimeOfferNotificationDto,\n ): Promise<void> {\n const builder = NOTIFICATION_BUILDERS[type];\n const {campaignId} = dto;\n\n const events = recipientIds.flatMap((recipientId) =>\n TARGET_ACCOUNT_TYPES.map((accountType) =>\n builder({campaignId, recipientId, accountType}),\n ),\n );\n await Promise.all(events.map(publishEvent));\n }\n}\n\nexport const limitedTimeOfferNotificationService = Container.get(\n LimitedTimeOfferNotificationService,\n);"]}
@@ -0,0 +1,5 @@
1
+ import { mongoose } from "@typegoose/typegoose";
2
+ export interface SendLimitedTimeOfferNotificationDto {
3
+ campaignId: mongoose.Types.ObjectId;
4
+ }
5
+ //# sourceMappingURL=limited-time-offer-notification.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limited-time-offer-notification.type.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/notification/limited-time-offer-notification.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAE9C,MAAM,WAAW,mCAAmC;IAChD,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;CACvC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=limited-time-offer-notification.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limited-time-offer-notification.type.js","sourceRoot":"/","sources":["modules/limited-time-offer/notification/limited-time-offer-notification.type.ts"],"names":[],"mappings":"","sourcesContent":["import {mongoose} from \"@typegoose/typegoose\";\n\nexport interface SendLimitedTimeOfferNotificationDto {\n campaignId: mongoose.Types.ObjectId;\n}\n"]}
@@ -28,7 +28,7 @@ class LtoParticipantQueryBuilder {
28
28
  return {
29
29
  shop: shopId,
30
30
  marketingType: enum_1.MarketingType.DISCOUNT,
31
- isAppliedByCompany: true,
31
+ isAppliedByCompany: false,
32
32
  duration: { start: campaign.startDate, end: campaign.endDate },
33
33
  status: enum_1.MarketingStatus.ACTIVE,
34
34
  isEntireMenu: dto.isEntireMenu,
@@ -1 +1 @@
1
- {"version":3,"file":"limited-time-offer-participant.builder.js","sourceRoot":"/","sources":["modules/limited-time-offer/participant/limited-time-offer-participant.builder.ts"],"names":[],"mappings":";;;AAEA,4DAA4F;AAI5F,MAAa,0BAA0B;IACnC,MAAM,CAAC,mBAAmB,CAAC,GAAkC;QACzD,OAAO,EAAC,QAAQ,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,EAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,GAAkC;QACrD,OAAO,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,gBAAgB,CACnB,UAAmC,EACnC,MAA+B,EAC/B,WAAoC,EACpC,GAAuB;QAEvB,OAAO;YACH,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,WAAW;YACtB,QAAQ,EAAE,IAAI,IAAI,EAAE;YACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE;YAC5B,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;YAC1C,cAAc,EAAE,GAAG,CAAC,cAAc;YAClC,sBAAsB,EAAE,GAAG,CAAC,sBAAsB;YAClD,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,WAAW,EAAE,KAAK;SACrB,CAAC;IACN,CAAC;IAED,MAAM,CAAC,mBAAmB,CACtB,MAA+B,EAC/B,QAAmE,EACnE,GAAuB;QAEvB,OAAO;YACH,IAAI,EAAE,MAAM;YACZ,aAAa,EAAE,oBAAa,CAAC,QAAQ;YACrC,kBAAkB,EAAE,IAAI;YACxB,QAAQ,EAAE,EAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,EAAC;YAC5D,MAAM,EAAE,sBAAe,CAAC,MAAM;YAC9B,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,KAAK,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;YAC5D,SAAS,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAS,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YAC9D,QAAQ,EAAE,GAAG,CAAC,YAAY;gBACtB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;oBAC7B,OAAO,EAAE,SAAS;oBAClB,KAAK,EAAE,GAAG,CAAC,kBAAkB;oBAC7B,SAAS,EAAE,gBAAS,CAAC,UAAU;iBAClC,CAAC,CAAC;YACP,mBAAmB,EAAE,GAAG,CAAC,cAAc;YACvC,4BAA4B,EAAE,GAAG,CAAC,cAAc,GAAG,CAAC;YACpD,UAAU,EAAE,EAAE;YACd,eAAe,EAAE,EAAE;YACnB,UAAU,EAAE,CAAC;YACb,mBAAmB,EAAE,KAAK;YAC1B,mBAAmB,EAAE,KAAK;SAC7B,CAAC;IACN,CAAC;CACJ;AA5DD,gEA4DC","sourcesContent":["import {mongoose} from '@typegoose/typegoose';\nimport {LimitedTimeOfferCampaign} from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {MarketingStatus, MarketingType, ValueType} from '@lyxa.ai/core/dist/utilities/enum';\nimport {GetLtoCampaignParticipantsDTO} from '../campaign/limited-time-offer-campaign.validation';\nimport {JoinLtoCampaignDTO} from './limited-time-offer-participant.validation';\n\nexport class LtoParticipantQueryBuilder {\n static buildCampaignFilter(dto: GetLtoCampaignParticipantsDTO) {\n return {campaign: dto.campaignId, isWithdrawn: false};\n }\n\n static buildSearchTerm(dto: GetLtoCampaignParticipantsDTO): string | undefined {\n return dto.search?.trim() || undefined;\n }\n\n static buildCreateInput(\n campaignId: mongoose.Types.ObjectId,\n shopId: mongoose.Types.ObjectId,\n marketingId: mongoose.Types.ObjectId,\n dto: JoinLtoCampaignDTO,\n ) {\n return {\n campaign: campaignId,\n shop: shopId,\n marketing: marketingId,\n joinedAt: new Date(),\n products: dto.products ?? [],\n isEntireMenu: dto.isEntireMenu,\n discountPercentage: dto.discountPercentage,\n maxDiscountCap: dto.maxDiscountCap,\n isOrderCapacityEnabled: dto.isOrderCapacityEnabled,\n maxOrderCapacity: dto.maxOrderCapacity,\n isWithdrawn: false,\n };\n }\n\n static buildMarketingInput(\n shopId: mongoose.Types.ObjectId,\n campaign: LimitedTimeOfferCampaign & {_id: mongoose.Types.ObjectId},\n dto: JoinLtoCampaignDTO,\n ) {\n return {\n shop: shopId,\n marketingType: MarketingType.DISCOUNT,\n isAppliedByCompany: true,\n duration: {start: campaign.startDate, end: campaign.endDate},\n status: MarketingStatus.ACTIVE,\n isEntireMenu: dto.isEntireMenu,\n value: dto.isEntireMenu ? dto.discountPercentage : undefined,\n valueType: dto.isEntireMenu ? ValueType.PERCENTAGE : undefined,\n products: dto.isEntireMenu\n ? []\n : dto.products.map(productId => ({\n product: productId,\n value: dto.discountPercentage,\n valueType: ValueType.PERCENTAGE,\n })),\n maxDiscountPerOrder: dto.maxDiscountCap,\n isMaxDiscountPerOrderEnabled: dto.maxDiscountCap > 0,\n categories: [],\n excludeProducts: [],\n spendLimit: 0,\n isSpendLimitEnabled: false,\n isOnlyForSubscriber: false,\n };\n }\n}\n"]}
1
+ {"version":3,"file":"limited-time-offer-participant.builder.js","sourceRoot":"/","sources":["modules/limited-time-offer/participant/limited-time-offer-participant.builder.ts"],"names":[],"mappings":";;;AAEA,4DAA4F;AAI5F,MAAa,0BAA0B;IACnC,MAAM,CAAC,mBAAmB,CAAC,GAAkC;QACzD,OAAO,EAAC,QAAQ,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,EAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,GAAkC;QACrD,OAAO,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,gBAAgB,CACnB,UAAmC,EACnC,MAA+B,EAC/B,WAAoC,EACpC,GAAuB;QAEvB,OAAO;YACH,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,WAAW;YACtB,QAAQ,EAAE,IAAI,IAAI,EAAE;YACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE;YAC5B,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;YAC1C,cAAc,EAAE,GAAG,CAAC,cAAc;YAClC,sBAAsB,EAAE,GAAG,CAAC,sBAAsB;YAClD,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,WAAW,EAAE,KAAK;SACrB,CAAC;IACN,CAAC;IAED,MAAM,CAAC,mBAAmB,CACtB,MAA+B,EAC/B,QAAmE,EACnE,GAAuB;QAEvB,OAAO;YACH,IAAI,EAAE,MAAM;YACZ,aAAa,EAAE,oBAAa,CAAC,QAAQ;YACrC,kBAAkB,EAAE,KAAK;YACzB,QAAQ,EAAE,EAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,EAAC;YAC5D,MAAM,EAAE,sBAAe,CAAC,MAAM;YAC9B,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,KAAK,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;YAC5D,SAAS,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAS,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YAC9D,QAAQ,EAAE,GAAG,CAAC,YAAY;gBACtB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;oBAC7B,OAAO,EAAE,SAAS;oBAClB,KAAK,EAAE,GAAG,CAAC,kBAAkB;oBAC7B,SAAS,EAAE,gBAAS,CAAC,UAAU;iBAClC,CAAC,CAAC;YACP,mBAAmB,EAAE,GAAG,CAAC,cAAc;YACvC,4BAA4B,EAAE,GAAG,CAAC,cAAc,GAAG,CAAC;YACpD,UAAU,EAAE,EAAE;YACd,eAAe,EAAE,EAAE;YACnB,UAAU,EAAE,CAAC;YACb,mBAAmB,EAAE,KAAK;YAC1B,mBAAmB,EAAE,KAAK;SAC7B,CAAC;IACN,CAAC;CACJ;AA5DD,gEA4DC","sourcesContent":["import {mongoose} from '@typegoose/typegoose';\nimport {LimitedTimeOfferCampaign} from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {MarketingStatus, MarketingType, ValueType} from '@lyxa.ai/core/dist/utilities/enum';\nimport {GetLtoCampaignParticipantsDTO} from '../campaign/limited-time-offer-campaign.validation';\nimport {JoinLtoCampaignDTO} from './limited-time-offer-participant.validation';\n\nexport class LtoParticipantQueryBuilder {\n static buildCampaignFilter(dto: GetLtoCampaignParticipantsDTO) {\n return {campaign: dto.campaignId, isWithdrawn: false};\n }\n\n static buildSearchTerm(dto: GetLtoCampaignParticipantsDTO): string | undefined {\n return dto.search?.trim() || undefined;\n }\n\n static buildCreateInput(\n campaignId: mongoose.Types.ObjectId,\n shopId: mongoose.Types.ObjectId,\n marketingId: mongoose.Types.ObjectId,\n dto: JoinLtoCampaignDTO,\n ) {\n return {\n campaign: campaignId,\n shop: shopId,\n marketing: marketingId,\n joinedAt: new Date(),\n products: dto.products ?? [],\n isEntireMenu: dto.isEntireMenu,\n discountPercentage: dto.discountPercentage,\n maxDiscountCap: dto.maxDiscountCap,\n isOrderCapacityEnabled: dto.isOrderCapacityEnabled,\n maxOrderCapacity: dto.maxOrderCapacity,\n isWithdrawn: false,\n };\n }\n\n static buildMarketingInput(\n shopId: mongoose.Types.ObjectId,\n campaign: LimitedTimeOfferCampaign & {_id: mongoose.Types.ObjectId},\n dto: JoinLtoCampaignDTO,\n ) {\n return {\n shop: shopId,\n marketingType: MarketingType.DISCOUNT,\n isAppliedByCompany: false,\n duration: {start: campaign.startDate, end: campaign.endDate},\n status: MarketingStatus.ACTIVE,\n isEntireMenu: dto.isEntireMenu,\n value: dto.isEntireMenu ? dto.discountPercentage : undefined,\n valueType: dto.isEntireMenu ? ValueType.PERCENTAGE : undefined,\n products: dto.isEntireMenu\n ? []\n : dto.products.map(productId => ({\n product: productId,\n value: dto.discountPercentage,\n valueType: ValueType.PERCENTAGE,\n })),\n maxDiscountPerOrder: dto.maxDiscountCap,\n isMaxDiscountPerOrderEnabled: dto.maxDiscountCap > 0,\n categories: [],\n excludeProducts: [],\n spendLimit: 0,\n isSpendLimitEnabled: false,\n isOnlyForSubscriber: false,\n };\n }\n}\n"]}
@@ -4,14 +4,27 @@ import { GetLtoCampaignParticipantsDTO, LtoCampaignParticipantItemDTO } from '..
4
4
  import { ActiveParticipantMarketingDTO, ParticipantSummaryDTO, UpdateParticipantDataDTO } from './limited-time-offer-participant.validation';
5
5
  export declare class LtoParticipantRepository {
6
6
  private model;
7
+ private shopModel;
7
8
  constructor();
9
+ findNearby(campaignId: mongoose.Types.ObjectId, input: {
10
+ latitude: number;
11
+ longitude: number;
12
+ }, maxDistance: number): Promise<any[]>;
8
13
  create(input: object): Promise<DocumentType<Model>>;
14
+ updateShopOrderCapacity(shopId: mongoose.Types.ObjectId, isOrderCapacityEnabled: boolean, maxOrderCapacity?: number): Promise<(mongoose.Document<unknown, import("@typegoose/typegoose/lib/types").BeAnObject, import("@lyxa.ai/core/dist/libraries/mongo/models").Shop, import("@typegoose/typegoose/lib/types").BeAnyObject, {}> & Omit<import("@lyxa.ai/core/dist/libraries/mongo/models").Shop & {
15
+ _id: mongoose.Types.ObjectId;
16
+ } & {
17
+ __v: number;
18
+ }, "typegooseName"> & import("@typegoose/typegoose/lib/types").IObjectWithTypegooseFunction) | null>;
9
19
  findActiveByCampaignAndShop(campaignId: mongoose.Types.ObjectId, shopId: mongoose.Types.ObjectId): Promise<ParticipantSummaryDTO | null>;
10
20
  withdraw(campaignId: mongoose.Types.ObjectId, shopId: mongoose.Types.ObjectId): Promise<DocumentType<Model> | null>;
11
21
  existsActiveByCampaignAndShop(campaignId: mongoose.Types.ObjectId, shopId: mongoose.Types.ObjectId): Promise<boolean>;
12
22
  findActiveForUpdate(campaignId: mongoose.Types.ObjectId, shopId: mongoose.Types.ObjectId): Promise<ActiveParticipantMarketingDTO | null>;
13
23
  updateParticipant(campaignId: mongoose.Types.ObjectId, shopId: mongoose.Types.ObjectId, data: UpdateParticipantDataDTO): Promise<DocumentType<Model> | null>;
24
+ countShopProducts(shopId: mongoose.Types.ObjectId, productIds: mongoose.Types.ObjectId[]): Promise<number>;
25
+ findProductIdsByCategories(shopId: mongoose.Types.ObjectId, categoryIds: mongoose.Types.ObjectId[]): Promise<mongoose.Types.ObjectId[]>;
14
26
  findMarketingIdsByCampaign(campaignId: mongoose.Types.ObjectId): Promise<mongoose.Types.ObjectId[]>;
27
+ findParticipantIdsByCampaignId(campaignId: mongoose.Types.ObjectId): Promise<mongoose.Types.ObjectId[]>;
15
28
  findByCampaign(dto: GetLtoCampaignParticipantsDTO): Promise<{
16
29
  documents: LtoCampaignParticipantItemDTO[];
17
30
  total: number;
@@ -1 +1 @@
1
- {"version":3,"file":"limited-time-offer-participant.repository.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/participant/limited-time-offer-participant.repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAE,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACH,2BAA2B,IAAI,KAAK,EAGvC,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAAC,6BAA6B,EAAE,6BAA6B,EAAC,MAAM,oDAAoD,CAAC;AAEhI,OAAO,EAAC,6BAA6B,EAAE,qBAAqB,EAAE,wBAAwB,EAAC,MAAM,6CAA6C,CAAC;AAE3I,qBACa,wBAAwB;IACjC,OAAO,CAAC,KAAK,CAAmE;;IAM1E,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAInD,2BAA2B,CAC7B,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EACnC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAChC,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAUlC,QAAQ,CACV,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EACnC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAChC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAQhC,6BAA6B,CAC/B,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EACnC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAChC,OAAO,CAAC,OAAO,CAAC;IAIb,mBAAmB,CACrB,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EACnC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAChC,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC;IAS1C,iBAAiB,CACnB,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EACnC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAC/B,IAAI,EAAE,wBAAwB,GAC/B,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAQhC,0BAA0B,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAQnG,cAAc,CAAC,GAAG,EAAE,6BAA6B,GAAG,OAAO,CAAC;QAAC,SAAS,EAAE,6BAA6B,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC;CA6CjI;AAED,eAAO,MAAM,wBAAwB,0BAA0C,CAAC"}
1
+ {"version":3,"file":"limited-time-offer-participant.repository.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/participant/limited-time-offer-participant.repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAE,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACN,2BAA2B,IAAI,KAAK,EAIpC,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EACN,6BAA6B,EAC7B,6BAA6B,EAC7B,MAAM,oDAAoD,CAAC;AAE5D,OAAO,EACN,6BAA6B,EAC7B,qBAAqB,EACrB,wBAAwB,EACxB,MAAM,6CAA6C,CAAC;AAErD,qBACa,wBAAwB;IACpC,OAAO,CAAC,KAAK,CAAmE;IAChF,OAAO,CAAC,SAAS,CAAmB;;IAQvB,UAAU,CACtB,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EACnC,KAAK,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KAClB,EACD,WAAW,EAAE,MAAM;IA2Cd,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAGnD,uBAAuB,CAC5B,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAC/B,sBAAsB,EAAE,OAAO,EAC/B,gBAAgB,CAAC,EAAE,MAAM;;;;;IAapB,2BAA2B,CAChC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EACnC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAC7B,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAYlC,QAAQ,CACb,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EACnC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAC7B,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAQhC,6BAA6B,CAClC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EACnC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAC7B,OAAO,CAAC,OAAO,CAAC;IAIb,mBAAmB,CACxB,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EACnC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAC7B,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC;IAS1C,iBAAiB,CACtB,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EACnC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAC/B,IAAI,EAAE,wBAAwB,GAC5B,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAQhC,iBAAiB,CACtB,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAC/B,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,GACnC,OAAO,CAAC,MAAM,CAAC;IAKZ,0BAA0B,CAC/B,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAC/B,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,GACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAa/B,0BAA0B,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAQnG,8BAA8B,CACnC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAU/B,cAAc,CACnB,GAAG,EAAE,6BAA6B,GAChC,OAAO,CAAC;QAAE,SAAS,EAAE,6BAA6B,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CA8CzE;AAED,eAAO,MAAM,wBAAwB,0BAA0C,CAAC"}
@@ -48,12 +48,61 @@ const models_1 = require("@lyxa.ai/core/dist/libraries/mongo/models");
48
48
  const limited_time_offer_participant_builder_1 = require("./limited-time-offer-participant.builder");
49
49
  let LtoParticipantRepository = class LtoParticipantRepository {
50
50
  model;
51
+ shopModel;
51
52
  constructor() {
52
53
  this.model = models_1.LimitedTimeOfferParticipantModel;
54
+ this.shopModel = models_1.ShopModel;
55
+ }
56
+ async findNearby(campaignId, input, maxDistance) {
57
+ const participants = await this.model
58
+ .find({
59
+ campaign: campaignId,
60
+ isWithdrawn: false,
61
+ deletedAt: null,
62
+ })
63
+ .select('shop')
64
+ .lean();
65
+ if (!participants.length)
66
+ return [];
67
+ const shopIds = participants.map(p => p.shop);
68
+ return this.shopModel.aggregate([
69
+ {
70
+ $geoNear: {
71
+ near: {
72
+ type: 'Point',
73
+ coordinates: [input.longitude, input.latitude],
74
+ },
75
+ distanceField: 'distance',
76
+ maxDistance: maxDistance,
77
+ spherical: true,
78
+ key: 'address.location',
79
+ query: {
80
+ _id: { $in: shopIds },
81
+ status: 'active',
82
+ deletedAt: null,
83
+ },
84
+ },
85
+ },
86
+ {
87
+ $project: {
88
+ _id: 1,
89
+ name: 1,
90
+ 'address.location': 1,
91
+ },
92
+ },
93
+ ]);
53
94
  }
54
95
  async create(input) {
55
96
  return this.model.create(input);
56
97
  }
98
+ async updateShopOrderCapacity(shopId, isOrderCapacityEnabled, maxOrderCapacity) {
99
+ return this.shopModel.findByIdAndUpdate(shopId, {
100
+ $set: {
101
+ orderCapacityEnabled: isOrderCapacityEnabled,
102
+ orderCapacity: maxOrderCapacity,
103
+ },
104
+ }, { new: true });
105
+ }
57
106
  async findActiveByCampaignAndShop(campaignId, shopId) {
58
107
  const result = await this.model
59
108
  .findOne({ campaign: campaignId, shop: shopId, isWithdrawn: false })
@@ -82,6 +131,23 @@ let LtoParticipantRepository = class LtoParticipantRepository {
82
131
  async updateParticipant(campaignId, shopId, data) {
83
132
  return this.model.findOneAndUpdate({ campaign: campaignId, shop: shopId, isWithdrawn: false }, { $set: data }, { new: true });
84
133
  }
134
+ async countShopProducts(shopId, productIds) {
135
+ if (!productIds.length)
136
+ return 0;
137
+ return models_1.ProductModel.countDocuments({ _id: { $in: productIds }, shop: shopId, deletedAt: null });
138
+ }
139
+ async findProductIdsByCategories(shopId, categoryIds) {
140
+ if (!categoryIds.length)
141
+ return [];
142
+ const products = await models_1.ProductModel.find({
143
+ shop: shopId,
144
+ shopCategory: { $in: categoryIds },
145
+ deletedAt: null,
146
+ })
147
+ .select('_id')
148
+ .lean();
149
+ return products.map(p => p._id);
150
+ }
85
151
  async findMarketingIdsByCampaign(campaignId) {
86
152
  const participants = await this.model
87
153
  .find({ campaign: campaignId, isWithdrawn: false, marketing: { $exists: true, $ne: null } })
@@ -89,6 +155,14 @@ let LtoParticipantRepository = class LtoParticipantRepository {
89
155
  .lean();
90
156
  return participants.map(p => p.marketing).filter(Boolean);
91
157
  }
158
+ async findParticipantIdsByCampaignId(campaignId) {
159
+ const participants = await this.model
160
+ .find({ campaign: campaignId, isWithdrawn: false })
161
+ .select("shop")
162
+ .lean()
163
+ .exec();
164
+ return participants.map((p) => p.shop);
165
+ }
92
166
  async findByCampaign(dto) {
93
167
  const filter = limited_time_offer_participant_builder_1.LtoParticipantQueryBuilder.buildCampaignFilter(dto);
94
168
  const search = limited_time_offer_participant_builder_1.LtoParticipantQueryBuilder.buildSearchTerm(dto);
@@ -116,6 +190,7 @@ let LtoParticipantRepository = class LtoParticipantRepository {
116
190
  { $limit: dto.size },
117
191
  {
118
192
  $project: {
193
+ shopId: '$shopData._id',
119
194
  shopName: { $ifNull: ['$shopData.name', null] },
120
195
  shopPhoto: { $ifNull: ['$shopData.logo', null] },
121
196
  joinedAt: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"limited-time-offer-participant.repository.js","sourceRoot":"/","sources":["modules/limited-time-offer/participant/limited-time-offer-participant.repository.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, {Service} from 'typedi';\nimport {DocumentType, mongoose} from '@typegoose/typegoose';\nimport {\n LimitedTimeOfferParticipant as Model,\n LimitedTimeOfferParticipantModel,\n ShopModel,\n} from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {SoftDeleteModel} from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport {GetLtoCampaignParticipantsDTO, LtoCampaignParticipantItemDTO} from '../campaign/limited-time-offer-campaign.validation';\nimport {LtoParticipantQueryBuilder} from './limited-time-offer-participant.builder';\nimport {ActiveParticipantMarketingDTO, ParticipantSummaryDTO, UpdateParticipantDataDTO} from './limited-time-offer-participant.validation';\n\n@Service()\nexport class LtoParticipantRepository {\n private model: typeof LimitedTimeOfferParticipantModel & SoftDeleteModel<Model>;\n\n constructor() {\n this.model = LimitedTimeOfferParticipantModel as typeof LimitedTimeOfferParticipantModel & SoftDeleteModel<Model>;\n }\n\n async create(input: object): Promise<DocumentType<Model>> {\n return this.model.create(input);\n }\n\n async findActiveByCampaignAndShop(\n campaignId: mongoose.Types.ObjectId,\n shopId: mongoose.Types.ObjectId,\n ): Promise<ParticipantSummaryDTO | null> {\n const result = await this.model\n .findOne({campaign: campaignId, shop: shopId, isWithdrawn: false})\n .select('discountPercentage maxDiscountCap joinedAt isEntireMenu isOrderCapacityEnabled maxOrderCapacity products marketing')\n .lean();\n if (!result) return null;\n const {products, marketing, ...rest} = result as any;\n return {...rest, productIds: products ?? [], marketingId: marketing};\n }\n\n async withdraw(\n campaignId: mongoose.Types.ObjectId,\n shopId: mongoose.Types.ObjectId,\n ): Promise<DocumentType<Model> | null> {\n return this.model.findOneAndUpdate(\n {campaign: campaignId, shop: shopId, isWithdrawn: false},\n {$set: {isWithdrawn: true, withdrawnAt: new Date()}},\n {new: true},\n );\n }\n\n async existsActiveByCampaignAndShop(\n campaignId: mongoose.Types.ObjectId,\n shopId: mongoose.Types.ObjectId,\n ): Promise<boolean> {\n return !!(await this.model.exists({campaign: campaignId, shop: shopId, isWithdrawn: false}));\n }\n\n async findActiveForUpdate(\n campaignId: mongoose.Types.ObjectId,\n shopId: mongoose.Types.ObjectId,\n ): Promise<ActiveParticipantMarketingDTO | null> {\n const result = await this.model\n .findOne({campaign: campaignId, shop: shopId, isWithdrawn: false})\n .select('marketing')\n .lean();\n if (!result) return null;\n return {marketingId: (result as any).marketing};\n }\n\n async updateParticipant(\n campaignId: mongoose.Types.ObjectId,\n shopId: mongoose.Types.ObjectId,\n data: UpdateParticipantDataDTO,\n ): Promise<DocumentType<Model> | null> {\n return this.model.findOneAndUpdate(\n {campaign: campaignId, shop: shopId, isWithdrawn: false},\n {$set: data},\n {new: true},\n );\n }\n\n async findMarketingIdsByCampaign(campaignId: mongoose.Types.ObjectId): Promise<mongoose.Types.ObjectId[]> {\n const participants = await this.model\n .find({campaign: campaignId, isWithdrawn: false, marketing: {$exists: true, $ne: null}})\n .select('marketing')\n .lean();\n return participants.map(p => p.marketing as mongoose.Types.ObjectId).filter(Boolean);\n }\n\n async findByCampaign(dto: GetLtoCampaignParticipantsDTO): Promise<{documents: LtoCampaignParticipantItemDTO[]; total: number}> {\n const filter = LtoParticipantQueryBuilder.buildCampaignFilter(dto);\n const search = LtoParticipantQueryBuilder.buildSearchTerm(dto);\n\n const [result] = await this.model.aggregate([\n {$match: filter},\n {\n $lookup: {\n from: ShopModel.collection.name,\n let: {shopId: '$shop'},\n pipeline: [\n {$match: {$expr: {$eq: ['$_id', '$$shopId']}}},\n {$project: {name: 1, logo: 1}},\n ],\n as: 'shopData',\n },\n },\n {$unwind: {path: '$shopData', preserveNullAndEmptyArrays: true}},\n ...(search ? [{$match: {'shopData.name': {$regex: search, $options: 'i'}}}] : []),\n {$sort: {joinedAt: -1}},\n {\n $facet: {\n total: [{$count: 'count'}],\n documents: [\n {$skip: (dto.page - 1) * dto.size},\n {$limit: dto.size},\n {\n $project: {\n shopName: {$ifNull: ['$shopData.name', null]},\n shopPhoto: {$ifNull: ['$shopData.logo', null]},\n joinedAt: 1,\n discountPercentage: 1,\n maxDiscountCap: 1,\n },\n },\n ],\n },\n },\n ]);\n\n return {\n documents: result?.documents ?? [],\n total: result?.total?.[0]?.count ?? 0,\n };\n }\n}\n\nexport const ltoParticipantRepository = Container.get(LtoParticipantRepository);\n"]}
1
+ {"version":3,"file":"limited-time-offer-participant.repository.js","sourceRoot":"/","sources":["modules/limited-time-offer/participant/limited-time-offer-participant.repository.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, {Service} from 'typedi';\nimport {DocumentType, mongoose} from '@typegoose/typegoose';\nimport {\n\tLimitedTimeOfferParticipant as Model,\n\tLimitedTimeOfferParticipantModel,\n\tProductModel,\n\tShopModel,\n} from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {SoftDeleteModel} from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport {\n\tGetLtoCampaignParticipantsDTO,\n\tLtoCampaignParticipantItemDTO,\n} from '../campaign/limited-time-offer-campaign.validation';\nimport {LtoParticipantQueryBuilder} from './limited-time-offer-participant.builder';\nimport {\n\tActiveParticipantMarketingDTO,\n\tParticipantSummaryDTO,\n\tUpdateParticipantDataDTO,\n} from './limited-time-offer-participant.validation';\n\n@Service()\nexport class LtoParticipantRepository {\n\tprivate model: typeof LimitedTimeOfferParticipantModel & SoftDeleteModel<Model>;\n\tprivate shopModel: typeof ShopModel;\n\n\tconstructor() {\n\t\tthis.model = LimitedTimeOfferParticipantModel as typeof LimitedTimeOfferParticipantModel &\n\t\t\tSoftDeleteModel<Model>;\n\t\tthis.shopModel = ShopModel as typeof ShopModel;\n\t}\n\n\tpublic async findNearby(\n\t\tcampaignId: mongoose.Types.ObjectId,\n\t\tinput: {\n\t\t\tlatitude: number;\n\t\t\tlongitude: number;\n\t\t},\n\t\tmaxDistance: number\n\t) {\n\t\tconst participants = await this.model\n\t\t\t.find({\n\t\t\t\tcampaign: campaignId,\n\t\t\t\tisWithdrawn: false,\n\t\t\t\tdeletedAt: null,\n\t\t\t})\n\t\t\t.select('shop')\n\t\t\t.lean();\n\n\t\tif (!participants.length) return [];\n\n\t\tconst shopIds = participants.map(p => p.shop);\n\n\t\treturn this.shopModel.aggregate([\n\t\t\t{\n\t\t\t\t$geoNear: {\n\t\t\t\t\tnear: {\n\t\t\t\t\t\ttype: 'Point',\n\t\t\t\t\t\tcoordinates: [input.longitude, input.latitude],\n\t\t\t\t\t},\n\t\t\t\t\tdistanceField: 'distance',\n\t\t\t\t\tmaxDistance: maxDistance,\n\t\t\t\t\tspherical: true,\n\t\t\t\t\tkey: 'address.location',\n\t\t\t\t\tquery: {\n\t\t\t\t\t\t_id: { $in: shopIds },\n\t\t\t\t\t\tstatus: 'active',\n\t\t\t\t\t\tdeletedAt: null,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t$project: {\n\t\t\t\t\t_id: 1,\n\t\t\t\t\tname: 1,\n\t\t\t\t\t'address.location': 1,\n\t\t\t\t},\n\t\t\t},\n\t\t]);\n\t}\n\n\tasync create(input: object): Promise<DocumentType<Model>> {\n\t\treturn this.model.create(input);\n\t}\n\tasync updateShopOrderCapacity(\n\t\tshopId: mongoose.Types.ObjectId,\n\t\tisOrderCapacityEnabled: boolean,\n\t\tmaxOrderCapacity?: number\n\t) {\n\t\treturn this.shopModel.findByIdAndUpdate(\n\t\t\tshopId,\n\t\t\t{\n\t\t\t\t$set: {\n\t\t\t\t\torderCapacityEnabled: isOrderCapacityEnabled,\n\t\t\t\t\torderCapacity: maxOrderCapacity,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ new: true }\n\t\t);\n\t}\n\tasync findActiveByCampaignAndShop(\n\t\tcampaignId: mongoose.Types.ObjectId,\n\t\tshopId: mongoose.Types.ObjectId\n\t): Promise<ParticipantSummaryDTO | null> {\n\t\tconst result = await this.model\n\t\t\t.findOne({ campaign: campaignId, shop: shopId, isWithdrawn: false })\n\t\t\t.select(\n\t\t\t\t'discountPercentage maxDiscountCap joinedAt isEntireMenu isOrderCapacityEnabled maxOrderCapacity products marketing'\n\t\t\t)\n\t\t\t.lean();\n\t\tif (!result) return null;\n\t\tconst { products, marketing, ...rest } = result as any;\n\t\treturn { ...rest, productIds: products ?? [], marketingId: marketing };\n\t}\n\n\tasync withdraw(\n\t\tcampaignId: mongoose.Types.ObjectId,\n\t\tshopId: mongoose.Types.ObjectId\n\t): Promise<DocumentType<Model> | null> {\n\t\treturn this.model.findOneAndUpdate(\n\t\t\t{ campaign: campaignId, shop: shopId, isWithdrawn: false },\n\t\t\t{ $set: { isWithdrawn: true, withdrawnAt: new Date() } },\n\t\t\t{ new: true }\n\t\t);\n\t}\n\n\tasync existsActiveByCampaignAndShop(\n\t\tcampaignId: mongoose.Types.ObjectId,\n\t\tshopId: mongoose.Types.ObjectId\n\t): Promise<boolean> {\n\t\treturn !!(await this.model.exists({ campaign: campaignId, shop: shopId, isWithdrawn: false }));\n\t}\n\n\tasync findActiveForUpdate(\n\t\tcampaignId: mongoose.Types.ObjectId,\n\t\tshopId: mongoose.Types.ObjectId\n\t): Promise<ActiveParticipantMarketingDTO | null> {\n\t\tconst result = await this.model\n\t\t\t.findOne({ campaign: campaignId, shop: shopId, isWithdrawn: false })\n\t\t\t.select('marketing')\n\t\t\t.lean();\n\t\tif (!result) return null;\n\t\treturn { marketingId: (result as any).marketing };\n\t}\n\n\tasync updateParticipant(\n\t\tcampaignId: mongoose.Types.ObjectId,\n\t\tshopId: mongoose.Types.ObjectId,\n\t\tdata: UpdateParticipantDataDTO\n\t): Promise<DocumentType<Model> | null> {\n\t\treturn this.model.findOneAndUpdate(\n\t\t\t{ campaign: campaignId, shop: shopId, isWithdrawn: false },\n\t\t\t{ $set: data },\n\t\t\t{ new: true }\n\t\t);\n\t}\n\n\tasync countShopProducts(\n\t\tshopId: mongoose.Types.ObjectId,\n\t\tproductIds: mongoose.Types.ObjectId[]\n\t): Promise<number> {\n\t\tif (!productIds.length) return 0;\n\t\treturn ProductModel.countDocuments({ _id: { $in: productIds }, shop: shopId, deletedAt: null });\n\t}\n\n\tasync findProductIdsByCategories(\n\t\tshopId: mongoose.Types.ObjectId,\n\t\tcategoryIds: mongoose.Types.ObjectId[]\n\t): Promise<mongoose.Types.ObjectId[]> {\n\t\tif (!categoryIds.length) return [];\n\t\t// Shop-scoped so the {shop, shopCategory} partial index is used; only _id is needed.\n\t\tconst products = await ProductModel.find({\n\t\t\tshop: shopId,\n\t\t\tshopCategory: { $in: categoryIds },\n\t\t\tdeletedAt: null,\n\t\t})\n\t\t\t.select('_id')\n\t\t\t.lean();\n\t\treturn products.map(p => p._id as mongoose.Types.ObjectId);\n\t}\n\n\tasync findMarketingIdsByCampaign(campaignId: mongoose.Types.ObjectId): Promise<mongoose.Types.ObjectId[]> {\n\t\tconst participants = await this.model\n\t\t\t.find({ campaign: campaignId, isWithdrawn: false, marketing: { $exists: true, $ne: null } })\n\t\t\t.select('marketing')\n\t\t\t.lean();\n\t\treturn participants.map(p => p.marketing as mongoose.Types.ObjectId).filter(Boolean);\n\t}\n\n\tasync findParticipantIdsByCampaignId(\n\t\tcampaignId: mongoose.Types.ObjectId,\n\t): Promise<mongoose.Types.ObjectId[]> {\n\t\tconst participants = await this.model\n\t\t\t.find({campaign: campaignId, isWithdrawn: false})\n\t\t\t.select(\"shop\")\n\t\t\t.lean()\n\t\t\t.exec();\n\n\t\treturn participants.map((p) => p.shop as mongoose.Types.ObjectId);\n\t}\n\n\tasync findByCampaign(\n\t\tdto: GetLtoCampaignParticipantsDTO\n\t): Promise<{ documents: LtoCampaignParticipantItemDTO[]; total: number }> {\n\t\tconst filter = LtoParticipantQueryBuilder.buildCampaignFilter(dto);\n\t\tconst search = LtoParticipantQueryBuilder.buildSearchTerm(dto);\n\n\t\tconst [result] = await this.model.aggregate([\n\t\t\t{ $match: filter },\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: ShopModel.collection.name,\n\t\t\t\t\tlet: { shopId: '$shop' },\n\t\t\t\t\tpipeline: [\n\t\t\t\t\t\t{ $match: { $expr: { $eq: ['$_id', '$$shopId'] } } },\n\t\t\t\t\t\t{ $project: { name: 1, logo: 1 } },\n\t\t\t\t\t],\n\t\t\t\t\tas: 'shopData',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ $unwind: { path: '$shopData', preserveNullAndEmptyArrays: true } },\n\t\t\t...(search ? [{ $match: { 'shopData.name': { $regex: search, $options: 'i' } } }] : []),\n\t\t\t{ $sort: { joinedAt: -1 } },\n\t\t\t{\n\t\t\t\t$facet: {\n\t\t\t\t\ttotal: [{ $count: 'count' }],\n\t\t\t\t\tdocuments: [\n\t\t\t\t\t\t{ $skip: (dto.page - 1) * dto.size },\n\t\t\t\t\t\t{ $limit: dto.size },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t$project: {\n\t\t\t\t\t\t\t\tshopId: '$shopData._id',\n\t\t\t\t\t\t\t\tshopName: { $ifNull: ['$shopData.name', null] },\n\t\t\t\t\t\t\t\tshopPhoto: { $ifNull: ['$shopData.logo', null] },\n\t\t\t\t\t\t\t\tjoinedAt: 1,\n\t\t\t\t\t\t\t\tdiscountPercentage: 1,\n\t\t\t\t\t\t\t\tmaxDiscountCap: 1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t]);\n\n\t\treturn {\n\t\t\tdocuments: result?.documents ?? [],\n\t\t\ttotal: result?.total?.[0]?.count ?? 0,\n\t\t};\n\t}\n}\n\nexport const ltoParticipantRepository = Container.get(LtoParticipantRepository);\n"]}
@@ -23,6 +23,7 @@ export declare const participantRouter: import("@trpc/server").TRPCBuiltRouter<{
23
23
  isOrderCapacityEnabled: boolean;
24
24
  products?: (string | mongoose.Types.ObjectId)[] | undefined;
25
25
  maxOrderCapacity?: number | undefined;
26
+ shopCategories?: (string | mongoose.Types.ObjectId)[] | undefined;
26
27
  };
27
28
  output: {
28
29
  message: string;
@@ -77,6 +78,7 @@ export declare const participantRouter: import("@trpc/server").TRPCBuiltRouter<{
77
78
  isOrderCapacityEnabled: boolean;
78
79
  products?: (string | mongoose.Types.ObjectId)[] | undefined;
79
80
  maxOrderCapacity?: number | undefined;
81
+ shopCategories?: (string | mongoose.Types.ObjectId)[] | undefined;
80
82
  };
81
83
  output: {
82
84
  message: string;
@@ -201,18 +203,20 @@ export declare const participantRouter: import("@trpc/server").TRPCBuiltRouter<{
201
203
  message: string;
202
204
  success: boolean;
203
205
  data?: {
206
+ shopId: string | mongoose.Types.ObjectId;
204
207
  joinedAt: Date;
205
208
  shopName: string | null;
206
- shopPhoto?: string | null | undefined;
207
209
  discountPercentage?: number | undefined;
208
210
  maxDiscountCap?: number | undefined;
211
+ shopPhoto?: string | null | undefined;
209
212
  } | {
210
213
  documents: {
214
+ shopId: string | mongoose.Types.ObjectId;
211
215
  joinedAt: Date;
212
216
  shopName: string | null;
213
- shopPhoto?: string | null | undefined;
214
217
  discountPercentage?: number | undefined;
215
218
  maxDiscountCap?: number | undefined;
219
+ shopPhoto?: string | null | undefined;
216
220
  }[];
217
221
  metadata?: {
218
222
  page: number;
@@ -1 +1 @@
1
- {"version":3,"file":"limited-time-offer-participant.router.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/participant/limited-time-offer-participant.router.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAY9C,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgD5B,CAAC"}
1
+ {"version":3,"file":"limited-time-offer-participant.router.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/participant/limited-time-offer-participant.router.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAY9C,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgD5B,CAAC"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=limited-time-offer-participant.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limited-time-offer-participant.service.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/participant/limited-time-offer-participant.service.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=limited-time-offer-participant.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limited-time-offer-participant.service.js","sourceRoot":"/","sources":["modules/limited-time-offer/participant/limited-time-offer-participant.service.ts"],"names":[],"mappings":"","sourcesContent":[""]}
@@ -9,6 +9,7 @@ export declare enum LtoCardState {
9
9
  export declare const JoinLtoCampaignSchema: z.ZodEffects<z.ZodObject<{
10
10
  isEntireMenu: z.ZodBoolean;
11
11
  products: z.ZodDefault<z.ZodArray<z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("mongoose").Types.ObjectId, string>, z.ZodType<import("mongoose").Types.ObjectId, z.ZodTypeDef, import("mongoose").Types.ObjectId>]>, "many">>;
12
+ shopCategories: z.ZodDefault<z.ZodArray<z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("mongoose").Types.ObjectId, string>, z.ZodType<import("mongoose").Types.ObjectId, z.ZodTypeDef, import("mongoose").Types.ObjectId>]>, "many">>;
12
13
  discountPercentage: z.ZodNumber;
13
14
  maxDiscountCap: z.ZodNumber;
14
15
  isOrderCapacityEnabled: z.ZodBoolean;
@@ -19,6 +20,7 @@ export declare const JoinLtoCampaignSchema: z.ZodEffects<z.ZodObject<{
19
20
  discountPercentage: number;
20
21
  maxDiscountCap: number;
21
22
  isOrderCapacityEnabled: boolean;
23
+ shopCategories: import("mongoose").Types.ObjectId[];
22
24
  maxOrderCapacity?: number | undefined;
23
25
  }, {
24
26
  isEntireMenu: boolean;
@@ -27,12 +29,14 @@ export declare const JoinLtoCampaignSchema: z.ZodEffects<z.ZodObject<{
27
29
  isOrderCapacityEnabled: boolean;
28
30
  products?: (string | import("mongoose").Types.ObjectId)[] | undefined;
29
31
  maxOrderCapacity?: number | undefined;
32
+ shopCategories?: (string | import("mongoose").Types.ObjectId)[] | undefined;
30
33
  }>, {
31
34
  isEntireMenu: boolean;
32
35
  products: import("mongoose").Types.ObjectId[];
33
36
  discountPercentage: number;
34
37
  maxDiscountCap: number;
35
38
  isOrderCapacityEnabled: boolean;
39
+ shopCategories: import("mongoose").Types.ObjectId[];
36
40
  maxOrderCapacity?: number | undefined;
37
41
  }, {
38
42
  isEntireMenu: boolean;
@@ -41,6 +45,7 @@ export declare const JoinLtoCampaignSchema: z.ZodEffects<z.ZodObject<{
41
45
  isOrderCapacityEnabled: boolean;
42
46
  products?: (string | import("mongoose").Types.ObjectId)[] | undefined;
43
47
  maxOrderCapacity?: number | undefined;
48
+ shopCategories?: (string | import("mongoose").Types.ObjectId)[] | undefined;
44
49
  }>;
45
50
  export declare const ParticipantSchema: z.ZodObject<{
46
51
  _id: z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("mongoose").Types.ObjectId, string>, z.ZodType<import("mongoose").Types.ObjectId, z.ZodTypeDef, import("mongoose").Types.ObjectId>]>;
@@ -731,7 +736,7 @@ export type CampaignSummaryDTO = DTO<typeof CampaignSummarySchema>;
731
736
  export type ParticipantSummaryDTO = DTO<typeof ParticipantSummarySchema>;
732
737
  export type ParticipantStatusDTO = DTO<typeof ParticipantStatusSchema>;
733
738
  export type ActiveParticipantMarketingDTO = Pick<ParticipantSummaryDTO, 'marketingId'>;
734
- export type UpdateParticipantDataDTO = JoinLtoCampaignDTO & {
739
+ export type UpdateParticipantDataDTO = Omit<JoinLtoCampaignDTO, 'shopCategories'> & {
735
740
  marketing: ParticipantSummaryDTO['marketingId'];
736
741
  };
737
742
  //# sourceMappingURL=limited-time-offer-participant.validation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"limited-time-offer-participant.validation.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/participant/limited-time-offer-participant.validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAuB,GAAG,EAAgB,MAAM,yCAAyC,CAAC;AAEjG,oBAAY,YAAY;IACpB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,MAAM,WAAW;CACpB;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B5B,CAAC;AAEP,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe5B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;EAQhC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;EASnC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIlC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA0C,CAAC;AACjF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAgD,CAAC;AAE7F,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACnE,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC3D,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACnE,MAAM,MAAM,qBAAqB,GAAG,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC;AACzE,MAAM,MAAM,oBAAoB,GAAG,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACvE,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAAC,qBAAqB,EAAE,aAAa,CAAC,CAAC;AACvF,MAAM,MAAM,wBAAwB,GAAG,kBAAkB,GAAG;IAAC,SAAS,EAAE,qBAAqB,CAAC,aAAa,CAAC,CAAA;CAAC,CAAC"}
1
+ {"version":3,"file":"limited-time-offer-participant.validation.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/participant/limited-time-offer-participant.validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAuB,GAAG,EAAgB,MAAM,yCAAyC,CAAC;AAEjG,oBAAY,YAAY;IACpB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,MAAM,WAAW;CACpB;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgC5B,CAAC;AAEP,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe5B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;EAQhC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;EASnC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIlC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA0C,CAAC;AACjF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAgD,CAAC;AAE7F,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACnE,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC3D,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACnE,MAAM,MAAM,qBAAqB,GAAG,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC;AACzE,MAAM,MAAM,oBAAoB,GAAG,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACvE,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAAC,qBAAqB,EAAE,aAAa,CAAC,CAAC;AAGvF,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,GAAG;IAAC,SAAS,EAAE,qBAAqB,CAAC,aAAa,CAAC,CAAA;CAAC,CAAC"}
@@ -14,16 +14,17 @@ exports.JoinLtoCampaignSchema = zod_1.z
14
14
  .object({
15
15
  isEntireMenu: zod_1.z.boolean(),
16
16
  products: zod_1.z.array(validation_1.ZodValidation.objectId()).default([]),
17
+ shopCategories: zod_1.z.array(validation_1.ZodValidation.objectId()).default([]),
17
18
  discountPercentage: validation_1.ZodValidation.number('Discount percentage'),
18
19
  maxDiscountCap: validation_1.ZodValidation.number('Max discount cap'),
19
20
  isOrderCapacityEnabled: zod_1.z.boolean(),
20
21
  maxOrderCapacity: validation_1.ZodValidation.number('Max order capacity').optional(),
21
22
  })
22
23
  .superRefine((d, ctx) => {
23
- if (!d.isEntireMenu && d.products.length === 0) {
24
+ if (!d.isEntireMenu && d.products.length === 0 && d.shopCategories.length === 0) {
24
25
  ctx.addIssue({
25
26
  code: zod_1.z.ZodIssueCode.custom,
26
- message: 'At least one product must be selected',
27
+ message: 'At least one product or category must be selected',
27
28
  path: ['products']
28
29
  });
29
30
  }