@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-user-discount-marketing.validation.d.ts","sourceRoot":"/","sources":["modules/marketing/validations/new-user-discount-marketing.validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAGN,GAAG,EACH,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAkC7E,QAAA,MACa,wCAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IACtC,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAClC,gCAAgC,iNAES,CAAC;AAErD,QAAA,MAAM,+CAA+C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyCpD,CAAC;AAEF,QAAA,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAoBzC,CAAC;AAKF,OAAO,EACN,+CAA+C,IAAI,wCAAwC,EAC3F,8BAA8B,EAC9B,gCAAgC,IAAI,0CAA0C,EAC9E,oCAAoC,GACpC,CAAC;AAKF,MAAM,MAAM,iCAAiC,GAAG,GAAG,CAAC,OAAO,wCAAwC,CAAC,CAAC;AACrG,MAAM,MAAM,2BAA2B,GAAG,GAAG,CAAC,OAAO,8BAA8B,CAAC,CAAC;AACrF,MAAM,MAAM,iCAAiC,GAAG,GAAG,CAAC,OAAO,oCAAoC,CAAC,CAAC"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdateNewUserDiscountMarketingSchema = exports.NewUserDiscountMarketingIdValidationSchema = exports.NewUserDiscountMarketingSchema = exports.NewUserDiscountMarketingValidationSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const global_validation_1 = require("@lyxa.ai/core/dist/utilities/validation/global-validation");
6
+ const enum_1 = require("@lyxa.ai/core/dist/utilities/enum");
7
+ const marketing_validation_1 = require("./marketing.validation");
8
+ const product_marketing_validation_1 = require("./product-marketing.validation");
9
+ const baseFields = {
10
+ ...marketing_validation_1.baseMarketingFields,
11
+ marketingType: zod_1.z.literal(enum_1.MarketingType.NEW_USER_DISCOUNT),
12
+ categories: global_validation_1.ZodValidation.array(global_validation_1.ZodValidation.objectId('Category'), 'Categories').optional().default([]),
13
+ isEntireMenu: global_validation_1.ZodValidation.boolean('IsEntireMenu').default(false),
14
+ valueType: global_validation_1.ZodValidation.enumType(enum_1.ValueType, 'Value type').optional(),
15
+ value: global_validation_1.ZodValidation.number('Value').optional(),
16
+ products: global_validation_1.ZodValidation.array(zod_1.z.object(product_marketing_validation_1.baseFields), 'Products').optional().default([]),
17
+ excludeProducts: global_validation_1.ZodValidation.array(global_validation_1.ZodValidation.objectId('Exclude Product'), 'Exclude Products')
18
+ .optional()
19
+ .default([]),
20
+ maxDiscountPerOrder: global_validation_1.ZodValidation.number('Max discount per order').default(0),
21
+ isMaxDiscountPerOrderEnabled: global_validation_1.ZodValidation.boolean('Is max discount per order enabled').default(false),
22
+ spendLimit: global_validation_1.ZodValidation.number('Spend limit').default(0),
23
+ isSpendLimitEnabled: global_validation_1.ZodValidation.boolean('Is spend limit enabled').default(false),
24
+ };
25
+ const schemaBuilder = (0, global_validation_1.createSchemaBuilder)(baseFields);
26
+ const { BaseSchema: NewUserDiscountMarketingValidationSchema, EntitySchema: NewUserDiscountMarketingSchema, IdSchema: NewUserDiscountMarketingIdSchema, UpdateSchema: UpdateNewUserDiscountMarketingSchemaWithoutRefinement, } = schemaBuilder.getAllSchemas({ createdAt: true });
27
+ exports.NewUserDiscountMarketingSchema = NewUserDiscountMarketingSchema;
28
+ exports.NewUserDiscountMarketingIdValidationSchema = NewUserDiscountMarketingIdSchema;
29
+ const NewUserDiscountMarketingValidationSchemaRefined = NewUserDiscountMarketingValidationSchema.superRefine((data, ctx) => {
30
+ if (data.duration.end && data.duration.end.getTime() <= data.duration.start.getTime()) {
31
+ ctx.addIssue({
32
+ code: zod_1.z.ZodIssueCode.custom,
33
+ message: 'End date must be after the start date',
34
+ path: ['duration', 'end'],
35
+ });
36
+ }
37
+ if (data.maxDiscountPerOrder && data.spendLimit) {
38
+ if (data.maxDiscountPerOrder > data.spendLimit) {
39
+ ctx.addIssue({
40
+ code: zod_1.z.ZodIssueCode.custom,
41
+ message: 'Spend limit cannot be less than max discount per order',
42
+ path: ['maxDiscountPerOrder', 'spendLimit'],
43
+ });
44
+ }
45
+ }
46
+ if (data.products.length > 0 && (data.value || data.valueType || data.isEntireMenu)) {
47
+ ctx.addIssue({
48
+ code: zod_1.z.ZodIssueCode.custom,
49
+ message: 'Please provide discount information for either individual products or the entire menu',
50
+ path: ['products', 'value', 'valueType', 'isEntireMenu'],
51
+ });
52
+ }
53
+ if (data.products.length < 1 &&
54
+ data.categories.length < 1 &&
55
+ !(data.value && data.valueType && data.isEntireMenu)) {
56
+ ctx.addIssue({
57
+ code: zod_1.z.ZodIssueCode.custom,
58
+ message: 'Please provide discount information for individual products or categories or the entire menu',
59
+ path: ['products', 'value', 'valueType', 'isEntireMenu', 'categories'],
60
+ });
61
+ }
62
+ });
63
+ exports.NewUserDiscountMarketingValidationSchema = NewUserDiscountMarketingValidationSchemaRefined;
64
+ const UpdateNewUserDiscountMarketingSchema = UpdateNewUserDiscountMarketingSchemaWithoutRefinement.superRefine((data, ctx) => {
65
+ if (data.duration?.end && data.duration.end.getTime() <= data.duration.start.getTime()) {
66
+ ctx.addIssue({
67
+ code: zod_1.z.ZodIssueCode.custom,
68
+ message: 'End date must be after the start date',
69
+ path: ['duration', 'end'],
70
+ });
71
+ }
72
+ if (data.maxDiscountPerOrder && data.spendLimit) {
73
+ if (data.maxDiscountPerOrder > data.spendLimit) {
74
+ ctx.addIssue({
75
+ code: zod_1.z.ZodIssueCode.custom,
76
+ message: 'Spend limit cannot be less than max discount per order',
77
+ path: ['maxDiscountPerOrder', 'spendLimit'],
78
+ });
79
+ }
80
+ }
81
+ });
82
+ exports.UpdateNewUserDiscountMarketingSchema = UpdateNewUserDiscountMarketingSchema;
83
+ //# sourceMappingURL=new-user-discount-marketing.validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-user-discount-marketing.validation.js","sourceRoot":"/","sources":["modules/marketing/validations/new-user-discount-marketing.validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport {\n\tZodValidation,\n\tcreateSchemaBuilder,\n\tDTO,\n} from '@lyxa.ai/core/dist/utilities/validation/global-validation';\nimport { MarketingType, ValueType } from '@lyxa.ai/core/dist/utilities/enum';\nimport { baseMarketingFields } from './marketing.validation';\nimport { baseFields as baseProductMarketingFields } from './product-marketing.validation';\n\n/**\n * Define the base parent schema fields\n */\nconst baseFields = {\n\t...baseMarketingFields,\n\tmarketingType: z.literal(MarketingType.NEW_USER_DISCOUNT),\n\tcategories: ZodValidation.array(ZodValidation.objectId('Category'), 'Categories').optional().default([]),\n\tisEntireMenu: ZodValidation.boolean('IsEntireMenu').default(false),\n\tvalueType: ZodValidation.enumType(ValueType, 'Value type').optional(),\n\tvalue: ZodValidation.number('Value').optional(),\n\tproducts: ZodValidation.array(z.object(baseProductMarketingFields), 'Products').optional().default([]),\n\texcludeProducts: ZodValidation.array(ZodValidation.objectId('Exclude Product'), 'Exclude Products')\n\t\t.optional()\n\t\t.default([]),\n\tmaxDiscountPerOrder: ZodValidation.number('Max discount per order').default(0),\n\tisMaxDiscountPerOrderEnabled: ZodValidation.boolean('Is max discount per order enabled').default(false),\n\tspendLimit: ZodValidation.number('Spend limit').default(0),\n\tisSpendLimitEnabled: ZodValidation.boolean('Is spend limit enabled').default(false),\n};\n\n/**\n * Create schema builder for Parent entity\n * - Includes timestamps\n * - Excludes 'createdAt' from update operations\n */\nconst schemaBuilder = createSchemaBuilder(baseFields);\n\n/**\n * Get all schemas for the Parent entity\n */\nconst {\n\tBaseSchema: NewUserDiscountMarketingValidationSchema,\n\tEntitySchema: NewUserDiscountMarketingSchema,\n\tIdSchema: NewUserDiscountMarketingIdSchema,\n\tUpdateSchema: UpdateNewUserDiscountMarketingSchemaWithoutRefinement,\n} = schemaBuilder.getAllSchemas({ createdAt: true });\n\nconst NewUserDiscountMarketingValidationSchemaRefined = NewUserDiscountMarketingValidationSchema.superRefine(\n\t(data, ctx) => {\n\t\tif (data.duration.end && data.duration.end.getTime() <= data.duration.start.getTime()) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'End date must be after the start date',\n\t\t\t\tpath: ['duration', 'end'],\n\t\t\t});\n\t\t}\n\n\t\tif (data.maxDiscountPerOrder && data.spendLimit) {\n\t\t\tif (data.maxDiscountPerOrder > data.spendLimit) {\n\t\t\t\tctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: 'Spend limit cannot be less than max discount per order',\n\t\t\t\t\tpath: ['maxDiscountPerOrder', 'spendLimit'],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (data.products.length > 0 && (data.value || data.valueType || data.isEntireMenu)) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'Please provide discount information for either individual products or the entire menu',\n\t\t\t\tpath: ['products', 'value', 'valueType', 'isEntireMenu'],\n\t\t\t});\n\t\t}\n\n\t\tif (\n\t\t\tdata.products.length < 1 &&\n\t\t\tdata.categories.length < 1 &&\n\t\t\t!(data.value && data.valueType && data.isEntireMenu)\n\t\t) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage:\n\t\t\t\t\t'Please provide discount information for individual products or categories or the entire menu',\n\t\t\t\tpath: ['products', 'value', 'valueType', 'isEntireMenu', 'categories'],\n\t\t\t});\n\t\t}\n\t}\n);\n\nconst UpdateNewUserDiscountMarketingSchema = UpdateNewUserDiscountMarketingSchemaWithoutRefinement.superRefine(\n\t(data, ctx) => {\n\t\tif (data.duration?.end && data.duration.end.getTime() <= data.duration.start.getTime()) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'End date must be after the start date',\n\t\t\t\tpath: ['duration', 'end'],\n\t\t\t});\n\t\t}\n\n\t\tif (data.maxDiscountPerOrder && data.spendLimit) {\n\t\t\tif (data.maxDiscountPerOrder > data.spendLimit) {\n\t\t\t\tctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: 'Spend limit cannot be less than max discount per order',\n\t\t\t\t\tpath: ['maxDiscountPerOrder', 'spendLimit'],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n);\n\n/**\n * Export schemas\n */\nexport {\n\tNewUserDiscountMarketingValidationSchemaRefined as NewUserDiscountMarketingValidationSchema,\n\tNewUserDiscountMarketingSchema,\n\tNewUserDiscountMarketingIdSchema as NewUserDiscountMarketingIdValidationSchema,\n\tUpdateNewUserDiscountMarketingSchema,\n};\n\n/**\n * Export DTO types\n */\nexport type CreateNewUserDiscountMarketingDTO = DTO<typeof NewUserDiscountMarketingValidationSchema>;\nexport type NewUserDiscountMarketingDTO = DTO<typeof NewUserDiscountMarketingSchema>;\nexport type UpdateNewUserDiscountMarketingDTO = DTO<typeof UpdateNewUserDiscountMarketingSchema>;\n"]}
@@ -104,13 +104,13 @@ declare const PunchMarketingValidationSchema: z.ZodEffects<z.ZodObject<{
104
104
  end?: Date | undefined;
105
105
  };
