@lyxa.ai/marketing 1.0.20 → 1.0.21

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 (181) hide show
  1. package/dist/lib/index.d.ts +343 -1
  2. package/dist/lib/index.d.ts.map +1 -1
  3. package/dist/lib/modules/coupon/routers/coupon.router.d.ts +338 -0
  4. package/dist/lib/modules/coupon/routers/coupon.router.d.ts.map +1 -1
  5. package/dist/lib/modules/coupon/services/referral-code-coupon.service.d.ts.map +1 -1
  6. package/dist/lib/modules/coupon/services/referral-code-coupon.service.js +1 -0
  7. package/dist/lib/modules/coupon/services/referral-code-coupon.service.js.map +1 -1
  8. package/dist/lib/modules/coupon/services/referral-reward-coupon.service.d.ts.map +1 -1
  9. package/dist/lib/modules/coupon/services/referral-reward-coupon.service.js +5 -0
  10. package/dist/lib/modules/coupon/services/referral-reward-coupon.service.js.map +1 -1
  11. package/dist/lib/modules/coupon/transformers/coupon.transformer.d.ts +26 -0
  12. package/dist/lib/modules/coupon/transformers/coupon.transformer.d.ts.map +1 -1
  13. package/dist/lib/modules/coupon/validations/all-coupons.validation.d.ts +546 -0
  14. package/dist/lib/modules/coupon/validations/all-coupons.validation.d.ts.map +1 -1
  15. package/dist/lib/modules/coupon/validations/coupon.validation.d.ts +126 -0
  16. package/dist/lib/modules/coupon/validations/coupon.validation.d.ts.map +1 -1
  17. package/dist/lib/modules/coupon/validations/coupon.validation.js +5 -0
  18. package/dist/lib/modules/coupon/validations/coupon.validation.js.map +1 -1
  19. package/dist/lib/modules/coupon/validations/custom-coupon.validation.d.ts +45 -0
  20. package/dist/lib/modules/coupon/validations/custom-coupon.validation.d.ts.map +1 -1
  21. package/dist/lib/modules/coupon/validations/global-coupon.validation.d.ts +45 -0
  22. package/dist/lib/modules/coupon/validations/global-coupon.validation.d.ts.map +1 -1
  23. package/dist/lib/modules/coupon/validations/individual-store-coupon.validation.d.ts +45 -0
  24. package/dist/lib/modules/coupon/validations/individual-store-coupon.validation.d.ts.map +1 -1
  25. package/dist/lib/modules/coupon/validations/individual-user-coupon.validation.d.ts +45 -0
  26. package/dist/lib/modules/coupon/validations/individual-user-coupon.validation.d.ts.map +1 -1
  27. package/dist/lib/modules/coupon/validations/referral-code-coupon.validation.d.ts +9 -0
  28. package/dist/lib/modules/coupon/validations/referral-code-coupon.validation.d.ts.map +1 -1
  29. package/dist/lib/modules/coupon/validations/referral-reward-coupon.validation.d.ts +45 -0
  30. package/dist/lib/modules/coupon/validations/referral-reward-coupon.validation.d.ts.map +1 -1
  31. package/dist/lib/modules/loyalty-point-setting/routers/index.d.ts +2 -0
  32. package/dist/lib/modules/loyalty-point-setting/routers/index.d.ts.map +1 -0
  33. package/dist/lib/modules/loyalty-point-setting/routers/index.js +18 -0
  34. package/dist/lib/modules/loyalty-point-setting/routers/index.js.map +1 -0
  35. package/dist/lib/modules/loyalty-point-setting/routers/loyalty-point-setting.router.d.ts +321 -0
  36. package/dist/lib/modules/loyalty-point-setting/routers/loyalty-point-setting.router.d.ts.map +1 -0
  37. package/dist/lib/modules/loyalty-point-setting/routers/loyalty-point-setting.router.js +82 -0
  38. package/dist/lib/modules/loyalty-point-setting/routers/loyalty-point-setting.router.js.map +1 -0
  39. package/dist/lib/modules/loyalty-point-setting/services/index.d.ts +3 -0
  40. package/dist/lib/modules/loyalty-point-setting/services/index.d.ts.map +1 -0
  41. package/dist/lib/modules/loyalty-point-setting/services/index.js +19 -0
  42. package/dist/lib/modules/loyalty-point-setting/services/index.js.map +1 -0
  43. package/dist/lib/modules/loyalty-point-setting/services/loyalty-point-category.service.d.ts +16 -0
  44. package/dist/lib/modules/loyalty-point-setting/services/loyalty-point-category.service.d.ts.map +1 -0
  45. package/dist/lib/modules/loyalty-point-setting/services/loyalty-point-category.service.js +133 -0
  46. package/dist/lib/modules/loyalty-point-setting/services/loyalty-point-category.service.js.map +1 -0
  47. package/dist/lib/modules/loyalty-point-setting/services/loyalty-point-setting.service.d.ts +16 -0
  48. package/dist/lib/modules/loyalty-point-setting/services/loyalty-point-setting.service.d.ts.map +1 -0
  49. package/dist/lib/modules/loyalty-point-setting/services/loyalty-point-setting.service.js +156 -0
  50. package/dist/lib/modules/loyalty-point-setting/services/loyalty-point-setting.service.js.map +1 -0
  51. package/dist/lib/modules/loyalty-point-setting/transformers/index.d.ts +3 -0
  52. package/dist/lib/modules/loyalty-point-setting/transformers/index.d.ts.map +1 -0
  53. package/dist/lib/modules/loyalty-point-setting/transformers/index.js +19 -0
  54. package/dist/lib/modules/loyalty-point-setting/transformers/index.js.map +1 -0
  55. package/dist/lib/modules/loyalty-point-setting/transformers/loyalty-point-category.transformer.d.ts +8 -0
  56. package/dist/lib/modules/loyalty-point-setting/transformers/loyalty-point-category.transformer.d.ts.map +1 -0
  57. package/dist/lib/modules/loyalty-point-setting/transformers/loyalty-point-category.transformer.js +7 -0
  58. package/dist/lib/modules/loyalty-point-setting/transformers/loyalty-point-category.transformer.js.map +1 -0
  59. package/dist/lib/modules/loyalty-point-setting/transformers/loyalty-point-setting.transformer.d.ts +9 -0
  60. package/dist/lib/modules/loyalty-point-setting/transformers/loyalty-point-setting.transformer.d.ts.map +1 -0
  61. package/dist/lib/modules/loyalty-point-setting/transformers/loyalty-point-setting.transformer.js +7 -0
  62. package/dist/lib/modules/loyalty-point-setting/transformers/loyalty-point-setting.transformer.js.map +1 -0
  63. package/dist/lib/modules/loyalty-point-setting/validations/index.d.ts +3 -0
  64. package/dist/lib/modules/loyalty-point-setting/validations/index.d.ts.map +1 -0
  65. package/dist/lib/modules/loyalty-point-setting/validations/index.js +19 -0
  66. package/dist/lib/modules/loyalty-point-setting/validations/index.js.map +1 -0
  67. package/dist/lib/modules/loyalty-point-setting/validations/loyalty-point-category.validation.d.ts +170 -0
  68. package/dist/lib/modules/loyalty-point-setting/validations/loyalty-point-category.validation.d.ts.map +1 -0
  69. package/dist/lib/modules/loyalty-point-setting/validations/loyalty-point-category.validation.js +19 -0
  70. package/dist/lib/modules/loyalty-point-setting/validations/loyalty-point-category.validation.js.map +1 -0
  71. package/dist/lib/modules/loyalty-point-setting/validations/loyalty-point-setting.validation.d.ts +188 -0
  72. package/dist/lib/modules/loyalty-point-setting/validations/loyalty-point-setting.validation.d.ts.map +1 -0
  73. package/dist/lib/modules/loyalty-point-setting/validations/loyalty-point-setting.validation.js +19 -0
  74. package/dist/lib/modules/loyalty-point-setting/validations/loyalty-point-setting.validation.js.map +1 -0
  75. package/dist/lib/modules/marketing/routers/marketing.router.d.ts +5 -1
  76. package/dist/lib/modules/marketing/routers/marketing.router.d.ts.map +1 -1
  77. package/dist/lib/modules/marketing/routers/marketing.router.js +1 -1
  78. package/dist/lib/modules/marketing/routers/marketing.router.js.map +1 -1
  79. package/dist/lib/modules/marketing/services/loyalty-point-marketing.service.d.ts +12 -0
  80. package/dist/lib/modules/marketing/services/loyalty-point-marketing.service.d.ts.map +1 -0
  81. package/dist/lib/modules/marketing/services/loyalty-point-marketing.service.js +149 -0
  82. package/dist/lib/modules/marketing/services/loyalty-point-marketing.service.js.map +1 -0
  83. package/dist/lib/modules/marketing/services/marketing.service.d.ts +2 -2
  84. package/dist/lib/modules/marketing/services/marketing.service.d.ts.map +1 -1
  85. package/dist/lib/modules/marketing/services/marketing.service.js +2 -5
  86. package/dist/lib/modules/marketing/services/marketing.service.js.map +1 -1
  87. package/dist/lib/modules/marketing/transformers/buy1-get1-marketing.transformer.d.ts +1 -0
  88. package/dist/lib/modules/marketing/transformers/buy1-get1-marketing.transformer.d.ts.map +1 -1
  89. package/dist/lib/modules/marketing/transformers/discount-marketing.transformer.d.ts +2 -0
  90. package/dist/lib/modules/marketing/transformers/discount-marketing.transformer.d.ts.map +1 -1
  91. package/dist/lib/modules/marketing/transformers/free-delivery-marketing.transformer.d.ts +1 -0
  92. package/dist/lib/modules/marketing/transformers/free-delivery-marketing.transformer.d.ts.map +1 -1
  93. package/dist/lib/modules/marketing/transformers/loyalty-point-marketing.transformer.d.ts +47 -0
  94. package/dist/lib/modules/marketing/transformers/loyalty-point-marketing.transformer.d.ts.map +1 -0
  95. package/dist/lib/modules/marketing/transformers/loyalty-point-marketing.transformer.js +7 -0
  96. package/dist/lib/modules/marketing/transformers/loyalty-point-marketing.transformer.js.map +1 -0
  97. package/dist/lib/modules/marketing/validations/buy1-get1-marketing.validation.d.ts +14 -0
  98. package/dist/lib/modules/marketing/validations/buy1-get1-marketing.validation.d.ts.map +1 -1
  99. package/dist/lib/modules/marketing/validations/buy1-get1-marketing.validation.js +1 -0
  100. package/dist/lib/modules/marketing/validations/buy1-get1-marketing.validation.js.map +1 -1
  101. package/dist/lib/modules/marketing/validations/discount-marketing.validation.d.ts +28 -0
  102. package/dist/lib/modules/marketing/validations/discount-marketing.validation.d.ts.map +1 -1
  103. package/dist/lib/modules/marketing/validations/discount-marketing.validation.js +2 -0
  104. package/dist/lib/modules/marketing/validations/discount-marketing.validation.js.map +1 -1
  105. package/dist/lib/modules/marketing/validations/free-delivery-marketing.validation.d.ts +9 -0
  106. package/dist/lib/modules/marketing/validations/free-delivery-marketing.validation.d.ts.map +1 -1
  107. package/dist/lib/modules/marketing/validations/free-delivery-marketing.validation.js +1 -0
  108. package/dist/lib/modules/marketing/validations/free-delivery-marketing.validation.js.map +1 -1
  109. package/dist/lib/modules/marketing/validations/loyalty-point-marketing.validation.d.ts +504 -0
  110. package/dist/lib/modules/marketing/validations/loyalty-point-marketing.validation.d.ts.map +1 -0
  111. package/dist/lib/modules/marketing/validations/loyalty-point-marketing.validation.js +34 -0
  112. package/dist/lib/modules/marketing/validations/loyalty-point-marketing.validation.js.map +1 -0
  113. package/dist/types/index.d.ts +343 -1
  114. package/dist/types/index.d.ts.map +1 -1
  115. package/dist/types/modules/coupon/routers/coupon.router.d.ts +338 -0
  116. package/dist/types/modules/coupon/routers/coupon.router.d.ts.map +1 -1
  117. package/dist/types/modules/coupon/services/referral-code-coupon.service.d.ts.map +1 -1
  118. package/dist/types/modules/coupon/services/referral-reward-coupon.service.d.ts.map +1 -1
  119. package/dist/types/modules/coupon/transformers/coupon.transformer.d.ts +26 -0
  120. package/dist/types/modules/coupon/transformers/coupon.transformer.d.ts.map +1 -1
  121. package/dist/types/modules/coupon/validations/all-coupons.validation.d.ts +546 -0
  122. package/dist/types/modules/coupon/validations/all-coupons.validation.d.ts.map +1 -1
  123. package/dist/types/modules/coupon/validations/coupon.validation.d.ts +126 -0
  124. package/dist/types/modules/coupon/validations/coupon.validation.d.ts.map +1 -1
  125. package/dist/types/modules/coupon/validations/custom-coupon.validation.d.ts +45 -0
  126. package/dist/types/modules/coupon/validations/custom-coupon.validation.d.ts.map +1 -1
  127. package/dist/types/modules/coupon/validations/global-coupon.validation.d.ts +45 -0
  128. package/dist/types/modules/coupon/validations/global-coupon.validation.d.ts.map +1 -1
  129. package/dist/types/modules/coupon/validations/individual-store-coupon.validation.d.ts +45 -0
  130. package/dist/types/modules/coupon/validations/individual-store-coupon.validation.d.ts.map +1 -1
  131. package/dist/types/modules/coupon/validations/individual-user-coupon.validation.d.ts +45 -0
  132. package/dist/types/modules/coupon/validations/individual-user-coupon.validation.d.ts.map +1 -1
  133. package/dist/types/modules/coupon/validations/referral-code-coupon.validation.d.ts +9 -0
  134. package/dist/types/modules/coupon/validations/referral-code-coupon.validation.d.ts.map +1 -1
  135. package/dist/types/modules/coupon/validations/referral-reward-coupon.validation.d.ts +45 -0
  136. package/dist/types/modules/coupon/validations/referral-reward-coupon.validation.d.ts.map +1 -1
  137. package/dist/types/modules/loyalty-point-setting/routers/index.d.ts +2 -0
  138. package/dist/types/modules/loyalty-point-setting/routers/index.d.ts.map +1 -0
  139. package/dist/types/modules/loyalty-point-setting/routers/loyalty-point-setting.router.d.ts +321 -0
  140. package/dist/types/modules/loyalty-point-setting/routers/loyalty-point-setting.router.d.ts.map +1 -0
  141. package/dist/types/modules/loyalty-point-setting/services/index.d.ts +3 -0
  142. package/dist/types/modules/loyalty-point-setting/services/index.d.ts.map +1 -0
  143. package/dist/types/modules/loyalty-point-setting/services/loyalty-point-category.service.d.ts +37 -0
  144. package/dist/types/modules/loyalty-point-setting/services/loyalty-point-category.service.d.ts.map +1 -0
  145. package/dist/types/modules/loyalty-point-setting/services/loyalty-point-setting.service.d.ts +34 -0
  146. package/dist/types/modules/loyalty-point-setting/services/loyalty-point-setting.service.d.ts.map +1 -0
  147. package/dist/types/modules/loyalty-point-setting/transformers/index.d.ts +3 -0
  148. package/dist/types/modules/loyalty-point-setting/transformers/index.d.ts.map +1 -0
  149. package/dist/types/modules/loyalty-point-setting/transformers/loyalty-point-category.transformer.d.ts +8 -0
  150. package/dist/types/modules/loyalty-point-setting/transformers/loyalty-point-category.transformer.d.ts.map +1 -0
  151. package/dist/types/modules/loyalty-point-setting/transformers/loyalty-point-setting.transformer.d.ts +9 -0
  152. package/dist/types/modules/loyalty-point-setting/transformers/loyalty-point-setting.transformer.d.ts.map +1 -0
  153. package/dist/types/modules/loyalty-point-setting/validations/index.d.ts +3 -0
  154. package/dist/types/modules/loyalty-point-setting/validations/index.d.ts.map +1 -0
  155. package/dist/types/modules/loyalty-point-setting/validations/loyalty-point-category.validation.d.ts +179 -0
  156. package/dist/types/modules/loyalty-point-setting/validations/loyalty-point-category.validation.d.ts.map +1 -0
  157. package/dist/types/modules/loyalty-point-setting/validations/loyalty-point-setting.validation.d.ts +197 -0
  158. package/dist/types/modules/loyalty-point-setting/validations/loyalty-point-setting.validation.d.ts.map +1 -0
  159. package/dist/types/modules/marketing/routers/marketing.router.d.ts +5 -1
  160. package/dist/types/modules/marketing/routers/marketing.router.d.ts.map +1 -1
  161. package/dist/types/modules/marketing/services/loyalty-point-marketing.service.d.ts +21 -0
  162. package/dist/types/modules/marketing/services/loyalty-point-marketing.service.d.ts.map +1 -0
  163. package/dist/types/modules/marketing/services/marketing.service.d.ts +2 -2
  164. package/dist/types/modules/marketing/services/marketing.service.d.ts.map +1 -1
  165. package/dist/types/modules/marketing/transformers/buy1-get1-marketing.transformer.d.ts +1 -0
  166. package/dist/types/modules/marketing/transformers/buy1-get1-marketing.transformer.d.ts.map +1 -1
  167. package/dist/types/modules/marketing/transformers/discount-marketing.transformer.d.ts +2 -0
  168. package/dist/types/modules/marketing/transformers/discount-marketing.transformer.d.ts.map +1 -1
  169. package/dist/types/modules/marketing/transformers/free-delivery-marketing.transformer.d.ts +1 -0
  170. package/dist/types/modules/marketing/transformers/free-delivery-marketing.transformer.d.ts.map +1 -1
  171. package/dist/types/modules/marketing/transformers/loyalty-point-marketing.transformer.d.ts +47 -0
  172. package/dist/types/modules/marketing/transformers/loyalty-point-marketing.transformer.d.ts.map +1 -0
  173. package/dist/types/modules/marketing/validations/buy1-get1-marketing.validation.d.ts +14 -0
  174. package/dist/types/modules/marketing/validations/buy1-get1-marketing.validation.d.ts.map +1 -1
  175. package/dist/types/modules/marketing/validations/discount-marketing.validation.d.ts +28 -0
  176. package/dist/types/modules/marketing/validations/discount-marketing.validation.d.ts.map +1 -1
  177. package/dist/types/modules/marketing/validations/free-delivery-marketing.validation.d.ts +9 -0
  178. package/dist/types/modules/marketing/validations/free-delivery-marketing.validation.d.ts.map +1 -1
  179. package/dist/types/modules/marketing/validations/loyalty-point-marketing.validation.d.ts +513 -0
  180. package/dist/types/modules/marketing/validations/loyalty-point-marketing.validation.d.ts.map +1 -0
  181. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"coupon.router.d.ts","sourceRoot":"/","sources":["modules/coupon/routers/coupon.router.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAMuD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAAD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA4Iq/yB,CAAC;;;;;;;;;;GADrkzB,CAAC"}
