@lyxa.ai/marketing 1.0.60 → 1.0.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/dist/lib/event/event-initializations.d.ts.map +1 -1
  2. package/dist/lib/event/event-initializations.js +2 -0
  3. package/dist/lib/event/event-initializations.js.map +1 -1
  4. package/dist/lib/event/event-listeners/event-listeners.d.ts +2 -0
  5. package/dist/lib/event/event-listeners/event-listeners.d.ts.map +1 -1
  6. package/dist/lib/event/event-listeners/event-listeners.js +69 -12
  7. package/dist/lib/event/event-listeners/event-listeners.js.map +1 -1
  8. package/dist/lib/event/events/marketing-product-seed.event.d.ts +1 -2
  9. package/dist/lib/event/events/marketing-product-seed.event.d.ts.map +1 -1
  10. package/dist/lib/event/events/marketing-product-seed.event.js.map +1 -1
  11. package/dist/lib/event/events/marketing-product-sync.event.d.ts +11 -0
  12. package/dist/lib/event/events/marketing-product-sync.event.d.ts.map +1 -0
  13. package/dist/lib/event/events/marketing-product-sync.event.js +12 -0
  14. package/dist/lib/event/events/marketing-product-sync.event.js.map +1 -0
  15. package/dist/lib/index.d.ts +8175 -33
  16. package/dist/lib/index.d.ts.map +1 -1
  17. package/dist/lib/index.js +4 -0
  18. package/dist/lib/index.js.map +1 -1
  19. package/dist/lib/modules/coupon/routers/coupon.router.d.ts +7630 -2
  20. package/dist/lib/modules/coupon/routers/coupon.router.d.ts.map +1 -1
  21. package/dist/lib/modules/coupon/routers/coupon.router.js +0 -7
  22. package/dist/lib/modules/coupon/routers/coupon.router.js.map +1 -1
  23. package/dist/lib/modules/coupon/services/coupon.service.d.ts +0 -1
  24. package/dist/lib/modules/coupon/services/coupon.service.d.ts.map +1 -1
  25. package/dist/lib/modules/coupon/services/coupon.service.js +3 -4
  26. package/dist/lib/modules/coupon/services/coupon.service.js.map +1 -1
  27. package/dist/lib/modules/coupon/services/patterns/repository/CouponRepository.js +2 -2
  28. package/dist/lib/modules/coupon/services/patterns/repository/CouponRepository.js.map +1 -1
  29. package/dist/lib/modules/coupon/validations/coupon.validation.d.ts +6 -6
  30. package/dist/lib/modules/coupon/validations/coupon.validation.js +2 -2
  31. package/dist/lib/modules/coupon/validations/coupon.validation.js.map +1 -1
  32. package/dist/lib/modules/coupon/validations/create-coupon.validation.d.ts.map +1 -1
  33. package/dist/lib/modules/coupon/validations/create-coupon.validation.js +4 -1
  34. package/dist/lib/modules/coupon/validations/create-coupon.validation.js.map +1 -1
  35. package/dist/lib/modules/deal-setting/services/deal-setting.service.d.ts.map +1 -1
  36. package/dist/lib/modules/deal-setting/services/deal-setting.service.js +4 -1
  37. package/dist/lib/modules/deal-setting/services/deal-setting.service.js.map +1 -1
  38. package/dist/lib/modules/featured-setting/services/featured-setting.service.d.ts.map +1 -1
  39. package/dist/lib/modules/featured-setting/services/featured-setting.service.js +3 -0
  40. package/dist/lib/modules/featured-setting/services/featured-setting.service.js.map +1 -1
  41. package/dist/lib/modules/limited-time-offer/campaign/campaign.router.d.ts +54 -8
  42. package/dist/lib/modules/limited-time-offer/campaign/campaign.router.d.ts.map +1 -1
  43. package/dist/lib/modules/limited-time-offer/campaign/campaign.router.js +11 -0
  44. package/dist/lib/modules/limited-time-offer/campaign/campaign.router.js.map +1 -1
  45. package/dist/lib/modules/limited-time-offer/campaign/jobs/index.d.ts.map +1 -1
  46. package/dist/lib/modules/limited-time-offer/campaign/jobs/index.js +6 -0
  47. package/dist/lib/modules/limited-time-offer/campaign/jobs/index.js.map +1 -1
  48. package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts +0 -1
  49. package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts.map +1 -1
  50. package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.js +2 -6
  51. package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.js.map +1 -1
  52. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts +16 -3
  53. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts.map +1 -1
  54. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.js +22 -3
  55. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.js.map +1 -1
  56. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.d.ts +2 -0
  57. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.d.ts.map +1 -1
  58. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.js +12 -0
  59. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.js.map +1 -1
  60. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts +242 -35
  61. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts.map +1 -1
  62. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.js +19 -1
  63. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.js.map +1 -1
  64. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.d.ts +8 -1
  65. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.d.ts.map +1 -1
  66. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.js +64 -1
  67. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.js.map +1 -1
  68. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.d.ts +3 -0
  69. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.d.ts.map +1 -1
  70. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.js +66 -8
  71. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.js.map +1 -1
  72. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts +1 -1
  73. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts.map +1 -1
  74. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.js +37 -19
  75. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.js.map +1 -1
  76. package/dist/lib/modules/limited-time-offer/limited-time-offer.router.d.ts +249 -18
  77. package/dist/lib/modules/limited-time-offer/limited-time-offer.router.d.ts.map +1 -1
  78. package/dist/lib/modules/limited-time-offer/limited-time-offer.service.d.ts +2 -0
  79. package/dist/lib/modules/limited-time-offer/limited-time-offer.service.d.ts.map +1 -1
  80. package/dist/lib/modules/limited-time-offer/limited-time-offer.service.js +15 -3
  81. package/dist/lib/modules/limited-time-offer/limited-time-offer.service.js.map +1 -1
  82. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.d.ts +1 -1
  83. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.js +1 -1
  84. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.js.map +1 -1
  85. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.d.ts +24 -3
  86. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.d.ts.map +1 -1
  87. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.js +19 -1
  88. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.js.map +1 -1
  89. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.repository.d.ts +10 -0
  90. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.repository.d.ts.map +1 -1
  91. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.repository.js +43 -0
  92. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.repository.js.map +1 -1
  93. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts +195 -10
  94. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts.map +1 -1
  95. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.js +29 -0
  96. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.js.map +1 -1
  97. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts +428 -33
  98. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts.map +1 -1
  99. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.js +16 -6
  100. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.js.map +1 -1
  101. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.d.ts +7 -4
  102. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.d.ts.map +1 -1
  103. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.js +42 -7
  104. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.js.map +1 -1
  105. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts +14 -3
  106. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts.map +1 -1
  107. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.js +76 -16
  108. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.js.map +1 -1
  109. package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.repository.d.ts +13 -0
  110. package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.repository.d.ts.map +1 -0
  111. package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.repository.js +75 -0
  112. package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.repository.js.map +1 -0
  113. package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.service.d.ts +21 -0
  114. package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.service.d.ts.map +1 -0
  115. package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.service.js +83 -0
  116. package/dist/lib/modules/limited-time-offer/session/limited-time-offer-campaign-session.service.js.map +1 -0
  117. package/dist/lib/modules/marketing/patterns/repository/MarketingMetricsRepository.d.ts +1 -0
  118. package/dist/lib/modules/marketing/patterns/repository/MarketingMetricsRepository.d.ts.map +1 -1
  119. package/dist/lib/modules/marketing/patterns/repository/MarketingMetricsRepository.js +29 -0
  120. package/dist/lib/modules/marketing/patterns/repository/MarketingMetricsRepository.js.map +1 -1
  121. package/dist/lib/modules/marketing/routers/marketing.router.d.ts +14 -0
  122. package/dist/lib/modules/marketing/routers/marketing.router.d.ts.map +1 -1
  123. package/dist/lib/modules/marketing/routers/marketing.router.js +5 -0
  124. package/dist/lib/modules/marketing/routers/marketing.router.js.map +1 -1
  125. package/dist/lib/modules/marketing/services/index.d.ts +3 -0
  126. package/dist/lib/modules/marketing/services/index.d.ts.map +1 -1
  127. package/dist/lib/modules/marketing/services/index.js +3 -0
  128. package/dist/lib/modules/marketing/services/index.js.map +1 -1
  129. package/dist/lib/modules/marketing/services/marketing-conflict.repository.d.ts +9 -0
  130. package/dist/lib/modules/marketing/services/marketing-conflict.repository.d.ts.map +1 -0
  131. package/dist/lib/modules/marketing/services/marketing-conflict.repository.js +63 -0
  132. package/dist/lib/modules/marketing/services/marketing-conflict.repository.js.map +1 -0
  133. package/dist/lib/modules/marketing/services/marketing-conflict.service.d.ts +27 -0
  134. package/dist/lib/modules/marketing/services/marketing-conflict.service.d.ts.map +1 -0
  135. package/dist/lib/modules/marketing/services/marketing-conflict.service.js +135 -0
  136. package/dist/lib/modules/marketing/services/marketing-conflict.service.js.map +1 -0
  137. package/dist/lib/modules/marketing/services/marketing.service.d.ts +7 -2
  138. package/dist/lib/modules/marketing/services/marketing.service.d.ts.map +1 -1
  139. package/dist/lib/modules/marketing/services/marketing.service.js +97 -51
  140. package/dist/lib/modules/marketing/services/marketing.service.js.map +1 -1
  141. package/dist/lib/modules/marketing/services/product-marketing.service.d.ts +2 -3
  142. package/dist/lib/modules/marketing/services/product-marketing.service.d.ts.map +1 -1
  143. package/dist/lib/modules/marketing/services/product-marketing.service.js +42 -13
  144. package/dist/lib/modules/marketing/services/product-marketing.service.js.map +1 -1
  145. package/dist/lib/modules/marketing/services/spend-to-get-marketing.repository.d.ts +14 -0
  146. package/dist/lib/modules/marketing/services/spend-to-get-marketing.repository.d.ts.map +1 -0
  147. package/dist/lib/modules/marketing/services/spend-to-get-marketing.repository.js +82 -0
  148. package/dist/lib/modules/marketing/services/spend-to-get-marketing.repository.js.map +1 -0
  149. package/dist/lib/modules/marketing/services/spend-to-get-marketing.service.d.ts +11 -0
  150. package/dist/lib/modules/marketing/services/spend-to-get-marketing.service.d.ts.map +1 -0
  151. package/dist/lib/modules/marketing/services/spend-to-get-marketing.service.js +99 -0
  152. package/dist/lib/modules/marketing/services/spend-to-get-marketing.service.js.map +1 -0
  153. package/dist/lib/modules/marketing/services/spend-to-get-progress.repository.d.ts +9 -0
  154. package/dist/lib/modules/marketing/services/spend-to-get-progress.repository.d.ts.map +1 -0
  155. package/dist/lib/modules/marketing/services/spend-to-get-progress.repository.js +69 -0
  156. package/dist/lib/modules/marketing/services/spend-to-get-progress.repository.js.map +1 -0
  157. package/dist/lib/modules/marketing/services/spend-to-get-progress.service.d.ts +31 -0
  158. package/dist/lib/modules/marketing/services/spend-to-get-progress.service.d.ts.map +1 -0
  159. package/dist/lib/modules/marketing/services/spend-to-get-progress.service.js +123 -0
  160. package/dist/lib/modules/marketing/services/spend-to-get-progress.service.js.map +1 -0
  161. package/dist/lib/modules/marketing/services/synchronize-product-marketing.service.d.ts.map +1 -1
  162. package/dist/lib/modules/marketing/services/synchronize-product-marketing.service.js +95 -27
  163. package/dist/lib/modules/marketing/services/synchronize-product-marketing.service.js.map +1 -1
  164. package/dist/lib/modules/marketing/validations/all-marketings.validation.d.ts.map +1 -1
  165. package/dist/lib/modules/marketing/validations/all-marketings.validation.js +3 -0
  166. package/dist/lib/modules/marketing/validations/all-marketings.validation.js.map +1 -1
  167. package/dist/lib/modules/marketing/validations/buy1-get1-marketing.validation.d.ts +3 -3
  168. package/dist/lib/modules/marketing/validations/discount-marketing.validation.d.ts +3 -3
  169. package/dist/lib/modules/marketing/validations/index.d.ts +1 -0
  170. package/dist/lib/modules/marketing/validations/index.d.ts.map +1 -1
  171. package/dist/lib/modules/marketing/validations/index.js +1 -0
  172. package/dist/lib/modules/marketing/validations/index.js.map +1 -1
  173. package/dist/lib/modules/marketing/validations/marketing.validation.d.ts +17 -0
  174. package/dist/lib/modules/marketing/validations/marketing.validation.d.ts.map +1 -1
  175. package/dist/lib/modules/marketing/validations/marketing.validation.js +7 -1
  176. package/dist/lib/modules/marketing/validations/marketing.validation.js.map +1 -1
  177. package/dist/lib/modules/marketing/validations/product-marketing.validation.d.ts +2 -2
  178. package/dist/lib/modules/marketing/validations/spend-to-get-marketing.validation.d.ts +617 -0
  179. package/dist/lib/modules/marketing/validations/spend-to-get-marketing.validation.d.ts.map +1 -0
  180. package/dist/lib/modules/marketing/validations/spend-to-get-marketing.validation.js +119 -0
  181. package/dist/lib/modules/marketing/validations/spend-to-get-marketing.validation.js.map +1 -0
  182. package/dist/lib/modules/punch-marketing-history/routers/punch-marketing-history.router.d.ts +1 -1
  183. package/dist/lib/modules/punch-marketing-history/services/punch-marketing-history.service.d.ts +0 -1
  184. package/dist/lib/modules/punch-marketing-history/services/punch-marketing-history.service.d.ts.map +1 -1
  185. package/dist/lib/modules/punch-marketing-history/services/punch-marketing-history.service.js +2 -49
  186. package/dist/lib/modules/punch-marketing-history/services/punch-marketing-history.service.js.map +1 -1
  187. package/dist/lib/modules/punch-marketing-history/validations/punch-marketing-history.validation.d.ts +2 -2
  188. package/dist/lib/modules/spend-to-get-history/routers/index.d.ts +2 -0
  189. package/dist/lib/modules/spend-to-get-history/routers/index.d.ts.map +1 -0
  190. package/dist/lib/modules/spend-to-get-history/routers/index.js +18 -0
  191. package/dist/lib/modules/spend-to-get-history/routers/index.js.map +1 -0
  192. package/dist/lib/modules/spend-to-get-history/routers/spend-to-get-history.router.js +62 -0
  193. package/dist/lib/modules/spend-to-get-history/routers/spend-to-get-history.router.js.map +1 -0
  194. package/dist/lib/modules/spend-to-get-history/services/index.d.ts +2 -0
  195. package/dist/lib/modules/spend-to-get-history/services/index.d.ts.map +1 -0
  196. package/dist/lib/modules/spend-to-get-history/services/index.js +18 -0
  197. package/dist/lib/modules/spend-to-get-history/services/index.js.map +1 -0
  198. package/dist/lib/modules/spend-to-get-history/services/spend-to-get-history.service.d.ts +24 -0
  199. package/dist/lib/modules/spend-to-get-history/services/spend-to-get-history.service.d.ts.map +1 -0
  200. package/dist/lib/modules/spend-to-get-history/services/spend-to-get-history.service.js +136 -0
  201. package/dist/lib/modules/spend-to-get-history/services/spend-to-get-history.service.js.map +1 -0
  202. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.d.ts +24 -0
  203. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.d.ts.map +1 -0
  204. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.js +97 -0
  205. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.js.map +1 -0
  206. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.d.ts +271 -0
  207. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.d.ts.map +1 -0
  208. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.js +62 -0
  209. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.js.map +1 -0
  210. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.d.ts +24 -0
  211. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.d.ts.map +1 -0
  212. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.js +116 -0
  213. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.js.map +1 -0
  214. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.d.ts +232 -0
  215. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.d.ts.map +1 -0
  216. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.js +30 -0
  217. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.js.map +1 -0
  218. package/dist/lib/modules/spend-to-get-history/validations/index.d.ts +2 -0
  219. package/dist/lib/modules/spend-to-get-history/validations/index.d.ts.map +1 -0
  220. package/dist/lib/modules/spend-to-get-history/validations/index.js +18 -0
  221. package/dist/lib/modules/spend-to-get-history/validations/index.js.map +1 -0
  222. package/dist/lib/modules/spend-to-get-history/validations/spend-to-get-history.validation.d.ts +232 -0
  223. package/dist/lib/modules/spend-to-get-history/validations/spend-to-get-history.validation.d.ts.map +1 -0
  224. package/dist/lib/modules/spend-to-get-history/validations/spend-to-get-history.validation.js +30 -0
  225. package/dist/lib/modules/spend-to-get-history/validations/spend-to-get-history.validation.js.map +1 -0
  226. package/dist/lib/modules/tournament/match/events/match-ended.consumer.d.ts +2 -0
  227. package/dist/lib/modules/tournament/match/events/match-ended.consumer.d.ts.map +1 -0
  228. package/dist/lib/modules/tournament/match/events/match-ended.consumer.js +15 -0
  229. package/dist/lib/modules/tournament/match/events/match-ended.consumer.js.map +1 -0
  230. package/dist/lib/modules/tournament/match/events/match-ended.event.d.ts +14 -0
  231. package/dist/lib/modules/tournament/match/events/match-ended.event.d.ts.map +1 -0
  232. package/dist/lib/modules/tournament/match/events/match-ended.event.js +12 -0
  233. package/dist/lib/modules/tournament/match/events/match-ended.event.js.map +1 -0
  234. package/dist/lib/modules/tournament/notification/jobs/notification.producer.d.ts +10 -0
  235. package/dist/lib/modules/tournament/notification/jobs/notification.producer.d.ts.map +1 -0
  236. package/dist/lib/modules/tournament/notification/jobs/notification.producer.js +23 -0
  237. package/dist/lib/modules/tournament/notification/jobs/notification.producer.js.map +1 -0
  238. package/dist/lib/modules/tournament/notification/jobs/notification.worker.d.ts +9 -0
  239. package/dist/lib/modules/tournament/notification/jobs/notification.worker.d.ts.map +1 -0
  240. package/dist/lib/modules/tournament/notification/jobs/notification.worker.js +82 -0
  241. package/dist/lib/modules/tournament/notification/jobs/notification.worker.js.map +1 -0
  242. package/dist/lib/modules/tournament/notification/notification.schedule.config.d.ts +10 -0
  243. package/dist/lib/modules/tournament/notification/notification.schedule.config.d.ts.map +1 -0
  244. package/dist/lib/modules/tournament/notification/notification.schedule.config.js +15 -0
  245. package/dist/lib/modules/tournament/notification/notification.schedule.config.js.map +1 -0
  246. package/dist/lib/modules/tournament/notification/notification.scheduler.service.d.ts +10 -0
  247. package/dist/lib/modules/tournament/notification/notification.scheduler.service.d.ts.map +1 -0
  248. package/dist/lib/modules/tournament/notification/notification.scheduler.service.js +73 -0
  249. package/dist/lib/modules/tournament/notification/notification.scheduler.service.js.map +1 -0
  250. package/dist/types/event/event-initializations.d.ts.map +1 -1
  251. package/dist/types/event/event-listeners/event-listeners.d.ts +2 -0
  252. package/dist/types/event/event-listeners/event-listeners.d.ts.map +1 -1
  253. package/dist/types/event/events/marketing-product-seed.event.d.ts +1 -2
  254. package/dist/types/event/events/marketing-product-seed.event.d.ts.map +1 -1
  255. package/dist/types/event/events/marketing-product-sync.event.d.ts +11 -0
  256. package/dist/types/event/events/marketing-product-sync.event.d.ts.map +1 -0
  257. package/dist/types/events/event-initializations.d.ts +2 -0
  258. package/dist/types/events/event-initializations.d.ts.map +1 -0
  259. package/dist/types/index.d.ts +8175 -33
  260. package/dist/types/index.d.ts.map +1 -1
  261. package/dist/types/modules/coupon/routers/coupon.router.d.ts +7630 -2
  262. package/dist/types/modules/coupon/routers/coupon.router.d.ts.map +1 -1
  263. package/dist/types/modules/coupon/services/coupon.service.d.ts +0 -1
  264. package/dist/types/modules/coupon/services/coupon.service.d.ts.map +1 -1
  265. package/dist/types/modules/coupon/validations/coupon.validation.d.ts +6 -6
  266. package/dist/types/modules/coupon/validations/create-coupon.validation.d.ts.map +1 -1
  267. package/dist/types/modules/deal-setting/services/deal-setting.service.d.ts.map +1 -1
  268. package/dist/types/modules/featured-setting/services/featured-setting.service.d.ts.map +1 -1
  269. package/dist/types/modules/limited-time-offer/campaign/campaign.router.d.ts +54 -8
  270. package/dist/types/modules/limited-time-offer/campaign/campaign.router.d.ts.map +1 -1
  271. package/dist/types/modules/limited-time-offer/campaign/jobs/index.d.ts.map +1 -1
  272. package/dist/types/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts +0 -1
  273. package/dist/types/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts.map +1 -1
  274. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts +16 -3
  275. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts.map +1 -1
  276. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.d.ts +2 -0
  277. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.d.ts.map +1 -1
  278. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts +242 -35
  279. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts.map +1 -1
  280. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.d.ts +8 -1
  281. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.d.ts.map +1 -1
  282. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.d.ts +3 -0
  283. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.d.ts.map +1 -1
  284. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts +1 -1
  285. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts.map +1 -1
  286. package/dist/types/modules/limited-time-offer/limited-time-offer.router.d.ts +249 -18
  287. package/dist/types/modules/limited-time-offer/limited-time-offer.router.d.ts.map +1 -1
  288. package/dist/types/modules/limited-time-offer/limited-time-offer.service.d.ts +2 -0
  289. package/dist/types/modules/limited-time-offer/limited-time-offer.service.d.ts.map +1 -1
  290. package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.constants.d.ts +1 -1
  291. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.builder.d.ts +24 -3
  292. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.builder.d.ts.map +1 -1
  293. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.repository.d.ts +10 -0
  294. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.repository.d.ts.map +1 -1
  295. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts +195 -10
  296. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts.map +1 -1
  297. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts +1 -0
  298. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts.map +1 -0
  299. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts +428 -33
  300. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts.map +1 -1
  301. package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.d.ts +7 -4
  302. package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.d.ts.map +1 -1
  303. package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts +14 -3
  304. package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts.map +1 -1
  305. package/dist/types/modules/limited-time-offer/session/limited-time-offer-campaign-session.repository.d.ts +13 -0
  306. package/dist/types/modules/limited-time-offer/session/limited-time-offer-campaign-session.repository.d.ts.map +1 -0
  307. package/dist/types/modules/limited-time-offer/session/limited-time-offer-campaign-session.service.d.ts +21 -0
  308. package/dist/types/modules/limited-time-offer/session/limited-time-offer-campaign-session.service.d.ts.map +1 -0
  309. package/dist/types/modules/marketing/patterns/repository/MarketingMetricsRepository.d.ts +1 -0
  310. package/dist/types/modules/marketing/patterns/repository/MarketingMetricsRepository.d.ts.map +1 -1
  311. package/dist/types/modules/marketing/routers/marketing.router.d.ts +14 -0
  312. package/dist/types/modules/marketing/routers/marketing.router.d.ts.map +1 -1
  313. package/dist/types/modules/marketing/services/index.d.ts +3 -0
  314. package/dist/types/modules/marketing/services/index.d.ts.map +1 -1
  315. package/dist/types/modules/marketing/services/marketing-conflict.repository.d.ts +9 -0
  316. package/dist/types/modules/marketing/services/marketing-conflict.repository.d.ts.map +1 -0
  317. package/dist/types/modules/marketing/services/marketing-conflict.service.d.ts +41 -0
  318. package/dist/types/modules/marketing/services/marketing-conflict.service.d.ts.map +1 -0
  319. package/dist/types/modules/marketing/services/marketing.service.d.ts +7 -2
  320. package/dist/types/modules/marketing/services/marketing.service.d.ts.map +1 -1
  321. package/dist/types/modules/marketing/services/product-marketing.service.d.ts +7 -3
  322. package/dist/types/modules/marketing/services/product-marketing.service.d.ts.map +1 -1
  323. package/dist/types/modules/marketing/services/spend-to-get-marketing.repository.d.ts +14 -0
  324. package/dist/types/modules/marketing/services/spend-to-get-marketing.repository.d.ts.map +1 -0
  325. package/dist/types/modules/marketing/services/spend-to-get-marketing.service.d.ts +20 -0
  326. package/dist/types/modules/marketing/services/spend-to-get-marketing.service.d.ts.map +1 -0
  327. package/dist/types/modules/marketing/services/spend-to-get-progress.repository.d.ts +9 -0
  328. package/dist/types/modules/marketing/services/spend-to-get-progress.repository.d.ts.map +1 -0
  329. package/dist/types/modules/marketing/services/spend-to-get-progress.service.d.ts +37 -0
  330. package/dist/types/modules/marketing/services/spend-to-get-progress.service.d.ts.map +1 -0
  331. package/dist/types/modules/marketing/services/synchronize-product-marketing.service.d.ts.map +1 -1
  332. package/dist/types/modules/marketing/validations/all-marketings.validation.d.ts.map +1 -1
  333. package/dist/types/modules/marketing/validations/buy1-get1-marketing.validation.d.ts +3 -3
  334. package/dist/types/modules/marketing/validations/discount-marketing.validation.d.ts +3 -3
  335. package/dist/types/modules/marketing/validations/index.d.ts +1 -0
  336. package/dist/types/modules/marketing/validations/index.d.ts.map +1 -1
  337. package/dist/types/modules/marketing/validations/marketing.validation.d.ts +17 -0
  338. package/dist/types/modules/marketing/validations/marketing.validation.d.ts.map +1 -1
  339. package/dist/types/modules/marketing/validations/product-marketing.validation.d.ts +2 -2
  340. package/dist/types/modules/marketing/validations/spend-to-get-marketing.validation.d.ts +630 -0
  341. package/dist/types/modules/marketing/validations/spend-to-get-marketing.validation.d.ts.map +1 -0
  342. package/dist/types/modules/punch-marketing-history/routers/punch-marketing-history.router.d.ts +1 -1
  343. package/dist/types/modules/punch-marketing-history/services/punch-marketing-history.service.d.ts +0 -5
  344. package/dist/types/modules/punch-marketing-history/services/punch-marketing-history.service.d.ts.map +1 -1
  345. package/dist/types/modules/punch-marketing-history/validations/punch-marketing-history.validation.d.ts +2 -2
  346. package/dist/types/modules/spend-to-get-history/routers/index.d.ts +2 -0
  347. package/dist/types/modules/spend-to-get-history/routers/index.d.ts.map +1 -0
  348. package/dist/types/modules/spend-to-get-history/services/index.d.ts +2 -0
  349. package/dist/types/modules/spend-to-get-history/services/index.d.ts.map +1 -0
  350. package/dist/types/modules/spend-to-get-history/services/spend-to-get-history.service.d.ts +56 -0
  351. package/dist/types/modules/spend-to-get-history/services/spend-to-get-history.service.d.ts.map +1 -0
  352. package/dist/types/modules/spend-to-get-history/spend-to-get-history.repository.d.ts +24 -0
  353. package/dist/types/modules/spend-to-get-history/spend-to-get-history.repository.d.ts.map +1 -0
  354. package/dist/types/modules/spend-to-get-history/spend-to-get-history.router.d.ts +271 -0
  355. package/dist/types/modules/spend-to-get-history/spend-to-get-history.router.d.ts.map +1 -0
  356. package/dist/types/modules/spend-to-get-history/spend-to-get-history.service.d.ts +56 -0
  357. package/dist/types/modules/spend-to-get-history/spend-to-get-history.service.d.ts.map +1 -0
  358. package/dist/types/modules/spend-to-get-history/spend-to-get-history.validation.d.ts +241 -0
  359. package/dist/types/modules/spend-to-get-history/spend-to-get-history.validation.d.ts.map +1 -0
  360. package/dist/types/modules/spend-to-get-history/validations/index.d.ts +2 -0
  361. package/dist/types/modules/spend-to-get-history/validations/index.d.ts.map +1 -0
  362. package/dist/types/modules/spend-to-get-history/validations/spend-to-get-history.validation.d.ts +241 -0
  363. package/dist/types/modules/spend-to-get-history/validations/spend-to-get-history.validation.d.ts.map +1 -0
  364. package/dist/types/modules/tournament/config/tournament-config.validation.d.ts +201 -0
  365. package/dist/types/modules/tournament/config/tournament-config.validation.d.ts.map +1 -0
  366. package/dist/types/modules/tournament/match/events/match-ended.consumer.d.ts +2 -0
  367. package/dist/types/modules/tournament/match/events/match-ended.consumer.d.ts.map +1 -0
  368. package/dist/types/modules/tournament/match/events/match-ended.event.d.ts +14 -0
  369. package/dist/types/modules/tournament/match/events/match-ended.event.d.ts.map +1 -0
  370. package/dist/types/modules/tournament/notification/jobs/notification.producer.d.ts +10 -0
  371. package/dist/types/modules/tournament/notification/jobs/notification.producer.d.ts.map +1 -0
  372. package/dist/types/modules/tournament/notification/jobs/notification.worker.d.ts +9 -0
  373. package/dist/types/modules/tournament/notification/jobs/notification.worker.d.ts.map +1 -0
  374. package/dist/types/modules/tournament/notification/notification.schedule.config.d.ts +10 -0
  375. package/dist/types/modules/tournament/notification/notification.schedule.config.d.ts.map +1 -0
  376. package/dist/types/modules/tournament/notification/notification.scheduler.service.d.ts +10 -0
  377. package/dist/types/modules/tournament/notification/notification.scheduler.service.d.ts.map +1 -0
  378. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"limited-time-offer-campaign.service.js","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, {Service} from 'typedi';\nimport {DocumentType, mongoose} from '@typegoose/typegoose';\nimport {LimitedTimeOfferCampaign as Model} from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {LimitedTimeOfferCampaignStatus, MarketingType} from '@lyxa.ai/core/dist/utilities/enum';\nimport {badRequestError, conflictError, notFoundError} from '@lyxa.ai/core/dist/utilities/error-common';\nimport {\n CreateLtoCampaignDTO,\n GetLtoCampaignHistoryDTO,\n LtoActiveCampaignDTO,\n UpdateLtoCampaignDTO,\n} from '../limited-time-offer-campaign.validation';\nimport {LtoCampaignLifecycleService} from './limited-time-offer-campaign-lifecycle.service';\nimport {LtoCampaignSchedulerService} from './limited-time-offer-campaign-scheduler.service';\nimport {LtoCampaignRepository} from '@modules/limited-time-offer/campaign/limited-time-offer-campaign.repository';\nimport {LtoCampaignQueryBuilder} from '@modules/limited-time-offer/campaign/limited-time-offer-campaign.builder';\nimport {LimitedTimeOfferConfigService} from '@modules/limited-time-offer/config/limited-time-offer-config.service';\n\nconst ACTIVE_STATUSES = [LimitedTimeOfferCampaignStatus.SCHEDULED, LimitedTimeOfferCampaignStatus.ACTIVE];\n\n@Service()\nexport class LtoCampaignService {\n private repository: LtoCampaignRepository;\n private scheduler: LtoCampaignSchedulerService;\n private lifecycle: LtoCampaignLifecycleService;\n private configService: LimitedTimeOfferConfigService;\n\n constructor() {\n this.repository = Container.get(LtoCampaignRepository);\n this.scheduler = Container.get(LtoCampaignSchedulerService);\n this.lifecycle = Container.get(LtoCampaignLifecycleService);\n this.configService = Container.get(LimitedTimeOfferConfigService);\n }\n\n public async create(dto: CreateLtoCampaignDTO) {\n await this.assertNoCampaignRunning();\n\n const now = new Date();\n const config = await this.loadConfigSnapshot();\n const status = dto.startDate <= now\n ? LimitedTimeOfferCampaignStatus.ACTIVE\n : LimitedTimeOfferCampaignStatus.SCHEDULED;\n\n const campaign = await this.repository.create(\n LtoCampaignQueryBuilder.buildCreateInput(dto, status, await this.repository.nextCampaignNumber(), config),\n );\n\n if (status === LimitedTimeOfferCampaignStatus.SCHEDULED) {\n await this.scheduler.scheduleActivation(campaign._id, dto.startDate);\n }\n await this.scheduler.scheduleExpiry(campaign._id, dto.endDate);\n\n return campaign;\n }\n\n public async getCurrent() {\n return this.repository.findCurrent();\n }\n\n public async getActive(): Promise<LtoActiveCampaignDTO | null> {\n const campaign = await this.repository.findActive();\n if (!campaign) return null;\n\n return {\n _id: campaign._id,\n title: campaign.title,\n subtitle: campaign.subTitle,\n startTime: campaign.startDate,\n endTime: campaign.endDate,\n };\n }\n\n public async getById(campaignId: mongoose.Types.ObjectId) {\n const campaign = await this.repository.findById(campaignId);\n if (!campaign) throw notFoundError('Campaign not found');\n return campaign;\n }\n\n public async getHistory(dto: GetLtoCampaignHistoryDTO) {\n const {documents, total} = await this.repository.findHistory(dto);\n return {\n documents,\n metadata: {page: dto.page, size: dto.size, totalElements: total, totalPages: Math.ceil(total / dto.size)},\n };\n }\n\n public async update(dto: UpdateLtoCampaignDTO) {\n const campaign = await this.repository.findById(dto._id);\n if (!campaign) throw notFoundError('Campaign not found');\n\n this.assertUpdateAllowed(campaign, dto);\n\n const updates = LtoCampaignQueryBuilder.buildUpdateInput(campaign, dto);\n\n if (this.shouldExpireImmediately(campaign.status, dto.endDate)) {\n return this.applyImmediateExpiry(dto._id, updates);\n }\n\n const result = await this.repository.updateById(dto._id, updates);\n if (!result) throw notFoundError('Campaign not found after update');\n\n await this.rescheduleIfDatesChanged(dto._id, result.status, campaign, dto);\n\n return result;\n }\n\n public async cancel(campaignId: mongoose.Types.ObjectId): Promise<void> {\n const campaign = await this.repository.findById(campaignId);\n if (!campaign) throw notFoundError('Campaign not found');\n\n this.assertEditable(campaign.status);\n await this.scheduler.cancelJobs(campaignId);\n await this.lifecycle.cancelCampaign(campaignId);\n }\n\n public async expire(campaignId: mongoose.Types.ObjectId): Promise<void> {\n await this.lifecycle.expireCampaign(campaignId);\n }\n\n private assertUpdateAllowed(campaign: DocumentType<Model>, dto: UpdateLtoCampaignDTO): void {\n this.assertEditable(campaign.status);\n\n if (campaign.status === LimitedTimeOfferCampaignStatus.ACTIVE && !dto.confirmActive) {\n throw badRequestError('Set confirmActive=true to confirm editing a live campaign.');\n }\n\n if (dto.startDate < new Date() && campaign.status === LimitedTimeOfferCampaignStatus.SCHEDULED) {\n throw badRequestError('Start date cannot be in the past.');\n }\n }\n\n private shouldExpireImmediately(status: LimitedTimeOfferCampaignStatus, endDate: Date): boolean {\n return status === LimitedTimeOfferCampaignStatus.ACTIVE && endDate <= new Date();\n }\n\n private async applyImmediateExpiry(campaignId: mongoose.Types.ObjectId, updates: object) {\n await this.scheduler.cancelJobs(campaignId);\n await this.repository.updateById(campaignId, updates);\n await this.lifecycle.expireCampaign(campaignId);\n const result = await this.repository.findById(campaignId);\n if (!result) throw notFoundError('Campaign not found after expiry');\n return result;\n }\n\n private async rescheduleIfDatesChanged(\n campaignId: mongoose.Types.ObjectId,\n currentStatus: LimitedTimeOfferCampaignStatus,\n original: DocumentType<Model>,\n dto: UpdateLtoCampaignDTO,\n ): Promise<void> {\n const datesChanged =\n dto.startDate.getTime() !== original.startDate!.getTime() ||\n dto.endDate.getTime() !== original.endDate!.getTime();\n\n if (!datesChanged) return;\n\n await this.scheduler.cancelJobs(campaignId);\n if (currentStatus === LimitedTimeOfferCampaignStatus.SCHEDULED) {\n await this.scheduler.scheduleActivation(campaignId, dto.startDate);\n }\n await this.scheduler.scheduleExpiry(campaignId, dto.endDate);\n }\n\n private async assertNoCampaignRunning(): Promise<void> {\n if (await this.repository.hasActiveCampaign()) {\n throw conflictError('A campaign is already scheduled or active. Delete it before creating a new one.');\n }\n }\n\n private assertEditable(status: LimitedTimeOfferCampaignStatus): void {\n if (!ACTIVE_STATUSES.includes(status)) {\n throw badRequestError('Only SCHEDULED or ACTIVE campaigns can be modified.');\n }\n }\n\n private async loadConfigSnapshot() {\n const config = await this.configService.getByType(MarketingType.DISCOUNT)\n .catch(() => { throw badRequestError('Global config is incomplete. Set discount options and max caps first.'); });\n\n if (config.discountOptions.length === 0 || config.maxDiscountCaps.length === 0) {\n throw badRequestError('Global config is incomplete. Set discount options and max caps first.');\n }\n\n return config;\n }\n}\n\nexport const ltoCampaignService = Container.get(LtoCampaignService);\n"]}