106
106
  shop: import("mongoose").Types.ObjectId;
107
+ couponDurationInDays: number;
108
+ minimumOrderValue: number;
107
109
  isAppliedByCompany: boolean;
108
110
  pausedAt: Date | null;
109
111
  marketingType: MarketingType.PUNCH_MARKETING;
110
- minimumOrderValue: number;
111
112
  couponValueType: ValueType;
112
113
  couponValue: number;
113
- couponDurationInDays: number;
114
114
  targetOrders: number;
115
115
  dayLimit: number;
116
116
  admin?: import("mongoose").Types.ObjectId | null | undefined;
@@ -120,12 +120,12 @@ declare const PunchMarketingValidationSchema: z.ZodEffects<z.ZodObject<{
120
120
  end?: string | Date | undefined;
121
121
  };
122
122
  shop: string | import("mongoose").Types.ObjectId;
123
+ couponDurationInDays: number;
124
+ minimumOrderValue: number;
123
125
  isAppliedByCompany: boolean;
124
126
  marketingType: MarketingType.PUNCH_MARKETING;
125
- minimumOrderValue: number;
126
127
  couponValueType: ValueType;
127
128
  couponValue: number;
128
- couponDurationInDays: number;
129
129
  targetOrders: number;
130
130
  dayLimit: number;
131
131
  status?: import("@lyxa.ai/core/dist/utilities/enum").MarketingStatus | undefined;
@@ -138,13 +138,13 @@ declare const PunchMarketingValidationSchema: z.ZodEffects<z.ZodObject<{
138
138
  end?: Date | undefined;
139
139
  };
140
140
  shop: import("mongoose").Types.ObjectId;
141
+ couponDurationInDays: number;
142
+ minimumOrderValue: number;
141
143
  isAppliedByCompany: boolean;
142
144
  pausedAt: Date | null;
143
145
  marketingType: MarketingType.PUNCH_MARKETING;
144
- minimumOrderValue: number;
145
146
  couponValueType: ValueType;
146
147
  couponValue: number;
147
- couponDurationInDays: number;
148
148
  targetOrders: number;
149
149
  dayLimit: number;
150
150
  admin?: import("mongoose").Types.ObjectId | null | undefined;
@@ -154,12 +154,12 @@ declare const PunchMarketingValidationSchema: z.ZodEffects<z.ZodObject<{
154
154
  end?: string | Date | undefined;
155
155
  };
156
156
  shop: string | import("mongoose").Types.ObjectId;
157
+ couponDurationInDays: number;
158
+ minimumOrderValue: number;
157
159
  isAppliedByCompany: boolean;
158
160
  marketingType: MarketingType.PUNCH_MARKETING;
159
- minimumOrderValue: number;
160
161
  couponValueType: ValueType;
161
162
  couponValue: number;
162
- couponDurationInDays: number;
163
163
  targetOrders: number;
164
164
  dayLimit: number;