1
+ {"version":3,"file":"coupon.router.d.ts","sourceRoot":"/","sources":["modules/coupon/routers/coupon.router.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAMuD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAAD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA4Iq/yB,CAAC;;;;;;;;;;GADrkzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"referral-code-coupon.service.d.ts","sourceRoot":"/","sources":["modules/coupon/services/referral-code-coupon.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAEN,kBAAkB,IAAI,KAAK,EAK3B,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACN,yBAAyB,EACzB,2BAA2B,IAAI,SAAS,EACxC,6BAA6B,EAC7B,2BAA2B,IAAI,SAAS,EACxC,iBAAiB,EACjB,MAAM,6BAA6B,CAAC;AAMrC,qBACa,yBAAyB;IACrC,OAAO,CAAC,KAAK,CAAC;IACd,OAAO,CAAC,aAAa,CAAiE;IACtF,OAAO,CAAC,SAAS,CAA2C;;IAa/C,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IASrD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAuB9E,OAAO,CAAC,YAAY;YASN,kBAAkB;IAanB,yBAAyB,CACrC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,GACzC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAiClB,cAAc,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IA4C3E,qBAAqB,CACjC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAC7B,OAAO,CAAC,6BAA6B,CAAC;YAc3B,mBAAmB;CAUjC;AAED,eAAO,MAAM,yBAAyB,2BAA2C,CAAC"}
1
+ {"version":3,"file":"referral-code-coupon.service.d.ts","sourceRoot":"/","sources":["modules/coupon/services/referral-code-coupon.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAEN,kBAAkB,IAAI,KAAK,EAK3B,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACN,yBAAyB,EACzB,2BAA2B,IAAI,SAAS,EACxC,6BAA6B,EAC7B,2BAA2B,IAAI,SAAS,EACxC,iBAAiB,EACjB,MAAM,6BAA6B,CAAC;AAMrC,qBACa,yBAAyB;IACrC,OAAO,CAAC,KAAK,CAAC;IACd,OAAO,CAAC,aAAa,CAAiE;IACtF,OAAO,CAAC,SAAS,CAA2C;;IAa/C,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IASrD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAuB9E,OAAO,CAAC,YAAY;YASN,kBAAkB;IAanB,yBAAyB,CACrC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,GACzC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAkClB,cAAc,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IA4C3E,qBAAqB,CACjC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAC7B,OAAO,CAAC,6BAA6B,CAAC;YAc3B,mBAAmB;CAUjC;AAED,eAAO,MAAM,yBAAyB,2BAA2C,CAAC"}
@@ -112,6 +112,7 @@ let ReferralCodeCouponService = class ReferralCodeCouponService {
112
112
  couponType: enum_1.CouponType.REFERRAL_CODE,
113
113
  referralUser: userId,
114
114
  orderLimitPerUser: 1,
115
+ isOrderLimitPerUserEnabled: true,
115
116
  });
116
117
  if (!referralCodeCoupon) {
117
118
  throw new server_1.TRPCError({
@@ -1 +1 @@
1
- {"version":3,"file":"referral-code-coupon.service.js","sourceRoot":"/","sources":["modules/coupon/services/referral-code-coupon.service.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, { Service } from 'typedi';\nimport { TRPCError } from '@trpc/server';\nimport { DocumentType, mongoose } from '@typegoose/typegoose';\nimport {\n\tReferralCodeCouponModel,\n\tReferralCodeCoupon as Model,\n\tReferralSettingModel,\n\tReferralSetting,\n\tUserModel,\n\tUser,\n} from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {\n\tCouponValidationOutputDTO,\n\tCreateReferralCodeCouponDTO as CreateDTO,\n\tReferralCodeCouponResponseDTO,\n\tUpdateReferralCodeCouponDTO as UpdateDTO,\n\tValidateCouponDTO,\n} from '@modules/coupon/validations';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { convertToSecondary } from '@lyxa.ai/core/dist/utilities/currency';\nimport { roundBaseCurrency, roundSecondaryCurrency } from '@lyxa.ai/core/dist/utilities/shared';\nimport { ValueType, CouponType } from '@lyxa.ai/core/dist/utilities/enum';\n\n@Service()\nexport class ReferralCodeCouponService {\n\tprivate model;\n\tprivate settingsModel: typeof ReferralSettingModel & SoftDeleteModel<ReferralSetting>;\n\tprivate userModel: typeof UserModel & SoftDeleteModel<User>;\n\n\tconstructor() {\n\t\tthis.model = ReferralCodeCouponModel;\n\t\tthis.settingsModel = ReferralSettingModel as typeof ReferralSettingModel &\n\t\t\tSoftDeleteModel<ReferralSetting>;\n\t\tthis.userModel = UserModel as typeof UserModel & SoftDeleteModel<User>;\n\t}\n\n\t/**\n\t * Create a new record\n\t * @param data Data for the new record\n\t */\n\tpublic async create(data: CreateDTO): Promise<DocumentType<Model>> {\n\t\treturn await this.model.create(data);\n\t}\n\n\t/**\n\t * Update record\n\t * @param id ID of the record\n\t * @param data Data to update\n\t */\n\tpublic async update(id: string, data: UpdateDTO): Promise<DocumentType<Model>> {\n\t\tconst record = await this.model.findOneAndUpdate(\n\t\t\t{\n\t\t\t\t_id: id,\n\t\t\t\tdeletedAt: null,\n\t\t\t},\n\t\t\tdata,\n\t\t\t{\n\t\t\t\tnew: true,\n\t\t\t\trunValidators: true,\n\t\t\t}\n\t\t);\n\n\t\tif (!record) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: `Record not found`,\n\t\t\t});\n\t\t}\n\n\t\treturn record;\n\t}\n\n\tprivate generateCode(length = 6): string {\n\t\tconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n\t\tlet result = '';\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tresult += chars.charAt(Math.floor(Math.random() * chars.length));\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate async generateCouponCode(): Promise<string> {\n\t\tlet code: string = 'SAMPLE';\n\t\tlet exists = true;\n\n\t\twhile (exists) {\n\t\t\tcode = this.generateCode();\n\t\t\texists = (await this.model.exists({ code: code })) ? true : false;\n\t\t}\n\n\t\treturn code;\n\t}\n\n\t// create referral code for user\n\tpublic async createReferralCodeForUser(\n\t\tuserId: mongoose.Types.ObjectId | undefined\n\t): Promise<DocumentType<Model>> {\n\t\tif (!userId) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: `User not found`,\n\t\t\t});\n\t\t}\n\n\t\tconst existingReferralCodeCoupon = await this.model.findOne({\n\t\t\treferralUser: userId,\n\t\t});\n\n\t\tif (existingReferralCodeCoupon) {\n\t\t\treturn existingReferralCodeCoupon;\n\t\t}\n\n\t\tconst referralCodeCoupon = await this.create({\n\t\t\tcode: await this.generateCouponCode(),\n\t\t\tcouponType: CouponType.REFERRAL_CODE,\n\t\t\treferralUser: userId,\n\t\t\torderLimitPerUser: 1,\n\t\t});\n\n\t\tif (!referralCodeCoupon) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Could not create referral code coupon',\n\t\t\t});\n\t\t}\n\n\t\treturn referralCodeCoupon;\n\t}\n\n\tpublic async validateCoupon(data: ValidateCouponDTO): Promise<CouponValidationOutputDTO> {\n\t\tconst referralCouponSettings = await this.getReferralSettings();\n\n\t\tconst minimumOrderAmount = referralCouponSettings.receiver?.minimumOrderValue;\n\n\t\tif (minimumOrderAmount && minimumOrderAmount < data.amountBeforeCoupon) {\n\t\t\t// throw new TRPCError({\n\t\t\t// \tcode: 'BAD_REQUEST',\n\t\t\t// \tmessage: 'Amount is lower than the minimum order amount',\n\t\t\t// });\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t};\n\t\t}\n\n\t\tconst discountAmount =\n\t\t\treferralCouponSettings.receiver?.valueType == ValueType.FIXED\n\t\t\t\t? referralCouponSettings.receiver.value\n\t\t\t\t: roundBaseCurrency((data.amountBeforeCoupon * (referralCouponSettings.receiver?.value || 1)) / 100);\n\n\t\tconst secondaryDiscountAmount =\n\t\t\treferralCouponSettings.receiver?.valueType == ValueType.FIXED\n\t\t\t\t? await convertToSecondary(referralCouponSettings.receiver.value)\n\t\t\t\t: roundSecondaryCurrency(\n\t\t\t\t\t\t(data.secondaryAmountBeforeCoupon * (referralCouponSettings.receiver?.value || 1)) / 100\n\t\t\t\t\t);\n\n\t\treturn {\n\t\t\tisValid: true,\n\t\t\tdiscountAmount,\n\t\t\tsecondaryDiscountAmount,\n\t\t\tamountAfterCoupon: roundBaseCurrency(data.amountBeforeCoupon - discountAmount),\n\t\t\tsecondaryAmountAfterCoupon: roundSecondaryCurrency(\n\t\t\t\tdata.secondaryAmountBeforeCoupon - secondaryDiscountAmount\n\t\t\t),\n\t\t\tdiscountCut: {\n\t\t\t\tcompanyCut: discountAmount,\n\t\t\t\tsecondaryCompanyCut: secondaryDiscountAmount,\n\t\t\t\tshopCut: 0,\n\t\t\t\tsecondaryShopCut: 0,\n\t\t\t},\n\t\t};\n\t}\n\n\tpublic async getReferralCodeCoupon(\n\t\tuserId: mongoose.Types.ObjectId\n\t): Promise<ReferralCodeCouponResponseDTO> {\n\t\tlet coupon = await this.model.findOne({ referralUser: userId });\n\n\t\tif (!coupon) {\n\t\t\tcoupon = await this.createReferralCodeForUser(userId);\n\t\t}\n\t\tconst referral = coupon as unknown as Model;\n\n\t\treturn {\n\t\t\tcode: referral.code,\n\t\t\ttext: `Download Lyxa and explore the wide variety of offerings and benefits!\\nUse my code at checkout to claim a special coupon: ${referral.code}.\\nhttps://request.lyxa.ai/app/user/home/share`,\n\t\t};\n\t}\n\n\tprivate async getReferralSettings(): Promise<DocumentType<ReferralSetting>> {\n\t\tconst referralSetting = await this.settingsModel.findOne({});\n\t\tif (!referralSetting) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Referral setting not found',\n\t\t\t});\n\t\t}\n\t\treturn referralSetting;\n\t}\n}\n\nexport const referralCodeCouponService = Container.get(ReferralCodeCouponService);\n"]}
1
+ {"version":3,"file":"referral-code-coupon.service.js","sourceRoot":"/","sources":["modules/coupon/services/referral-code-coupon.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA4C;AAC5C,yCAAyC;AAEzC,sEAOmD;AASnD,oEAA2E;AAC3E,gEAAgG;AAChG,4DAA0E;AAGnE,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAC7B,KAAK,CAAC;IACN,aAAa,CAAiE;IAC9E,SAAS,CAA2C;IAE5D;QACC,IAAI,CAAC,KAAK,GAAG,gCAAuB,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,6BACY,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,kBAAqD,CAAC;IACxE,CAAC;IAMM,KAAK,CAAC,MAAM,CAAC,IAAe;QAClC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAOM,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAAe;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAC/C;YACC,GAAG,EAAE,EAAE;YACP,SAAS,EAAE,IAAI;SACf,EACD,IAAI,EACJ;YACC,GAAG,EAAE,IAAI;YACT,aAAa,EAAE,IAAI;SACnB,CACD,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,kBAAkB;aAC3B,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,YAAY,CAAC,MAAM,GAAG,CAAC;QAC9B,MAAM,KAAK,GAAG,sCAAsC,CAAC;QACrD,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC/B,IAAI,IAAI,GAAW,QAAQ,CAAC;QAC5B,IAAI,MAAM,GAAG,IAAI,CAAC;QAElB,OAAO,MAAM,EAAE,CAAC;YACf,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC3B,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACnE,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAGM,KAAK,CAAC,yBAAyB,CACrC,MAA2C;QAE3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,gBAAgB;aACzB,CAAC,CAAC;QACJ,CAAC;QAED,MAAM,0BAA0B,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YAC3D,YAAY,EAAE,MAAM;SACpB,CAAC,CAAC;QAEH,IAAI,0BAA0B,EAAE,CAAC;YAChC,OAAO,0BAA0B,CAAC;QACnC,CAAC;QAED,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;YAC5C,IAAI,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE;YACrC,UAAU,EAAE,iBAAU,CAAC,aAAa;YACpC,YAAY,EAAE,MAAM;YACpB,iBAAiB,EAAE,CAAC;YACpB,0BAA0B,EAAE,IAAI;SAChC,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACzB,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,uCAAuC;aAChD,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,kBAAkB,CAAC;IAC3B,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,IAAuB;QAClD,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEhE,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,CAAC;QAE9E,IAAI,kBAAkB,IAAI,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAKxE,OAAO;gBACN,OAAO,EAAE,KAAK;aACd,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GACnB,sBAAsB,CAAC,QAAQ,EAAE,SAAS,IAAI,gBAAS,CAAC,KAAK;YAC5D,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC,KAAK;YACvC,CAAC,CAAC,IAAA,0BAAiB,EAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,sBAAsB,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAEvG,MAAM,uBAAuB,GAC5B,sBAAsB,CAAC,QAAQ,EAAE,SAAS,IAAI,gBAAS,CAAC,KAAK;YAC5D,CAAC,CAAC,MAAM,IAAA,6BAAkB,EAAC,sBAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC;YACjE,CAAC,CAAC,IAAA,+BAAsB,EACtB,CAAC,IAAI,CAAC,2BAA2B,GAAG,CAAC,sBAAsB,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CACxF,CAAC;QAEL,OAAO;YACN,OAAO,EAAE,IAAI;YACb,cAAc;YACd,uBAAuB;YACvB,iBAAiB,EAAE,IAAA,0BAAiB,EAAC,IAAI,CAAC,kBAAkB,GAAG,cAAc,CAAC;YAC9E,0BAA0B,EAAE,IAAA,+BAAsB,EACjD,IAAI,CAAC,2BAA2B,GAAG,uBAAuB,CAC1D;YACD,WAAW,EAAE;gBACZ,UAAU,EAAE,cAAc;gBAC1B,mBAAmB,EAAE,uBAAuB;gBAC5C,OAAO,EAAE,CAAC;gBACV,gBAAgB,EAAE,CAAC;aACnB;SACD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,qBAAqB,CACjC,MAA+B;QAE/B,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;QAEhE,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,QAAQ,GAAG,MAA0B,CAAC;QAE5C,OAAO;YACN,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,IAAI,EAAE,6HAA6H,QAAQ,CAAC,IAAI,gDAAgD;SAChM,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAChC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,eAAe,EAAE,CAAC;YACtB,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,4BAA4B;aACrC,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,eAAe,CAAC;IACxB,CAAC;CACD,CAAA;AAhLY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,gBAAO,GAAE;;GACG,yBAAyB,CAgLrC;AAEY,QAAA,yBAAyB,GAAG,gBAAS,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC","sourcesContent":["import Container, { Service } from 'typedi';\nimport { TRPCError } from '@trpc/server';\nimport { DocumentType, mongoose } from '@typegoose/typegoose';\nimport {\n\tReferralCodeCouponModel,\n\tReferralCodeCoupon as Model,\n\tReferralSettingModel,\n\tReferralSetting,\n\tUserModel,\n\tUser,\n} from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {\n\tCouponValidationOutputDTO,\n\tCreateReferralCodeCouponDTO as CreateDTO,\n\tReferralCodeCouponResponseDTO,\n\tUpdateReferralCodeCouponDTO as UpdateDTO,\n\tValidateCouponDTO,\n} from '@modules/coupon/validations';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { convertToSecondary } from '@lyxa.ai/core/dist/utilities/currency';\nimport { roundBaseCurrency, roundSecondaryCurrency } from '@lyxa.ai/core/dist/utilities/shared';\nimport { ValueType, CouponType } from '@lyxa.ai/core/dist/utilities/enum';\n\n@Service()\nexport class ReferralCodeCouponService {\n\tprivate model;\n\tprivate settingsModel: typeof ReferralSettingModel & SoftDeleteModel<ReferralSetting>;\n\tprivate userModel: typeof UserModel & SoftDeleteModel<User>;\n\n\tconstructor() {\n\t\tthis.model = ReferralCodeCouponModel;\n\t\tthis.settingsModel = ReferralSettingModel as typeof ReferralSettingModel &\n\t\t\tSoftDeleteModel<ReferralSetting>;\n\t\tthis.userModel = UserModel as typeof UserModel & SoftDeleteModel<User>;\n\t}\n\n\t/**\n\t * Create a new record\n\t * @param data Data for the new record\n\t */\n\tpublic async create(data: CreateDTO): Promise<DocumentType<Model>> {\n\t\treturn await this.model.create(data);\n\t}\n\n\t/**\n\t * Update record\n\t * @param id ID of the record\n\t * @param data Data to update\n\t */\n\tpublic async update(id: string, data: UpdateDTO): Promise<DocumentType<Model>> {\n\t\tconst record = await this.model.findOneAndUpdate(\n\t\t\t{\n\t\t\t\t_id: id,\n\t\t\t\tdeletedAt: null,\n\t\t\t},\n\t\t\tdata,\n\t\t\t{\n\t\t\t\tnew: true,\n\t\t\t\trunValidators: true,\n\t\t\t}\n\t\t);\n\n\t\tif (!record) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: `Record not found`,\n\t\t\t});\n\t\t}\n\n\t\treturn record;\n\t}\n\n\tprivate generateCode(length = 6): string {\n\t\tconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n\t\tlet result = '';\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tresult += chars.charAt(Math.floor(Math.random() * chars.length));\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate async generateCouponCode(): Promise<string> {\n\t\tlet code: string = 'SAMPLE';\n\t\tlet exists = true;\n\n\t\twhile (exists) {\n\t\t\tcode = this.generateCode();\n\t\t\texists = (await this.model.exists({ code: code })) ? true : false;\n\t\t}\n\n\t\treturn code;\n\t}\n\n\t// create referral code for user\n\tpublic async createReferralCodeForUser(\n\t\tuserId: mongoose.Types.ObjectId | undefined\n\t): Promise<DocumentType<Model>> {\n\t\tif (!userId) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: `User not found`,\n\t\t\t});\n\t\t}\n\n\t\tconst existingReferralCodeCoupon = await this.model.findOne({\n\t\t\treferralUser: userId,\n\t\t});\n\n\t\tif (existingReferralCodeCoupon) {\n\t\t\treturn existingReferralCodeCoupon;\n\t\t}\n\n\t\tconst referralCodeCoupon = await this.create({\n\t\t\tcode: await this.generateCouponCode(),\n\t\t\tcouponType: CouponType.REFERRAL_CODE,\n\t\t\treferralUser: userId,\n\t\t\torderLimitPerUser: 1,\n\t\t\tisOrderLimitPerUserEnabled: true,\n\t\t});\n\n\t\tif (!referralCodeCoupon) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Could not create referral code coupon',\n\t\t\t});\n\t\t}\n\n\t\treturn referralCodeCoupon;\n\t}\n\n\tpublic async validateCoupon(data: ValidateCouponDTO): Promise<CouponValidationOutputDTO> {\n\t\tconst referralCouponSettings = await this.getReferralSettings();\n\n\t\tconst minimumOrderAmount = referralCouponSettings.receiver?.minimumOrderValue;\n\n\t\tif (minimumOrderAmount && minimumOrderAmount < data.amountBeforeCoupon) {\n\t\t\t// throw new TRPCError({\n\t\t\t// \tcode: 'BAD_REQUEST',\n\t\t\t// \tmessage: 'Amount is lower than the minimum order amount',\n\t\t\t// });\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t};\n\t\t}\n\n\t\tconst discountAmount =\n\t\t\treferralCouponSettings.receiver?.valueType == ValueType.FIXED\n\t\t\t\t? referralCouponSettings.receiver.value\n\t\t\t\t: roundBaseCurrency((data.amountBeforeCoupon * (referralCouponSettings.receiver?.value || 1)) / 100);\n\n\t\tconst secondaryDiscountAmount =\n\t\t\treferralCouponSettings.receiver?.valueType == ValueType.FIXED\n\t\t\t\t? await convertToSecondary(referralCouponSettings.receiver.value)\n\t\t\t\t: roundSecondaryCurrency(\n\t\t\t\t\t\t(data.secondaryAmountBeforeCoupon * (referralCouponSettings.receiver?.value || 1)) / 100\n\t\t\t\t\t);\n\n\t\treturn {\n\t\t\tisValid: true,\n\t\t\tdiscountAmount,\n\t\t\tsecondaryDiscountAmount,\n\t\t\tamountAfterCoupon: roundBaseCurrency(data.amountBeforeCoupon - discountAmount),\n\t\t\tsecondaryAmountAfterCoupon: roundSecondaryCurrency(\n\t\t\t\tdata.secondaryAmountBeforeCoupon - secondaryDiscountAmount\n\t\t\t),\n\t\t\tdiscountCut: {\n\t\t\t\tcompanyCut: discountAmount,\n\t\t\t\tsecondaryCompanyCut: secondaryDiscountAmount,\n\t\t\t\tshopCut: 0,\n\t\t\t\tsecondaryShopCut: 0,\n\t\t\t},\n\t\t};\n\t}\n\n\tpublic async getReferralCodeCoupon(\n\t\tuserId: mongoose.Types.ObjectId\n\t): Promise<ReferralCodeCouponResponseDTO> {\n\t\tlet coupon = await this.model.findOne({ referralUser: userId });\n\n\t\tif (!coupon) {\n\t\t\tcoupon = await this.createReferralCodeForUser(userId);\n\t\t}\n\t\tconst referral = coupon as unknown as Model;\n\n\t\treturn {\n\t\t\tcode: referral.code,\n\t\t\ttext: `Download Lyxa and explore the wide variety of offerings and benefits!\\nUse my code at checkout to claim a special coupon: ${referral.code}.\\nhttps://request.lyxa.ai/app/user/home/share`,\n\t\t};\n\t}\n\n\tprivate async getReferralSettings(): Promise<DocumentType<ReferralSetting>> {\n\t\tconst referralSetting = await this.settingsModel.findOne({});\n\t\tif (!referralSetting) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Referral setting not found',\n\t\t\t});\n\t\t}\n\t\treturn referralSetting;\n\t}\n}\n\nexport const referralCodeCouponService = Container.get(ReferralCodeCouponService);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"referral-reward-coupon.service.d.ts","sourceRoot":"/","sources":["modules/coupon/services/referral-reward-coupon.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAEN,oBAAoB,IAAI,KAAK,EAO7B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACN,yBAAyB,EACzB,6BAA6B,IAAI,SAAS,EAC1C,6BAA6B,IAAI,SAAS,EAC1C,iBAAiB,EACjB,MAAM,6BAA6B,CAAC;AAMrC,qBACa,2BAA2B;IACvC,OAAO,CAAC,KAAK,CAA4D;IACzE,OAAO,CAAC,aAAa,CAAiE;IACtF,OAAO,CAAC,SAAS,CAA2C;IAC5D,OAAO,CAAC,UAAU,CAA2D;;IAchE,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IASrD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAuB9E,OAAO,CAAC,YAAY;YASN,kBAAkB;IAanB,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ;IAiD1F,cAAc,CAC1B,IAAI,EAAE,iBAAiB,EACvB,cAAc,EAAE,YAAY,CAAC,KAAK,CAAC,GACjC,OAAO,CAAC,yBAAyB,CAAC;YAsCvB,mBAAmB;CAUjC;AAED,eAAO,MAAM,2BAA2B,6BAA6C,CAAC"}
1
+ {"version":3,"file":"referral-reward-coupon.service.d.ts","sourceRoot":"/","sources":["modules/coupon/services/referral-reward-coupon.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAEN,oBAAoB,IAAI,KAAK,EAO7B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACN,yBAAyB,EACzB,6BAA6B,IAAI,SAAS,EAC1C,6BAA6B,IAAI,SAAS,EAC1C,iBAAiB,EACjB,MAAM,6BAA6B,CAAC;AAMrC,qBACa,2BAA2B;IACvC,OAAO,CAAC,KAAK,CAA4D;IACzE,OAAO,CAAC,aAAa,CAAiE;IACtF,OAAO,CAAC,SAAS,CAA2C;IAC5D,OAAO,CAAC,UAAU,CAA2D;;IAchE,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IASrD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAuB9E,OAAO,CAAC,YAAY;YASN,kBAAkB;IAanB,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ;IAsD1F,cAAc,CAC1B,IAAI,EAAE,iBAAiB,EACvB,cAAc,EAAE,YAAY,CAAC,KAAK,CAAC,GACjC,OAAO,CAAC,yBAAyB,CAAC;YAsCvB,mBAAmB;CAUjC;AAED,eAAO,MAAM,2BAA2B,6BAA6C,CAAC"}
@@ -139,6 +139,11 @@ let ReferralRewardCouponService = class ReferralRewardCouponService {
139
139
  orderLimitPerUser: 1,
140
140
  spendLimit: null,
141
141
  totalOrderLimit: 1,
142
+ isMinOrderValueEnabled: !!referralCouponSettings.sender?.minimumOrderValue,
143
+ isMaxDiscountLimitEnabled: false,
144
+ isOrderLimitPerUserEnabled: true,
145
+ isSpendLimitEnabled: false,
146
+ isTotalOrderLimitEnabled: true,
142
147
  });
143
148
  }
144
149
  async validateCoupon(data, couponDocument) {
@@ -1 +1 @@
1
- {"version":3,"file":"referral-reward-coupon.service.js","sourceRoot":"/","sources":["modules/coupon/services/referral-reward-coupon.service.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, { Service } from 'typedi';\nimport { TRPCError } from '@trpc/server';\nimport { DocumentType, mongoose } from '@typegoose/typegoose';\nimport {\n\tReferralRewardCouponModel,\n\tReferralRewardCoupon as Model,\n\tReferralSetting,\n\tReferralSettingModel,\n\tRegularOrder,\n\tUser,\n\tUserModel,\n\tRegularOrderModel,\n} from '@lyxa.ai/core/dist/libraries/mongo/models/';\nimport {\n\tCouponValidationOutputDTO,\n\tCreateReferralRewardCouponDTO as CreateDTO,\n\tUpdateReferralRewardCouponDTO as UpdateDTO,\n\tValidateCouponDTO,\n} from '@modules/coupon/validations';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { CouponType, Status, ValueType } from '@lyxa.ai/core/dist/utilities/enum';\nimport { convertToSecondary } from '@lyxa.ai/core/dist/utilities/currency';\nimport { roundBaseCurrency, roundSecondaryCurrency } from '@lyxa.ai/core/dist/utilities/shared';\n\n@Service()\nexport class ReferralRewardCouponService {\n\tprivate model: typeof ReferralRewardCouponModel & SoftDeleteModel<Model>;\n\tprivate settingsModel: typeof ReferralSettingModel & SoftDeleteModel<ReferralSetting>;\n\tprivate userModel: typeof UserModel & SoftDeleteModel<User>;\n\tprivate orderModel: typeof RegularOrderModel & SoftDeleteModel<RegularOrder>;\n\n\tconstructor() {\n\t\tthis.model = ReferralRewardCouponModel as typeof ReferralRewardCouponModel & SoftDeleteModel<Model>;\n\t\tthis.settingsModel = ReferralSettingModel as typeof ReferralSettingModel &\n\t\t\tSoftDeleteModel<ReferralSetting>;\n\t\tthis.userModel = UserModel as typeof UserModel & SoftDeleteModel<User>;\n\t\tthis.orderModel = RegularOrderModel as typeof RegularOrderModel & SoftDeleteModel<RegularOrder>;\n\t}\n\n\t/**\n\t * Create a new record\n\t * @param data Data for the new record\n\t */\n\tpublic async create(data: CreateDTO): Promise<DocumentType<Model>> {\n\t\treturn await this.model.create(data);\n\t}\n\n\t/**\n\t * Update record\n\t * @param id ID of the record\n\t * @param data Data to update\n\t */\n\tpublic async update(id: string, data: UpdateDTO): Promise<DocumentType<Model>> {\n\t\tconst record = await this.model.findOneAndUpdate(\n\t\t\t{\n\t\t\t\t_id: id,\n\t\t\t\tdeletedAt: null,\n\t\t\t},\n\t\t\tdata,\n\t\t\t{\n\t\t\t\tnew: true,\n\t\t\t\trunValidators: true,\n\t\t\t}\n\t\t);\n\n\t\tif (!record) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: `Record not found`,\n\t\t\t});\n\t\t}\n\n\t\treturn record;\n\t}\n\n\tprivate generateCode(length = 6): string {\n\t\tconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n\t\tlet result = '';\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tresult += chars.charAt(Math.floor(Math.random() * chars.length));\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate async generateCouponCode(): Promise<string> {\n\t\tlet code: string = 'SAMPLE';\n\t\tlet exists = true;\n\n\t\twhile (exists) {\n\t\t\tcode = this.generateCode();\n\t\t\texists = (await this.model.exists({ code: code })) ? true : false;\n\t\t}\n\n\t\treturn code;\n\t}\n\n\t// give referral reward to user\n\tpublic async giveReferralRewardToUser(userId: mongoose.Types.ObjectId, orderId: mongoose.Types.ObjectId) {\n\t\tconst [user, order] = await Promise.all([\n\t\t\tthis.userModel.findById(userId),\n\t\t\tthis.orderModel.findById(orderId),\n\t\t]);\n\n\t\tif (!user) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: `User not found`,\n\t\t\t});\n\t\t}\n\t\tif (!order) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: `Order not found`,\n\t\t\t});\n\t\t}\n\t\tconst referralCouponSettings = await this.getReferralSettings();\n\n\t\tif (!referralCouponSettings.sender) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Referral settings for sender not found',\n\t\t\t});\n\t\t}\n\n\t\tthis.create({\n\t\t\tcode: await this.generateCouponCode(),\n\t\t\tstatus: Status.ACTIVE,\n\t\t\tcouponType: CouponType.REFERRAL_REWARD,\n\t\t\tduration: {\n\t\t\t\tstart: new Date(),\n\t\t\t},\n\t\t\tforNewUserOnly: false,\n\t\t\tuser: user._id,\n\t\t\tminOrderValue: referralCouponSettings.sender?.minimumOrderValue ?? null,\n\t\t\tvalue: referralCouponSettings.sender?.value,\n\t\t\tvalueType: referralCouponSettings.sender?.valueType,\n\t\t\treferralCodeUsedBy: order.user as mongoose.Types.ObjectId,\n\t\t\treferralCodeUsedOnOrder: order._id,\n\t\t\texpirationReason: null,\n\t\t\tmaxDiscountLimit: null,\n\t\t\torderLimitPerUser: 1,\n\t\t\tspendLimit: null,\n\t\t\ttotalOrderLimit: 1,\n\t\t});\n\t}\n\n\tpublic async validateCoupon(\n\t\tdata: ValidateCouponDTO,\n\t\tcouponDocument: DocumentType<Model>\n\t): Promise<CouponValidationOutputDTO> {\n\t\tif (couponDocument.minOrderValue && couponDocument.minOrderValue < data.amountBeforeCoupon) {\n\t\t\t// throw new TRPCError({\n\t\t\t// \tcode: 'BAD_REQUEST',\n\t\t\t// \tmessage: 'Amount is lower than the minimum order amount',\n\t\t\t// });\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t};\n\t\t}\n\n\t\tconst discountAmount =\n\t\t\tcouponDocument.valueType == ValueType.FIXED\n\t\t\t\t? couponDocument.value\n\t\t\t\t: roundBaseCurrency((data.amountBeforeCoupon * couponDocument.value) / 100);\n\n\t\tconst secondaryDiscountAmount =\n\t\t\tcouponDocument.valueType == ValueType.FIXED\n\t\t\t\t? await convertToSecondary(couponDocument.value)\n\t\t\t\t: roundSecondaryCurrency((data.secondaryAmountBeforeCoupon * couponDocument.value) / 100);\n\n\t\treturn {\n\t\t\tisValid: true,\n\t\t\tdiscountAmount,\n\t\t\tsecondaryDiscountAmount,\n\t\t\tamountAfterCoupon: roundBaseCurrency(data.amountBeforeCoupon - discountAmount),\n\t\t\tsecondaryAmountAfterCoupon: roundSecondaryCurrency(\n\t\t\t\tdata.secondaryAmountBeforeCoupon - secondaryDiscountAmount\n\t\t\t),\n\t\t\tdiscountCut: {\n\t\t\t\tcompanyCut: discountAmount,\n\t\t\t\tsecondaryCompanyCut: secondaryDiscountAmount,\n\t\t\t\tshopCut: 0,\n\t\t\t\tsecondaryShopCut: 0,\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate async getReferralSettings(): Promise<DocumentType<ReferralSetting>> {\n\t\tconst referralSetting = await this.settingsModel.findOne({});\n\t\tif (!referralSetting) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Referral setting not found',\n\t\t\t});\n\t\t}\n\t\treturn referralSetting;\n\t}\n}\n\nexport const referralRewardCouponService = Container.get(ReferralRewardCouponService);\n"]}
1
+ {"version":3,"file":"referral-reward-coupon.service.js","sourceRoot":"/","sources":["modules/coupon/services/referral-reward-coupon.service.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, { Service } from 'typedi';\nimport { TRPCError } from '@trpc/server';\nimport { DocumentType, mongoose } from '@typegoose/typegoose';\nimport {\n\tReferralRewardCouponModel,\n\tReferralRewardCoupon as Model,\n\tReferralSetting,\n\tReferralSettingModel,\n\tRegularOrder,\n\tUser,\n\tUserModel,\n\tRegularOrderModel,\n} from '@lyxa.ai/core/dist/libraries/mongo/models/';\nimport {\n\tCouponValidationOutputDTO,\n\tCreateReferralRewardCouponDTO as CreateDTO,\n\tUpdateReferralRewardCouponDTO as UpdateDTO,\n\tValidateCouponDTO,\n} from '@modules/coupon/validations';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { CouponType, Status, ValueType } from '@lyxa.ai/core/dist/utilities/enum';\nimport { convertToSecondary } from '@lyxa.ai/core/dist/utilities/currency';\nimport { roundBaseCurrency, roundSecondaryCurrency } from '@lyxa.ai/core/dist/utilities/shared';\n\n@Service()\nexport class ReferralRewardCouponService {\n\tprivate model: typeof ReferralRewardCouponModel & SoftDeleteModel<Model>;\n\tprivate settingsModel: typeof ReferralSettingModel & SoftDeleteModel<ReferralSetting>;\n\tprivate userModel: typeof UserModel & SoftDeleteModel<User>;\n\tprivate orderModel: typeof RegularOrderModel & SoftDeleteModel<RegularOrder>;\n\n\tconstructor() {\n\t\tthis.model = ReferralRewardCouponModel as typeof ReferralRewardCouponModel & SoftDeleteModel<Model>;\n\t\tthis.settingsModel = ReferralSettingModel as typeof ReferralSettingModel &\n\t\t\tSoftDeleteModel<ReferralSetting>;\n\t\tthis.userModel = UserModel as typeof UserModel & SoftDeleteModel<User>;\n\t\tthis.orderModel = RegularOrderModel as typeof RegularOrderModel & SoftDeleteModel<RegularOrder>;\n\t}\n\n\t/**\n\t * Create a new record\n\t * @param data Data for the new record\n\t */\n\tpublic async create(data: CreateDTO): Promise<DocumentType<Model>> {\n\t\treturn await this.model.create(data);\n\t}\n\n\t/**\n\t * Update record\n\t * @param id ID of the record\n\t * @param data Data to update\n\t */\n\tpublic async update(id: string, data: UpdateDTO): Promise<DocumentType<Model>> {\n\t\tconst record = await this.model.findOneAndUpdate(\n\t\t\t{\n\t\t\t\t_id: id,\n\t\t\t\tdeletedAt: null,\n\t\t\t},\n\t\t\tdata,\n\t\t\t{\n\t\t\t\tnew: true,\n\t\t\t\trunValidators: true,\n\t\t\t}\n\t\t);\n\n\t\tif (!record) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: `Record not found`,\n\t\t\t});\n\t\t}\n\n\t\treturn record;\n\t}\n\n\tprivate generateCode(length = 6): string {\n\t\tconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\n\t\tlet result = '';\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tresult += chars.charAt(Math.floor(Math.random() * chars.length));\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate async generateCouponCode(): Promise<string> {\n\t\tlet code: string = 'SAMPLE';\n\t\tlet exists = true;\n\n\t\twhile (exists) {\n\t\t\tcode = this.generateCode();\n\t\t\texists = (await this.model.exists({ code: code })) ? true : false;\n\t\t}\n\n\t\treturn code;\n\t}\n\n\t// give referral reward to user\n\tpublic async giveReferralRewardToUser(userId: mongoose.Types.ObjectId, orderId: mongoose.Types.ObjectId) {\n\t\tconst [user, order] = await Promise.all([\n\t\t\tthis.userModel.findById(userId),\n\t\t\tthis.orderModel.findById(orderId),\n\t\t]);\n\n\t\tif (!user) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: `User not found`,\n\t\t\t});\n\t\t}\n\t\tif (!order) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: `Order not found`,\n\t\t\t});\n\t\t}\n\t\tconst referralCouponSettings = await this.getReferralSettings();\n\n\t\tif (!referralCouponSettings.sender) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Referral settings for sender not found',\n\t\t\t});\n\t\t}\n\n\t\tthis.create({\n\t\t\tcode: await this.generateCouponCode(),\n\t\t\tstatus: Status.ACTIVE,\n\t\t\tcouponType: CouponType.REFERRAL_REWARD,\n\t\t\tduration: {\n\t\t\t\tstart: new Date(),\n\t\t\t},\n\t\t\tforNewUserOnly: false,\n\t\t\tuser: user._id,\n\t\t\tminOrderValue: referralCouponSettings.sender?.minimumOrderValue ?? null,\n\t\t\tvalue: referralCouponSettings.sender?.value,\n\t\t\tvalueType: referralCouponSettings.sender?.valueType,\n\t\t\treferralCodeUsedBy: order.user as mongoose.Types.ObjectId,\n\t\t\treferralCodeUsedOnOrder: order._id,\n\t\t\texpirationReason: null,\n\t\t\tmaxDiscountLimit: null,\n\t\t\torderLimitPerUser: 1,\n\t\t\tspendLimit: null,\n\t\t\ttotalOrderLimit: 1,\n\t\t\tisMinOrderValueEnabled: !!referralCouponSettings.sender?.minimumOrderValue,\n\t\t\tisMaxDiscountLimitEnabled: false,\n\t\t\tisOrderLimitPerUserEnabled: true,\n\t\t\tisSpendLimitEnabled: false,\n\t\t\tisTotalOrderLimitEnabled: true,\n\t\t});\n\t}\n\n\tpublic async validateCoupon(\n\t\tdata: ValidateCouponDTO,\n\t\tcouponDocument: DocumentType<Model>\n\t): Promise<CouponValidationOutputDTO> {\n\t\tif (couponDocument.minOrderValue && couponDocument.minOrderValue < data.amountBeforeCoupon) {\n\t\t\t// throw new TRPCError({\n\t\t\t// \tcode: 'BAD_REQUEST',\n\t\t\t// \tmessage: 'Amount is lower than the minimum order amount',\n\t\t\t// });\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t};\n\t\t}\n\n\t\tconst discountAmount =\n\t\t\tcouponDocument.valueType == ValueType.FIXED\n\t\t\t\t? couponDocument.value\n\t\t\t\t: roundBaseCurrency((data.amountBeforeCoupon * couponDocument.value) / 100);\n\n\t\tconst secondaryDiscountAmount =\n\t\t\tcouponDocument.valueType == ValueType.FIXED\n\t\t\t\t? await convertToSecondary(couponDocument.value)\n\t\t\t\t: roundSecondaryCurrency((data.secondaryAmountBeforeCoupon * couponDocument.value) / 100);\n\n\t\treturn {\n\t\t\tisValid: true,\n\t\t\tdiscountAmount,\n\t\t\tsecondaryDiscountAmount,\n\t\t\tamountAfterCoupon: roundBaseCurrency(data.amountBeforeCoupon - discountAmount),\n\t\t\tsecondaryAmountAfterCoupon: roundSecondaryCurrency(\n\t\t\t\tdata.secondaryAmountBeforeCoupon - secondaryDiscountAmount\n\t\t\t),\n\t\t\tdiscountCut: {\n\t\t\t\tcompanyCut: discountAmount,\n\t\t\t\tsecondaryCompanyCut: secondaryDiscountAmount,\n\t\t\t\tshopCut: 0,\n\t\t\t\tsecondaryShopCut: 0,\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate async getReferralSettings(): Promise<DocumentType<ReferralSetting>> {\n\t\tconst referralSetting = await this.settingsModel.findOne({});\n\t\tif (!referralSetting) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Referral setting not found',\n\t\t\t});\n\t\t}\n\t\treturn referralSetting;\n\t}\n}\n\nexport const referralRewardCouponService = Container.get(ReferralRewardCouponService);\n"]}
@@ -6,6 +6,7 @@ export declare const allCouponTransformer: import("@lyxa.ai/core/dist/utilities/
6
6
  secondaryCurrencyValue: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
7
7
  maxDiscountLimit: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
8
8
  secondaryCurrencyMaxDiscountLimit: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
9
+ isMaxDiscountLimitEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
9
10
  duration: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodObject<{
10
11
  start: import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Date, string>, import("zod").ZodDate]>, Date, string | Date>, Date, string | Date>;
11
12
  end: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Date, string>, import("zod").ZodDate]>, Date, string | Date>, Date, string | Date>>;
@@ -23,9 +24,12 @@ export declare const allCouponTransformer: import("@lyxa.ai/core/dist/utilities/
23
24
  end?: string | Date | undefined;
24
25
  }>>;
25
26
  spendLimit: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
27
+ isSpendLimitEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
26
28
  totalOrderLimit: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
29
+ isTotalOrderLimitEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
27
30
  minOrderValue: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodNumber>>>;
28
31
  secondaryCurrencyMinOrderValue: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
32
+ isMinOrderValueEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
29
33
  forNewUserOnly: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
30
34
  status: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNativeEnum<typeof import("@lyxa.ai/core/dist/utilities/enum").Status>>>>;
31
35
  expirationReason: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNativeEnum<typeof import("@lyxa.ai/core/dist/utilities/enum").CouponExpirationReason>>>>>;
@@ -38,6 +42,7 @@ export declare const allCouponTransformer: import("@lyxa.ai/core/dist/utilities/
38
42
  }>>>;
39
43
  code: import("zod").ZodOptional<import("zod").ZodString | import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, string, string>>;
40
44
  orderLimitPerUser: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
45
+ isOrderLimitPerUserEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
41
46
  createdBy: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
42
47
  isExpired: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodBoolean>>;
43
48
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
@@ -46,6 +51,7 @@ export declare const allCouponTransformer: import("@lyxa.ai/core/dist/utilities/
46
51
  orderLimitPerUser: import("zod").ZodOptional<import("zod").ZodLiteral<1>>;
47
52
  referralUser: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
48
53
  code: import("zod").ZodOptional<import("zod").ZodString | import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, string, string>>;
54
+ isOrderLimitPerUserEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
49
55
  createdBy: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
50
56
  isExpired: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodBoolean>>;
51
57
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
@@ -59,6 +65,7 @@ export declare const allCouponTransformer: import("@lyxa.ai/core/dist/utilities/
59
65
  secondaryCurrencyValue: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
60
66
  maxDiscountLimit: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
61
67
  secondaryCurrencyMaxDiscountLimit: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
68
+ isMaxDiscountLimitEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
62
69
  duration: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodObject<{
63
70
  start: import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Date, string>, import("zod").ZodDate]>, Date, string | Date>, Date, string | Date>;
64
71
  end: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Date, string>, import("zod").ZodDate]>, Date, string | Date>, Date, string | Date>>;
@@ -76,9 +83,12 @@ export declare const allCouponTransformer: import("@lyxa.ai/core/dist/utilities/
76
83
  end?: string | Date | undefined;
77
84
  }>>;
78
85
  spendLimit: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
86
+ isSpendLimitEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
79
87
  totalOrderLimit: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
88
+ isTotalOrderLimitEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
80
89
  minOrderValue: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodNumber>>>;
81
90
  secondaryCurrencyMinOrderValue: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
91
+ isMinOrderValueEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
82
92
  forNewUserOnly: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
83
93
  status: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNativeEnum<typeof import("@lyxa.ai/core/dist/utilities/enum").Status>>>>;
84
94
  expirationReason: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNativeEnum<typeof import("@lyxa.ai/core/dist/utilities/enum").CouponExpirationReason>>>>>;
@@ -91,6 +101,7 @@ export declare const allCouponTransformer: import("@lyxa.ai/core/dist/utilities/
91
101
  }>>>;
92
102
  code: import("zod").ZodOptional<import("zod").ZodString | import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, string, string>>;
93
103
  orderLimitPerUser: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
104
+ isOrderLimitPerUserEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
94
105
  createdBy: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
95
106
  isExpired: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodBoolean>>;
96
107
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
@@ -104,6 +115,7 @@ export declare const allCouponTransformer: import("@lyxa.ai/core/dist/utilities/
104
115
  secondaryCurrencyValue: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
105
116
  maxDiscountLimit: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
106
117
  secondaryCurrencyMaxDiscountLimit: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
118
+ isMaxDiscountLimitEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
107
119
  duration: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodObject<{
108
120
  start: import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Date, string>, import("zod").ZodDate]>, Date, string | Date>, Date, string | Date>;
109
121
  end: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Date, string>, import("zod").ZodDate]>, Date, string | Date>, Date, string | Date>>;
@@ -121,9 +133,12 @@ export declare const allCouponTransformer: import("@lyxa.ai/core/dist/utilities/
121
133
  end?: string | Date | undefined;
122
134
  }>>;
123
135
  spendLimit: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
136
+ isSpendLimitEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
124
137
  totalOrderLimit: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
138
+ isTotalOrderLimitEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
125
139
  minOrderValue: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodNumber>>>;
126
140
  secondaryCurrencyMinOrderValue: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
141
+ isMinOrderValueEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
127
142
  forNewUserOnly: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
128
143
  status: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNativeEnum<typeof import("@lyxa.ai/core/dist/utilities/enum").Status>>>>;
129
144
  expirationReason: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNativeEnum<typeof import("@lyxa.ai/core/dist/utilities/enum").CouponExpirationReason>>>>>;
@@ -136,6 +151,7 @@ export declare const allCouponTransformer: import("@lyxa.ai/core/dist/utilities/
136
151
  }>>>;
137
152
  code: import("zod").ZodOptional<import("zod").ZodString | import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, string, string>>;
138
153
  orderLimitPerUser: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
154
+ isOrderLimitPerUserEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
139
155
  createdBy: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
140
156
  isExpired: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodBoolean>>;
141
157
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
@@ -149,6 +165,7 @@ export declare const allCouponTransformer: import("@lyxa.ai/core/dist/utilities/
149
165
  secondaryCurrencyValue: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
150
166
  maxDiscountLimit: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
151
167
  secondaryCurrencyMaxDiscountLimit: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
168
+ isMaxDiscountLimitEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
152
169
  duration: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodObject<{
153
170
  start: import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Date, string>, import("zod").ZodDate]>, Date, string | Date>, Date, string | Date>;
154
171
  end: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Date, string>, import("zod").ZodDate]>, Date, string | Date>, Date, string | Date>>;
@@ -166,9 +183,12 @@ export declare const allCouponTransformer: import("@lyxa.ai/core/dist/utilities/
166
183
  end?: string | Date | undefined;
167
184
  }>>;
168
185
  spendLimit: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
186
+ isSpendLimitEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
169
187
  totalOrderLimit: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
188
+ isTotalOrderLimitEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
170
189
  minOrderValue: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodNumber>>>;
171
190
  secondaryCurrencyMinOrderValue: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
191
+ isMinOrderValueEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
172
192
  forNewUserOnly: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
173
193
  status: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNativeEnum<typeof import("@lyxa.ai/core/dist/utilities/enum").Status>>>>;
174
194
  expirationReason: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNativeEnum<typeof import("@lyxa.ai/core/dist/utilities/enum").CouponExpirationReason>>>>>;
@@ -181,6 +201,7 @@ export declare const allCouponTransformer: import("@lyxa.ai/core/dist/utilities/
181
201
  }>>>;
182
202
  code: import("zod").ZodOptional<import("zod").ZodString | import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, string, string>>;
183
203
  orderLimitPerUser: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
204
+ isOrderLimitPerUserEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
184
205
  createdBy: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
185
206
  isExpired: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodBoolean>>;
186
207
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
@@ -194,6 +215,7 @@ export declare const allCouponTransformer: import("@lyxa.ai/core/dist/utilities/
194
215
  secondaryCurrencyValue: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
195
216
  maxDiscountLimit: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
196
217
  secondaryCurrencyMaxDiscountLimit: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
218
+ isMaxDiscountLimitEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
197
219
  duration: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodObject<{
198
220
  start: import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Date, string>, import("zod").ZodDate]>, Date, string | Date>, Date, string | Date>;
199
221
  end: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Date, string>, import("zod").ZodDate]>, Date, string | Date>, Date, string | Date>>;
@@ -211,9 +233,12 @@ export declare const allCouponTransformer: import("@lyxa.ai/core/dist/utilities/
211
233
  end?: string | Date | undefined;
212
234
  }>>;
213
235
  spendLimit: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
236
+ isSpendLimitEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
214
237
  totalOrderLimit: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
238
+ isTotalOrderLimitEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
215
239
  minOrderValue: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodNumber>>>;
216
240
  secondaryCurrencyMinOrderValue: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
241
+ isMinOrderValueEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
217
242
  forNewUserOnly: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
218
243
  status: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNativeEnum<typeof import("@lyxa.ai/core/dist/utilities/enum").Status>>>>;
219
244
  expirationReason: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNativeEnum<typeof import("@lyxa.ai/core/dist/utilities/enum").CouponExpirationReason>>>>>;
@@ -226,6 +251,7 @@ export declare const allCouponTransformer: import("@lyxa.ai/core/dist/utilities/
226
251
  }>>>;
227
252
  code: import("zod").ZodOptional<import("zod").ZodString | import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, string, string>>;
228
253
  orderLimitPerUser: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodNumber>>>>;
254
+ isOrderLimitPerUserEnabled: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>>;
229
255
  createdBy: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
230
256
  isExpired: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodBoolean>>;
231
257
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
@@ -1 +1 @@
1
- {"version":3,"file":"coupon.transformer.d.ts","sourceRoot":"/","sources":["modules/coupon/transformers/coupon.transformer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,MAAM,wDAAwD,CAAC;AAQzF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CAEhC,CAAC"}
1
+ {"version":3,"file":"coupon.transformer.d.ts","sourceRoot":"/","sources":["modules/coupon/transformers/coupon.transformer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,MAAM,wDAAwD,CAAC;AAQzF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CAEhC,CAAC"}