1
+ {"version":3,"file":"limited-time-offer-campaign.service.js","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, {Service} from 'typedi';\nimport {DocumentType, mongoose} from '@typegoose/typegoose';\nimport {LimitedTimeOfferCampaign as Model} from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {LimitedTimeOfferCampaignStatus, MarketingType} from '@lyxa.ai/core/dist/utilities/enum';\nimport {badRequestError, conflictError, notFoundError} from '@lyxa.ai/core/dist/utilities/error-common';\nimport {\n CreateLtoCampaignDTO,\n GetLtoCampaignHistoryDTO,\n LtoActiveCampaignDTO,\n UpdateLtoCampaignDTO,\n} from '../limited-time-offer-campaign.validation';\nimport {LtoCampaignLifecycleService} from './limited-time-offer-campaign-lifecycle.service';\nimport {LtoCampaignSchedulerService} from './limited-time-offer-campaign-scheduler.service';\nimport {LtoCampaignRepository} from '@modules/limited-time-offer/campaign/limited-time-offer-campaign.repository';\nimport {LtoCampaignQueryBuilder, nextOccurrenceDate} from '@modules/limited-time-offer/campaign/limited-time-offer-campaign.builder';\nimport {LimitedTimeOfferConfigService} from '@modules/limited-time-offer/config/limited-time-offer-config.service';\n\nconst ACTIVE_STATUSES = [LimitedTimeOfferCampaignStatus.SCHEDULED, LimitedTimeOfferCampaignStatus.ACTIVE];\n\n@Service()\nexport class LtoCampaignService {\n private repository: LtoCampaignRepository;\n private scheduler: LtoCampaignSchedulerService;\n private lifecycle: LtoCampaignLifecycleService;\n private configService: LimitedTimeOfferConfigService;\n\n constructor() {\n this.repository = Container.get(LtoCampaignRepository);\n this.scheduler = Container.get(LtoCampaignSchedulerService);\n this.lifecycle = Container.get(LtoCampaignLifecycleService);\n this.configService = Container.get(LimitedTimeOfferConfigService);\n }\n\n public async create(dto: CreateLtoCampaignDTO) {\n await this.assertNoCampaignRunning();\n\n const config = await this.loadConfigSnapshot();\n\n const status = this.deriveCampaignStatus(dto.startDate);\n const campaign = await this.repository.create(\n LtoCampaignQueryBuilder.buildCreateInput({\n dto,\n status,\n campaignNumber: await this.repository.nextCampaignNumber(),\n config,\n startDate: dto.startDate,\n endDate: dto.endDate,\n })\n );\n\n if (status === LimitedTimeOfferCampaignStatus.SCHEDULED) {\n await this.scheduler.scheduleActivation(campaign._id, dto.startDate);\n }\n await this.scheduler.scheduleExpiry(campaign._id, dto.endDate);\n\n return campaign;\n }\n\n private deriveCampaignStatus(startDate: Date) {\n return startDate <= new Date()\n ? LimitedTimeOfferCampaignStatus.ACTIVE\n : LimitedTimeOfferCampaignStatus.SCHEDULED;\n }\n\n public async getCurrent() {\n return this.repository.findCurrent();\n }\n\n public async getActive(): Promise<LtoActiveCampaignDTO | null> {\n const campaign = await this.repository.findActive();\n if (!campaign) return null;\n\n return {\n _id: campaign._id,\n title: campaign.title,\n subtitle: campaign.subTitle,\n startTime: campaign.startDate,\n endTime: campaign.endDate,\n };\n }\n\n public async getById(campaignId: mongoose.Types.ObjectId) {\n const campaign = await this.repository.findById(campaignId);\n if (!campaign) throw notFoundError('Campaign not found');\n return campaign;\n }\n\n public async getHistory(dto: GetLtoCampaignHistoryDTO) {\n const {documents, total} = await this.repository.findHistory(dto);\n return {\n documents,\n metadata: {\n page: dto.page,\n size: dto.size,\n totalElements: total,\n totalPages: Math.ceil(total / dto.size),\n },\n };\n }\n\n public async update(dto: UpdateLtoCampaignDTO) {\n const campaign = await this.repository.findById(dto._id);\n if (!campaign) throw notFoundError('Campaign not found');\n\n this.assertUpdateAllowed(campaign, dto);\n\n const updates = LtoCampaignQueryBuilder.buildUpdateInput(campaign, dto);\n\n if (this.shouldExpireImmediately(campaign.status, dto.endDate)) {\n return this.applyImmediateExpiry(dto._id, updates);\n }\n\n // For a scheduled recurring campaign, snap the schedule to the next selected weekday so the\n // selected days stay authoritative — an active session keeps the dto dates (takes effect now).\n const repeatDays = (updates.repeatDays ?? campaign.repeatDays ?? []) as number[];\n if (updates.status === LimitedTimeOfferCampaignStatus.SCHEDULED && repeatDays.length > 0) {\n const occurrence = nextOccurrenceDate(repeatDays, dto.startDate, dto.endDate);\n updates.startDate = occurrence.startDate;\n updates.endDate = occurrence.endDate;\n }\n\n const result = await this.repository.updateById(dto._id, updates);\n if (!result) throw notFoundError('Campaign not found after update');\n\n await this.rescheduleIfDatesChanged(result, campaign);\n\n return result;\n }\n\n public async cancel(campaignId: mongoose.Types.ObjectId): Promise<void> {\n const campaign = await this.repository.findById(campaignId);\n if (!campaign) throw notFoundError('Campaign not found');\n\n this.assertEditable(campaign.status);\n await this.scheduler.cancelJobs(campaignId);\n await this.lifecycle.cancelCampaign(campaignId);\n }\n\n private assertUpdateAllowed(campaign: DocumentType<Model>, dto: UpdateLtoCampaignDTO): void {\n this.assertEditable(campaign.status);\n\n if (campaign.status === LimitedTimeOfferCampaignStatus.ACTIVE && !dto.confirmActive) {\n throw badRequestError('Set confirmActive=true to confirm editing a live campaign.');\n }\n\n if (dto.startDate < new Date() && campaign.status === LimitedTimeOfferCampaignStatus.SCHEDULED) {\n throw badRequestError('Start date cannot be in the past.');\n }\n }\n\n private shouldExpireImmediately(status: LimitedTimeOfferCampaignStatus, endDate: Date): boolean {\n return status === LimitedTimeOfferCampaignStatus.ACTIVE && endDate <= new Date();\n }\n\n private async applyImmediateExpiry(campaignId: mongoose.Types.ObjectId, updates: object) {\n await this.scheduler.cancelJobs(campaignId);\n await this.repository.updateById(campaignId, updates);\n await this.lifecycle.expireCampaign(campaignId);\n const result = await this.repository.findById(campaignId);\n if (!result) throw notFoundError('Campaign not found after expiry');\n return result;\n }\n\n private async rescheduleIfDatesChanged(\n result: DocumentType<Model>,\n original: DocumentType<Model>\n ): Promise<void> {\n const datesChanged =\n result.startDate!.getTime() !== original.startDate!.getTime() ||\n result.endDate!.getTime() !== original.endDate!.getTime();\n\n if (!datesChanged) return;\n\n await this.scheduler.cancelJobs(result._id);\n if (result.status === LimitedTimeOfferCampaignStatus.SCHEDULED) {\n await this.scheduler.scheduleActivation(result._id, result.startDate!);\n }\n await this.scheduler.scheduleExpiry(result._id, result.endDate!);\n }\n\n private async assertNoCampaignRunning(): Promise<void> {\n if (await this.repository.hasActiveCampaign()) {\n throw conflictError('A campaign is already scheduled or active. Delete it before creating a new one.');\n }\n }\n\n private assertEditable(status: LimitedTimeOfferCampaignStatus): void {\n if (!ACTIVE_STATUSES.includes(status)) {\n throw badRequestError('Only SCHEDULED or ACTIVE campaigns can be modified.');\n }\n }\n\n private async loadConfigSnapshot() {\n const config = await this.configService.getByType(MarketingType.DISCOUNT).catch(() => {\n throw badRequestError('Global config is incomplete. Set discount options and max caps first.');\n });\n\n if (config.discountOptions.length === 0 || config.maxDiscountCaps.length === 0) {\n throw badRequestError('Global config is incomplete. Set discount options and max caps first.');\n }\n\n return config;\n }\n}\n\nexport const ltoCampaignService = Container.get(LtoCampaignService);\n"]}
@@ -197,7 +197,9 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
197
197
  startDate: string | Date;
