@lyxa.ai/marketing 1.0.67 → 1.0.69

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 (281) hide show
  1. package/dist/lib/index.d.ts +21 -11810
  2. package/dist/lib/index.d.ts.map +1 -1
  3. package/dist/lib/index.js +3 -1
  4. package/dist/lib/index.js.map +1 -1
  5. package/dist/lib/modules/coupon/routers/coupon.router.d.ts +1415 -7085
  6. package/dist/lib/modules/coupon/routers/coupon.router.d.ts.map +1 -1
  7. package/dist/lib/modules/coupon/routers/coupon.router.js +37 -22
  8. package/dist/lib/modules/coupon/routers/coupon.router.js.map +1 -1
  9. package/dist/lib/modules/coupon/services/coupon.service.d.ts +41 -6
  10. package/dist/lib/modules/coupon/services/coupon.service.d.ts.map +1 -1
  11. package/dist/lib/modules/coupon/services/coupon.service.js +290 -93
  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 +11 -15
  15. package/dist/lib/modules/coupon/services/patterns/repository/CouponMetricsRepository.js.map +1 -1
  16. package/dist/lib/modules/coupon/services/patterns/repository/CouponRepository.d.ts +30 -2
  17. package/dist/lib/modules/coupon/services/patterns/repository/CouponRepository.d.ts.map +1 -1
  18. package/dist/lib/modules/coupon/services/patterns/repository/CouponRepository.js +494 -54
  19. package/dist/lib/modules/coupon/services/patterns/repository/CouponRepository.js.map +1 -1
  20. package/dist/lib/modules/coupon/services/referral-reward-coupon.service.d.ts.map +1 -1
  21. package/dist/lib/modules/coupon/services/referral-reward-coupon.service.js +1 -0
  22. package/dist/lib/modules/coupon/services/referral-reward-coupon.service.js.map +1 -1
  23. package/dist/lib/modules/coupon/transformers/coupon.transformer.d.ts +54 -2
  24. package/dist/lib/modules/coupon/transformers/coupon.transformer.d.ts.map +1 -1
  25. package/dist/lib/modules/coupon/validations/all-coupons.validation.d.ts +364 -3193
  26. package/dist/lib/modules/coupon/validations/all-coupons.validation.d.ts.map +1 -1
  27. package/dist/lib/modules/coupon/validations/all-coupons.validation.js +1 -2
  28. package/dist/lib/modules/coupon/validations/all-coupons.validation.js.map +1 -1
  29. package/dist/lib/modules/coupon/validations/coupon.validation.d.ts +580 -1
  30. package/dist/lib/modules/coupon/validations/coupon.validation.d.ts.map +1 -1
  31. package/dist/lib/modules/coupon/validations/coupon.validation.js +48 -1
  32. package/dist/lib/modules/coupon/validations/coupon.validation.js.map +1 -1
  33. package/dist/lib/modules/coupon/validations/create-coupon.validation.d.ts +116 -8
  34. package/dist/lib/modules/coupon/validations/create-coupon.validation.d.ts.map +1 -1
  35. package/dist/lib/modules/coupon/validations/create-coupon.validation.js +4 -1
  36. package/dist/lib/modules/coupon/validations/create-coupon.validation.js.map +1 -1
  37. package/dist/lib/modules/coupon/validations/global-coupon.validation.d.ts +18 -0
  38. package/dist/lib/modules/coupon/validations/global-coupon.validation.d.ts.map +1 -1
  39. package/dist/lib/modules/coupon/validations/global-coupon.validation.js +2 -0
  40. package/dist/lib/modules/coupon/validations/global-coupon.validation.js.map +1 -1
  41. package/dist/lib/modules/coupon/validations/individual-store-coupon.validation.d.ts +18 -18
  42. package/dist/lib/modules/coupon/validations/individual-store-coupon.validation.js +2 -2
  43. package/dist/lib/modules/coupon/validations/individual-store-coupon.validation.js.map +1 -1
  44. package/dist/lib/modules/coupon/validations/referral-reward-coupon.validation.d.ts +374 -0
  45. package/dist/lib/modules/coupon/validations/referral-reward-coupon.validation.d.ts.map +1 -1
  46. package/dist/lib/modules/coupon/validations/referral-reward-coupon.validation.js +2 -0
  47. package/dist/lib/modules/coupon/validations/referral-reward-coupon.validation.js.map +1 -1
  48. package/dist/lib/modules/deal-setting/routers/deal-setting.router.d.ts +5 -5
  49. package/dist/lib/modules/deal-setting/routers/deal-setting.router.d.ts.map +1 -1
  50. package/dist/lib/modules/deal-setting/services/deal-setting.service.d.ts.map +1 -1
  51. package/dist/lib/modules/deal-setting/services/deal-setting.service.js +4 -1
  52. package/dist/lib/modules/deal-setting/services/deal-setting.service.js.map +1 -1
  53. package/dist/lib/modules/featured-setting/routers/featured-setting.router.d.ts +5 -5
  54. package/dist/lib/modules/featured-setting/routers/featured-setting.router.d.ts.map +1 -1
  55. package/dist/lib/modules/featured-setting/services/featured-setting.service.d.ts.map +1 -1
  56. package/dist/lib/modules/featured-setting/services/featured-setting.service.js +3 -0
  57. package/dist/lib/modules/featured-setting/services/featured-setting.service.js.map +1 -1
  58. package/dist/lib/modules/limited-time-offer/campaign/campaign.router.d.ts +54 -8
  59. package/dist/lib/modules/limited-time-offer/campaign/campaign.router.d.ts.map +1 -1
  60. package/dist/lib/modules/limited-time-offer/campaign/campaign.router.js +13 -0
  61. package/dist/lib/modules/limited-time-offer/campaign/campaign.router.js.map +1 -1
  62. package/dist/lib/modules/limited-time-offer/campaign/jobs/index.d.ts.map +1 -1
  63. package/dist/lib/modules/limited-time-offer/campaign/jobs/index.js +9 -0
  64. package/dist/lib/modules/limited-time-offer/campaign/jobs/index.js.map +1 -1
  65. package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts +0 -1
  66. package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts.map +1 -1
  67. package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.js +2 -6
  68. package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.js.map +1 -1
  69. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts +16 -3
  70. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts.map +1 -1
  71. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.js +22 -3
  72. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.js.map +1 -1
  73. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.d.ts +2 -0
  74. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.d.ts.map +1 -1
  75. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.js +12 -0
  76. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.js.map +1 -1
  77. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts +242 -35
  78. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts.map +1 -1
  79. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.js +19 -1
  80. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.js.map +1 -1
  81. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.d.ts +10 -1
  82. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.d.ts.map +1 -1
  83. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.js +83 -1
  84. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.js.map +1 -1
  85. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.d.ts +4 -0
  86. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.d.ts.map +1 -1
  87. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.js +75 -6
  88. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.js.map +1 -1
  89. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts +1 -1
  90. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts.map +1 -1
  91. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.js +46 -19
  92. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.js.map +1 -1
  93. package/dist/lib/modules/limited-time-offer/limited-time-offer.router.d.ts +241 -10
  94. package/dist/lib/modules/limited-time-offer/limited-time-offer.router.d.ts.map +1 -1
  95. package/dist/lib/modules/limited-time-offer/limited-time-offer.service.d.ts +2 -0
  96. package/dist/lib/modules/limited-time-offer/limited-time-offer.service.d.ts.map +1 -1
  97. package/dist/lib/modules/limited-time-offer/limited-time-offer.service.js +13 -4
  98. package/dist/lib/modules/limited-time-offer/limited-time-offer.service.js.map +1 -1
  99. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.d.ts +1 -1
  100. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.js +1 -1
  101. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.js.map +1 -1
  102. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.d.ts +30 -3
  103. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.d.ts.map +1 -1
  104. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.js +23 -1
  105. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.js.map +1 -1
  106. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.repository.d.ts +18 -0
  107. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.repository.d.ts.map +1 -1
  108. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.repository.js +103 -0
  109. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.repository.js.map +1 -1
  110. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts +187 -2
  111. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts.map +1 -1
  112. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.js +34 -0
  113. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.js.map +1 -1
  114. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts +1 -0
  115. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts.map +1 -0
  116. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.service.js +2 -0
  117. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.service.js.map +1 -0
  118. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts +515 -116
  119. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts.map +1 -1
  120. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.js +16 -6
  121. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.js.map +1 -1
  122. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.d.ts +12 -4
  123. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.d.ts.map +1 -1
  124. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.js +53 -7
  125. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.js.map +1 -1
  126. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts +19 -5
  127. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts.map +1 -1
  128. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.js +114 -16
  129. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.js.map +1 -1
  130. package/dist/lib/modules/marketing/patterns/repository/MarketingMetricsRepository.d.ts.map +1 -1
  131. package/dist/lib/modules/marketing/patterns/repository/MarketingMetricsRepository.js +1 -0
  132. package/dist/lib/modules/marketing/patterns/repository/MarketingMetricsRepository.js.map +1 -1
  133. package/dist/lib/modules/marketing/routers/marketing.router.d.ts +5 -5
  134. package/dist/lib/modules/marketing/routers/marketing.router.d.ts.map +1 -1
  135. package/dist/lib/modules/marketing/services/index.d.ts +1 -0
  136. package/dist/lib/modules/marketing/services/index.d.ts.map +1 -1
  137. package/dist/lib/modules/marketing/services/index.js +1 -0
  138. package/dist/lib/modules/marketing/services/index.js.map +1 -1
  139. package/dist/lib/modules/marketing/services/marketing.service.d.ts +7 -3
  140. package/dist/lib/modules/marketing/services/marketing.service.d.ts.map +1 -1
  141. package/dist/lib/modules/marketing/services/marketing.service.js +87 -19
  142. package/dist/lib/modules/marketing/services/marketing.service.js.map +1 -1
  143. package/dist/lib/modules/marketing/services/new-user-discount-marketing.service.d.ts +11 -0
  144. package/dist/lib/modules/marketing/services/new-user-discount-marketing.service.d.ts.map +1 -0
  145. package/dist/lib/modules/marketing/services/new-user-discount-marketing.service.js +116 -0
  146. package/dist/lib/modules/marketing/services/new-user-discount-marketing.service.js.map +1 -0
  147. package/dist/lib/modules/marketing/services/product-marketing.service.d.ts +1 -0
  148. package/dist/lib/modules/marketing/services/product-marketing.service.d.ts.map +1 -1
  149. package/dist/lib/modules/marketing/services/product-marketing.service.js +32 -0
  150. package/dist/lib/modules/marketing/services/product-marketing.service.js.map +1 -1
  151. package/dist/lib/modules/marketing/validations/all-marketings.validation.d.ts.map +1 -1
  152. package/dist/lib/modules/marketing/validations/all-marketings.validation.js +3 -0
  153. package/dist/lib/modules/marketing/validations/all-marketings.validation.js.map +1 -1
  154. package/dist/lib/modules/marketing/validations/discount-marketing.validation.d.ts +6 -6
  155. package/dist/lib/modules/marketing/validations/index.d.ts +1 -0
  156. package/dist/lib/modules/marketing/validations/index.d.ts.map +1 -1
  157. package/dist/lib/modules/marketing/validations/index.js +1 -0
  158. package/dist/lib/modules/marketing/validations/index.js.map +1 -1
  159. package/dist/lib/modules/marketing/validations/new-user-discount-marketing.validation.d.ts +677 -0
  160. package/dist/lib/modules/marketing/validations/new-user-discount-marketing.validation.d.ts.map +1 -0
  161. package/dist/lib/modules/marketing/validations/new-user-discount-marketing.validation.js +83 -0
  162. package/dist/lib/modules/marketing/validations/new-user-discount-marketing.validation.js.map +1 -0
  163. package/dist/lib/modules/marketing/validations/punch-marketing.validation.d.ts +8 -8
  164. package/dist/lib/modules/marketing/validations/spend-to-get-marketing.validation.d.ts.map +1 -1
  165. package/dist/lib/modules/marketing/validations/spend-to-get-marketing.validation.js +30 -0
  166. package/dist/lib/modules/marketing/validations/spend-to-get-marketing.validation.js.map +1 -1
  167. package/dist/lib/modules/punch-marketing-history/routers/punch-marketing-history.router.d.ts +6 -6
  168. package/dist/lib/modules/punch-marketing-history/routers/punch-marketing-history.router.d.ts.map +1 -1
  169. package/dist/lib/modules/punch-marketing-history/validations/punch-marketing-history.validation.d.ts +2 -2
  170. package/dist/lib/modules/referral-setting/validations/referral-setting.validation.d.ts.map +1 -1
  171. package/dist/lib/modules/referral-setting/validations/referral-setting.validation.js.map +1 -1
  172. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.d.ts +3 -2
  173. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.d.ts.map +1 -1
  174. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.js +11 -3
  175. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.js.map +1 -1
  176. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.d.ts +21 -5
  177. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.d.ts.map +1 -1
  178. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.d.ts +2 -2
  179. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.d.ts.map +1 -1
  180. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.js.map +1 -1
  181. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.d.ts +19 -0
  182. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.d.ts.map +1 -1
  183. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.js +1 -0
  184. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.js.map +1 -1
  185. package/dist/types/index.d.ts +21 -11810
  186. package/dist/types/index.d.ts.map +1 -1
  187. package/dist/types/modules/coupon/routers/coupon.router.d.ts +1415 -7085
  188. package/dist/types/modules/coupon/routers/coupon.router.d.ts.map +1 -1
  189. package/dist/types/modules/coupon/services/coupon.service.d.ts +41 -6
  190. package/dist/types/modules/coupon/services/coupon.service.d.ts.map +1 -1
  191. package/dist/types/modules/coupon/services/patterns/repository/CouponMetricsRepository.d.ts.map +1 -1
  192. package/dist/types/modules/coupon/services/patterns/repository/CouponRepository.d.ts +30 -2
  193. package/dist/types/modules/coupon/services/patterns/repository/CouponRepository.d.ts.map +1 -1
  194. package/dist/types/modules/coupon/services/referral-reward-coupon.service.d.ts.map +1 -1
  195. package/dist/types/modules/coupon/transformers/coupon.transformer.d.ts +54 -2
  196. package/dist/types/modules/coupon/transformers/coupon.transformer.d.ts.map +1 -1
  197. package/dist/types/modules/coupon/validations/all-coupons.validation.d.ts +364 -3193
  198. package/dist/types/modules/coupon/validations/all-coupons.validation.d.ts.map +1 -1
  199. package/dist/types/modules/coupon/validations/coupon.validation.d.ts +580 -1
  200. package/dist/types/modules/coupon/validations/coupon.validation.d.ts.map +1 -1
  201. package/dist/types/modules/coupon/validations/create-coupon.validation.d.ts +116 -8
  202. package/dist/types/modules/coupon/validations/create-coupon.validation.d.ts.map +1 -1
  203. package/dist/types/modules/coupon/validations/global-coupon.validation.d.ts +18 -0
  204. package/dist/types/modules/coupon/validations/global-coupon.validation.d.ts.map +1 -1
  205. package/dist/types/modules/coupon/validations/individual-store-coupon.validation.d.ts +18 -18
  206. package/dist/types/modules/coupon/validations/referral-reward-coupon.validation.d.ts +374 -0
  207. package/dist/types/modules/coupon/validations/referral-reward-coupon.validation.d.ts.map +1 -1
  208. package/dist/types/modules/deal-setting/routers/deal-setting.router.d.ts +5 -5
  209. package/dist/types/modules/deal-setting/routers/deal-setting.router.d.ts.map +1 -1
  210. package/dist/types/modules/deal-setting/services/deal-setting.service.d.ts.map +1 -1
  211. package/dist/types/modules/featured-setting/routers/featured-setting.router.d.ts +5 -5
  212. package/dist/types/modules/featured-setting/routers/featured-setting.router.d.ts.map +1 -1
  213. package/dist/types/modules/featured-setting/services/featured-setting.service.d.ts.map +1 -1
  214. package/dist/types/modules/limited-time-offer/campaign/campaign.router.d.ts +54 -8
  215. package/dist/types/modules/limited-time-offer/campaign/campaign.router.d.ts.map +1 -1
  216. package/dist/types/modules/limited-time-offer/campaign/jobs/index.d.ts.map +1 -1
  217. package/dist/types/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts +0 -1
  218. package/dist/types/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts.map +1 -1
  219. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts +16 -3
  220. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts.map +1 -1
  221. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.d.ts +2 -0
  222. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.d.ts.map +1 -1
  223. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts +242 -35
  224. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts.map +1 -1
  225. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.d.ts +10 -1
  226. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.d.ts.map +1 -1
  227. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.d.ts +4 -0
  228. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.d.ts.map +1 -1
  229. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts +1 -1
  230. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts.map +1 -1
  231. package/dist/types/modules/limited-time-offer/limited-time-offer.router.d.ts +241 -10
  232. package/dist/types/modules/limited-time-offer/limited-time-offer.router.d.ts.map +1 -1
  233. package/dist/types/modules/limited-time-offer/limited-time-offer.service.d.ts +2 -0
  234. package/dist/types/modules/limited-time-offer/limited-time-offer.service.d.ts.map +1 -1
  235. package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.constants.d.ts +1 -1
  236. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.builder.d.ts +30 -3
  237. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.builder.d.ts.map +1 -1
  238. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.repository.d.ts +18 -0
  239. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.repository.d.ts.map +1 -1
  240. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts +187 -2
  241. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts.map +1 -1
  242. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts +1 -0
  243. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts.map +1 -0
  244. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts +515 -116
  245. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts.map +1 -1
  246. package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.d.ts +12 -4
  247. package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.d.ts.map +1 -1
  248. package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts +19 -5
  249. package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts.map +1 -1
  250. package/dist/types/modules/marketing/patterns/repository/MarketingMetricsRepository.d.ts.map +1 -1
  251. package/dist/types/modules/marketing/routers/marketing.router.d.ts +5 -5
  252. package/dist/types/modules/marketing/routers/marketing.router.d.ts.map +1 -1
  253. package/dist/types/modules/marketing/services/index.d.ts +1 -0
  254. package/dist/types/modules/marketing/services/index.d.ts.map +1 -1
  255. package/dist/types/modules/marketing/services/marketing.service.d.ts +7 -3
  256. package/dist/types/modules/marketing/services/marketing.service.d.ts.map +1 -1
  257. package/dist/types/modules/marketing/services/new-user-discount-marketing.service.d.ts +20 -0
  258. package/dist/types/modules/marketing/services/new-user-discount-marketing.service.d.ts.map +1 -0
  259. package/dist/types/modules/marketing/services/product-marketing.service.d.ts +6 -0
  260. package/dist/types/modules/marketing/services/product-marketing.service.d.ts.map +1 -1
  261. package/dist/types/modules/marketing/validations/all-marketings.validation.d.ts.map +1 -1
  262. package/dist/types/modules/marketing/validations/discount-marketing.validation.d.ts +6 -6
  263. package/dist/types/modules/marketing/validations/index.d.ts +1 -0
  264. package/dist/types/modules/marketing/validations/index.d.ts.map +1 -1
  265. package/dist/types/modules/marketing/validations/new-user-discount-marketing.validation.d.ts +686 -0
  266. package/dist/types/modules/marketing/validations/new-user-discount-marketing.validation.d.ts.map +1 -0
  267. package/dist/types/modules/marketing/validations/punch-marketing.validation.d.ts +8 -8
  268. package/dist/types/modules/marketing/validations/spend-to-get-marketing.validation.d.ts.map +1 -1
  269. package/dist/types/modules/punch-marketing-history/routers/punch-marketing-history.router.d.ts +6 -6
  270. package/dist/types/modules/punch-marketing-history/routers/punch-marketing-history.router.d.ts.map +1 -1
  271. package/dist/types/modules/punch-marketing-history/validations/punch-marketing-history.validation.d.ts +2 -2
  272. package/dist/types/modules/referral-setting/validations/referral-setting.validation.d.ts.map +1 -1
  273. package/dist/types/modules/spend-to-get-history/spend-to-get-history.repository.d.ts +3 -2
  274. package/dist/types/modules/spend-to-get-history/spend-to-get-history.repository.d.ts.map +1 -1
  275. package/dist/types/modules/spend-to-get-history/spend-to-get-history.router.d.ts +21 -5
  276. package/dist/types/modules/spend-to-get-history/spend-to-get-history.router.d.ts.map +1 -1
  277. package/dist/types/modules/spend-to-get-history/spend-to-get-history.service.d.ts +2 -2
  278. package/dist/types/modules/spend-to-get-history/spend-to-get-history.service.d.ts.map +1 -1
  279. package/dist/types/modules/spend-to-get-history/spend-to-get-history.validation.d.ts +19 -0
  280. package/dist/types/modules/spend-to-get-history/spend-to-get-history.validation.d.ts.map +1 -1
  281. package/package.json +2 -6