165
165
  status?: import("@lyxa.ai/core/dist/utilities/enum").MarketingStatus | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"spend-to-get-marketing.validation.d.ts","sourceRoot":"/","sources":["modules/marketing/validations/spend-to-get-marketing.validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAGN,GAAG,EACH,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAOxF,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDvB,CAAC;AAyBJ,QAAA,MAEe,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAC7B,2BAA2B,iNAEc,CAAC;AAwCrD,QAAA,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKxC,CAAC;AAEF,QAAA,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAOpC,CAAC;AAKF,OAAO,EACN,mCAAmC,EACnC,yBAAyB,EACzB,2BAA2B,IAAI,qCAAqC,EACpE,+BAA+B,EAC/B,oBAAoB,GACpB,CAAC;AAKF,MAAM,MAAM,4BAA4B,GAAG,GAAG,CAAC,OAAO,mCAAmC,CAAC,CAAC;AAC3F,MAAM,MAAM,sBAAsB,GAAG,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC3E,MAAM,MAAM,4BAA4B,GAAG,GAAG,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACvF,MAAM,MAAM,iBAAiB,GAAG,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"spend-to-get-marketing.validation.d.ts","sourceRoot":"/","sources":["modules/marketing/validations/spend-to-get-marketing.validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAGN,GAAG,EACH,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAOxF,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDvB,CAAC;AAyBJ,QAAA,MAEe,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAC7B,2BAA2B,iNAEc,CAAC;AA6DrD,QAAA,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcxC,CAAC;AAEF,QAAA,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAgBpC,CAAC;AAKF,OAAO,EACN,mCAAmC,EACnC,yBAAyB,EACzB,2BAA2B,IAAI,qCAAqC,EACpE,+BAA+B,EAC/B,oBAAoB,GACpB,CAAC;AAKF,MAAM,MAAM,4BAA4B,GAAG,GAAG,CAAC,OAAO,mCAAmC,CAAC,CAAC;AAC3F,MAAM,MAAM,sBAAsB,GAAG,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC3E,MAAM,MAAM,4BAA4B,GAAG,GAAG,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACvF,MAAM,MAAM,iBAAiB,GAAG,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -88,6 +88,20 @@ function addAscendingTierIssues(tiers, ctx) {
88
88
  }
89
89
  }
90
90
  }