198
198
  endDate: string | Date;
199
199
  title?: string | undefined;
200
+ campaignType?: import("@lyxa.ai/core/dist/utilities/enum").MarketingType | undefined;
200
201
  subTitle?: string | undefined;
202
+ repeatDays?: number[] | undefined;
201
203
  };
202
204
  output: {
203
205
  message: string;
@@ -212,9 +214,10 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
212
214
  updatedAt?: Date | null | undefined;
213
215
  title?: string | undefined;
214
216
  subTitle?: string | undefined;
215
- archivedAt?: Date | null | undefined;
217
+ repeatDays?: number[] | undefined;
216
218
  discountOptions?: number[] | undefined;
217
219
  maxDiscountCaps?: number[] | undefined;
220
+ archivedAt?: Date | null | undefined;
218
221
  } | {
219
222
  documents: {
220
223
  status: import("@lyxa.ai/core/dist/utilities/enum").LimitedTimeOfferCampaignStatus;
@@ -226,9 +229,10 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
226
229
  updatedAt?: Date | null | undefined;
227
230
  title?: string | undefined;
228
231
  subTitle?: string | undefined;
229
- archivedAt?: Date | null | undefined;
232
+ repeatDays?: number[] | undefined;
230
233
  discountOptions?: number[] | undefined;
231
234
  maxDiscountCaps?: number[] | undefined;
235
+ archivedAt?: Date | null | undefined;
232
236
  }[];
233
237
  metadata?: {
234
238
  page: number;
@@ -255,9 +259,10 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
255
259
  updatedAt?: Date | null | undefined;
256
260
  title?: string | undefined;
257
261
  subTitle?: string | undefined;
258
- archivedAt?: Date | null | undefined;
262
+ repeatDays?: number[] | undefined;
259
263
  discountOptions?: number[] | undefined;
260
264
  maxDiscountCaps?: number[] | undefined;
265
+ archivedAt?: Date | null | undefined;
261
266
  } | {
262
267
  documents: ({
263
268
  status: import("@lyxa.ai/core/dist/utilities/enum").LimitedTimeOfferCampaignStatus;
@@ -269,9 +274,10 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
269
274
  updatedAt?: Date | null | undefined;
270
275
  title?: string | undefined;
271
276
  subTitle?: string | undefined;
272
- archivedAt?: Date | null | undefined;
277
+ repeatDays?: number[] | undefined;
273
278
  discountOptions?: number[] | undefined;
274
279
  maxDiscountCaps?: number[] | undefined;
280
+ archivedAt?: Date | null | undefined;
275
281
  } | null)[];
276
282
  metadata?: {
277
283
  page: number;
@@ -300,9 +306,10 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
300
306
  updatedAt?: Date | null | undefined;
301
307
  title?: string | undefined;
302
308
  subTitle?: string | undefined;
303
- archivedAt?: Date | null | undefined;
309
+ repeatDays?: number[] | undefined;
304
310
  discountOptions?: number[] | undefined;
305
311
  maxDiscountCaps?: number[] | undefined;
312
+ archivedAt?: Date | null | undefined;
306
313
  } | {
307
314
  documents: {
308
315
  status: import("@lyxa.ai/core/dist/utilities/enum").LimitedTimeOfferCampaignStatus;
@@ -314,9 +321,10 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
314
321
  updatedAt?: Date | null | undefined;
315
322
  title?: string | undefined;
316
323
  subTitle?: string | undefined;
317
- archivedAt?: Date | null | undefined;
324
+ repeatDays?: number[] | undefined;
318
325
  discountOptions?: number[] | undefined;
319
326
  maxDiscountCaps?: number[] | undefined;
327
+ archivedAt?: Date | null | undefined;
320
328
  }[];
321
329
  metadata?: {
322
330
  page: number;
@@ -372,6 +380,7 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
372
380
  endDate: string | Date;
373
381
  title?: string | undefined;
374
382
  subTitle?: string | undefined;
383
+ repeatDays?: number[] | undefined;
375
384
  discountOptions?: number[] | undefined;
376
385
  maxDiscountCaps?: number[] | undefined;
377
386
  confirmActive?: boolean | undefined;
@@ -389,9 +398,10 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
389
398
  updatedAt?: Date | null | undefined;
390
399
  title?: string | undefined;
391
400
  subTitle?: string | undefined;
392
- archivedAt?: Date | null | undefined;
401
+ repeatDays?: number[] | undefined;
393
402
  discountOptions?: number[] | undefined;
394
403
  maxDiscountCaps?: number[] | undefined;
404
+ archivedAt?: Date | null | undefined;
395
405
  } | {
396
406
  documents: {
397
407
  status: import("@lyxa.ai/core/dist/utilities/enum").LimitedTimeOfferCampaignStatus;
@@ -403,9 +413,10 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
403
413
  updatedAt?: Date | null | undefined;
404
414
  title?: string | undefined;
405
415
  subTitle?: string | undefined;
406
- archivedAt?: Date | null | undefined;
416
+ repeatDays?: number[] | undefined;
407
417
  discountOptions?: number[] | undefined;
408
418
  maxDiscountCaps?: number[] | undefined;
419
+ archivedAt?: Date | null | undefined;
409
420
  }[];
410
421
  metadata?: {
411
422
  page: number;
@@ -449,6 +460,41 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
449
460
  };
450
461
  meta: object;
451
462
  }>;
463
+ getSessions: import("@trpc/server").TRPCQueryProcedure<{
464
+ input: {
465
+ campaignId: string | import("mongoose").Types.ObjectId;
466
+ page?: number | undefined;
467
+ size?: number | undefined;
468
+ };
469
+ output: {
470
+ message: string;
471
+ success: boolean;
472
+ data?: {
473
+ _id: string | import("mongoose").Types.ObjectId;
474
+ startDate: Date;
475
+ endDate: Date;
476
+ shopCount: number;
477
+ archivedAt: Date;
478
+ campaign: string | import("mongoose").Types.ObjectId;
479
+ } | {
480
+ documents: {
481
+ _id: string | import("mongoose").Types.ObjectId;
482
+ startDate: Date;
483
+ endDate: Date;
484
+ shopCount: number;
485
+ archivedAt: Date;
486
+ campaign: string | import("mongoose").Types.ObjectId;
487
+ }[];
488
+ metadata?: {
489
+ page: number;
490
+ size: number;
491
+ totalElements: number;
492
+ totalPages: number;
493
+ } | undefined;
494
+ } | undefined;
495
+ };
496
+ meta: object;
497
+ }>;
452
498
  cancel: import("@trpc/server").TRPCMutationProcedure<{
453
499
  input: {
454
500
  campaignId: string | import("mongoose").Types.ObjectId;
@@ -479,8 +525,8 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
479
525
  join: import("@trpc/server").TRPCMutationProcedure<{
480
526
  input: {
481
527
  isEntireMenu: boolean;
482
- discountPercentage: number;
483
528
  maxDiscountCap: number;
529
+ discountPercentage: number;
484
530
  isOrderCapacityEnabled: boolean;
485
531
  products?: (string | import("mongoose").Types.ObjectId)[] | undefined;
486
532
  maxOrderCapacity?: number | undefined;
@@ -500,8 +546,8 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
500
546
  createdAt?: Date | null | undefined;
501
547
  updatedAt?: Date | null | undefined;
502
548
  products?: (string | import("mongoose").Types.ObjectId)[] | undefined;
503
- discountPercentage?: number | undefined;
504
549
  maxDiscountCap?: number | undefined;
550
+ discountPercentage?: number | undefined;
505
551
  maxOrderCapacity?: number | undefined;
506
552
  withdrawnAt?: Date | null | undefined;
507
553
  } | {
@@ -516,8 +562,8 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
516
562
  createdAt?: Date | null | undefined;
517
563
  updatedAt?: Date | null | undefined;
518
564
  products?: (string | import("mongoose").Types.ObjectId)[] | undefined;
519
- discountPercentage?: number | undefined;
520
565
  maxDiscountCap?: number | undefined;
566
+ discountPercentage?: number | undefined;
521
567
  maxOrderCapacity?: number | undefined;
522
568
  withdrawnAt?: Date | null | undefined;
523
569
  }[];
@@ -534,8 +580,8 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
534
580
  update: import("@trpc/server").TRPCMutationProcedure<{
535
581
  input: {
536
582
  isEntireMenu: boolean;
537
- discountPercentage: number;
538
583
  maxDiscountCap: number;
584
+ discountPercentage: number;
539
585
  isOrderCapacityEnabled: boolean;
540
586
  products?: (string | import("mongoose").Types.ObjectId)[] | undefined;
541
587
  maxOrderCapacity?: number | undefined;
@@ -555,8 +601,8 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
555
601
  createdAt?: Date | null | undefined;
556
602
  updatedAt?: Date | null | undefined;
557
603
  products?: (string | import("mongoose").Types.ObjectId)[] | undefined;
558
- discountPercentage?: number | undefined;
559
604
  maxDiscountCap?: number | undefined;
605
+ discountPercentage?: number | undefined;
560
606
  maxOrderCapacity?: number | undefined;
561
607
  withdrawnAt?: Date | null | undefined;
562
608
  } | {
@@ -571,8 +617,8 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
571
617
  createdAt?: Date | null | undefined;
572
618
  updatedAt?: Date | null | undefined;
573
619
  products?: (string | import("mongoose").Types.ObjectId)[] | undefined;
574
- discountPercentage?: number | undefined;
575
620
  maxDiscountCap?: number | undefined;
621
+ discountPercentage?: number | undefined;
576
622
  maxOrderCapacity?: number | undefined;
577
623
  withdrawnAt?: Date | null | undefined;
578
624
  }[];
@@ -616,8 +662,8 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
616
662
  isOrderCapacityEnabled: boolean;
617
663
  productIds?: (string | import("mongoose").Types.ObjectId)[] | undefined;
618
664
  marketingId?: string | import("mongoose").Types.ObjectId | undefined;
619
- discountPercentage?: number | undefined;
620
665
  maxDiscountCap?: number | undefined;
666
+ discountPercentage?: number | undefined;
621
667
  maxOrderCapacity?: number | undefined;
622
668
  } | undefined;
623
669
  } | {
@@ -638,8 +684,8 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
638
684
  isOrderCapacityEnabled: boolean;
639
685
  productIds?: (string | import("mongoose").Types.ObjectId)[] | undefined;
640
686
  marketingId?: string | import("mongoose").Types.ObjectId | undefined;
641
- discountPercentage?: number | undefined;
642
687
  maxDiscountCap?: number | undefined;
688
+ discountPercentage?: number | undefined;
643
689
  maxOrderCapacity?: number | undefined;
644
690
  } | undefined;
645
691
  }[];
@@ -653,6 +699,130 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
653
699
  };
654
700
  meta: object;
655
701
  }>;
702
+ enrollShops: import("@trpc/server").TRPCMutationProcedure<{
703
+ input: {
704
+ shops: {
705
+ isEntireMenu: boolean;
706
+ shopId: string | import("mongoose").Types.ObjectId;
707
+ maxDiscountCap: number;
708
+ discountPercentage: number;
709
+ isOrderCapacityEnabled: boolean;
710
+ products?: (string | import("mongoose").Types.ObjectId)[] | undefined;
711
+ maxOrderCapacity?: number | undefined;
712
+ shopCategories?: (string | import("mongoose").Types.ObjectId)[] | undefined;
713
+ }[];
714
+ };
715
+ output: {
716
+ message: string;
717
+ success: boolean;
718
+ data?: {
719
+ _id: string | import("mongoose").Types.ObjectId;
720
+ shop: string | import("mongoose").Types.ObjectId;
721
+ isEntireMenu: boolean;
722
+ joinedAt: Date;
723
+ campaign: string | import("mongoose").Types.ObjectId;
724
+ isOrderCapacityEnabled: boolean;
725
+ isWithdrawn: boolean;
726
+ createdAt?: Date | null | undefined;
727
+ updatedAt?: Date | null | undefined;
728
+ products?: (string | import("mongoose").Types.ObjectId)[] | undefined;
729
+ maxDiscountCap?: number | undefined;
730
+ discountPercentage?: number | undefined;
731
+ maxOrderCapacity?: number | undefined;
732
+ withdrawnAt?: Date | null | undefined;
733
+ }[] | {
734
+ documents: {
735
+ _id: string | import("mongoose").Types.ObjectId;
736
+ shop: string | import("mongoose").Types.ObjectId;
737
+ isEntireMenu: boolean;
738
+ joinedAt: Date;
739
+ campaign: string | import("mongoose").Types.ObjectId;
740
+ isOrderCapacityEnabled: boolean;
741
+ isWithdrawn: boolean;
742
+ createdAt?: Date | null | undefined;
743
+ updatedAt?: Date | null | undefined;
744
+ products?: (string | import("mongoose").Types.ObjectId)[] | undefined;
745
+ maxDiscountCap?: number | undefined;
746
+ discountPercentage?: number | undefined;
747
+ maxOrderCapacity?: number | undefined;
748
+ withdrawnAt?: Date | null | undefined;
749
+ }[][];
750
+ metadata?: {
751
+ page: number;
752
+ size: number;
753
+ totalElements: number;
754
+ totalPages: number;
755
+ } | undefined;
756
+ } | undefined;
757
+ };
758
+ meta: object;
759
+ }>;
760
+ updateShop: import("@trpc/server").TRPCMutationProcedure<{
761
+ input: {
762
+ isEntireMenu: boolean;
763
+ shopId: string | import("mongoose").Types.ObjectId;
764
+ maxDiscountCap: number;
765
+ discountPercentage: number;
766
+ isOrderCapacityEnabled: boolean;
767
+ products?: (string | import("mongoose").Types.ObjectId)[] | undefined;
768
+ maxOrderCapacity?: number | undefined;
769
+ shopCategories?: (string | import("mongoose").Types.ObjectId)[] | undefined;
770
+ };
771
+ output: {
772
+ message: string;
773
+ success: boolean;
774
+ data?: {
775
+ _id: string | import("mongoose").Types.ObjectId;
776
+ shop: string | import("mongoose").Types.ObjectId;
777
+ isEntireMenu: boolean;
778
+ joinedAt: Date;
779
+ campaign: string | import("mongoose").Types.ObjectId;
780
+ isOrderCapacityEnabled: boolean;
781
+ isWithdrawn: boolean;
782
+ createdAt?: Date | null | undefined;
783
+ updatedAt?: Date | null | undefined;
784
+ products?: (string | import("mongoose").Types.ObjectId)[] | undefined;
785
+ maxDiscountCap?: number | undefined;
786
+ discountPercentage?: number | undefined;
787
+ maxOrderCapacity?: number | undefined;
788
+ withdrawnAt?: Date | null | undefined;
789
+ } | {
790
+ documents: {
791
+ _id: string | import("mongoose").Types.ObjectId;
792
+ shop: string | import("mongoose").Types.ObjectId;
793
+ isEntireMenu: boolean;
794
+ joinedAt: Date;
795
+ campaign: string | import("mongoose").Types.ObjectId;
796
+ isOrderCapacityEnabled: boolean;
797
+ isWithdrawn: boolean;
798
+ createdAt?: Date | null | undefined;
799
+ updatedAt?: Date | null | undefined;
800
+ products?: (string | import("mongoose").Types.ObjectId)[] | undefined;
801
+ maxDiscountCap?: number | undefined;
802
+ discountPercentage?: number | undefined;
803
+ maxOrderCapacity?: number | undefined;
804
+ withdrawnAt?: Date | null | undefined;
805
+ }[];
806
+ metadata?: {
807
+ page: number;
808
+ size: number;
809
+ totalElements: number;
810
+ totalPages: number;
811
+ } | undefined;
812
+ } | undefined;
813
+ };
814
+ meta: object;
815
+ }>;
816
+ withdrawShop: import("@trpc/server").TRPCMutationProcedure<{
817
+ input: {
818
+ shopId: string | import("mongoose").Types.ObjectId;
819
+ };
820
+ output: {
821
+ message: string;
822
+ success: boolean;
823
+ };
824
+ meta: object;
825
+ }>;
656
826
  getParticipants: import("@trpc/server").TRPCQueryProcedure<{
657
827
  input: {
658
828
  campaignId: string | import("mongoose").Types.ObjectId;
@@ -667,17 +837,78 @@ export declare const limitedTimeOfferRouter: import("@trpc/server").TRPCBuiltRou
667
837
  shopId: string | import("mongoose").Types.ObjectId;
668
838
  joinedAt: Date;
669
839
  shopName: string | null;
670
- discountPercentage?: number | undefined;
671
840
  maxDiscountCap?: number | undefined;
672
841
  shopPhoto?: string | null | undefined;
842
+ discountPercentage?: number | undefined;
673
843
  } | {
674
844
  documents: {
675
845
  shopId: string | import("mongoose").Types.ObjectId;
676
846
  joinedAt: Date;
677
847
  shopName: string | null;
678
- discountPercentage?: number | undefined;
679
848
  maxDiscountCap?: number | undefined;
680
849
  shopPhoto?: string | null | undefined;
850
+ discountPercentage?: number | undefined;
851
+ }[];
852
+ metadata?: {
853
+ page: number;
854
+ size: number;
855
+ totalElements: number;
856
+ totalPages: number;
857
+ } | undefined;
858
+ } | undefined;
859
+ };
860
+ meta: object;
861
+ }>;
862
+ getParticipantByShop: import("@trpc/server").TRPCQueryProcedure<{
863
+ input: {
864
+ shopId: string | import("mongoose").Types.ObjectId;
865
+ };
866
+ output: {
867
+ message: string;
868
+ success: boolean;
869
+ data?: {
870
+ campaignState: import("./participant/limited-time-offer-participant.validation").LtoCardState;
871
+ campaign?: {
872
+ _id: string | import("mongoose").Types.ObjectId;
873
+ startDate?: Date | null | undefined;
874
+ endDate?: Date | null | undefined;
875
+ title?: string | undefined;
876
+ subTitle?: string | undefined;
877
+ discountOptions?: number[] | undefined;
878
+ maxDiscountCaps?: number[] | undefined;
879
+ } | undefined;
880
+ participant?: {
881
+ isEntireMenu: boolean;
882
+ joinedAt: Date;
883
+ isOrderCapacityEnabled: boolean;
884
+ productIds?: (string | import("mongoose").Types.ObjectId)[] | undefined;
885
+ marketingId?: string | import("mongoose").Types.ObjectId | undefined;
886
+ maxDiscountCap?: number | undefined;
887
+ discountPercentage?: number | undefined;
888
+ maxOrderCapacity?: number | undefined;
889
+ } | undefined;
890
+ } | {
891
+ documents: {
892
+ campaignState: import("./participant/limited-time-offer-participant.validation").LtoCardState;
893
+ campaign?: {
894
+ _id: string | import("mongoose").Types.ObjectId;
895
+ startDate?: Date | null | undefined;
896
+ endDate?: Date | null | undefined;
897
+ title?: string | undefined;
898
+ subTitle?: string | undefined;
899
+ discountOptions?: number[] | undefined;
900
+ maxDiscountCaps?: number[] | undefined;
901
+ } | undefined;
902
+ participant?: {
903
+ isEntireMenu: boolean;
904
+ joinedAt: Date;
905
+ isOrderCapacityEnabled: boolean;
906
+ productIds?: (string | import("mongoose").Types.ObjectId)[] | undefined;
907
+ marketingId?: string | import("mongoose").Types.ObjectId | undefined;
908
+ maxDiscountCap?: number | undefined;
909
+ discountPercentage?: number | undefined;
910
+ maxOrderCapacity?: number | undefined;
911
+ } | undefined;
681
912
  }[];
682
913
  metadata?: {
683
914
  page: number;
@@ -1 +1 @@
1
- {"version":3,"file":"limited-time-offer.router.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/limited-time-offer.router.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwBjC,CAAC"}
1
+ {"version":3,"file":"limited-time-offer.router.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/limited-time-offer.router.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwBjC,CAAC"}
@@ -2,9 +2,11 @@ import { mongoose } from '@typegoose/typegoose';
2
2
  import { GetActiveCampaignDTO } from '../limited-time-offer/campaign/limited-time-offer-campaign.validation';
3
3
  export declare class LimitedTimeOfferService {
4
4
  private campaignService;
5
+ private lifecycle;
5
6
  private participantService;
6
7
  private notificationService;
7
8
  constructor();
9
+ activateCampaign(campaignId: mongoose.Types.ObjectId): Promise<void>;
8
10
  getActiveCampaign(input: GetActiveCampaignDTO): Promise<{
9
11
  _id: mongoose.Types.ObjectId;
10
12
  title?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"limited-time-offer.service.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/limited-time-offer.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAK9C,OAAO,EAAC,oBAAoB,EAAC,MAAM,6EAA6E,CAAC;AAejH,qBACa,uBAAuB;IAChC,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,kBAAkB,CAAqC;IAC/D,OAAO,CAAC,mBAAmB,CAAsC;;IAQpD,iBAAiB,CAAC,KAAK,EAAE,oBAAoB;;;;;;;IAQ7C,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlE,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAIlF;AAED,eAAO,MAAM,uBAAuB,yBAAyC,CAAC"}
1
+ {"version":3,"file":"limited-time-offer.service.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/limited-time-offer.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAQ9C,OAAO,EAAC,oBAAoB,EAAC,MAAM,6EAA6E,CAAC;AAejH,qBACa,uBAAuB;IAChC,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,kBAAkB,CAAqC;IAC/D,OAAO,CAAC,mBAAmB,CAAsC;;IASpD,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpE,iBAAiB,CAAC,KAAK,EAAE,oBAAoB;;;;;;;IAQ7C,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlE,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAMlF;AAED,eAAO,MAAM,uBAAuB,yBAAyC,CAAC"}
@@ -45,18 +45,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
45
45
  exports.limitedTimeOfferService = exports.LimitedTimeOfferService = void 0;
46
46
  const typedi_1 = __importStar(require("typedi"));
47
47
  const limited_time_offer_campaign_service_1 = require("../limited-time-offer/campaign/services/limited-time-offer-campaign.service");
48
+ const limited_time_offer_campaign_lifecycle_service_1 = require("../limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service");
48
49
  const limited_time_offer_participant_service_1 = require("../limited-time-offer/participant/services/limited-time-offer-participant.service");
49
50
  const limited_time_offer_notification_service_1 = require("../limited-time-offer/notification/limited-time-offer-notification.service");
50
51
  const limited_time_offer_notification_constants_1 = require("../limited-time-offer/notification/limited-time-offer-notification.constants");
51
52
  let LimitedTimeOfferService = class LimitedTimeOfferService {
52
53
  campaignService;
54
+ lifecycle;
53
55
  participantService;
54
56
  notificationService;
55
57
  constructor() {
56
58
  this.campaignService = limited_time_offer_campaign_service_1.ltoCampaignService;
59
+ this.lifecycle = typedi_1.default.get(limited_time_offer_campaign_lifecycle_service_1.LtoCampaignLifecycleService);
57
60
  this.participantService = limited_time_offer_participant_service_1.ltoParticipantService;
58
61
  this.notificationService = typedi_1.default.get(limited_time_offer_notification_service_1.LimitedTimeOfferNotificationService);
59
62
  }
63
+ async activateCampaign(campaignId) {
64
+ const campaign = await this.campaignService.getById(campaignId);
65
+ await this.lifecycle.activateCampaign(campaignId);
66
+ if ((campaign.repeatDays ?? []).length > 0) {
67
+ await this.participantService.reactivateMarketings(campaign);
68
+ }
69
+ }
60
70
  async getActiveCampaign(input) {
61
71
  const campaign = await this.campaignService.getActive();
62
72
  if (!campaign)
@@ -67,12 +77,14 @@ let LimitedTimeOfferService = class LimitedTimeOfferService {
67
77
  async cancelCampaign(campaignId) {
68
78
  await this.campaignService.cancel(campaignId);
69
79
  const participantIds = await this.participantService.getParticipantIdsByCampaignId(campaignId);
70
- await this.participantService.removeCampaignMarketings(campaignId);
80
+ await this.participantService.cleanupCampaignMarketings(campaignId);
71
81
  await this.notificationService.send(limited_time_offer_notification_constants_1.NotificationType.Cancel, participantIds, { campaignId });
72
82
  }
73
83
  async expireCampaign(campaignId) {
74
- await this.campaignService.expire(campaignId);
75
- await this.participantService.removeCampaignMarketings(campaignId);
84
+ const isRecurring = await this.lifecycle.expireCampaign(campaignId);
85
+ if (!isRecurring) {
86
+ await this.participantService.cleanupCampaignMarketings(campaignId);
87
+ }
76
88
  }
77
89
  };
78
90
  exports.LimitedTimeOfferService = LimitedTimeOfferService;
@@ -1 +1 @@
1
- {"version":3,"file":"limited-time-offer.service.js","sourceRoot":"/","sources":["modules/limited-time-offer/limited-time-offer.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA0C;AAE1C,2IAG2F;AAE3F,oJAGiG;AACjG,8IAE0F;AAC1F,kJAAoH;AAQ7G,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IACxB,eAAe,CAAqB;IACpC,kBAAkB,CAAqC;IACvD,mBAAmB,CAAsC;IAEjE;QACI,IAAI,CAAC,eAAe,GAAG,wDAAkB,CAAC;QAC1C,IAAI,CAAC,kBAAkB,GAAG,8DAAqB,CAAC;QAChD,IAAI,CAAC,mBAAmB,GAAG,gBAAS,CAAC,GAAG,CAAC,6EAAmC,CAAC,CAAC;IAClF,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,KAA2B;QACtD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;QACxD,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACxF,OAAO,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,UAAmC;QAC3D,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAA;QAC9F,MAAM,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;QACnE,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,4DAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,EAAC,UAAU,EAAC,CAAC,CAAA;IAC9F,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,UAAmC;QAC3D,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;IACvE,CAAC;CACJ,CAAA;AA9BY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,gBAAO,GAAE;;GACG,uBAAuB,CA8BnC;AAEY,QAAA,uBAAuB,GAAG,gBAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC","sourcesContent":["import Container, {Service} from 'typedi';\nimport {mongoose} from '@typegoose/typegoose';\nimport {\n ltoCampaignService,\n LtoCampaignService,\n} from '@modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service';\nimport {GetActiveCampaignDTO} from '@modules/limited-time-offer/campaign/limited-time-offer-campaign.validation';\nimport {\n LimitedTimeOfferParticipantService,\n ltoParticipantService,\n} from '@modules/limited-time-offer/participant/services/limited-time-offer-participant.service';\nimport {\n LimitedTimeOfferNotificationService\n} from \"@modules/limited-time-offer/notification/limited-time-offer-notification.service\";\nimport {NotificationType} from \"@modules/limited-time-offer/notification/limited-time-offer-notification.constants\";\n\n/**\n * Application/orchestration layer for the Limited Time Offer module. Owns every flow that spans the\n * campaign and participant aggregates so neither domain service has to reach across the boundary.\n * Pure single-aggregate operations stay on their respective domain services.\n */\n@Service()\nexport class LimitedTimeOfferService {\n private campaignService: LtoCampaignService;\n private participantService: LimitedTimeOfferParticipantService;\n private notificationService: LimitedTimeOfferNotificationService;\n\n constructor() {\n this.campaignService = ltoCampaignService;\n this.participantService = ltoParticipantService;\n this.notificationService = Container.get(LimitedTimeOfferNotificationService);\n }\n\n public async getActiveCampaign(input: GetActiveCampaignDTO) {\n const campaign = await this.campaignService.getActive();\n if (!campaign) return null;\n\n const nearbyParticipants = await this.participantService.getNearby(campaign._id, input);\n return nearbyParticipants.length > 0 ? campaign : null;\n }\n\n public async cancelCampaign(campaignId: mongoose.Types.ObjectId): Promise<void> {\n await this.campaignService.cancel(campaignId);\n const participantIds = await this.participantService.getParticipantIdsByCampaignId(campaignId)\n await this.participantService.removeCampaignMarketings(campaignId);\n await this.notificationService.send(NotificationType.Cancel, participantIds, {campaignId})\n }\n\n public async expireCampaign(campaignId: mongoose.Types.ObjectId): Promise<void> {\n await this.campaignService.expire(campaignId);\n await this.participantService.removeCampaignMarketings(campaignId);\n }\n}\n\nexport const limitedTimeOfferService = Container.get(LimitedTimeOfferService);\n"]}
1
+ {"version":3,"file":"limited-time-offer.service.js","sourceRoot":"/","sources":["modules/limited-time-offer/limited-time-offer.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA0C;AAE1C,2IAG2F;AAC3F,+JAEqG;AAErG,oJAGiG;AACjG,8IAE0F;AAC1F,kJAAoH;AAQ7G,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IACxB,eAAe,CAAqB;IACpC,SAAS,CAA8B;IACvC,kBAAkB,CAAqC;IACvD,mBAAmB,CAAsC;IAEjE;QACI,IAAI,CAAC,eAAe,GAAG,wDAAkB,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,gBAAS,CAAC,GAAG,CAAC,2EAA2B,CAAC,CAAC;QAC5D,IAAI,CAAC,kBAAkB,GAAG,8DAAqB,CAAC;QAChD,IAAI,CAAC,mBAAmB,GAAG,gBAAS,CAAC,GAAG,CAAC,6EAAmC,CAAC,CAAC;IAClF,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,UAAmC;QAC7D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAChE,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACjE,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,KAA2B;QACtD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;QACxD,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACxF,OAAO,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,UAAmC;QAC3D,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;QAC/F,MAAM,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;QACpE,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,4DAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,EAAC,UAAU,EAAC,CAAC,CAAC;IAC/F,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,UAAmC;QAC3D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpE,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;QACxE,CAAC;IACL,CAAC;CACJ,CAAA;AA1CY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,gBAAO,GAAE;;GACG,uBAAuB,CA0CnC;AAEY,QAAA,uBAAuB,GAAG,gBAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC","sourcesContent":["import Container, {Service} from 'typedi';\nimport {mongoose} from '@typegoose/typegoose';\nimport {\n ltoCampaignService,\n LtoCampaignService,\n} from '@modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service';\nimport {\n LtoCampaignLifecycleService,\n} from '@modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service';\nimport {GetActiveCampaignDTO} from '@modules/limited-time-offer/campaign/limited-time-offer-campaign.validation';\nimport {\n LimitedTimeOfferParticipantService,\n ltoParticipantService,\n} from '@modules/limited-time-offer/participant/services/limited-time-offer-participant.service';\nimport {\n LimitedTimeOfferNotificationService\n} from \"@modules/limited-time-offer/notification/limited-time-offer-notification.service\";\nimport {NotificationType} from \"@modules/limited-time-offer/notification/limited-time-offer-notification.constants\";\n\n/**\n * Application/orchestration layer for the Limited Time Offer module. Owns every flow that spans the\n * campaign and participant aggregates so neither domain service has to reach across the boundary.\n * Pure single-aggregate operations stay on their respective domain services.\n */\n@Service()\nexport class LimitedTimeOfferService {\n private campaignService: LtoCampaignService;\n private lifecycle: LtoCampaignLifecycleService;\n private participantService: LimitedTimeOfferParticipantService;\n private notificationService: LimitedTimeOfferNotificationService;\n\n constructor() {\n this.campaignService = ltoCampaignService;\n this.lifecycle = Container.get(LtoCampaignLifecycleService);\n this.participantService = ltoParticipantService;\n this.notificationService = Container.get(LimitedTimeOfferNotificationService);\n }\n\n public async activateCampaign(campaignId: mongoose.Types.ObjectId): Promise<void> {\n const campaign = await this.campaignService.getById(campaignId);\n await this.lifecycle.activateCampaign(campaignId);\n if ((campaign.repeatDays ?? []).length > 0) {\n await this.participantService.reactivateMarketings(campaign);\n }\n }\n\n public async getActiveCampaign(input: GetActiveCampaignDTO) {\n const campaign = await this.campaignService.getActive();\n if (!campaign) return null;\n\n const nearbyParticipants = await this.participantService.getNearby(campaign._id, input);\n return nearbyParticipants.length > 0 ? campaign : null;\n }\n\n public async cancelCampaign(campaignId: mongoose.Types.ObjectId): Promise<void> {\n await this.campaignService.cancel(campaignId);\n const participantIds = await this.participantService.getParticipantIdsByCampaignId(campaignId);\n await this.participantService.cleanupCampaignMarketings(campaignId);\n await this.notificationService.send(NotificationType.Cancel, participantIds, {campaignId});\n }\n\n public async expireCampaign(campaignId: mongoose.Types.ObjectId): Promise<void> {\n const isRecurring = await this.lifecycle.expireCampaign(campaignId);\n if (!isRecurring) {\n await this.participantService.cleanupCampaignMarketings(campaignId);\n }\n }\n}\n\nexport const limitedTimeOfferService = Container.get(LimitedTimeOfferService);\n"]}
@@ -8,7 +8,7 @@ export declare const TARGET_ACCOUNT_TYPES: readonly [NotificationAccountType.SHO
8
8
  export declare const NOTIFICATIONS: {
9
9
  readonly CAMPAIGN_CANCELLED: {
10
10
  readonly title: "Lyxa deleted the current campaign";
11
- readonly body: "The ongoing limited time offer campaign has been deleted by lyxa.";
11
+ readonly body: "The ongoing limited time offer campaign has been deleted by Lyxa.";
12
12
  readonly sound: "notification_sound";
13
13
  };
14
14
  readonly CAMPAIGN_ACTIVATED: {
@@ -14,7 +14,7 @@ const CUSTOM_NOTIFICATION_SOUND = 'notification_sound';
14
14
  exports.NOTIFICATIONS = {
15
15
  CAMPAIGN_CANCELLED: {
16
16
  title: "Lyxa deleted the current campaign",
17
- body: "The ongoing limited time offer campaign has been deleted by lyxa.",
17
+ body: "The ongoing limited time offer campaign has been deleted by Lyxa.",
18
18
  sound: CUSTOM_NOTIFICATION_SOUND
19
19
  },
20
20
  CAMPAIGN_ACTIVATED: {