@@ -1,7 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LtoCampaignQueryBuilder = void 0;
4
+ exports.nextOccurrenceDate = nextOccurrenceDate;
4
5
  const enum_1 = require("@lyxa.ai/core/dist/utilities/enum");
6
+ function nextOccurrenceDate(repeatDays, refStart, refEnd) {
7
+ const durationMs = refEnd.getTime() - refStart.getTime();
8
+ const now = new Date();
9
+ for (let daysAhead = 0; daysAhead < 8; daysAhead++) {
10
+ const candidate = new Date(now);
11
+ candidate.setDate(now.getDate() + daysAhead);
12
+ candidate.setHours(refStart.getHours(), refStart.getMinutes(), refStart.getSeconds(), 0);
13
+ if (repeatDays.includes(candidate.getDay()) && candidate.getTime() > now.getTime()) {
14
+ const startDate = candidate;
15
+ const endDate = new Date(startDate.getTime() + durationMs);
16
+ return { startDate, endDate };
17
+ }
18
+ }
19
+ return { startDate: refStart, endDate: refEnd };
20
+ }
5
21
  const ARCHIVED_STATUSES = [enum_1.LimitedTimeOfferCampaignStatus.EXPIRED, enum_1.LimitedTimeOfferCampaignStatus.CANCELLED];