91
+ function addFreeDeliveryUniquenessIssues(tiers, ctx) {
92
+ const freeDeliveryCount = tiers.filter(tier => tier.rewardType === enum_1.SpendToGetRewardType.FREE_DELIVERY).length;
93
+ if (freeDeliveryCount <= 1)
94
+ return;
95
+ for (let i = 0; i < tiers.length; i++) {
96
+ if (tiers[i].rewardType === enum_1.SpendToGetRewardType.FREE_DELIVERY) {
97
+ ctx.addIssue({
98
+ code: zod_1.z.ZodIssueCode.custom,
99
+ message: 'Only one tier can offer free delivery.',
100
+ path: ['tiers', i, 'rewardType'],
101
+ });
102
+ }
103
+ }
104
+ }
91
105
  function addLimitIssues(data, ctx) {
92
106
  if (data.isSpendLimitEnabled && (!data.spendLimit || data.spendLimit <= 0)) {
93
107
  ctx.addIssue({
@@ -105,13 +119,29 @@ function addLimitIssues(data, ctx) {
105
119
  }
106
120
  }
107
121
  const SpendToGetMarketingValidationSchema = SpendToGetMarketingValidationSchemaWithoutRefinement.superRefine((data, ctx) => {
122
+ if (data.duration.end && data.duration.end.getTime() <= data.duration.start.getTime()) {
123
+ ctx.addIssue({
124
+ code: zod_1.z.ZodIssueCode.custom,
125
+ message: 'End date must be after the start date',
126
+ path: ['duration', 'end'],
127
+ });
128
+ }
108
129
  addAscendingTierIssues(data.tiers, ctx);
130
+ addFreeDeliveryUniquenessIssues(data.tiers, ctx);
109
131
  addLimitIssues(data, ctx);
110
132
  });
111
133
  exports.SpendToGetMarketingValidationSchema = SpendToGetMarketingValidationSchema;
112
134
  const UpdateSpendToGetMarketingSchema = UpdateSpendToGetMarketingSchemaWithoutRefinement.superRefine((data, ctx) => {
135
+ if (data.duration?.end && data.duration.end.getTime() <= data.duration.start.getTime()) {
136
+ ctx.addIssue({
137
+ code: zod_1.z.ZodIssueCode.custom,
138
+ message: 'End date must be after the start date',
139
+ path: ['duration', 'end'],
140
+ });
141
+ }
113
142
  if (data.tiers) {
114
143
  addAscendingTierIssues(data.tiers, ctx);
144
+ addFreeDeliveryUniquenessIssues(data.tiers, ctx);
115
145
  }
116
146
  addLimitIssues(data, ctx);
117
147
  });
@@ -1 +1 @@
1
- {"version":3,"file":"spend-to-get-marketing.validation.js","sourceRoot":"/","sources":["modules/marketing/validations/spend-to-get-marketing.validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport {\n\tZodValidation,\n\tcreateSchemaBuilder,\n\tDTO,\n} from '@lyxa.ai/core/dist/utilities/validation/global-validation';\nimport { MarketingType, SpendToGetRewardType } from '@lyxa.ai/core/dist/utilities/enum';\nimport { baseMarketingFields } from './marketing.validation';\n\n/**\n * Single spend tier: minimum spend + reward. Reward value is required for\n * PERCENTAGE/FIXED and forbidden for FREE_DELIVERY; maxDiscountCap only applies to PERCENTAGE.\n */\nconst SpendToGetTierSchema = z\n\t.object({\n\t\tminSpend: ZodValidation.number('Minimum spend', { isNonnegative: true }),\n\t\trewardType: ZodValidation.enumType(SpendToGetRewardType, 'Reward type'),\n\t\trewardValue: ZodValidation.number('Reward value').optional(),\n\t\tmaxDiscountCap: ZodValidation.number('Maximum discount cap').optional(),\n\t\tisMaxDiscountCapEnabled: ZodValidation.boolean('Is maximum discount cap enabled').default(false),\n\t})\n\t.superRefine((tier, ctx) => {\n\t\tif (tier.rewardType === SpendToGetRewardType.FREE_DELIVERY) {\n\t\t\tif (tier.rewardValue !== undefined) {\n\t\t\t\tctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: 'Reward value is not applicable for Free Delivery',\n\t\t\t\t\tpath: ['rewardValue'],\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (tier.rewardValue === undefined) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'Reward value is required',\n\t\t\t\tpath: ['rewardValue'],\n\t\t\t});\n\t\t} else if (tier.rewardType === SpendToGetRewardType.PERCENTAGE) {\n\t\t\tif (tier.rewardValue < 1 || tier.rewardValue > 100) {\n\t\t\t\tctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: 'Percentage reward value must be between 1 and 100',\n\t\t\t\t\tpath: ['rewardValue'],\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (tier.rewardType === SpendToGetRewardType.FIXED) {\n\t\t\tif (tier.rewardValue <= 0) {\n\t\t\t\tctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: 'Fixed reward value must be greater than 0',\n\t\t\t\t\tpath: ['rewardValue'],\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (tier.rewardValue >= tier.minSpend) {\n\t\t\t\tctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: \"Fixed reward value must be less than the tier's minimum spend\",\n\t\t\t\t\tpath: ['rewardValue'],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (tier.maxDiscountCap !== undefined && tier.rewardType !== SpendToGetRewardType.PERCENTAGE) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'Maximum discount cap only applies to Percentage rewards',\n\t\t\t\tpath: ['maxDiscountCap'],\n\t\t\t});\n\t\t}\n\t});\n\n/**\n * Define the base parent schema fields\n */\nconst baseFields = {\n\t...baseMarketingFields,\n\tmarketingType: z.literal(MarketingType.SPEND_TO_GET),\n\ttiers: ZodValidation.array(SpendToGetTierSchema, 'Tiers', 1),\n\tperUserLimit: ZodValidation.number('Per user limit', { isPositive: true }).optional(),\n\tisPerUserLimitEnabled: ZodValidation.boolean('Is per user limit enabled').default(false),\n\tspendLimit: ZodValidation.number('Spend limit').default(0),\n\tisSpendLimitEnabled: ZodValidation.boolean('Is spend limit enabled').default(false),\n};\n\n/**\n * Create schema builder for Parent entity\n * - Includes timestamps\n * - Excludes 'createdAt' from update operations\n */\nconst schemaBuilder = createSchemaBuilder(baseFields);\n\n/**\n * Get all schemas for the Parent entity\n */\nconst {\n\tBaseSchema: SpendToGetMarketingValidationSchemaWithoutRefinement,\n\tEntitySchema: SpendToGetMarketingSchema,\n\tIdSchema: SpendToGetMarketingIdSchema,\n\tUpdateSchema: UpdateSpendToGetMarketingSchemaWithoutRefinement,\n} = schemaBuilder.getAllSchemas({ createdAt: true });\n\nfunction addAscendingTierIssues(tiers: { minSpend: number }[], ctx: z.RefinementCtx): void {\n\tfor (let i = 1; i < tiers.length; i++) {\n\t\tif (tiers[i].minSpend <= tiers[i - 1].minSpend) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: \"Each tier's minimum spend must be higher than the previous tier.\",\n\t\t\t\tpath: ['tiers', i, 'minSpend'],\n\t\t\t});\n\t\t}\n\t}\n}\n\nfunction addLimitIssues(\n\tdata: {\n\t\tisSpendLimitEnabled?: boolean;\n\t\tspendLimit?: number;\n\t\tisPerUserLimitEnabled?: boolean;\n\t\tperUserLimit?: number;\n\t},\n\tctx: z.RefinementCtx\n): void {\n\tif (data.isSpendLimitEnabled && (!data.spendLimit || data.spendLimit <= 0)) {\n\t\tctx.addIssue({\n\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\tmessage: 'Spend limit must be greater than 0 when enabled',\n\t\t\tpath: ['spendLimit', 'isSpendLimitEnabled'],\n\t\t});\n\t}\n\n\tif (data.isPerUserLimitEnabled && (!data.perUserLimit || data.perUserLimit <= 0)) {\n\t\tctx.addIssue({\n\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\tmessage: 'Per user limit must be greater than 0 when enabled',\n\t\t\tpath: ['perUserLimit', 'isPerUserLimitEnabled'],\n\t\t});\n\t}\n}\n\nconst SpendToGetMarketingValidationSchema = SpendToGetMarketingValidationSchemaWithoutRefinement.superRefine(\n\t(data, ctx) => {\n\t\taddAscendingTierIssues(data.tiers, ctx);\n\t\taddLimitIssues(data, ctx);\n\t}\n);\n\nconst UpdateSpendToGetMarketingSchema = UpdateSpendToGetMarketingSchemaWithoutRefinement.superRefine(\n\t(data, ctx) => {\n\t\tif (data.tiers) {\n\t\t\taddAscendingTierIssues(data.tiers, ctx);\n\t\t}\n\t\taddLimitIssues(data, ctx);\n\t}\n);\n\n/**\n * Export schemas\n */\nexport {\n\tSpendToGetMarketingValidationSchema,\n\tSpendToGetMarketingSchema,\n\tSpendToGetMarketingIdSchema as SpendToGetMarketingIdValidationSchema,\n\tUpdateSpendToGetMarketingSchema,\n\tSpendToGetTierSchema,\n};\n\n/**\n * Export DTO types\n */\nexport type CreateSpendToGetMarketingDTO = DTO<typeof SpendToGetMarketingValidationSchema>;\nexport type SpendToGetMarketingDTO = DTO<typeof SpendToGetMarketingSchema>;\nexport type UpdateSpendToGetMarketingDTO = DTO<typeof UpdateSpendToGetMarketingSchema>;\nexport type SpendToGetTierDTO = DTO<typeof SpendToGetTierSchema>;\n"]}
1
+ {"version":3,"file":"spend-to-get-marketing.validation.js","sourceRoot":"/","sources":["modules/marketing/validations/spend-to-get-marketing.validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport {\n\tZodValidation,\n\tcreateSchemaBuilder,\n\tDTO,\n} from '@lyxa.ai/core/dist/utilities/validation/global-validation';\nimport { MarketingType, SpendToGetRewardType } from '@lyxa.ai/core/dist/utilities/enum';\nimport { baseMarketingFields } from './marketing.validation';\n\n/**\n * Single spend tier: minimum spend + reward. Reward value is required for\n * PERCENTAGE/FIXED and forbidden for FREE_DELIVERY; maxDiscountCap only applies to PERCENTAGE.\n */\nconst SpendToGetTierSchema = z\n\t.object({\n\t\tminSpend: ZodValidation.number('Minimum spend', { isNonnegative: true }),\n\t\trewardType: ZodValidation.enumType(SpendToGetRewardType, 'Reward type'),\n\t\trewardValue: ZodValidation.number('Reward value').optional(),\n\t\tmaxDiscountCap: ZodValidation.number('Maximum discount cap').optional(),\n\t\tisMaxDiscountCapEnabled: ZodValidation.boolean('Is maximum discount cap enabled').default(false),\n\t})\n\t.superRefine((tier, ctx) => {\n\t\tif (tier.rewardType === SpendToGetRewardType.FREE_DELIVERY) {\n\t\t\tif (tier.rewardValue !== undefined) {\n\t\t\t\tctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: 'Reward value is not applicable for Free Delivery',\n\t\t\t\t\tpath: ['rewardValue'],\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (tier.rewardValue === undefined) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'Reward value is required',\n\t\t\t\tpath: ['rewardValue'],\n\t\t\t});\n\t\t} else if (tier.rewardType === SpendToGetRewardType.PERCENTAGE) {\n\t\t\tif (tier.rewardValue < 1 || tier.rewardValue > 100) {\n\t\t\t\tctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: 'Percentage reward value must be between 1 and 100',\n\t\t\t\t\tpath: ['rewardValue'],\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (tier.rewardType === SpendToGetRewardType.FIXED) {\n\t\t\tif (tier.rewardValue <= 0) {\n\t\t\t\tctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: 'Fixed reward value must be greater than 0',\n\t\t\t\t\tpath: ['rewardValue'],\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (tier.rewardValue >= tier.minSpend) {\n\t\t\t\tctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: \"Fixed reward value must be less than the tier's minimum spend\",\n\t\t\t\t\tpath: ['rewardValue'],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (tier.maxDiscountCap !== undefined && tier.rewardType !== SpendToGetRewardType.PERCENTAGE) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'Maximum discount cap only applies to Percentage rewards',\n\t\t\t\tpath: ['maxDiscountCap'],\n\t\t\t});\n\t\t}\n\t});\n\n/**\n * Define the base parent schema fields\n */\nconst baseFields = {\n\t...baseMarketingFields,\n\tmarketingType: z.literal(MarketingType.SPEND_TO_GET),\n\ttiers: ZodValidation.array(SpendToGetTierSchema, 'Tiers', 1),\n\tperUserLimit: ZodValidation.number('Per user limit', { isPositive: true }).optional(),\n\tisPerUserLimitEnabled: ZodValidation.boolean('Is per user limit enabled').default(false),\n\tspendLimit: ZodValidation.number('Spend limit').default(0),\n\tisSpendLimitEnabled: ZodValidation.boolean('Is spend limit enabled').default(false),\n};\n\n/**\n * Create schema builder for Parent entity\n * - Includes timestamps\n * - Excludes 'createdAt' from update operations\n */\nconst schemaBuilder = createSchemaBuilder(baseFields);\n\n/**\n * Get all schemas for the Parent entity\n */\nconst {\n\tBaseSchema: SpendToGetMarketingValidationSchemaWithoutRefinement,\n\tEntitySchema: SpendToGetMarketingSchema,\n\tIdSchema: SpendToGetMarketingIdSchema,\n\tUpdateSchema: UpdateSpendToGetMarketingSchemaWithoutRefinement,\n} = schemaBuilder.getAllSchemas({ createdAt: true });\n\nfunction addAscendingTierIssues(tiers: { minSpend: number }[], ctx: z.RefinementCtx): void {\n\tfor (let i = 1; i < tiers.length; i++) {\n\t\tif (tiers[i].minSpend <= tiers[i - 1].minSpend) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: \"Each tier's minimum spend must be higher than the previous tier.\",\n\t\t\t\tpath: ['tiers', i, 'minSpend'],\n\t\t\t});\n\t\t}\n\t}\n}\n\nfunction addFreeDeliveryUniquenessIssues(\n\ttiers: { rewardType: SpendToGetRewardType }[],\n\tctx: z.RefinementCtx\n): void {\n\tconst freeDeliveryCount = tiers.filter(\n\t\ttier => tier.rewardType === SpendToGetRewardType.FREE_DELIVERY\n\t).length;\n\n\tif (freeDeliveryCount <= 1) return;\n\n\tfor (let i = 0; i < tiers.length; i++) {\n\t\tif (tiers[i].rewardType === SpendToGetRewardType.FREE_DELIVERY) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'Only one tier can offer free delivery.',\n\t\t\t\tpath: ['tiers', i, 'rewardType'],\n\t\t\t});\n\t\t}\n\t}\n}\n\nfunction addLimitIssues(\n\tdata: {\n\t\tisSpendLimitEnabled?: boolean;\n\t\tspendLimit?: number;\n\t\tisPerUserLimitEnabled?: boolean;\n\t\tperUserLimit?: number;\n\t},\n\tctx: z.RefinementCtx\n): void {\n\tif (data.isSpendLimitEnabled && (!data.spendLimit || data.spendLimit <= 0)) {\n\t\tctx.addIssue({\n\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\tmessage: 'Spend limit must be greater than 0 when enabled',\n\t\t\tpath: ['spendLimit', 'isSpendLimitEnabled'],\n\t\t});\n\t}\n\n\tif (data.isPerUserLimitEnabled && (!data.perUserLimit || data.perUserLimit <= 0)) {\n\t\tctx.addIssue({\n\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\tmessage: 'Per user limit must be greater than 0 when enabled',\n\t\t\tpath: ['perUserLimit', 'isPerUserLimitEnabled'],\n\t\t});\n\t}\n}\n\nconst SpendToGetMarketingValidationSchema = SpendToGetMarketingValidationSchemaWithoutRefinement.superRefine(\n\t(data, ctx) => {\n\t\tif (data.duration.end && data.duration.end.getTime() <= data.duration.start.getTime()) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'End date must be after the start date',\n\t\t\t\tpath: ['duration', 'end'],\n\t\t\t});\n\t\t}\n\n\t\taddAscendingTierIssues(data.tiers, ctx);\n\t\taddFreeDeliveryUniquenessIssues(data.tiers, ctx);\n\t\taddLimitIssues(data, ctx);\n\t}\n);\n\nconst UpdateSpendToGetMarketingSchema = UpdateSpendToGetMarketingSchemaWithoutRefinement.superRefine(\n\t(data, ctx) => {\n\t\tif (data.duration?.end && data.duration.end.getTime() <= data.duration.start.getTime()) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'End date must be after the start date',\n\t\t\t\tpath: ['duration', 'end'],\n\t\t\t});\n\t\t}\n\n\t\tif (data.tiers) {\n\t\t\taddAscendingTierIssues(data.tiers, ctx);\n\t\t\taddFreeDeliveryUniquenessIssues(data.tiers, ctx);\n\t\t}\n\t\taddLimitIssues(data, ctx);\n\t}\n);\n\n/**\n * Export schemas\n */\nexport {\n\tSpendToGetMarketingValidationSchema,\n\tSpendToGetMarketingSchema,\n\tSpendToGetMarketingIdSchema as SpendToGetMarketingIdValidationSchema,\n\tUpdateSpendToGetMarketingSchema,\n\tSpendToGetTierSchema,\n};\n\n/**\n * Export DTO types\n */\nexport type CreateSpendToGetMarketingDTO = DTO<typeof SpendToGetMarketingValidationSchema>;\nexport type SpendToGetMarketingDTO = DTO<typeof SpendToGetMarketingSchema>;\nexport type UpdateSpendToGetMarketingDTO = DTO<typeof UpdateSpendToGetMarketingSchema>;\nexport type SpendToGetTierDTO = DTO<typeof SpendToGetTierSchema>;\n"]}
@@ -18,12 +18,12 @@ export declare const punchMarketingHistoryRouter: import("@trpc/server").TRPCBui
18
18
  input: {
19
19
  user: string | import("mongoose").Types.ObjectId;
20
20
  shop: string | import("mongoose").Types.ObjectId;
21
+ couponDurationInDays: number;
21
22
  minimumOrderValue: number;
22
23
  marketing: string | import("mongoose").Types.ObjectId;
23
24
  targetOrder: number;
24
25
  couponValueType: import("@lyxa.ai/core/dist/utilities/enum").ValueType;
25
26
  couponValue: number;
26
- couponDurationInDays: number;
27
27
  status?: import("@lyxa.ai/core/dist/utilities/enum").PunchMarketingStatus | undefined;
28
28
  startDate?: string | Date | undefined;
29
29
  completedAt?: string | Date | undefined;
@@ -129,16 +129,16 @@ export declare const punchMarketingHistoryRouter: import("@trpc/server").TRPCBui
129
129
  }>;
130
130
  get: import("@trpc/server").TRPCQueryProcedure<{
131
131
  input: {
132
+ size?: number | undefined;
133
+ page?: number | undefined;
132
134
  sort?: Record<string, 1 | -1> | undefined;
135
+ query?: Record<string, any> | undefined;
136
+ select?: Record<string, 0 | 1> | undefined;
137
+ populate?: any;
133
138
  search?: {
134
139
  searchKey: string;
135
140
  searchFields?: string[] | undefined;
136
141
  } | undefined;
137
- select?: Record<string, 0 | 1> | undefined;
138
- populate?: any;
139
- size?: number | undefined;
140
- page?: number | undefined;
141
- query?: Record<string, any> | undefined;
142
142
  } | undefined;
143
143
  output: {
144
144
  message: string;
@@ -1 +1 @@
1
- {"version":3,"file":"punch-marketing-history.router.d.ts","sourceRoot":"/","sources":["modules/punch-marketing-history/routers/punch-marketing-history.router.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAkBV,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkE5B,CAAC"}
1
+ {"version":3,"file":"punch-marketing-history.router.d.ts","sourceRoot":"/","sources":["modules/punch-marketing-history/routers/punch-marketing-history.router.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAwB9B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DT,CAAC"}
@@ -19,12 +19,12 @@ declare const PunchMarketingHistoryValidationSchema: z.ZodObject<{
19
19
  }, "strict", z.ZodTypeAny, {
20
20
  user: import("mongoose").Types.ObjectId;
21
21
  shop: import("mongoose").Types.ObjectId;
22
+ couponDurationInDays: number;
22
23
  minimumOrderValue: number;
23
24
  marketing: import("mongoose").Types.ObjectId;
24
25
  targetOrder: number;
25
26
  couponValueType: ValueType;
26
27
  couponValue: number;
27
- couponDurationInDays: number;
28
28
  status?: PunchMarketingStatus | undefined;
29
29
  startDate?: Date | undefined;
30
30
  completedAt?: Date | undefined;
@@ -34,12 +34,12 @@ declare const PunchMarketingHistoryValidationSchema: z.ZodObject<{
34
34
  }, {
35
35
  user: string | import("mongoose").Types.ObjectId;
36
36
  shop: string | import("mongoose").Types.ObjectId;
37
+ couponDurationInDays: number;
37
38
  minimumOrderValue: number;
38
39
  marketing: string | import("mongoose").Types.ObjectId;
39
40
  targetOrder: number;
40
41
  couponValueType: ValueType;
41
42
  couponValue: number;
42
- couponDurationInDays: number;
43
43
  status?: PunchMarketingStatus | undefined;
44
44
  startDate?: string | Date | undefined;
45
45
  completedAt?: string | Date | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"referral-setting.validation.d.ts","sourceRoot":"/","sources":["modules/referral-setting/validations/referral-setting.validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAGN,GAAG,EACH,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AA+B9D,QAAA,MACa,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAC7B,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCACzB,uBAAuB,mNACnB,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCACU,CAAC;AAKrD,OAAO,EACN,+BAA+B,EAC/B,qBAAqB,EACrB,uBAAuB,IAAI,iCAAiC,EAC5D,2BAA2B,GAC3B,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA8C,CAAC;AAKzF,MAAM,MAAM,wBAAwB,GAAG,GAAG,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACnF,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACnE,MAAM,MAAM,wBAAwB,GAAG,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
1
+ {"version":3,"file":"referral-setting.validation.d.ts","sourceRoot":"/","sources":["modules/referral-setting/validations/referral-setting.validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAGN,GAAG,EACH,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAgC9D,QAAA,MACa,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAC7B,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCACzB,uBAAuB,mNACnB,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCACU,CAAC;AAKrD,OAAO,EACN,+BAA+B,EAC/B,qBAAqB,EACrB,uBAAuB,IAAI,iCAAiC,EAC5D,2BAA2B,GAC3B,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA8C,CAAC;AAKzF,MAAM,MAAM,wBAAwB,GAAG,GAAG,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACnF,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACnE,MAAM,MAAM,wBAAwB,GAAG,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"referral-setting.validation.js","sourceRoot":"/","sources":["modules/referral-setting/validations/referral-setting.validation.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,iGAImE;AACnE,4DAA8D;AAC9D,wEAA+E;AAM/E,MAAM,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IACrC,SAAS,EAAE,iCAAa,CAAC,QAAQ,CAAC,gBAAS,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,gBAAS,CAAC,UAAU,CAAC;IACxF,KAAK,EAAE,iCAAa,CAAC,MAAM,CAAC,OAAO,CAAC;IACpC,iBAAiB,EAAE,iCAAa,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;CACzE,CAAC,CAAC;AAKH,MAAM,UAAU,GAAG;IAClB,MAAM,EAAE,oBAAoB;IAC5B,QAAQ,EAAE,oBAAoB;CAC9B,CAAC;AAOF,MAAM,aAAa,GAAG,IAAA,uCAAmB,EAAC,UAAU,CAAC,CAAC;AAKtD,MAAM,EACL,UAAU,EAAE,+BAA+B,EAC3C,YAAY,EAAE,qBAAqB,EACnC,QAAQ,EAAE,uBAAuB,EACjC,YAAY,EAAE,2BAA2B,GACzC,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAMpD,0EAA+B;AAC/B,sDAAqB;AACM,oEAAiC;AAC5D,kEAA2B;AAGf,QAAA,6BAA6B,GAAG,IAAA,iCAAoB,EAAC,qBAAqB,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\nimport {\n\tZodValidation,\n\tcreateSchemaBuilder,\n\tDTO,\n} from '@lyxa.ai/core/dist/utilities/validation/global-validation';\nimport { ValueType } from '@lyxa.ai/core/dist/utilities/enum';\nimport { createResponseSchema } from '@lyxa.ai/core/dist/utilities/validation';\n\n/**\n * Define the sub schema\n */\n\nconst DiscountConfigSchema = z.object({\n\tvalueType: ZodValidation.enumType(ValueType, 'Value type').default(ValueType.PERCENTAGE),\n\tvalue: ZodValidation.number('Value'),\n\tminimumOrderValue: ZodValidation.number('Minumum order value').default(0),\n});\n\n/**\n * Define the base parent schema fields\n */\nconst baseFields = {\n\tsender: DiscountConfigSchema,\n\treceiver: DiscountConfigSchema,\n};\n\n/**\n * Create schema builder for Parent entity\n * - Includes timestamps\n * - Excludes 'createdAt' from update operations\n */\nconst schemaBuilder = createSchemaBuilder(baseFields);\n\n/**\n * Get all schemas for the Parent entity\n */\nconst {\n\tBaseSchema: ReferralSettingValidationSchema,\n\tEntitySchema: ReferralSettingSchema,\n\tIdSchema: ReferralSettingIdSchema,\n\tUpdateSchema: UpdateReferralSettingSchema,\n} = schemaBuilder.getAllSchemas({ createdAt: true });\n\n/**\n * Export schemas\n */\nexport {\n\tReferralSettingValidationSchema,\n\tReferralSettingSchema,\n\tReferralSettingIdSchema as ReferralSettingIdValidationSchema,\n\tUpdateReferralSettingSchema,\n};\n\nexport const ReferralSettingResponseSchema = createResponseSchema(ReferralSettingSchema);\n\n/**\n * Export DTO types\n */\nexport type CreateReferralSettingDTO = DTO<typeof ReferralSettingValidationSchema>;\nexport type ReferralSettingDTO = DTO<typeof ReferralSettingSchema>;\nexport type UpdateReferralSettingDTO = DTO<typeof UpdateReferralSettingSchema>;\n"]}
1
+ {"version":3,"file":"referral-setting.validation.js","sourceRoot":"/","sources":["modules/referral-setting/validations/referral-setting.validation.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,iGAImE;AACnE,4DAA8D;AAC9D,wEAA+E;AAM/E,MAAM,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IACrC,SAAS,EAAE,iCAAa,CAAC,QAAQ,CAAC,gBAAS,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,gBAAS,CAAC,UAAU,CAAC;IACxF,KAAK,EAAE,iCAAa,CAAC,MAAM,CAAC,OAAO,CAAC;IACpC,iBAAiB,EAAE,iCAAa,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;CACzE,CAAC,CAAC;AAKH,MAAM,UAAU,GAAG;IAClB,MAAM,EAAE,oBAAoB;IAC5B,QAAQ,EAAE,oBAAoB;CAE9B,CAAC;AAOF,MAAM,aAAa,GAAG,IAAA,uCAAmB,EAAC,UAAU,CAAC,CAAC;AAKtD,MAAM,EACL,UAAU,EAAE,+BAA+B,EAC3C,YAAY,EAAE,qBAAqB,EACnC,QAAQ,EAAE,uBAAuB,EACjC,YAAY,EAAE,2BAA2B,GACzC,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAMpD,0EAA+B;AAC/B,sDAAqB;AACM,oEAAiC;AAC5D,kEAA2B;AAGf,QAAA,6BAA6B,GAAG,IAAA,iCAAoB,EAAC,qBAAqB,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\nimport {\n\tZodValidation,\n\tcreateSchemaBuilder,\n\tDTO,\n} from '@lyxa.ai/core/dist/utilities/validation/global-validation';\nimport { ValueType } from '@lyxa.ai/core/dist/utilities/enum';\nimport { createResponseSchema } from '@lyxa.ai/core/dist/utilities/validation';\n\n/**\n * Define the sub schema\n */\n\nconst DiscountConfigSchema = z.object({\n\tvalueType: ZodValidation.enumType(ValueType, 'Value type').default(ValueType.PERCENTAGE),\n\tvalue: ZodValidation.number('Value'),\n\tminimumOrderValue: ZodValidation.number('Minumum order value').default(0),\n});\n\n/**\n * Define the base parent schema fields\n */\nconst baseFields = {\n\tsender: DiscountConfigSchema,\n\treceiver: DiscountConfigSchema,\n\t\n};\n\n/**\n * Create schema builder for Parent entity\n * - Includes timestamps\n * - Excludes 'createdAt' from update operations\n */\nconst schemaBuilder = createSchemaBuilder(baseFields);\n\n/**\n * Get all schemas for the Parent entity\n */\nconst {\n\tBaseSchema: ReferralSettingValidationSchema,\n\tEntitySchema: ReferralSettingSchema,\n\tIdSchema: ReferralSettingIdSchema,\n\tUpdateSchema: UpdateReferralSettingSchema,\n} = schemaBuilder.getAllSchemas({ createdAt: true });\n\n/**\n * Export schemas\n */\nexport {\n\tReferralSettingValidationSchema,\n\tReferralSettingSchema,\n\tReferralSettingIdSchema as ReferralSettingIdValidationSchema,\n\tUpdateReferralSettingSchema,\n};\n\nexport const ReferralSettingResponseSchema = createResponseSchema(ReferralSettingSchema);\n\n/**\n * Export DTO types\n */\nexport type CreateReferralSettingDTO = DTO<typeof ReferralSettingValidationSchema>;\nexport type ReferralSettingDTO = DTO<typeof ReferralSettingSchema>;\nexport type UpdateReferralSettingDTO = DTO<typeof UpdateReferralSettingSchema>;\n"]}
@@ -15,9 +15,10 @@ export declare class SpendToGetHistoryRepository {
15
15
  user: mongoose.Types.ObjectId;
16
16
  shop: mongoose.Types.ObjectId;
17
17
  marketing: mongoose.Types.ObjectId;
18
- order: mongoose.Types.ObjectId;
18
+ order: mongoose.Types.ObjectId | string;
19
19
  }): Promise<void>;
20
- decrementRedemption(orderId: mongoose.Types.ObjectId): Promise<void>;
20
+ decrementRedemption(orderId: mongoose.Types.ObjectId | string): Promise<void>;
21
+ private toObjectId;
21
22
  findByUserAndMarketing(userId: mongoose.Types.ObjectId, marketingId: mongoose.Types.ObjectId): Promise<DocumentType<Model> | null>;
22
23
  }
23
24
  export declare const spendToGetHistoryRepository: SpendToGetHistoryRepository;
@@ -1 +1 @@
1
- {"version":3,"file":"spend-to-get-history.repository.d.ts","sourceRoot":"/","sources":["modules/spend-to-get-history/spend-to-get-history.repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAA0B,iBAAiB,IAAI,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAG/G,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,EACN,0BAA0B,IAAI,SAAS,EACvC,0BAA0B,IAAI,SAAS,EACvC,MAAM,mCAAmC,CAAC;AAE3C,qBACa,2BAA2B;IACvC,OAAO,CAAC,KAAK,CAAyD;;IAMhE,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAIrD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAInF,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAa/F,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAO5E,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvF,mBAAmB,CAAC,MAAM,EAAE;QACjC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QACnC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;KAC/B,GAAG,OAAO,CAAC,IAAI,CAAC;IAYX,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpE,sBAAsB,CAC3B,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAC/B,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAClC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;CAGtC;AAED,eAAO,MAAM,2BAA2B,6BAA6C,CAAC"}
1
+ {"version":3,"file":"spend-to-get-history.repository.d.ts","sourceRoot":"/","sources":["modules/spend-to-get-history/spend-to-get-history.repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAA0B,iBAAiB,IAAI,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAG/G,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,EACN,0BAA0B,IAAI,SAAS,EACvC,0BAA0B,IAAI,SAAS,EACvC,MAAM,mCAAmC,CAAC;AAE3C,qBACa,2BAA2B;IACvC,OAAO,CAAC,KAAK,CAAyD;;IAMhE,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAIrD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAInF,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAa/F,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAO5E,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvF,mBAAmB,CAAC,MAAM,EAAE;QACjC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QACnC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;KACxC,GAAG,OAAO,CAAC,IAAI,CAAC;IAeX,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnF,OAAO,CAAC,UAAU;IAIZ,sBAAsB,CAC3B,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAC/B,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAClC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;CAGtC;AAED,eAAO,MAAM,2BAA2B,6BAA6C,CAAC"}
@@ -44,6 +44,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
44
44
  Object.defineProperty(exports, "__esModule", { value: true });
45
45
  exports.spendToGetHistoryRepository = exports.SpendToGetHistoryRepository = void 0;
46
46
  const typedi_1 = __importStar(require("typedi"));
47
+ const typegoose_1 = require("@typegoose/typegoose");
47
48
  const models_1 = require("@lyxa.ai/core/dist/libraries/mongo/models");
48
49
  const pagination_1 = require("@lyxa.ai/core/dist/utilities/pagination");
49
50
  let SpendToGetHistoryRepository = class SpendToGetHistoryRepository {
@@ -79,22 +80,29 @@ let SpendToGetHistoryRepository = class SpendToGetHistoryRepository {
79
80
  return this.model.deleteRecord({ _id: id, deletedAt: null }, softDelete);
80
81
  }
81
82
  async incrementRedemption(params) {
83
+ const order = this.toObjectId(params.order);
82
84
  await this.model.findOneAndUpdate({ user: params.user, marketing: params.marketing }, [
83
85
  {
84
86
  $set: {
85
87
  shop: params.shop,
86
- redeemingOrders: { $setUnion: [{ $ifNull: ['$redeemingOrders', []] }, [params.order]] },
88
+ lastOrder: order,
89
+ createdAt: { $ifNull: ['$createdAt', new Date()] },
90
+ redeemingOrders: { $setUnion: [{ $ifNull: ['$redeemingOrders', []] }, [order]] },
87
91
  },
88
92
  },
89
93
  { $set: { redemptionCount: { $size: '$redeemingOrders' } } },
90
94
  ], { upsert: true });
91
95
  }
92
96
  async decrementRedemption(orderId) {
93
- await this.model.findOneAndUpdate({ redeemingOrders: orderId }, [
94
- { $set: { redeemingOrders: { $setDifference: [{ $ifNull: ['$redeemingOrders', []] }, [orderId]] } } },
97
+ const oid = this.toObjectId(orderId);
98
+ await this.model.findOneAndUpdate({ redeemingOrders: oid }, [
99
+ { $set: { redeemingOrders: { $setDifference: [{ $ifNull: ['$redeemingOrders', []] }, [oid]] } } },
95
100
  { $set: { redemptionCount: { $size: '$redeemingOrders' } } },
96
101
  ]);
97
102
  }
103
+ toObjectId(id) {
104
+ return id instanceof typegoose_1.mongoose.Types.ObjectId ? id : new typegoose_1.mongoose.Types.ObjectId(id);
105
+ }
98
106
  async findByUserAndMarketing(userId, marketingId) {
99
107
  return this.model.findOne({ user: userId, marketing: marketingId });
100
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"spend-to-get-history.repository.js","sourceRoot":"/","sources":["modules/spend-to-get-history/spend-to-get-history.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA4C;AAG5C,sEAA+G;AAE/G,wEAA6G;AAQtG,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IAC/B,KAAK,CAAyD;IAEtE;QACC,IAAI,CAAC,KAAK,GAAG,+BAAgF,CAAC;IAC/F,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAe;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAoC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAyB;QACvC,MAAM,QAAQ,GAAG,IAAA,6CAAgC,EAAC,IAAI,CAAC,KAA2C,CAAC,CAAC;QACpG,MAAM,OAAO,GAAmC;YAC/C,IAAI,EAAE,IAAI,EAAE,IAAI;YAChB,IAAI,EAAE,IAAI,EAAE,IAAI;YAChB,IAAI,EAAE,IAAI,EAAE,IAAI;YAChB,KAAK,EAAE,IAAI,EAAE,KAAK;YAClB,MAAM,EAAE,IAAI,EAAE,MAAM;YACpB,QAAQ,EAAE,IAAI,EAAE,QAAQ;SACxB,CAAC;QACF,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,IAAe;QAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;YACtE,GAAG,EAAE,IAAI;YACT,aAAa,EAAE,IAAI;SACnB,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAoC,EAAE,UAAmB;QACzE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,MAKzB;QACA,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE;YACrF;gBACC,IAAI,EAAE;oBACL,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,eAAe,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;iBACvF;aACD;YACD,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,EAAE;SAC5D,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,OAAgC;QACzD,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE;YAC/D,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACrG,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,EAAE;SAC5D,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC3B,MAA+B,EAC/B,WAAoC;QAEpC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;IACrE,CAAC;CACD,CAAA;AArEY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,gBAAO,GAAE;;GACG,2BAA2B,CAqEvC;AAEY,QAAA,2BAA2B,GAAG,gBAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC","sourcesContent":["import Container, { Service } from 'typedi';\nimport { DocumentType, mongoose, ReturnModelType } from '@typegoose/typegoose';\nimport { ModelType } from '@typegoose/typegoose/lib/types';\nimport { SpendToGetHistoryModel, SpendToGetHistory as Model } from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { createRawDocumentPaginatorObject, PaginatorOptions } from '@lyxa.ai/core/dist/utilities/pagination';\nimport { FilterDTO, PaginatedResponse } from '@lyxa.ai/core/dist/utilities/validation';\nimport {\n\tCreateSpendToGetHistoryDTO as CreateDTO,\n\tUpdateSpendToGetHistoryDTO as UpdateDTO,\n} from './spend-to-get-history.validation';\n\n@Service()\nexport class SpendToGetHistoryRepository {\n\tprivate model: typeof SpendToGetHistoryModel & SoftDeleteModel<Model>;\n\n\tconstructor() {\n\t\tthis.model = SpendToGetHistoryModel as typeof SpendToGetHistoryModel & SoftDeleteModel<Model>;\n\t}\n\n\tasync create(data: CreateDTO): Promise<DocumentType<Model>> {\n\t\treturn this.model.create(data);\n\t}\n\n\tasync findById(id: string | mongoose.Types.ObjectId): Promise<DocumentType<Model> | null> {\n\t\treturn this.model.findOne({ _id: id, deletedAt: null });\n\t}\n\n\tasync paginate(data?: Partial<FilterDTO>): Promise<PaginatedResponse<DocumentType<ModelType<Model>>>> {\n\t\tconst paginate = createRawDocumentPaginatorObject(this.model as ReturnModelType<typeof this.model>);\n\t\tconst options: PaginatorOptions<typeof Model> = {\n\t\t\tpage: data?.page,\n\t\t\tsize: data?.size,\n\t\t\tsort: data?.sort,\n\t\t\tquery: data?.query,\n\t\t\tselect: data?.select,\n\t\t\tpopulate: data?.populate,\n\t\t};\n\t\treturn paginate(options);\n\t}\n\n\tasync updateById(id: string, data: UpdateDTO): Promise<DocumentType<Model> | null> {\n\t\treturn this.model.findOneAndUpdate({ _id: id, deletedAt: null }, data, {\n\t\t\tnew: true,\n\t\t\trunValidators: true,\n\t\t});\n\t}\n\n\tasync deleteById(id: string | mongoose.Types.ObjectId, softDelete: boolean): Promise<unknown> {\n\t\treturn this.model.deleteRecord({ _id: id, deletedAt: null }, softDelete);\n\t}\n\n\tasync incrementRedemption(params: {\n\t\tuser: mongoose.Types.ObjectId;\n\t\tshop: mongoose.Types.ObjectId;\n\t\tmarketing: mongoose.Types.ObjectId;\n\t\torder: mongoose.Types.ObjectId;\n\t}): Promise<void> {\n\t\tawait this.model.findOneAndUpdate({ user: params.user, marketing: params.marketing }, [\n\t\t\t{\n\t\t\t\t$set: {\n\t\t\t\t\tshop: params.shop,\n\t\t\t\t\tredeemingOrders: { $setUnion: [{ $ifNull: ['$redeemingOrders', []] }, [params.order]] },\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ $set: { redemptionCount: { $size: '$redeemingOrders' } } },\n\t\t], { upsert: true });\n\t}\n\n\tasync decrementRedemption(orderId: mongoose.Types.ObjectId): Promise<void> {\n\t\tawait this.model.findOneAndUpdate({ redeemingOrders: orderId }, [\n\t\t\t{ $set: { redeemingOrders: { $setDifference: [{ $ifNull: ['$redeemingOrders', []] }, [orderId]] } } },\n\t\t\t{ $set: { redemptionCount: { $size: '$redeemingOrders' } } },\n\t\t]);\n\t}\n\n\tasync findByUserAndMarketing(\n\t\tuserId: mongoose.Types.ObjectId,\n\t\tmarketingId: mongoose.Types.ObjectId\n\t): Promise<DocumentType<Model> | null> {\n\t\treturn this.model.findOne({ user: userId, marketing: marketingId });\n\t}\n}\n\nexport const spendToGetHistoryRepository = Container.get(SpendToGetHistoryRepository);\n"]}
1
+ {"version":3,"file":"spend-to-get-history.repository.js","sourceRoot":"/","sources":["modules/spend-to-get-history/spend-to-get-history.repository.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, { Service } from 'typedi';\nimport { DocumentType, mongoose, ReturnModelType } from '@typegoose/typegoose';\nimport { ModelType } from '@typegoose/typegoose/lib/types';\nimport { SpendToGetHistoryModel, SpendToGetHistory as Model } from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { createRawDocumentPaginatorObject, PaginatorOptions } from '@lyxa.ai/core/dist/utilities/pagination';\nimport { FilterDTO, PaginatedResponse } from '@lyxa.ai/core/dist/utilities/validation';\nimport {\n\tCreateSpendToGetHistoryDTO as CreateDTO,\n\tUpdateSpendToGetHistoryDTO as UpdateDTO,\n} from './spend-to-get-history.validation';\n\n@Service()\nexport class SpendToGetHistoryRepository {\n\tprivate model: typeof SpendToGetHistoryModel & SoftDeleteModel<Model>;\n\n\tconstructor() {\n\t\tthis.model = SpendToGetHistoryModel as typeof SpendToGetHistoryModel & SoftDeleteModel<Model>;\n\t}\n\n\tasync create(data: CreateDTO): Promise<DocumentType<Model>> {\n\t\treturn this.model.create(data);\n\t}\n\n\tasync findById(id: string | mongoose.Types.ObjectId): Promise<DocumentType<Model> | null> {\n\t\treturn this.model.findOne({ _id: id, deletedAt: null });\n\t}\n\n\tasync paginate(data?: Partial<FilterDTO>): Promise<PaginatedResponse<DocumentType<ModelType<Model>>>> {\n\t\tconst paginate = createRawDocumentPaginatorObject(this.model as ReturnModelType<typeof this.model>);\n\t\tconst options: PaginatorOptions<typeof Model> = {\n\t\t\tpage: data?.page,\n\t\t\tsize: data?.size,\n\t\t\tsort: data?.sort,\n\t\t\tquery: data?.query,\n\t\t\tselect: data?.select,\n\t\t\tpopulate: data?.populate,\n\t\t};\n\t\treturn paginate(options);\n\t}\n\n\tasync updateById(id: string, data: UpdateDTO): Promise<DocumentType<Model> | null> {\n\t\treturn this.model.findOneAndUpdate({ _id: id, deletedAt: null }, data, {\n\t\t\tnew: true,\n\t\t\trunValidators: true,\n\t\t});\n\t}\n\n\tasync deleteById(id: string | mongoose.Types.ObjectId, softDelete: boolean): Promise<unknown> {\n\t\treturn this.model.deleteRecord({ _id: id, deletedAt: null }, softDelete);\n\t}\n\n\tasync incrementRedemption(params: {\n\t\tuser: mongoose.Types.ObjectId;\n\t\tshop: mongoose.Types.ObjectId;\n\t\tmarketing: mongoose.Types.ObjectId;\n\t\torder: mongoose.Types.ObjectId | string;\n\t}): Promise<void> {\n\t\tconst order = this.toObjectId(params.order);\n\t\tawait this.model.findOneAndUpdate({ user: params.user, marketing: params.marketing }, [\n\t\t\t{\n\t\t\t\t$set: {\n\t\t\t\t\tshop: params.shop,\n\t\t\t\t\tlastOrder: order,\n\t\t\t\t\tcreatedAt: { $ifNull: ['$createdAt', new Date()] },\n\t\t\t\t\tredeemingOrders: { $setUnion: [{ $ifNull: ['$redeemingOrders', []] }, [order]] },\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ $set: { redemptionCount: { $size: '$redeemingOrders' } } },\n\t\t], { upsert: true });\n\t}\n\n\tasync decrementRedemption(orderId: mongoose.Types.ObjectId | string): Promise<void> {\n\t\tconst oid = this.toObjectId(orderId);\n\t\tawait this.model.findOneAndUpdate({ redeemingOrders: oid }, [\n\t\t\t{ $set: { redeemingOrders: { $setDifference: [{ $ifNull: ['$redeemingOrders', []] }, [oid]] } } },\n\t\t\t{ $set: { redemptionCount: { $size: '$redeemingOrders' } } },\n\t\t]);\n\t}\n\n\tprivate toObjectId(id: mongoose.Types.ObjectId | string): mongoose.Types.ObjectId {\n\t\treturn id instanceof mongoose.Types.ObjectId ? id : new mongoose.Types.ObjectId(id);\n\t}\n\n\tasync findByUserAndMarketing(\n\t\tuserId: mongoose.Types.ObjectId,\n\t\tmarketingId: mongoose.Types.ObjectId\n\t): Promise<DocumentType<Model> | null> {\n\t\treturn this.model.findOne({ user: userId, marketing: marketingId });\n\t}\n}\n\nexport const spendToGetHistoryRepository = Container.get(SpendToGetHistoryRepository);\n"]}