6
22
  const SORT_FIELD_MAP = {
7
23
  id: '_id',
@@ -12,16 +28,18 @@ const SORT_FIELD_MAP = {
12
28
  status: 'status',
13
29
  };
14
30
  class LtoCampaignQueryBuilder {
15
- static buildCreateInput(dto, status, campaignNumber, config) {
31
+ static buildCreateInput(input) {
32
+ const { dto, status, campaignNumber, config, startDate, endDate } = input;
16
33
  return {
17
34
  campaignNumber,
18
35
  title: dto.title,
19
36
  subTitle: dto.subTitle,
20
- startDate: dto.startDate,
21
- endDate: dto.endDate,
37
+ startDate,
38
+ endDate,
22
39
  status,
23
40
  discountOptions: config.discountOptions,
24
41
  maxDiscountCaps: config.maxDiscountCaps,
42
+ repeatDays: dto.repeatDays ?? [],
25
43
  };
26
44
  }
27
45
  static buildUpdateInput(campaign, dto) {
@@ -33,6 +51,7 @@ class LtoCampaignQueryBuilder {
33
51
  endDate: dto.endDate,
34
52
  ...(dto.discountOptions && { discountOptions: dto.discountOptions }),
35
53
  ...(dto.maxDiscountCaps && { maxDiscountCaps: dto.maxDiscountCaps }),
54
+ ...(dto.repeatDays !== undefined && { repeatDays: dto.repeatDays }),
36
55
  status: isScheduledFromActive ? enum_1.LimitedTimeOfferCampaignStatus.SCHEDULED : campaign.status
37
56
  };
38
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"limited-time-offer-campaign.builder.js","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.ts"],"names":[],"mappings":";;;AACA,4DAAiF;AAGjF,MAAM,iBAAiB,GAAG,CAAC,qCAA8B,CAAC,OAAO,EAAE,qCAA8B,CAAC,SAAS,CAAC,CAAC;AAE7G,MAAM,cAAc,GAA2B;IAC3C,EAAE,EAAE,KAAK;IACT,cAAc,EAAE,gBAAgB;IAChC,aAAa,EAAE,WAAW;IAC1B,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,aAAa;IAC1B,MAAM,EAAE,QAAQ;CACnB,CAAC;AAEF,MAAa,uBAAuB;IAChC,MAAM,CAAC,gBAAgB,CACnB,GAAyB,EACzB,MAAsC,EACtC,cAAsB,EACtB,MAA8D;QAE9D,OAAO;YACH,cAAc;YACd,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,MAAM;YACN,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,eAAe,EAAE,MAAM,CAAC,eAAe;SAC1C,CAAC;IACN,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,QAAkC,EAAE,GAAyB;QACjF,MAAM,qBAAqB,GAC9B,QAAQ,CAAC,MAAM,KAAK,qCAA8B,CAAC,MAAM,IAAI,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QAC7F,OAAO;YACH,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK;YAClC,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;YAC3C,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,GAAG,CAAC,GAAG,CAAC,eAAe,IAAI,EAAC,eAAe,EAAE,GAAG,CAAC,eAAe,EAAC,CAAC;YAClE,GAAG,CAAC,GAAG,CAAC,eAAe,IAAI,EAAC,eAAe,EAAE,GAAG,CAAC,eAAe,EAAC,CAAC;YAClE,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,qCAA8B,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM;SAC7F,CAAC;IACN,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,GAA6B;QACnD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,EAAC,GAAG,EAAE,iBAAiB,EAAC,EAAC,CAAC;IAClF,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,MAAe;QACjC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAC1E,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,SAAkB;QACxC,OAAO,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;CACJ;AA5CD,0DA4CC","sourcesContent":["import {LimitedTimeOfferCampaign} from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {LimitedTimeOfferCampaignStatus} from '@lyxa.ai/core/dist/utilities/enum';\nimport {CreateLtoCampaignDTO, GetLtoCampaignHistoryDTO, UpdateLtoCampaignDTO} from './limited-time-offer-campaign.validation';\n\nconst ARCHIVED_STATUSES = [LimitedTimeOfferCampaignStatus.EXPIRED, LimitedTimeOfferCampaignStatus.CANCELLED];\n\nconst SORT_FIELD_MAP: Record<string, string> = {\n id: '_id',\n campaignNumber: 'campaignNumber',\n startDateTime: 'startDate',\n endDateTime: 'endDate',\n shopsJoined: 'shopsJoined',\n status: 'status',\n};\n\nexport class LtoCampaignQueryBuilder {\n static buildCreateInput(\n dto: CreateLtoCampaignDTO,\n status: LimitedTimeOfferCampaignStatus,\n campaignNumber: number,\n config: {discountOptions: number[]; maxDiscountCaps: number[]},\n ) {\n return {\n campaignNumber,\n title: dto.title,\n subTitle: dto.subTitle,\n startDate: dto.startDate,\n endDate: dto.endDate,\n status,\n discountOptions: config.discountOptions,\n maxDiscountCaps: config.maxDiscountCaps,\n };\n }\n\n static buildUpdateInput(campaign: LimitedTimeOfferCampaign, dto: UpdateLtoCampaignDTO) {\n const isScheduledFromActive =\n\t\t\t\t\tcampaign.status === LimitedTimeOfferCampaignStatus.ACTIVE && dto.startDate > campaign.startDate;\n return {\n title: dto.title ?? campaign.title,\n subTitle: dto.subTitle ?? campaign.subTitle,\n startDate: dto.startDate,\n endDate: dto.endDate,\n ...(dto.discountOptions && {discountOptions: dto.discountOptions}),\n ...(dto.maxDiscountCaps && {maxDiscountCaps: dto.maxDiscountCaps}),\n status: isScheduledFromActive ? LimitedTimeOfferCampaignStatus.SCHEDULED : campaign.status\n };\n }\n\n static buildHistoryFilter(dto: GetLtoCampaignHistoryDTO) {\n return dto.status ? {status: dto.status} : {status: {$in: ARCHIVED_STATUSES}};\n }\n\n static buildSortField(sortBy?: string): string {\n return sortBy ? (SORT_FIELD_MAP[sortBy] ?? 'createdAt') : 'createdAt';\n }\n\n static buildSortDirection(sortOrder?: string): 1 | -1 {\n return sortOrder === 'asc' ? 1 : -1;\n }\n}\n"]}
1
+ {"version":3,"file":"limited-time-offer-campaign.builder.js","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.ts"],"names":[],"mappings":"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","sourcesContent":["import {LimitedTimeOfferCampaign} from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {LimitedTimeOfferCampaignStatus} from '@lyxa.ai/core/dist/utilities/enum';\nimport {CreateLtoCampaignDTO, GetLtoCampaignHistoryDTO, UpdateLtoCampaignDTO} from './limited-time-offer-campaign.validation';\n\nexport function nextOccurrenceDate(repeatDays: number[], refStart: Date, refEnd: Date): {startDate: Date; endDate: Date} {\n const durationMs = refEnd.getTime() - refStart.getTime();\n const now = new Date();\n\n for (let daysAhead = 0; daysAhead < 8; daysAhead++) {\n const candidate = new Date(now);\n candidate.setDate(now.getDate() + daysAhead);\n candidate.setHours(refStart.getHours(), refStart.getMinutes(), refStart.getSeconds(), 0);\n\n if (repeatDays.includes(candidate.getDay()) && candidate.getTime() > now.getTime()) {\n const startDate = candidate;\n const endDate = new Date(startDate.getTime() + durationMs);\n return {startDate, endDate};\n }\n }\n\n return {startDate: refStart, endDate: refEnd};\n}\n\nconst ARCHIVED_STATUSES = [LimitedTimeOfferCampaignStatus.EXPIRED, LimitedTimeOfferCampaignStatus.CANCELLED];\n\nconst SORT_FIELD_MAP: Record<string, string> = {\n id: '_id',\n campaignNumber: 'campaignNumber',\n startDateTime: 'startDate',\n endDateTime: 'endDate',\n shopsJoined: 'shopsJoined',\n status: 'status',\n};\n\nexport class LtoCampaignQueryBuilder {\n static buildCreateInput(input: {\n dto: CreateLtoCampaignDTO;\n status: LimitedTimeOfferCampaignStatus;\n campaignNumber: number;\n config: {discountOptions: number[]; maxDiscountCaps: number[]};\n startDate: Date;\n endDate: Date;\n }) {\n const {dto, status, campaignNumber, config, startDate, endDate} = input;\n return {\n campaignNumber,\n title: dto.title,\n subTitle: dto.subTitle,\n startDate,\n endDate,\n status,\n discountOptions: config.discountOptions,\n maxDiscountCaps: config.maxDiscountCaps,\n repeatDays: dto.repeatDays ?? [],\n };\n }\n\n static buildUpdateInput(campaign: LimitedTimeOfferCampaign, dto: UpdateLtoCampaignDTO) {\n const isScheduledFromActive =\n\t\t\t\t\tcampaign.status === LimitedTimeOfferCampaignStatus.ACTIVE && dto.startDate > campaign.startDate;\n return {\n title: dto.title ?? campaign.title,\n subTitle: dto.subTitle ?? campaign.subTitle,\n startDate: dto.startDate,\n endDate: dto.endDate,\n ...(dto.discountOptions && {discountOptions: dto.discountOptions}),\n ...(dto.maxDiscountCaps && {maxDiscountCaps: dto.maxDiscountCaps}),\n ...(dto.repeatDays !== undefined && {repeatDays: dto.repeatDays}),\n status: isScheduledFromActive ? LimitedTimeOfferCampaignStatus.SCHEDULED : campaign.status\n };\n }\n\n static buildHistoryFilter(dto: GetLtoCampaignHistoryDTO) {\n return dto.status ? {status: dto.status} : {status: {$in: ARCHIVED_STATUSES}};\n }\n\n static buildSortField(sortBy?: string): string {\n return sortBy ? (SORT_FIELD_MAP[sortBy] ?? 'createdAt') : 'createdAt';\n }\n\n static buildSortDirection(sortOrder?: string): 1 | -1 {\n return sortOrder === 'asc' ? 1 : -1;\n }\n}\n"]}
@@ -13,6 +13,8 @@ export declare class LtoCampaignRepository {
13
13
  updateById(id: mongoose.Types.ObjectId, updates: object): Promise<DocumentType<Model> | null>;
14
14
  setStatus(id: mongoose.Types.ObjectId, status: LimitedTimeOfferCampaignStatus, archive?: boolean): Promise<void>;
15
15
  nextCampaignNumber(): Promise<number>;
16
+ findScheduledRecurring(): Promise<DocumentType<Model>[]>;
17
+ findActiveRecurring(): Promise<DocumentType<Model>[]>;
16
18
  findHistory(dto: GetLtoCampaignHistoryDTO): Promise<{
17
19
  documents: LtoCampaignHistoryItemDTO[];
18
20
  total: number;
@@ -1 +1 @@
1
- {"version":3,"file":"limited-time-offer-campaign.repository.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAE,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAEH,wBAAwB,IAAI,KAAK,EAGpC,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAAc,8BAA8B,EAAC,MAAM,mCAAmC,CAAC;AAC9F,OAAO,EAAC,wBAAwB,EAAE,yBAAyB,EAAC,MAAM,0CAA0C,CAAC;AAK7G,qBACa,qBAAqB;IAC9B,OAAO,CAAC,KAAK,CAAgE;;IAMvE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAInD,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAIlD,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAIjD,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAI1E,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAI7F,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,8BAA8B,EAAE,OAAO,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9G,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IASrC,WAAW,CAAC,GAAG,EAAE,wBAAwB,GAAG,OAAO,CAAC;QAAC,SAAS,EAAE,yBAAyB,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC;CA4CrH;AAED,eAAO,MAAM,qBAAqB,uBAAuC,CAAC"}
1
+ {"version":3,"file":"limited-time-offer-campaign.repository.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAE,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAEH,wBAAwB,IAAI,KAAK,EAGpC,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAAc,8BAA8B,EAAC,MAAM,mCAAmC,CAAC;AAC9F,OAAO,EAAC,wBAAwB,EAAE,yBAAyB,EAAC,MAAM,0CAA0C,CAAC;AAK7G,qBACa,qBAAqB;IAC9B,OAAO,CAAC,KAAK,CAAgE;;IAMvE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAInD,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAIlD,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAIjD,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAI1E,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAI7F,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,8BAA8B,EAAE,OAAO,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9G,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IASrC,sBAAsB,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;IAOxD,mBAAmB,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;IAOrD,WAAW,CAAC,GAAG,EAAE,wBAAwB,GAAG,OAAO,CAAC;QAAC,SAAS,EAAE,yBAAyB,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC;CA4CrH;AAED,eAAO,MAAM,qBAAqB,uBAAuC,CAAC"}
@@ -80,6 +80,18 @@ let LtoCampaignRepository = class LtoCampaignRepository {
80
80
  const counter = await models_1.CounterModel.findOneAndUpdate({ counterType: enum_1.CounterType.LTO_CAMPAIGN }, { $inc: { value: 1 } }, { upsert: true, new: true, setDefaultsOnInsert: true });
81
81
  return counter.value;
82
82
  }
83
+ async findScheduledRecurring() {
84
+ return this.model.find({
85
+ status: enum_1.LimitedTimeOfferCampaignStatus.SCHEDULED,
86
+ repeatDays: { $exists: true, $not: { $size: 0 } },
87
+ });
88
+ }
89
+ async findActiveRecurring() {
90
+ return this.model.find({
91
+ status: enum_1.LimitedTimeOfferCampaignStatus.ACTIVE,
92
+ repeatDays: { $exists: true, $not: { $size: 0 } },
93
+ });
94
+ }
83
95
  async findHistory(dto) {
84
96
  const filter = limited_time_offer_campaign_builder_1.LtoCampaignQueryBuilder.buildHistoryFilter(dto);
85
97
  const sortField = limited_time_offer_campaign_builder_1.LtoCampaignQueryBuilder.buildSortField(dto.sortBy);
@@ -1 +1 @@
1
- {"version":3,"file":"limited-time-offer-campaign.repository.js","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, {Service} from 'typedi';\nimport {DocumentType, mongoose} from '@typegoose/typegoose';\nimport {\n CounterModel,\n LimitedTimeOfferCampaign as Model,\n LimitedTimeOfferCampaignModel,\n LimitedTimeOfferParticipantModel,\n} from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {SoftDeleteModel} from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport {CounterType, LimitedTimeOfferCampaignStatus} from '@lyxa.ai/core/dist/utilities/enum';\nimport {GetLtoCampaignHistoryDTO, LtoCampaignHistoryItemDTO} from './limited-time-offer-campaign.validation';\nimport {LtoCampaignQueryBuilder} from '@modules/limited-time-offer/campaign/limited-time-offer-campaign.builder';\n\nconst ACTIVE_STATUSES = [LimitedTimeOfferCampaignStatus.SCHEDULED, LimitedTimeOfferCampaignStatus.ACTIVE];\n\n@Service()\nexport class LtoCampaignRepository {\n private model: typeof LimitedTimeOfferCampaignModel & SoftDeleteModel<Model>;\n\n constructor() {\n this.model = LimitedTimeOfferCampaignModel as typeof LimitedTimeOfferCampaignModel & SoftDeleteModel<Model>;\n }\n\n async create(input: object): Promise<DocumentType<Model>> {\n return this.model.create(input);\n }\n\n async findCurrent(): Promise<DocumentType<Model> | null> {\n return this.model.findOne({status: {$in: ACTIVE_STATUSES}}).sort({createdAt: -1});\n }\n\n async findActive(): Promise<DocumentType<Model> | null> {\n return this.model.findOne({status: LimitedTimeOfferCampaignStatus.ACTIVE}).sort({createdAt: -1});\n }\n\n async findById(id: mongoose.Types.ObjectId): Promise<DocumentType<Model> | null> {\n return this.model.findById(id);\n }\n\n async hasActiveCampaign(): Promise<boolean> {\n return !!(await this.model.exists({status: {$in: ACTIVE_STATUSES}}));\n }\n\n async updateById(id: mongoose.Types.ObjectId, updates: object): Promise<DocumentType<Model> | null> {\n return this.model.findByIdAndUpdate(id, {$set: updates}, {new: true});\n }\n\n async setStatus(id: mongoose.Types.ObjectId, status: LimitedTimeOfferCampaignStatus, archive = false): Promise<void> {\n await this.model.findByIdAndUpdate(id, {\n $set: {status, ...(archive && {archivedAt: new Date()})},\n });\n }\n\n async nextCampaignNumber(): Promise<number> {\n const counter = await CounterModel.findOneAndUpdate(\n {counterType: CounterType.LTO_CAMPAIGN},\n {$inc: {value: 1}},\n {upsert: true, new: true, setDefaultsOnInsert: true},\n );\n return counter.value;\n }\n\n async findHistory(dto: GetLtoCampaignHistoryDTO): Promise<{documents: LtoCampaignHistoryItemDTO[]; total: number}> {\n const filter = LtoCampaignQueryBuilder.buildHistoryFilter(dto);\n const sortField = LtoCampaignQueryBuilder.buildSortField(dto.sortBy);\n const sortDirection = LtoCampaignQueryBuilder.buildSortDirection(dto.sortOrder);\n\n const [result] = await this.model.aggregate([\n {$match: filter},\n {\n $lookup: {\n from: LimitedTimeOfferParticipantModel.collection.name,\n let: {campaignId: '$_id'},\n pipeline: [\n {$match: {$expr: {$and: [{$eq: ['$campaign', '$$campaignId']}, {$eq: ['$isWithdrawn', false]}]}}},\n {$count: 'count'},\n ],\n as: 'joinedStats',\n },\n },\n {$addFields: {shopsJoined: {$ifNull: [{$arrayElemAt: ['$joinedStats.count', 0]}, 0]}}},\n {$sort: {[sortField]: sortDirection, _id: sortDirection}},\n {\n $facet: {\n total: [{$count: 'count'}],\n documents: [\n {$skip: (dto.page - 1) * dto.size},\n {$limit: dto.size},\n {$project: {_id: 1, campaignNumber: 1, startDate: 1, endDate: 1, status: 1, shopsJoined: 1}},\n ],\n },\n },\n ]);\n\n const total: number = result?.total?.[0]?.count ?? 0;\n const documents: LtoCampaignHistoryItemDTO[] = (result?.documents ?? []).map((d: any) => ({\n id: d._id.toString(),\n campaignNumber: d.campaignNumber,\n startDateTime: d.startDate,\n endDateTime: d.endDate,\n shopsJoined: d.shopsJoined,\n status: d.status,\n }));\n\n return {documents, total};\n }\n}\n\nexport const ltoCampaignRepository = Container.get(LtoCampaignRepository);\n"]}
1
+ {"version":3,"file":"limited-time-offer-campaign.repository.js","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, {Service} from 'typedi';\nimport {DocumentType, mongoose} from '@typegoose/typegoose';\nimport {\n CounterModel,\n LimitedTimeOfferCampaign as Model,\n LimitedTimeOfferCampaignModel,\n LimitedTimeOfferParticipantModel,\n} from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {SoftDeleteModel} from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport {CounterType, LimitedTimeOfferCampaignStatus} from '@lyxa.ai/core/dist/utilities/enum';\nimport {GetLtoCampaignHistoryDTO, LtoCampaignHistoryItemDTO} from './limited-time-offer-campaign.validation';\nimport {LtoCampaignQueryBuilder} from '@modules/limited-time-offer/campaign/limited-time-offer-campaign.builder';\n\nconst ACTIVE_STATUSES = [LimitedTimeOfferCampaignStatus.SCHEDULED, LimitedTimeOfferCampaignStatus.ACTIVE];\n\n@Service()\nexport class LtoCampaignRepository {\n private model: typeof LimitedTimeOfferCampaignModel & SoftDeleteModel<Model>;\n\n constructor() {\n this.model = LimitedTimeOfferCampaignModel as typeof LimitedTimeOfferCampaignModel & SoftDeleteModel<Model>;\n }\n\n async create(input: object): Promise<DocumentType<Model>> {\n return this.model.create(input);\n }\n\n async findCurrent(): Promise<DocumentType<Model> | null> {\n return this.model.findOne({status: {$in: ACTIVE_STATUSES}}).sort({createdAt: -1});\n }\n\n async findActive(): Promise<DocumentType<Model> | null> {\n return this.model.findOne({status: LimitedTimeOfferCampaignStatus.ACTIVE}).sort({createdAt: -1});\n }\n\n async findById(id: mongoose.Types.ObjectId): Promise<DocumentType<Model> | null> {\n return this.model.findById(id);\n }\n\n async hasActiveCampaign(): Promise<boolean> {\n return !!(await this.model.exists({status: {$in: ACTIVE_STATUSES}}));\n }\n\n async updateById(id: mongoose.Types.ObjectId, updates: object): Promise<DocumentType<Model> | null> {\n return this.model.findByIdAndUpdate(id, {$set: updates}, {new: true});\n }\n\n async setStatus(id: mongoose.Types.ObjectId, status: LimitedTimeOfferCampaignStatus, archive = false): Promise<void> {\n await this.model.findByIdAndUpdate(id, {\n $set: {status, ...(archive && {archivedAt: new Date()})},\n });\n }\n\n async nextCampaignNumber(): Promise<number> {\n const counter = await CounterModel.findOneAndUpdate(\n {counterType: CounterType.LTO_CAMPAIGN},\n {$inc: {value: 1}},\n {upsert: true, new: true, setDefaultsOnInsert: true},\n );\n return counter.value;\n }\n\n async findScheduledRecurring(): Promise<DocumentType<Model>[]> {\n return this.model.find({\n status: LimitedTimeOfferCampaignStatus.SCHEDULED,\n repeatDays: {$exists: true, $not: {$size: 0}},\n });\n }\n\n async findActiveRecurring(): Promise<DocumentType<Model>[]> {\n return this.model.find({\n status: LimitedTimeOfferCampaignStatus.ACTIVE,\n repeatDays: {$exists: true, $not: {$size: 0}},\n });\n }\n\n async findHistory(dto: GetLtoCampaignHistoryDTO): Promise<{documents: LtoCampaignHistoryItemDTO[]; total: number}> {\n const filter = LtoCampaignQueryBuilder.buildHistoryFilter(dto);\n const sortField = LtoCampaignQueryBuilder.buildSortField(dto.sortBy);\n const sortDirection = LtoCampaignQueryBuilder.buildSortDirection(dto.sortOrder);\n\n const [result] = await this.model.aggregate([\n {$match: filter},\n {\n $lookup: {\n from: LimitedTimeOfferParticipantModel.collection.name,\n let: {campaignId: '$_id'},\n pipeline: [\n {$match: {$expr: {$and: [{$eq: ['$campaign', '$$campaignId']}, {$eq: ['$isWithdrawn', false]}]}}},\n {$count: 'count'},\n ],\n as: 'joinedStats',\n },\n },\n {$addFields: {shopsJoined: {$ifNull: [{$arrayElemAt: ['$joinedStats.count', 0]}, 0]}}},\n {$sort: {[sortField]: sortDirection, _id: sortDirection}},\n {\n $facet: {\n total: [{$count: 'count'}],\n documents: [\n {$skip: (dto.page - 1) * dto.size},\n {$limit: dto.size},\n {$project: {_id: 1, campaignNumber: 1, startDate: 1, endDate: 1, status: 1, shopsJoined: 1}},\n ],\n },\n },\n ]);\n\n const total: number = result?.total?.[0]?.count ?? 0;\n const documents: LtoCampaignHistoryItemDTO[] = (result?.documents ?? []).map((d: any) => ({\n id: d._id.toString(),\n campaignNumber: d.campaignNumber,\n startDateTime: d.startDate,\n endDateTime: d.endDate,\n shopsJoined: d.shopsJoined,\n status: d.status,\n }));\n\n return {documents, total};\n }\n}\n\nexport const ltoCampaignRepository = Container.get(LtoCampaignRepository);\n"]}