@lyxa.ai/marketing 1.0.65 → 1.0.67

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 (195) hide show
  1. package/dist/lib/index.d.ts +11810 -21
  2. package/dist/lib/index.d.ts.map +1 -1
  3. package/dist/lib/index.js +0 -2
  4. package/dist/lib/index.js.map +1 -1
  5. package/dist/lib/modules/coupon/routers/coupon.router.d.ts +0 -1074
  6. package/dist/lib/modules/coupon/routers/coupon.router.d.ts.map +1 -1
  7. package/dist/lib/modules/coupon/services/coupon.service.d.ts +1 -1
  8. package/dist/lib/modules/coupon/services/coupon.service.js +1 -1
  9. package/dist/lib/modules/coupon/services/coupon.service.js.map +1 -1
  10. package/dist/lib/modules/coupon/services/patterns/repository/CouponMetricsRepository.js +3 -3
  11. package/dist/lib/modules/coupon/services/patterns/repository/CouponMetricsRepository.js.map +1 -1
  12. package/dist/lib/modules/coupon/services/referral-reward-coupon.service.d.ts.map +1 -1
  13. package/dist/lib/modules/coupon/services/referral-reward-coupon.service.js +0 -1
  14. package/dist/lib/modules/coupon/services/referral-reward-coupon.service.js.map +1 -1
  15. package/dist/lib/modules/coupon/transformers/coupon.transformer.d.ts +0 -50
  16. package/dist/lib/modules/coupon/transformers/coupon.transformer.d.ts.map +1 -1
  17. package/dist/lib/modules/coupon/validations/all-coupons.validation.d.ts +0 -822
  18. package/dist/lib/modules/coupon/validations/all-coupons.validation.d.ts.map +1 -1
  19. package/dist/lib/modules/coupon/validations/create-coupon.validation.d.ts +0 -98
  20. package/dist/lib/modules/coupon/validations/create-coupon.validation.d.ts.map +1 -1
  21. package/dist/lib/modules/coupon/validations/create-coupon.validation.js +1 -4
  22. package/dist/lib/modules/coupon/validations/create-coupon.validation.js.map +1 -1
  23. package/dist/lib/modules/coupon/validations/referral-reward-coupon.validation.d.ts +0 -374
  24. package/dist/lib/modules/coupon/validations/referral-reward-coupon.validation.d.ts.map +1 -1
  25. package/dist/lib/modules/coupon/validations/referral-reward-coupon.validation.js +0 -2
  26. package/dist/lib/modules/coupon/validations/referral-reward-coupon.validation.js.map +1 -1
  27. package/dist/lib/modules/deal-setting/services/deal-setting.service.d.ts.map +1 -1
  28. package/dist/lib/modules/deal-setting/services/deal-setting.service.js +1 -4
  29. package/dist/lib/modules/deal-setting/services/deal-setting.service.js.map +1 -1
  30. package/dist/lib/modules/featured-setting/services/featured-setting.service.d.ts.map +1 -1
  31. package/dist/lib/modules/featured-setting/services/featured-setting.service.js +0 -3
  32. package/dist/lib/modules/featured-setting/services/featured-setting.service.js.map +1 -1
  33. package/dist/lib/modules/limited-time-offer/campaign/campaign.router.d.ts +8 -54
  34. package/dist/lib/modules/limited-time-offer/campaign/campaign.router.d.ts.map +1 -1
  35. package/dist/lib/modules/limited-time-offer/campaign/campaign.router.js +0 -13
  36. package/dist/lib/modules/limited-time-offer/campaign/campaign.router.js.map +1 -1
  37. package/dist/lib/modules/limited-time-offer/campaign/jobs/index.d.ts.map +1 -1
  38. package/dist/lib/modules/limited-time-offer/campaign/jobs/index.js +0 -9
  39. package/dist/lib/modules/limited-time-offer/campaign/jobs/index.js.map +1 -1
  40. package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts +1 -0
  41. package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts.map +1 -1
  42. package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.js +6 -2
  43. package/dist/lib/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.js.map +1 -1
  44. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts +3 -16
  45. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts.map +1 -1
  46. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.js +3 -22
  47. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.js.map +1 -1
  48. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.d.ts +0 -2
  49. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.d.ts.map +1 -1
  50. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.js +0 -12
  51. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.js.map +1 -1
  52. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts +35 -242
  53. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts.map +1 -1
  54. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.js +1 -19
  55. package/dist/lib/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.js.map +1 -1
  56. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.d.ts +1 -10
  57. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.d.ts.map +1 -1
  58. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.js +1 -83
  59. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.js.map +1 -1
  60. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.d.ts +0 -4
  61. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.d.ts.map +1 -1
  62. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.js +6 -75
  63. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.js.map +1 -1
  64. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts +1 -1
  65. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts.map +1 -1
  66. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.js +19 -46
  67. package/dist/lib/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.js.map +1 -1
  68. package/dist/lib/modules/limited-time-offer/limited-time-offer.router.d.ts +10 -241
  69. package/dist/lib/modules/limited-time-offer/limited-time-offer.router.d.ts.map +1 -1
  70. package/dist/lib/modules/limited-time-offer/limited-time-offer.service.d.ts +0 -2
  71. package/dist/lib/modules/limited-time-offer/limited-time-offer.service.d.ts.map +1 -1
  72. package/dist/lib/modules/limited-time-offer/limited-time-offer.service.js +4 -13
  73. package/dist/lib/modules/limited-time-offer/limited-time-offer.service.js.map +1 -1
  74. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.d.ts +1 -1
  75. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.js +1 -1
  76. package/dist/lib/modules/limited-time-offer/notification/limited-time-offer-notification.constants.js.map +1 -1
  77. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.d.ts +3 -30
  78. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.d.ts.map +1 -1
  79. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.js +1 -23
  80. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.builder.js.map +1 -1
  81. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.repository.d.ts +0 -18
  82. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.repository.d.ts.map +1 -1
  83. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.repository.js +0 -103
  84. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.repository.js.map +1 -1
  85. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts +2 -187
  86. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts.map +1 -1
  87. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.js +0 -34
  88. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.router.js.map +1 -1
  89. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts +116 -515
  90. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts.map +1 -1
  91. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.js +6 -16
  92. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.validation.js.map +1 -1
  93. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.d.ts +4 -11
  94. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.d.ts.map +1 -1
  95. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.js +7 -48
  96. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.js.map +1 -1
  97. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts +5 -19
  98. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts.map +1 -1
  99. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.js +16 -114
  100. package/dist/lib/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.js.map +1 -1
  101. package/dist/lib/modules/marketing/services/marketing.service.d.ts +3 -7
  102. package/dist/lib/modules/marketing/services/marketing.service.d.ts.map +1 -1
  103. package/dist/lib/modules/marketing/services/marketing.service.js +32 -76
  104. package/dist/lib/modules/marketing/services/marketing.service.js.map +1 -1
  105. package/dist/lib/modules/marketing/services/product-marketing.service.d.ts +0 -1
  106. package/dist/lib/modules/marketing/services/product-marketing.service.d.ts.map +1 -1
  107. package/dist/lib/modules/marketing/services/product-marketing.service.js +0 -32
  108. package/dist/lib/modules/marketing/services/product-marketing.service.js.map +1 -1
  109. package/dist/lib/modules/marketing/validations/punch-marketing.validation.d.ts +4 -4
  110. package/dist/lib/modules/referral-setting/validations/referral-setting.validation.d.ts.map +1 -1
  111. package/dist/lib/modules/referral-setting/validations/referral-setting.validation.js.map +1 -1
  112. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.d.ts +2 -3
  113. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.d.ts.map +1 -1
  114. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.js +3 -11
  115. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.repository.js.map +1 -1
  116. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.d.ts +0 -16
  117. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.router.d.ts.map +1 -1
  118. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.d.ts +2 -2
  119. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.d.ts.map +1 -1
  120. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.service.js.map +1 -1
  121. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.d.ts +0 -19
  122. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.d.ts.map +1 -1
  123. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.js +0 -1
  124. package/dist/lib/modules/spend-to-get-history/spend-to-get-history.validation.js.map +1 -1
  125. package/dist/types/index.d.ts +11810 -21
  126. package/dist/types/index.d.ts.map +1 -1
  127. package/dist/types/modules/coupon/routers/coupon.router.d.ts +0 -1074
  128. package/dist/types/modules/coupon/routers/coupon.router.d.ts.map +1 -1
  129. package/dist/types/modules/coupon/services/coupon.service.d.ts +1 -1
  130. package/dist/types/modules/coupon/services/referral-reward-coupon.service.d.ts.map +1 -1
  131. package/dist/types/modules/coupon/transformers/coupon.transformer.d.ts +0 -50
  132. package/dist/types/modules/coupon/transformers/coupon.transformer.d.ts.map +1 -1
  133. package/dist/types/modules/coupon/validations/all-coupons.validation.d.ts +0 -822
  134. package/dist/types/modules/coupon/validations/all-coupons.validation.d.ts.map +1 -1
  135. package/dist/types/modules/coupon/validations/create-coupon.validation.d.ts +0 -98
  136. package/dist/types/modules/coupon/validations/create-coupon.validation.d.ts.map +1 -1
  137. package/dist/types/modules/coupon/validations/referral-reward-coupon.validation.d.ts +0 -374
  138. package/dist/types/modules/coupon/validations/referral-reward-coupon.validation.d.ts.map +1 -1
  139. package/dist/types/modules/deal-setting/services/deal-setting.service.d.ts.map +1 -1
  140. package/dist/types/modules/featured-setting/services/featured-setting.service.d.ts.map +1 -1
  141. package/dist/types/modules/limited-time-offer/campaign/campaign.router.d.ts +8 -54
  142. package/dist/types/modules/limited-time-offer/campaign/campaign.router.d.ts.map +1 -1
  143. package/dist/types/modules/limited-time-offer/campaign/jobs/index.d.ts.map +1 -1
  144. package/dist/types/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts +1 -0
  145. package/dist/types/modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.d.ts.map +1 -1
  146. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts +3 -16
  147. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.d.ts.map +1 -1
  148. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.d.ts +0 -2
  149. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.repository.d.ts.map +1 -1
  150. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts +35 -242
  151. package/dist/types/modules/limited-time-offer/campaign/limited-time-offer-campaign.validation.d.ts.map +1 -1
  152. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.d.ts +1 -10
  153. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-lifecycle.service.d.ts.map +1 -1
  154. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.d.ts +0 -4
  155. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign-scheduler.service.d.ts.map +1 -1
  156. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts +1 -1
  157. package/dist/types/modules/limited-time-offer/campaign/services/limited-time-offer-campaign.service.d.ts.map +1 -1
  158. package/dist/types/modules/limited-time-offer/limited-time-offer.router.d.ts +10 -241
  159. package/dist/types/modules/limited-time-offer/limited-time-offer.router.d.ts.map +1 -1
  160. package/dist/types/modules/limited-time-offer/limited-time-offer.service.d.ts +0 -2
  161. package/dist/types/modules/limited-time-offer/limited-time-offer.service.d.ts.map +1 -1
  162. package/dist/types/modules/limited-time-offer/notification/limited-time-offer-notification.constants.d.ts +1 -1
  163. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.builder.d.ts +3 -30
  164. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.builder.d.ts.map +1 -1
  165. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.repository.d.ts +0 -18
  166. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.repository.d.ts.map +1 -1
  167. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts +2 -187
  168. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.router.d.ts.map +1 -1
  169. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts +116 -515
  170. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.validation.d.ts.map +1 -1
  171. package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.d.ts +4 -11
  172. package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant-marketing.service.d.ts.map +1 -1
  173. package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts +5 -19
  174. package/dist/types/modules/limited-time-offer/participant/services/limited-time-offer-participant.service.d.ts.map +1 -1
  175. package/dist/types/modules/marketing/services/marketing.service.d.ts +3 -7
  176. package/dist/types/modules/marketing/services/marketing.service.d.ts.map +1 -1
  177. package/dist/types/modules/marketing/services/product-marketing.service.d.ts +0 -6
  178. package/dist/types/modules/marketing/services/product-marketing.service.d.ts.map +1 -1
  179. package/dist/types/modules/marketing/validations/punch-marketing.validation.d.ts +4 -4
  180. package/dist/types/modules/referral-setting/validations/referral-setting.validation.d.ts.map +1 -1
  181. package/dist/types/modules/spend-to-get-history/spend-to-get-history.repository.d.ts +2 -3
  182. package/dist/types/modules/spend-to-get-history/spend-to-get-history.repository.d.ts.map +1 -1
  183. package/dist/types/modules/spend-to-get-history/spend-to-get-history.router.d.ts +0 -16
  184. package/dist/types/modules/spend-to-get-history/spend-to-get-history.router.d.ts.map +1 -1
  185. package/dist/types/modules/spend-to-get-history/spend-to-get-history.service.d.ts +2 -2
  186. package/dist/types/modules/spend-to-get-history/spend-to-get-history.service.d.ts.map +1 -1
  187. package/dist/types/modules/spend-to-get-history/spend-to-get-history.validation.d.ts +0 -19
  188. package/dist/types/modules/spend-to-get-history/spend-to-get-history.validation.d.ts.map +1 -1
  189. package/package.json +1 -1
  190. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts +0 -1
  191. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts.map +0 -1
  192. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.service.js +0 -2
  193. package/dist/lib/modules/limited-time-offer/participant/limited-time-offer-participant.service.js.map +0 -1
  194. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts +0 -1
  195. package/dist/types/modules/limited-time-offer/participant/limited-time-offer-participant.service.d.ts.map +0 -1
@@ -5,14 +5,12 @@ const zod_1 = require("zod");
5
5
  const global_validation_1 = require("@lyxa.ai/core/dist/utilities/validation/global-validation");
6
6
  const coupon_validation_1 = require("./coupon.validation");
7
7
  const enum_1 = require("@lyxa.ai/core/dist/utilities/enum");
8
- const validations_1 = require("../../referral-setting/validations");
9
8
  const baseFields = {
10
9
  ...coupon_validation_1.baseFields,
11
10
  couponType: zod_1.z.literal(enum_1.CouponType.REFERRAL_REWARD),
12
11
  user: global_validation_1.ZodValidation.objectId('User'),
13
12
  referralCodeUsedBy: global_validation_1.ZodValidation.objectId('ReferralCodeUsedBy'),
14
13
  referralCodeUsedOnOrder: global_validation_1.ZodValidation.objectId('ReferralCodeUsedOnOrder'),
15
- referralSettingSnapShot: validations_1.ReferralSettingValidationSchema.optional(),
16
14
  };
17
15
  const schemaBuilder = (0, global_validation_1.createSchemaBuilder)(baseFields);
18
16
  const { BaseSchema: ReferralRewardCouponValidationSchema, EntitySchema: ReferralRewardCouponSchema, IdSchema: ReferralRewardCouponIdSchema, UpdateSchema: UpdateReferralRewardCouponSchema, } = schemaBuilder.getAllSchemas({ createdAt: true });
@@ -1 +1 @@
1
- {"version":3,"file":"referral-reward-coupon.validation.js","sourceRoot":"/","sources":["modules/coupon/validations/referral-reward-coupon.validation.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,iGAImE;AACnE,2DAAqE;AACrE,4DAA+D;AAC/D,uEAAwF;AAKxF,MAAM,UAAU,GAAG;IAClB,GAAG,8BAAgB;IACnB,UAAU,EAAE,OAAC,CAAC,OAAO,CAAC,iBAAU,CAAC,eAAe,CAAC;IACjD,IAAI,EAAE,iCAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;IACpC,kBAAkB,EAAE,iCAAa,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAChE,uBAAuB,EAAE,iCAAa,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC1E,uBAAuB,EAAE,6CAA+B,CAAC,QAAQ,EAAE;CACnE,CAAC;AAOF,MAAM,aAAa,GAAG,IAAA,uCAAmB,EAAC,UAAU,CAAC,CAAC;AAKtD,MAAM,EACL,UAAU,EAAE,oCAAoC,EAChD,YAAY,EAAE,0BAA0B,EACxC,QAAQ,EAAE,4BAA4B,EACtC,YAAY,EAAE,gCAAgC,GAC9C,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAMpD,oFAAoC;AACpC,gEAA0B;AACM,8EAAsC;AACtE,4EAAgC","sourcesContent":["import { z } from 'zod';\nimport {\n\tZodValidation,\n\tcreateSchemaBuilder,\n\tDTO,\n} from '@lyxa.ai/core/dist/utilities/validation/global-validation';\nimport { baseFields as baseCouponFields } from './coupon.validation';\nimport { CouponType } from '@lyxa.ai/core/dist/utilities/enum';\nimport { ReferralSettingValidationSchema } from '@modules/referral-setting/validations';\n\n/**\n * Define the base parent schema fields\n */\nconst baseFields = {\n\t...baseCouponFields,\n\tcouponType: z.literal(CouponType.REFERRAL_REWARD),\n\tuser: ZodValidation.objectId('User'),\n\treferralCodeUsedBy: ZodValidation.objectId('ReferralCodeUsedBy'),\n\treferralCodeUsedOnOrder: ZodValidation.objectId('ReferralCodeUsedOnOrder'),\n\treferralSettingSnapShot: ReferralSettingValidationSchema.optional(),\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: ReferralRewardCouponValidationSchema,\n\tEntitySchema: ReferralRewardCouponSchema,\n\tIdSchema: ReferralRewardCouponIdSchema,\n\tUpdateSchema: UpdateReferralRewardCouponSchema,\n} = schemaBuilder.getAllSchemas({ createdAt: true });\n\n/**\n * Export schemas\n */\nexport {\n\tReferralRewardCouponValidationSchema,\n\tReferralRewardCouponSchema,\n\tReferralRewardCouponIdSchema as ReferralRewardCouponIdValidationSchema,\n\tUpdateReferralRewardCouponSchema,\n};\n\n/**\n * Export DTO types\n */\nexport type CreateReferralRewardCouponDTO = DTO<typeof ReferralRewardCouponValidationSchema>;\nexport type ReferralRewardCouponDTO = DTO<typeof ReferralRewardCouponSchema>;\nexport type UpdateReferralRewardCouponDTO = DTO<typeof UpdateReferralRewardCouponSchema>;\n"]}
1
+ {"version":3,"file":"referral-reward-coupon.validation.js","sourceRoot":"/","sources":["modules/coupon/validations/referral-reward-coupon.validation.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,iGAImE;AACnE,2DAAqE;AACrE,4DAA+D;AAK/D,MAAM,UAAU,GAAG;IAClB,GAAG,8BAAgB;IACnB,UAAU,EAAE,OAAC,CAAC,OAAO,CAAC,iBAAU,CAAC,eAAe,CAAC;IACjD,IAAI,EAAE,iCAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;IACpC,kBAAkB,EAAE,iCAAa,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAChE,uBAAuB,EAAE,iCAAa,CAAC,QAAQ,CAAC,yBAAyB,CAAC;CAC1E,CAAC;AAOF,MAAM,aAAa,GAAG,IAAA,uCAAmB,EAAC,UAAU,CAAC,CAAC;AAKtD,MAAM,EACL,UAAU,EAAE,oCAAoC,EAChD,YAAY,EAAE,0BAA0B,EACxC,QAAQ,EAAE,4BAA4B,EACtC,YAAY,EAAE,gCAAgC,GAC9C,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAMpD,oFAAoC;AACpC,gEAA0B;AACM,8EAAsC;AACtE,4EAAgC","sourcesContent":["import { z } from 'zod';\nimport {\n\tZodValidation,\n\tcreateSchemaBuilder,\n\tDTO\n} from '@lyxa.ai/core/dist/utilities/validation/global-validation';\nimport { baseFields as baseCouponFields } from './coupon.validation';\nimport { CouponType } from '@lyxa.ai/core/dist/utilities/enum';\n\n/**\n * Define the base parent schema fields\n */\nconst baseFields = {\n\t...baseCouponFields,\n\tcouponType: z.literal(CouponType.REFERRAL_REWARD),\n\tuser: ZodValidation.objectId('User'),\n\treferralCodeUsedBy: ZodValidation.objectId('ReferralCodeUsedBy'),\n\treferralCodeUsedOnOrder: ZodValidation.objectId('ReferralCodeUsedOnOrder'),\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: ReferralRewardCouponValidationSchema,\n\tEntitySchema: ReferralRewardCouponSchema,\n\tIdSchema: ReferralRewardCouponIdSchema,\n\tUpdateSchema: UpdateReferralRewardCouponSchema,\n} = schemaBuilder.getAllSchemas({ createdAt: true });\n\n/**\n * Export schemas\n */\nexport {\n\tReferralRewardCouponValidationSchema,\n\tReferralRewardCouponSchema,\n\tReferralRewardCouponIdSchema as ReferralRewardCouponIdValidationSchema,\n\tUpdateReferralRewardCouponSchema,\n};\n\n/**\n * Export DTO types\n */\nexport type CreateReferralRewardCouponDTO = DTO<typeof ReferralRewardCouponValidationSchema>;\nexport type ReferralRewardCouponDTO = DTO<typeof ReferralRewardCouponSchema>;\nexport type UpdateReferralRewardCouponDTO = DTO<typeof UpdateReferralRewardCouponSchema>;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"deal-setting.service.d.ts","sourceRoot":"/","sources":["modules/deal-setting/services/deal-setting.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAElG,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAoB,WAAW,IAAI,KAAK,EAAE,MAAM,2CAA2C,CAAC;AACnG,OAAO,EACN,oBAAoB,IAAI,SAAS,EACjC,oBAAoB,IAAI,SAAS,EACjC,mBAAmB,IAAI,YAAY,EACnC,MAAM,mCAAmC,CAAC;AAY3C,qBACa,kBAAkB;IAC9B,OAAO,CAAC,KAAK,CAAmD;IAChE,OAAO,CAAC,kBAAkB,CAcxB;;IAUW,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IA4BrE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAkB5E,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YA2B1F,yBAAyB;IAyB1B,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IA4BjF,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAkB9E,8BAA8B;IAmB/B,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAoCzE;AAED,eAAO,MAAM,kBAAkB,oBAAoC,CAAC"}
1
+ {"version":3,"file":"deal-setting.service.d.ts","sourceRoot":"/","sources":["modules/deal-setting/services/deal-setting.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAElG,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAoB,WAAW,IAAI,KAAK,EAAE,MAAM,2CAA2C,CAAC;AACnG,OAAO,EACN,oBAAoB,IAAI,SAAS,EACjC,oBAAoB,IAAI,SAAS,EACjC,mBAAmB,IAAI,YAAY,EACnC,MAAM,mCAAmC,CAAC;AAQ3C,qBACa,kBAAkB;IAC9B,OAAO,CAAC,KAAK,CAAmD;IAChE,OAAO,CAAC,kBAAkB,CAWxB;;IAUW,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IA4BrE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAkB5E,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YA2B1F,yBAAyB;IAyB1B,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IA4BjF,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAkB9E,8BAA8B;IAmB/B,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAoCzE;AAED,eAAO,MAAM,kBAAkB,oBAAoC,CAAC"}
@@ -61,10 +61,7 @@ let DealSettingService = class DealSettingService {
61
61
  enum_1.ItemType.PET,
62
62
  enum_1.ItemType.CLEANING,
63
63
  enum_1.ItemType.LAUNDRY,
64
- enum_1.ItemType.SALOON,
65
- enum_1.ItemType.WELLNESS,
66
- enum_1.ItemType.ELECTRONICS,
67
- enum_1.ItemType.BEAUTY,
64
+ enum_1.ItemType.SALOON
68
65
  ];
69
66
  constructor() {
70
67
  this.model = models_1.DealSettingModel;
@@ -1 +1 @@
1
- {"version":3,"file":"deal-setting.service.js","sourceRoot":"/","sources":["modules/deal-setting/services/deal-setting.service.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, { Service } from 'typedi';\nimport { TRPCError } from '@trpc/server';\nimport { DocumentType, mongoose, ReturnModelType } from '@typegoose/typegoose';\nimport { FilterDTO, PaginatedResponse, DeleteDTO } from '@lyxa.ai/core/dist/utilities/validation';\nimport { createRawDocumentPaginatorObject, PaginatorOptions } from '@lyxa.ai/core/dist/utilities/pagination';\nimport { ModelType } from '@typegoose/typegoose/lib/types';\nimport { DealSettingModel, DealSetting as Model } from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {\n\tCreateDealSettingDTO as CreateDTO,\n\tUpdateDealSettingDTO as UpdateDTO,\n\tDealSettingArrayDTO as UpdateAllDTO,\n} from '@modules/deal-setting/validations';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { publishEvent } from '@lyxa.ai/core/dist/libraries/event';\nimport { BaseEvent } from '@lyxa.ai/core/dist/libraries/event/BaseEvent';\nimport { AdminActivityLogsEvent } from '@lyxa.ai/core/dist/libraries/event/events/admin-logs-event';\nimport { AdminLogsUpdatedFieldsType, ItemType } from '@lyxa.ai/core/dist/utilities/enum';\nimport {\n\tbadRequestError,\n\tinternalServerError,\n\tnotFoundError,\n} from '@lyxa.ai/core/dist/utilities/error-common';\n\n@Service()\nexport class DealSettingService {\n\tprivate model: typeof DealSettingModel & SoftDeleteModel<Model>;\n\tprivate ALLOWED_ITEM_TYPES = [\n\t\tItemType.FOOD,\n\t\tItemType.GROCERY,\n\t\t// ItemType.COFFEE, // removed because https://trello.com/c/x19zLU0A/2935-marketing-remove-coffee\n\t\tItemType.FLOWER,\n\t\tItemType.PET,\n\t\t// ItemType.PHARMACY,\n\t\t// ItemType.HEALTHY_CORNER,\n\t\tItemType.CLEANING,\n\t\tItemType.LAUNDRY,\n\t\tItemType.SALOON,\n\t\tItemType.WELLNESS,\n\t\tItemType.ELECTRONICS,\n\t\tItemType.BEAUTY,\n\t];\n\n\tconstructor() {\n\t\tthis.model = DealSettingModel as typeof DealSettingModel & SoftDeleteModel<Model>;\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, admin?: string): Promise<DocumentType<Model>> {\n\t\tconst exists = await this.model.exists({\n\t\t\titemType: data.itemType,\n\t\t});\n\t\tif (exists) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'CONFLICT',\n\t\t\t\tmessage: `Deal settings for itemType ${data.itemType} already exists. Please update the existing settings.`,\n\t\t\t});\n\t\t}\n\t\tconst result = await this.model.create(data);\n\n\t\tif (admin) {\n\t\t\tthis.logMarketingSettingAdminAction(\n\t\t\t\tnew mongoose.Types.ObjectId(admin),\n\t\t\t\tAdminLogsUpdatedFieldsType.CREATED_MARKETING_SETTINGS,\n\t\t\t\t'',\n\t\t\t\tresult\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Get record by ID\n\t * @param id ID of the record\n\t */\n\tpublic async findById(id: string | mongoose.Types.ObjectId): Promise<DocumentType<Model>> {\n\t\tconst result = await this.model.findOne({\n\t\t\t_id: id,\n\t\t\tdeletedAt: null,\n\t\t});\n\t\tif (!result) {\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\t\treturn result;\n\t}\n\n\t/**\n\t * Get records\n\t * @param query Query to find records\n\t */\n\tpublic async find(data?: Partial<FilterDTO>): Promise<PaginatedResponse<DocumentType<ModelType<Model>>>> {\n\t\ttry {\n\t\t\tconst query = data?.query ?? {};\n\t\t\tquery.itemType = { $in: this.ALLOWED_ITEM_TYPES };\n\n\t\t\tconst paginate = createRawDocumentPaginatorObject(this.model as ReturnModelType<typeof this.model>);\n\t\t\tconst options: PaginatorOptions<typeof Model> = {\n\t\t\t\tpage: data?.page,\n\t\t\t\tsize: data?.size,\n\t\t\t\tsort: data?.sort,\n\t\t\t\tquery,\n\t\t\t\tselect: data?.select,\n\t\t\t\tpopulate: data?.populate,\n\t\t\t};\n\t\t\tlet paginatedResult = await paginate(options);\n\n\t\t\tif (!data?.query && paginatedResult.metadata.totalElements < this.ALLOWED_ITEM_TYPES.length) {\n\t\t\t\tawait this.createDefaultDealSettings(paginatedResult.documents as unknown as DocumentType<Model>[]);\n\t\t\t\tpaginatedResult = await paginate(options);\n\t\t\t}\n\n\t\t\treturn paginatedResult;\n\t\t} catch (err) {\n\t\t\tinternalServerError(`err: ${err}`);\n\t\t}\n\t}\n\n\tprivate async createDefaultDealSettings(documents: DocumentType<Model>[]): Promise<void> {\n\t\tconst existingItemTypes = documents.map(deal => deal.itemType);\n\t\tconst newItemTypes = this.ALLOWED_ITEM_TYPES.filter(item => !existingItemTypes.includes(item));\n\t\tconst defaultSetting = {\n\t\t\tpercentageBundles: [],\n\t\t\tisDiscount: false,\n\t\t\tisBuy1Get1: false,\n\t\t\tisFreeDelivery: false,\n\t\t\tisPunchMarketing: false,\n\t\t};\n\n\t\tfor (const item of newItemTypes) {\n\t\t\tawait this.create({\n\t\t\t\t...defaultSetting,\n\t\t\t\titemType: item as ItemType,\n\t\t\t});\n\t\t}\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 * @param admin Admin id\n\t */\n\tpublic async update(id: string, data: UpdateDTO, admin?: string): Promise<DocumentType<Model>> {\n\t\tif (!admin) notFoundError('Admin not found');\n\n\t\tconst record = await this.model.findById(id);\n\t\tif (!record) notFoundError('Record not found');\n\n\t\tconst result = await this.model.findByIdAndUpdate(id, data, {\n\t\t\tnew: true,\n\t\t\trunValidators: true,\n\t\t});\n\n\t\tif (!result) notFoundError('Record not found');\n\n\t\tthis.logMarketingSettingAdminAction(\n\t\t\tnew mongoose.Types.ObjectId(admin),\n\t\t\tAdminLogsUpdatedFieldsType.CHANGE_IN_MARKETING_SETTINGS,\n\t\t\trecord,\n\t\t\tresult\n\t\t);\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Update all records\n\t * @param data Data to update\n\t * @param admin Admin id\n\t */\n\tpublic async updateAll(data: UpdateAllDTO[], admin?: string): Promise<DocumentType<Model>[]> {\n\t\t// Check admin existence\n\t\tif (!admin) notFoundError('Admin not found');\n\n\t\tconst results: DocumentType<Model>[] = [];\n\n\t\tfor (const dealSetting of data) {\n\t\t\tconst { _id, ...rest } = dealSetting as UpdateAllDTO & { _id: string | mongoose.Types.ObjectId };\n\n\t\t\tif (!_id) continue;\n\n\t\t\tconst updated = await this.update(String(_id), rest as UpdateAllDTO, admin);\n\t\t\tresults.push(updated);\n\t\t}\n\n\t\treturn results;\n\t}\n\n\tprivate async logMarketingSettingAdminAction(\n\t\tadmin: mongoose.Types.ObjectId,\n\t\tactionType: AdminLogsUpdatedFieldsType,\n\t\toldDocument?: any,\n\t\tnewDocument?: any\n\t) {\n\t\tconst adminActivityLogsEvent: BaseEvent<Record<string, unknown>> = new AdminActivityLogsEvent({\n\t\t\tadmin,\n\t\t\tupdatedField: actionType,\n\t\t\toldDocument: oldDocument ?? '',\n\t\t\tnewDocument: newDocument ?? '',\n\t\t});\n\t\tawait publishEvent(adminActivityLogsEvent);\n\t}\n\n\t/**\n\t * Delete record\n\t * @param data Data for delete\n\t */\n\tpublic async deleteById(data: DeleteDTO, admin?: string): Promise<string> {\n\t\tconst { _id, softDelete } = data;\n\n\t\tif (!admin) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Admin not found',\n\t\t\t});\n\t\t}\n\n\t\tconst record = await this.model.findById(_id);\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\tconst result = await this.model.deleteRecord({ _id, deletedAt: null }, softDelete);\n\t\tif (!result) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Unable to delete record',\n\t\t\t});\n\t\t}\n\n\t\tthis.logMarketingSettingAdminAction(\n\t\t\tnew mongoose.Types.ObjectId(admin),\n\t\t\tAdminLogsUpdatedFieldsType.DELETED_MARKETING_SETTINGS,\n\t\t\trecord,\n\t\t\tresult\n\t\t);\n\n\t\treturn 'Record deleted successfully';\n\t}\n}\n\nexport const dealSettingService = Container.get(DealSettingService);\n"]}
1
+ {"version":3,"file":"deal-setting.service.js","sourceRoot":"/","sources":["modules/deal-setting/services/deal-setting.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA4C;AAC5C,yCAAyC;AACzC,oDAA+E;AAE/E,wEAA6G;AAE7G,sEAAmG;AAOnG,8DAAkE;AAElE,iGAAoG;AACpG,4DAAyF;AACzF,4EAAgH;AAGzG,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IACtB,KAAK,CAAmD;IACxD,kBAAkB,GAAG;QAC5B,eAAQ,CAAC,IAAI;QACb,eAAQ,CAAC,OAAO;QAEhB,eAAQ,CAAC,MAAM;QACf,eAAQ,CAAC,GAAG;QAGZ,eAAQ,CAAC,QAAQ;QACjB,eAAQ,CAAC,OAAO;QAChB,eAAQ,CAAC,MAAM;KACf,CAAC;IAEF;QACC,IAAI,CAAC,KAAK,GAAG,yBAAoE,CAAC;IACnF,CAAC;IAMM,KAAK,CAAC,MAAM,CAAC,IAAe,EAAE,KAAc;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CAAC;QACH,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,8BAA8B,IAAI,CAAC,QAAQ,uDAAuD;aAC3G,CAAC,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,8BAA8B,CAClC,IAAI,oBAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAClC,iCAA0B,CAAC,0BAA0B,EACrD,EAAE,EACF,MAAM,CACN,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAMM,KAAK,CAAC,QAAQ,CAAC,EAAoC;QACzD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACvC,GAAG,EAAE,EAAE;YACP,SAAS,EAAE,IAAI;SACf,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,kBAAkB;aAC3B,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAMM,KAAK,CAAC,IAAI,CAAC,IAAyB;QAC1C,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE,CAAA;YAC/B,KAAK,CAAC,QAAQ,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAA;YAEjD,MAAM,QAAQ,GAAG,IAAA,6CAAgC,EAAC,IAAI,CAAC,KAA2C,CAAC,CAAC;YACpG,MAAM,OAAO,GAAmC;gBAC/C,IAAI,EAAE,IAAI,EAAE,IAAI;gBAChB,IAAI,EAAE,IAAI,EAAE,IAAI;gBAChB,IAAI,EAAE,IAAI,EAAE,IAAI;gBAChB,KAAK;gBACL,MAAM,EAAE,IAAI,EAAE,MAAM;gBACpB,QAAQ,EAAE,IAAI,EAAE,QAAQ;aACxB,CAAC;YACF,IAAI,eAAe,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;YAE9C,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,eAAe,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;gBAC7F,MAAM,IAAI,CAAC,yBAAyB,CAAC,eAAe,CAAC,SAA6C,CAAC,CAAC;gBACpG,eAAe,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC3C,CAAC;YAED,OAAO,eAAe,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,IAAA,kCAAmB,EAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QACpC,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,SAAgC;QACvE,MAAM,iBAAiB,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/F,MAAM,cAAc,GAAG;YACtB,iBAAiB,EAAE,EAAE;YACrB,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,KAAK;YACjB,cAAc,EAAE,KAAK;YACrB,gBAAgB,EAAE,KAAK;SACvB,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,MAAM,CAAC;gBACjB,GAAG,cAAc;gBACjB,QAAQ,EAAE,IAAgB;aAC1B,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAQM,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAAe,EAAE,KAAc;QAC9D,IAAI,CAAC,KAAK;YAAE,IAAA,4BAAa,EAAC,iBAAiB,CAAC,CAAC;QAE7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM;YAAE,IAAA,4BAAa,EAAC,kBAAkB,CAAC,CAAC;QAE/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,EAAE;YAC3D,GAAG,EAAE,IAAI;YACT,aAAa,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM;YAAE,IAAA,4BAAa,EAAC,kBAAkB,CAAC,CAAC;QAE/C,IAAI,CAAC,8BAA8B,CAClC,IAAI,oBAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAClC,iCAA0B,CAAC,4BAA4B,EACvD,MAAM,EACN,MAAM,CACN,CAAC;QAEF,OAAO,MAAM,CAAC;IACf,CAAC;IAOM,KAAK,CAAC,SAAS,CAAC,IAAoB,EAAE,KAAc;QAE1D,IAAI,CAAC,KAAK;YAAE,IAAA,4BAAa,EAAC,iBAAiB,CAAC,CAAC;QAE7C,MAAM,OAAO,GAA0B,EAAE,CAAC;QAE1C,KAAK,MAAM,WAAW,IAAI,IAAI,EAAE,CAAC;YAChC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,WAAuE,CAAC;YAEjG,IAAI,CAAC,GAAG;gBAAE,SAAS;YAEnB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAoB,EAAE,KAAK,CAAC,CAAC;YAC5E,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,OAAO,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,8BAA8B,CAC3C,KAA8B,EAC9B,UAAsC,EACtC,WAAiB,EACjB,WAAiB;QAEjB,MAAM,sBAAsB,GAAuC,IAAI,yCAAsB,CAAC;YAC7F,KAAK;YACL,YAAY,EAAE,UAAU;YACxB,WAAW,EAAE,WAAW,IAAI,EAAE;YAC9B,WAAW,EAAE,WAAW,IAAI,EAAE;SAC9B,CAAC,CAAC;QACH,MAAM,IAAA,oBAAY,EAAC,sBAAsB,CAAC,CAAC;IAC5C,CAAC;IAMM,KAAK,CAAC,UAAU,CAAC,IAAe,EAAE,KAAc;QACtD,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAEjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,iBAAiB;aAC1B,CAAC,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,kBAAkB;aAC3B,CAAC,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;QACnF,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,yBAAyB;aAClC,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,8BAA8B,CAClC,IAAI,oBAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAClC,iCAA0B,CAAC,0BAA0B,EACrD,MAAM,EACN,MAAM,CACN,CAAC;QAEF,OAAO,6BAA6B,CAAC;IACtC,CAAC;CACD,CAAA;AA9NY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,gBAAO,GAAE;;GACG,kBAAkB,CA8N9B;AAEY,QAAA,kBAAkB,GAAG,gBAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC","sourcesContent":["import Container, { Service } from 'typedi';\nimport { TRPCError } from '@trpc/server';\nimport { DocumentType, mongoose, ReturnModelType } from '@typegoose/typegoose';\nimport { FilterDTO, PaginatedResponse, DeleteDTO } from '@lyxa.ai/core/dist/utilities/validation';\nimport { createRawDocumentPaginatorObject, PaginatorOptions } from '@lyxa.ai/core/dist/utilities/pagination';\nimport { ModelType } from '@typegoose/typegoose/lib/types';\nimport { DealSettingModel, DealSetting as Model } from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {\n\tCreateDealSettingDTO as CreateDTO,\n\tUpdateDealSettingDTO as UpdateDTO,\n\tDealSettingArrayDTO as UpdateAllDTO,\n} from '@modules/deal-setting/validations';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { publishEvent } from '@lyxa.ai/core/dist/libraries/event';\nimport { BaseEvent } from '@lyxa.ai/core/dist/libraries/event/BaseEvent';\nimport { AdminActivityLogsEvent } from '@lyxa.ai/core/dist/libraries/event/events/admin-logs-event';\nimport { AdminLogsUpdatedFieldsType, ItemType } from '@lyxa.ai/core/dist/utilities/enum';\nimport { badRequestError, internalServerError, notFoundError } from '@lyxa.ai/core/dist/utilities/error-common';\n\n@Service()\nexport class DealSettingService {\n\tprivate model: typeof DealSettingModel & SoftDeleteModel<Model>;\n\tprivate ALLOWED_ITEM_TYPES = [\n\t\tItemType.FOOD,\n\t\tItemType.GROCERY,\n\t\t// ItemType.COFFEE, // removed because https://trello.com/c/x19zLU0A/2935-marketing-remove-coffee\n\t\tItemType.FLOWER,\n\t\tItemType.PET,\n\t\t// ItemType.PHARMACY,\n\t\t// ItemType.HEALTHY_CORNER,\n\t\tItemType.CLEANING,\n\t\tItemType.LAUNDRY,\n\t\tItemType.SALOON\n\t];\n\n\tconstructor() {\n\t\tthis.model = DealSettingModel as typeof DealSettingModel & SoftDeleteModel<Model>;\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, admin?: string): Promise<DocumentType<Model>> {\n\t\tconst exists = await this.model.exists({\n\t\t\titemType: data.itemType,\n\t\t});\n\t\tif (exists) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'CONFLICT',\n\t\t\t\tmessage: `Deal settings for itemType ${data.itemType} already exists. Please update the existing settings.`,\n\t\t\t});\n\t\t}\n\t\tconst result = await this.model.create(data);\n\n\t\tif (admin) {\n\t\t\tthis.logMarketingSettingAdminAction(\n\t\t\t\tnew mongoose.Types.ObjectId(admin),\n\t\t\t\tAdminLogsUpdatedFieldsType.CREATED_MARKETING_SETTINGS,\n\t\t\t\t'',\n\t\t\t\tresult\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Get record by ID\n\t * @param id ID of the record\n\t */\n\tpublic async findById(id: string | mongoose.Types.ObjectId): Promise<DocumentType<Model>> {\n\t\tconst result = await this.model.findOne({\n\t\t\t_id: id,\n\t\t\tdeletedAt: null,\n\t\t});\n\t\tif (!result) {\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\t\treturn result;\n\t}\n\n\t/**\n\t * Get records\n\t * @param query Query to find records\n\t */\n\tpublic async find(data?: Partial<FilterDTO>): Promise<PaginatedResponse<DocumentType<ModelType<Model>>>> {\n\t\ttry {\n\t\t\tconst query = data?.query ?? {}\n\t\t\tquery.itemType = { $in: this.ALLOWED_ITEM_TYPES }\n\n\t\t\tconst paginate = createRawDocumentPaginatorObject(this.model as ReturnModelType<typeof this.model>);\n\t\t\tconst options: PaginatorOptions<typeof Model> = {\n\t\t\t\tpage: data?.page,\n\t\t\t\tsize: data?.size,\n\t\t\t\tsort: data?.sort,\n\t\t\t\tquery,\n\t\t\t\tselect: data?.select,\n\t\t\t\tpopulate: data?.populate,\n\t\t\t};\n\t\t\tlet paginatedResult = await paginate(options);\n\n\t\t\tif (!data?.query && paginatedResult.metadata.totalElements < this.ALLOWED_ITEM_TYPES.length) {\n\t\t\t\tawait this.createDefaultDealSettings(paginatedResult.documents as unknown as DocumentType<Model>[]);\n\t\t\t\tpaginatedResult = await paginate(options);\n\t\t\t}\n\n\t\t\treturn paginatedResult;\n\t\t} catch (err) {\n\t\t\tinternalServerError(`err: ${err}`);\n\t\t}\n\t}\n\n\tprivate async createDefaultDealSettings(documents: DocumentType<Model>[]): Promise<void> {\n\t\tconst existingItemTypes = documents.map(deal => deal.itemType);\n\t\tconst newItemTypes = this.ALLOWED_ITEM_TYPES.filter(item => !existingItemTypes.includes(item));\n\t\tconst defaultSetting = {\n\t\t\tpercentageBundles: [],\n\t\t\tisDiscount: false,\n\t\t\tisBuy1Get1: false,\n\t\t\tisFreeDelivery: false,\n\t\t\tisPunchMarketing: false,\n\t\t};\n\n\t\tfor (const item of newItemTypes) {\n\t\t\tawait this.create({\n\t\t\t\t...defaultSetting,\n\t\t\t\titemType: item as ItemType,\n\t\t\t});\n\t\t}\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 * @param admin Admin id\n\t */\n\tpublic async update(id: string, data: UpdateDTO, admin?: string): Promise<DocumentType<Model>> {\n\t\tif (!admin) notFoundError('Admin not found');\n\n\t\tconst record = await this.model.findById(id);\n\t\tif (!record) notFoundError('Record not found');\n\n\t\tconst result = await this.model.findByIdAndUpdate(id, data, {\n\t\t\tnew: true,\n\t\t\trunValidators: true,\n\t\t});\n\n\t\tif (!result) notFoundError('Record not found');\n\n\t\tthis.logMarketingSettingAdminAction(\n\t\t\tnew mongoose.Types.ObjectId(admin),\n\t\t\tAdminLogsUpdatedFieldsType.CHANGE_IN_MARKETING_SETTINGS,\n\t\t\trecord,\n\t\t\tresult\n\t\t);\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Update all records\n\t * @param data Data to update\n\t * @param admin Admin id\n\t */\n\tpublic async updateAll(data: UpdateAllDTO[], admin?: string): Promise<DocumentType<Model>[]> {\n\t\t// Check admin existence\n\t\tif (!admin) notFoundError('Admin not found');\n\n\t\tconst results: DocumentType<Model>[] = [];\n\n\t\tfor (const dealSetting of data) {\n\t\t\tconst { _id, ...rest } = dealSetting as UpdateAllDTO & { _id: string | mongoose.Types.ObjectId };\n\n\t\t\tif (!_id) continue;\n\n\t\t\tconst updated = await this.update(String(_id), rest as UpdateAllDTO, admin);\n\t\t\tresults.push(updated);\n\t\t}\n\n\t\treturn results;\n\t}\n\n\tprivate async logMarketingSettingAdminAction(\n\t\tadmin: mongoose.Types.ObjectId,\n\t\tactionType: AdminLogsUpdatedFieldsType,\n\t\toldDocument?: any,\n\t\tnewDocument?: any\n\t) {\n\t\tconst adminActivityLogsEvent: BaseEvent<Record<string, unknown>> = new AdminActivityLogsEvent({\n\t\t\tadmin,\n\t\t\tupdatedField: actionType,\n\t\t\toldDocument: oldDocument ?? '',\n\t\t\tnewDocument: newDocument ?? '',\n\t\t});\n\t\tawait publishEvent(adminActivityLogsEvent);\n\t}\n\n\t/**\n\t * Delete record\n\t * @param data Data for delete\n\t */\n\tpublic async deleteById(data: DeleteDTO, admin?: string): Promise<string> {\n\t\tconst { _id, softDelete } = data;\n\n\t\tif (!admin) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Admin not found',\n\t\t\t});\n\t\t}\n\n\t\tconst record = await this.model.findById(_id);\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\tconst result = await this.model.deleteRecord({ _id, deletedAt: null }, softDelete);\n\t\tif (!result) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Unable to delete record',\n\t\t\t});\n\t\t}\n\n\t\tthis.logMarketingSettingAdminAction(\n\t\t\tnew mongoose.Types.ObjectId(admin),\n\t\t\tAdminLogsUpdatedFieldsType.DELETED_MARKETING_SETTINGS,\n\t\t\trecord,\n\t\t\tresult\n\t\t);\n\n\t\treturn 'Record deleted successfully';\n\t}\n}\n\nexport const dealSettingService = Container.get(DealSettingService);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"featured-setting.service.d.ts","sourceRoot":"/","sources":["modules/featured-setting/services/featured-setting.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAElG,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAwB,eAAe,IAAI,KAAK,EAAE,MAAM,4CAA4C,CAAC;AAC5G,OAAO,EACN,wBAAwB,IAAI,SAAS,EACrC,wBAAwB,IAAI,SAAS,EACrC,MAAM,uCAAuC,CAAC;AAO/C,qBACa,sBAAsB;IAClC,OAAO,CAAC,KAAK,CAAuD;IACpE,OAAO,CAAC,UAAU,CAWhB;;IAUW,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IA4BrE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAkB5E,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YA6B1F,6BAA6B;IA+C9B,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAsChF,8BAA8B;IAmB/B,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAoCzE;AAED,eAAO,MAAM,sBAAsB,wBAAwC,CAAC"}
1
+ {"version":3,"file":"featured-setting.service.d.ts","sourceRoot":"/","sources":["modules/featured-setting/services/featured-setting.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAElG,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAwB,eAAe,IAAI,KAAK,EAAE,MAAM,4CAA4C,CAAC;AAC5G,OAAO,EACN,wBAAwB,IAAI,SAAS,EACrC,wBAAwB,IAAI,SAAS,EACrC,MAAM,uCAAuC,CAAC;AAO/C,qBACa,sBAAsB;IAClC,OAAO,CAAC,KAAK,CAAuD;IACpE,OAAO,CAAC,UAAU,CAQhB;;IAUW,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IA4BrE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAkB5E,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YA6B1F,6BAA6B;IA+C9B,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAsChF,8BAA8B;IAmB/B,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAoCzE;AAED,eAAO,MAAM,sBAAsB,wBAAwC,CAAC"}
@@ -59,9 +59,6 @@ let FeaturedSettingService = class FeaturedSettingService {
59
59
  enum_1.ItemType.COFFEE,
60
60
  enum_1.ItemType.FLOWER,
61
61
  enum_1.ItemType.PET,
62
- enum_1.ItemType.WELLNESS,
63
- enum_1.ItemType.ELECTRONICS,
64
- enum_1.ItemType.BEAUTY,
65
62
  ];
66
63
  constructor() {
67
64
  this.model = models_1.FeaturedSettingModel;
@@ -1 +1 @@
1
- {"version":3,"file":"featured-setting.service.js","sourceRoot":"/","sources":["modules/featured-setting/services/featured-setting.service.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, { Service } from 'typedi';\nimport { TRPCError } from '@trpc/server';\nimport { DocumentType, mongoose, ReturnModelType } from '@typegoose/typegoose';\nimport { FilterDTO, PaginatedResponse, DeleteDTO } from '@lyxa.ai/core/dist/utilities/validation';\nimport { createRawDocumentPaginatorObject, PaginatorOptions } from '@lyxa.ai/core/dist/utilities/pagination';\nimport { ModelType } from '@typegoose/typegoose/lib/types';\nimport { FeaturedSettingModel, FeaturedSetting as Model } from '@lyxa.ai/core/dist/libraries/mongo/models/';\nimport {\n\tCreateFeaturedSettingDTO as CreateDTO,\n\tUpdateFeaturedSettingDTO as UpdateDTO,\n} from '@modules/featured-setting/validations';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { publishEvent } from '@lyxa.ai/core/dist/libraries/event';\nimport { BaseEvent } from '@lyxa.ai/core/dist/libraries/event/BaseEvent';\nimport { AdminActivityLogsEvent } from '@lyxa.ai/core/dist/libraries/event/events/admin-logs-event';\nimport { AdminLogsUpdatedFieldsType, ItemType, Status } from '@lyxa.ai/core/dist/utilities/enum';\n\n@Service()\nexport class FeaturedSettingService {\n\tprivate model: typeof FeaturedSettingModel & SoftDeleteModel<Model>;\n\tprivate ITEM_TYPES = [\n\t\tItemType.FOOD,\n\t\tItemType.GROCERY,\n\t\tItemType.COFFEE,\n\t\tItemType.FLOWER,\n\t\tItemType.PET,\n\t\t// ItemType.PHARMACY,\n\t\t// ItemType.HEALTHY_CORNER,\n\t\tItemType.WELLNESS,\n\t\tItemType.ELECTRONICS,\n\t\tItemType.BEAUTY,\n\t];\n\n\tconstructor() {\n\t\tthis.model = FeaturedSettingModel as typeof FeaturedSettingModel & SoftDeleteModel<Model>;\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, admin?: string): Promise<DocumentType<Model>> {\n\t\tconst exists = await this.model.exists({\n\t\t\titemType: data.itemType,\n\t\t});\n\t\tif (exists) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'CONFLICT',\n\t\t\t\tmessage: `Featured settings for itemType ${data.itemType} already exists. Please update the existing settings.`,\n\t\t\t});\n\t\t}\n\t\tconst result = await this.model.create(data);\n\n\t\tif (admin) {\n\t\t\tthis.logMarketingSettingAdminAction(\n\t\t\t\tnew mongoose.Types.ObjectId(admin),\n\t\t\t\tAdminLogsUpdatedFieldsType.CREATED_MARKETING_SETTINGS,\n\t\t\t\t'',\n\t\t\t\tresult\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Get record by ID\n\t * @param id ID of the record\n\t */\n\tpublic async findById(id: string | mongoose.Types.ObjectId): Promise<DocumentType<Model>> {\n\t\tconst result = await this.model.findOne({\n\t\t\t_id: id,\n\t\t\tdeletedAt: null,\n\t\t});\n\t\tif (!result) {\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\t\treturn result;\n\t}\n\n\t/**\n\t * Get records\n\t * @param query Query to find records\n\t */\n\tpublic async find(data?: Partial<FilterDTO>): Promise<PaginatedResponse<DocumentType<ModelType<Model>>>> {\n\t\ttry {\n\t\t\tconst paginate = createRawDocumentPaginatorObject(this.model as ReturnModelType<typeof this.model>);\n\t\t\tconst options: PaginatorOptions<typeof Model> = {\n\t\t\t\tpage: data?.page,\n\t\t\t\tsize: data?.size,\n\t\t\t\tsort: data?.sort,\n\t\t\t\tquery: data?.query,\n\t\t\t\tselect: data?.select,\n\t\t\t\tpopulate: data?.populate,\n\t\t\t};\n\t\t\tlet paginatedResult = await paginate(options);\n\n\t\t\tif (!data?.query && paginatedResult.metadata.totalElements < this.ITEM_TYPES.length) {\n\t\t\t\tawait this.createDefaultFeaturedSettings(\n\t\t\t\t\tpaginatedResult.documents as unknown as DocumentType<Model>[]\n\t\t\t\t);\n\t\t\t\tpaginatedResult = await paginate(options);\n\t\t\t}\n\n\t\t\treturn paginatedResult;\n\t\t} catch (err) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: `err: ${err}`,\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate async createDefaultFeaturedSettings(documents: DocumentType<Model>[]): Promise<void> {\n\t\tconst existingItemTypes = documents.map(setting => setting.itemType);\n\t\tconst newItemTypes = this.ITEM_TYPES.filter(item => !existingItemTypes.includes(item));\n\t\tconst defaultSetting = {\n\t\t\tfeaturedItems: [\n\t\t\t\t{\n\t\t\t\t\tdurationInDays: 3,\n\t\t\t\t\tamount: 0,\n\t\t\t\t\tstatus: Status.INACTIVE,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tdurationInDays: 7,\n\t\t\t\t\tamount: 0,\n\t\t\t\t\tstatus: Status.INACTIVE,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tdurationInDays: 14,\n\t\t\t\t\tamount: 0,\n\t\t\t\t\tstatus: Status.INACTIVE,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tdurationInDays: 21,\n\t\t\t\t\tamount: 0,\n\t\t\t\t\tstatus: Status.INACTIVE,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tdurationInDays: 28,\n\t\t\t\t\tamount: 0,\n\t\t\t\t\tstatus: Status.INACTIVE,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tfor (const item of newItemTypes) {\n\t\t\tawait this.create({\n\t\t\t\t...defaultSetting,\n\t\t\t\titemType: item as ItemType,\n\t\t\t});\n\t\t}\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 * @param admin Admin id\n\t */\n\tpublic async update(id: string, data: UpdateDTO, admin?: string): Promise<DocumentType<Model>> {\n\t\tif (!admin) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: `Admin not found`,\n\t\t\t});\n\t\t}\n\n\t\tconst record = await this.model.findById(id);\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\tconst result = await this.model.findByIdAndUpdate(id, data, {\n\t\t\tnew: true,\n\t\t\trunValidators: true,\n\t\t});\n\n\t\tif (!result) {\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\tthis.logMarketingSettingAdminAction(\n\t\t\tnew mongoose.Types.ObjectId(admin),\n\t\t\tAdminLogsUpdatedFieldsType.CHANGE_IN_MARKETING_SETTINGS,\n\t\t\trecord,\n\t\t\tresult\n\t\t);\n\n\t\treturn result;\n\t}\n\n\tprivate async logMarketingSettingAdminAction(\n\t\tadmin: mongoose.Types.ObjectId,\n\t\tactionType: AdminLogsUpdatedFieldsType,\n\t\toldDocument?: any,\n\t\tnewDocument?: any\n\t) {\n\t\tconst adminActivityLogsEvent: BaseEvent<Record<string, unknown>> = new AdminActivityLogsEvent({\n\t\t\tadmin,\n\t\t\tupdatedField: actionType,\n\t\t\toldDocument: oldDocument ?? '',\n\t\t\tnewDocument: newDocument ?? '',\n\t\t});\n\t\tawait publishEvent(adminActivityLogsEvent);\n\t}\n\n\t/**\n\t * Delete record\n\t * @param data Data for delete\n\t */\n\tpublic async deleteById(data: DeleteDTO, admin?: string): Promise<string> {\n\t\tconst { _id, softDelete } = data;\n\n\t\tif (!admin) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Admin not found',\n\t\t\t});\n\t\t}\n\n\t\tconst record = await this.model.findById(_id);\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\tconst result = await this.model.deleteRecord({ _id, deletedAt: null }, softDelete);\n\t\tif (!result) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Unable to delete record',\n\t\t\t});\n\t\t}\n\n\t\tthis.logMarketingSettingAdminAction(\n\t\t\tnew mongoose.Types.ObjectId(admin),\n\t\t\tAdminLogsUpdatedFieldsType.DELETED_MARKETING_SETTINGS,\n\t\t\trecord,\n\t\t\tresult\n\t\t);\n\n\t\treturn 'Record deleted successfully';\n\t}\n}\n\nexport const featuredSettingService = Container.get(FeaturedSettingService);\n"]}
1
+ {"version":3,"file":"featured-setting.service.js","sourceRoot":"/","sources":["modules/featured-setting/services/featured-setting.service.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, { Service } from 'typedi';\nimport { TRPCError } from '@trpc/server';\nimport { DocumentType, mongoose, ReturnModelType } from '@typegoose/typegoose';\nimport { FilterDTO, PaginatedResponse, DeleteDTO } from '@lyxa.ai/core/dist/utilities/validation';\nimport { createRawDocumentPaginatorObject, PaginatorOptions } from '@lyxa.ai/core/dist/utilities/pagination';\nimport { ModelType } from '@typegoose/typegoose/lib/types';\nimport { FeaturedSettingModel, FeaturedSetting as Model } from '@lyxa.ai/core/dist/libraries/mongo/models/';\nimport {\n\tCreateFeaturedSettingDTO as CreateDTO,\n\tUpdateFeaturedSettingDTO as UpdateDTO,\n} from '@modules/featured-setting/validations';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { publishEvent } from '@lyxa.ai/core/dist/libraries/event';\nimport { BaseEvent } from '@lyxa.ai/core/dist/libraries/event/BaseEvent';\nimport { AdminActivityLogsEvent } from '@lyxa.ai/core/dist/libraries/event/events/admin-logs-event';\nimport { AdminLogsUpdatedFieldsType, ItemType, Status } from '@lyxa.ai/core/dist/utilities/enum';\n\n@Service()\nexport class FeaturedSettingService {\n\tprivate model: typeof FeaturedSettingModel & SoftDeleteModel<Model>;\n\tprivate ITEM_TYPES = [\n\t\tItemType.FOOD,\n\t\tItemType.GROCERY,\n\t\tItemType.COFFEE,\n\t\tItemType.FLOWER,\n\t\tItemType.PET,\n\t\t// ItemType.PHARMACY,\n\t\t// ItemType.HEALTHY_CORNER,\n\t];\n\n\tconstructor() {\n\t\tthis.model = FeaturedSettingModel as typeof FeaturedSettingModel & SoftDeleteModel<Model>;\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, admin?: string): Promise<DocumentType<Model>> {\n\t\tconst exists = await this.model.exists({\n\t\t\titemType: data.itemType,\n\t\t});\n\t\tif (exists) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'CONFLICT',\n\t\t\t\tmessage: `Featured settings for itemType ${data.itemType} already exists. Please update the existing settings.`,\n\t\t\t});\n\t\t}\n\t\tconst result = await this.model.create(data);\n\n\t\tif (admin) {\n\t\t\tthis.logMarketingSettingAdminAction(\n\t\t\t\tnew mongoose.Types.ObjectId(admin),\n\t\t\t\tAdminLogsUpdatedFieldsType.CREATED_MARKETING_SETTINGS,\n\t\t\t\t'',\n\t\t\t\tresult\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Get record by ID\n\t * @param id ID of the record\n\t */\n\tpublic async findById(id: string | mongoose.Types.ObjectId): Promise<DocumentType<Model>> {\n\t\tconst result = await this.model.findOne({\n\t\t\t_id: id,\n\t\t\tdeletedAt: null,\n\t\t});\n\t\tif (!result) {\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\t\treturn result;\n\t}\n\n\t/**\n\t * Get records\n\t * @param query Query to find records\n\t */\n\tpublic async find(data?: Partial<FilterDTO>): Promise<PaginatedResponse<DocumentType<ModelType<Model>>>> {\n\t\ttry {\n\t\t\tconst paginate = createRawDocumentPaginatorObject(this.model as ReturnModelType<typeof this.model>);\n\t\t\tconst options: PaginatorOptions<typeof Model> = {\n\t\t\t\tpage: data?.page,\n\t\t\t\tsize: data?.size,\n\t\t\t\tsort: data?.sort,\n\t\t\t\tquery: data?.query,\n\t\t\t\tselect: data?.select,\n\t\t\t\tpopulate: data?.populate,\n\t\t\t};\n\t\t\tlet paginatedResult = await paginate(options);\n\n\t\t\tif (!data?.query && paginatedResult.metadata.totalElements < this.ITEM_TYPES.length) {\n\t\t\t\tawait this.createDefaultFeaturedSettings(\n\t\t\t\t\tpaginatedResult.documents as unknown as DocumentType<Model>[]\n\t\t\t\t);\n\t\t\t\tpaginatedResult = await paginate(options);\n\t\t\t}\n\n\t\t\treturn paginatedResult;\n\t\t} catch (err) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: `err: ${err}`,\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate async createDefaultFeaturedSettings(documents: DocumentType<Model>[]): Promise<void> {\n\t\tconst existingItemTypes = documents.map(setting => setting.itemType);\n\t\tconst newItemTypes = this.ITEM_TYPES.filter(item => !existingItemTypes.includes(item));\n\t\tconst defaultSetting = {\n\t\t\tfeaturedItems: [\n\t\t\t\t{\n\t\t\t\t\tdurationInDays: 3,\n\t\t\t\t\tamount: 0,\n\t\t\t\t\tstatus: Status.INACTIVE,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tdurationInDays: 7,\n\t\t\t\t\tamount: 0,\n\t\t\t\t\tstatus: Status.INACTIVE,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tdurationInDays: 14,\n\t\t\t\t\tamount: 0,\n\t\t\t\t\tstatus: Status.INACTIVE,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tdurationInDays: 21,\n\t\t\t\t\tamount: 0,\n\t\t\t\t\tstatus: Status.INACTIVE,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tdurationInDays: 28,\n\t\t\t\t\tamount: 0,\n\t\t\t\t\tstatus: Status.INACTIVE,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\n\t\tfor (const item of newItemTypes) {\n\t\t\tawait this.create({\n\t\t\t\t...defaultSetting,\n\t\t\t\titemType: item as ItemType,\n\t\t\t});\n\t\t}\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 * @param admin Admin id\n\t */\n\tpublic async update(id: string, data: UpdateDTO, admin?: string): Promise<DocumentType<Model>> {\n\t\tif (!admin) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: `Admin not found`,\n\t\t\t});\n\t\t}\n\n\t\tconst record = await this.model.findById(id);\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\tconst result = await this.model.findByIdAndUpdate(id, data, {\n\t\t\tnew: true,\n\t\t\trunValidators: true,\n\t\t});\n\n\t\tif (!result) {\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\tthis.logMarketingSettingAdminAction(\n\t\t\tnew mongoose.Types.ObjectId(admin),\n\t\t\tAdminLogsUpdatedFieldsType.CHANGE_IN_MARKETING_SETTINGS,\n\t\t\trecord,\n\t\t\tresult\n\t\t);\n\n\t\treturn result;\n\t}\n\n\tprivate async logMarketingSettingAdminAction(\n\t\tadmin: mongoose.Types.ObjectId,\n\t\tactionType: AdminLogsUpdatedFieldsType,\n\t\toldDocument?: any,\n\t\tnewDocument?: any\n\t) {\n\t\tconst adminActivityLogsEvent: BaseEvent<Record<string, unknown>> = new AdminActivityLogsEvent({\n\t\t\tadmin,\n\t\t\tupdatedField: actionType,\n\t\t\toldDocument: oldDocument ?? '',\n\t\t\tnewDocument: newDocument ?? '',\n\t\t});\n\t\tawait publishEvent(adminActivityLogsEvent);\n\t}\n\n\t/**\n\t * Delete record\n\t * @param data Data for delete\n\t */\n\tpublic async deleteById(data: DeleteDTO, admin?: string): Promise<string> {\n\t\tconst { _id, softDelete } = data;\n\n\t\tif (!admin) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: 'Admin not found',\n\t\t\t});\n\t\t}\n\n\t\tconst record = await this.model.findById(_id);\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\tconst result = await this.model.deleteRecord({ _id, deletedAt: null }, softDelete);\n\t\tif (!result) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'INTERNAL_SERVER_ERROR',\n\t\t\t\tmessage: 'Unable to delete record',\n\t\t\t});\n\t\t}\n\n\t\tthis.logMarketingSettingAdminAction(\n\t\t\tnew mongoose.Types.ObjectId(admin),\n\t\t\tAdminLogsUpdatedFieldsType.DELETED_MARKETING_SETTINGS,\n\t\t\trecord,\n\t\t\tresult\n\t\t);\n\n\t\treturn 'Record deleted successfully';\n\t}\n}\n\nexport const featuredSettingService = Container.get(FeaturedSettingService);\n"]}
@@ -19,9 +19,7 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
19
19
  startDate: string | Date;
20
20
  endDate: string | Date;
21
21
  title?: string | undefined;
22
- campaignType?: import("@lyxa.ai/core/dist/utilities/enum").MarketingType | undefined;
23
22
  subTitle?: string | undefined;
24
- repeatDays?: number[] | undefined;
25
23
  };
26
24
  output: {
27
25
  message: string;
@@ -36,10 +34,9 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
36
34
  updatedAt?: Date | null | undefined;
37
35
  title?: string | undefined;
38
36
  subTitle?: string | undefined;
39
- repeatDays?: number[] | undefined;
37
+ archivedAt?: Date | null | undefined;
40
38
  discountOptions?: number[] | undefined;
41
39
  maxDiscountCaps?: number[] | undefined;
42
- archivedAt?: Date | null | undefined;
43
40
  } | {
44
41
  documents: {
45
42
  status: import("@lyxa.ai/core/dist/utilities/enum").LimitedTimeOfferCampaignStatus;
@@ -51,10 +48,9 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
51
48
  updatedAt?: Date | null | undefined;
52
49
  title?: string | undefined;
53
50
  subTitle?: string | undefined;
54
- repeatDays?: number[] | undefined;
51
+ archivedAt?: Date | null | undefined;
55
52
  discountOptions?: number[] | undefined;
56
53
  maxDiscountCaps?: number[] | undefined;
57
- archivedAt?: Date | null | undefined;
58
54
  }[];
59
55
  metadata?: {
60
56
  size: number;
@@ -81,10 +77,9 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
81
77
  updatedAt?: Date | null | undefined;
82
78
  title?: string | undefined;
83
79
  subTitle?: string | undefined;
84
- repeatDays?: number[] | undefined;
80
+ archivedAt?: Date | null | undefined;
85
81
  discountOptions?: number[] | undefined;
86
82
  maxDiscountCaps?: number[] | undefined;
87
- archivedAt?: Date | null | undefined;
88
83
  } | {
89
84
  documents: ({
90
85
  status: import("@lyxa.ai/core/dist/utilities/enum").LimitedTimeOfferCampaignStatus;
@@ -96,10 +91,9 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
96
91
  updatedAt?: Date | null | undefined;
97
92
  title?: string | undefined;
98
93
  subTitle?: string | undefined;
99
- repeatDays?: number[] | undefined;
94
+ archivedAt?: Date | null | undefined;
100
95
  discountOptions?: number[] | undefined;
101
96
  maxDiscountCaps?: number[] | undefined;
102
- archivedAt?: Date | null | undefined;
103
97
  } | null)[];
104
98
  metadata?: {
105
99
  size: number;
@@ -128,10 +122,9 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
128
122
  updatedAt?: Date | null | undefined;
129
123
  title?: string | undefined;
130
124
  subTitle?: string | undefined;
131
- repeatDays?: number[] | undefined;
125
+ archivedAt?: Date | null | undefined;
132
126
  discountOptions?: number[] | undefined;
133
127
  maxDiscountCaps?: number[] | undefined;
134
- archivedAt?: Date | null | undefined;
135
128
  } | {
136
129
  documents: {
137
130
  status: import("@lyxa.ai/core/dist/utilities/enum").LimitedTimeOfferCampaignStatus;
@@ -143,10 +136,9 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
143
136
  updatedAt?: Date | null | undefined;
144
137
  title?: string | undefined;
145
138
  subTitle?: string | undefined;
146
- repeatDays?: number[] | undefined;
139
+ archivedAt?: Date | null | undefined;
147
140
  discountOptions?: number[] | undefined;
148
141
  maxDiscountCaps?: number[] | undefined;
149
- archivedAt?: Date | null | undefined;
150
142
  }[];
151
143
  metadata?: {
152
144
  size: number;
@@ -202,7 +194,6 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
202
194
  endDate: string | Date;
203
195
  title?: string | undefined;
204
196
  subTitle?: string | undefined;
205
- repeatDays?: number[] | undefined;
206
197
  discountOptions?: number[] | undefined;
207
198
  maxDiscountCaps?: number[] | undefined;
208
199
  confirmActive?: boolean | undefined;
@@ -220,10 +211,9 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
220
211
  updatedAt?: Date | null | undefined;
221
212
  title?: string | undefined;
222
213
  subTitle?: string | undefined;
223
- repeatDays?: number[] | undefined;
214
+ archivedAt?: Date | null | undefined;
224
215
  discountOptions?: number[] | undefined;
225
216
  maxDiscountCaps?: number[] | undefined;
226
- archivedAt?: Date | null | undefined;
227
217
  } | {
228
218
  documents: {
229
219
  status: import("@lyxa.ai/core/dist/utilities/enum").LimitedTimeOfferCampaignStatus;
@@ -235,10 +225,9 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
235
225
  updatedAt?: Date | null | undefined;
236
226
  title?: string | undefined;
237
227
  subTitle?: string | undefined;
238
- repeatDays?: number[] | undefined;
228
+ archivedAt?: Date | null | undefined;
239
229
  discountOptions?: number[] | undefined;
240
230
  maxDiscountCaps?: number[] | undefined;
241
- archivedAt?: Date | null | undefined;
242
231
  }[];
243
232
  metadata?: {
244
233
  size: number;
@@ -282,41 +271,6 @@ export declare const campaignRouter: import("@trpc/server").TRPCBuiltRouter<{
282
271
  };
283
272
  meta: object;
284
273
  }>;
285
- getSessions: import("@trpc/server").TRPCQueryProcedure<{
286
- input: {
287
- campaignId: string | import("mongoose").Types.ObjectId;
288
- page?: number | undefined;
289
- size?: number | undefined;
290
- };
291
- output: {
292
- message: string;
293
- success: boolean;
294
- data?: {
295
- _id: string | import("mongoose").Types.ObjectId;
296
- startDate: Date;
297
- endDate: Date;
298
- shopCount: number;
299
- archivedAt: Date;
300
- campaign: string | import("mongoose").Types.ObjectId;
301
- } | {
302
- documents: {
303
- _id: string | import("mongoose").Types.ObjectId;
304
- startDate: Date;
305
- endDate: Date;
306
- shopCount: number;
307
- archivedAt: Date;
308
- campaign: string | import("mongoose").Types.ObjectId;
309
- }[];
310
- metadata?: {
311
- size: number;
312
- page: number;
313
- totalElements: number;
314
- totalPages: number;
315
- } | undefined;
316
- } | undefined;
317
- };
318
- meta: object;
319
- }>;
320
274
  cancel: import("@trpc/server").TRPCMutationProcedure<{
321
275
  input: {
322
276
  campaignId: string | import("mongoose").Types.ObjectId;
@@ -1 +1 @@
1
- {"version":3,"file":"campaign.router.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/campaign.router.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqFzB,CAAC"}
1
+ {"version":3,"file":"campaign.router.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/campaign.router.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEzB,CAAC"}
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.campaignRouter = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const limited_time_offer_campaign_service_1 = require("./services/limited-time-offer-campaign.service");
6
- const limited_time_offer_campaign_session_service_1 = require("../../limited-time-offer/session/limited-time-offer-campaign-session.service");
7
6
  const limited_time_offer_campaign_validation_1 = require("./limited-time-offer-campaign.validation");
8
7
  const trpc_1 = require("@lyxa.ai/core/dist/libraries/trpc");
9
8
  const auth_1 = require("@lyxa.ai/core/dist/libraries/trpc/middlewares/auth");
@@ -12,7 +11,6 @@ const error_handler_1 = require("@lyxa.ai/core/dist/utilities/error-handler");
12
11
  const response_1 = require("@lyxa.ai/core/dist/utilities/response");
13
12
  const validation_1 = require("@lyxa.ai/core/dist/utilities/validation");
14
13
  const limited_time_offer_service_1 = require("../../limited-time-offer/limited-time-offer.service");
15
- const feature_flags_1 = require("../../../utility/feature-flags");
16
14
  const crmProcedure = (0, auth_1.createAuthenticatedProcedure)({ entityTypes: [enum_1.AuthEntityType.CRM] });
17
15
  exports.campaignRouter = (0, trpc_1.createTRPCRouter)({
18
16
  create: crmProcedure
@@ -56,17 +54,6 @@ exports.campaignRouter = (0, trpc_1.createTRPCRouter)({
56
54
  const result = await limited_time_offer_service_1.limitedTimeOfferService.getActiveCampaign(input);
57
55
  return (0, response_1.response)('Active campaign fetched successfully', result);
58
56
  })),
59
- getSessions: crmProcedure
60
- .input(limited_time_offer_campaign_validation_1.GetLtoCampaignSessionsSchema)
61
- .output(limited_time_offer_campaign_validation_1.LtoCampaignSessionsResponseSchema)
62
- .query(async ({ input }) => error_handler_1.ErrorHandler.wrapAsync(async () => {
63
- await (0, feature_flags_1.assertLtoScheduleEnabled)();
64
- const { documents, total } = await limited_time_offer_campaign_session_service_1.ltoCampaignSessionService.getSessionsByCampaign(input.campaignId, input.page, input.size);
65
- return (0, response_1.response)('Campaign sessions fetched successfully', {
66
- documents,
67
- metadata: { page: input.page, size: input.size, totalElements: total, totalPages: Math.ceil(total / input.size) },
68
- });
69
- })),
70
57
  cancel: crmProcedure
71
58
  .input(zod_1.z.object({ campaignId: validation_1.ZodValidation.objectId() }))
72
59
  .output(limited_time_offer_campaign_validation_1.LtoEmptyResponseSchema)
@@ -1 +1 @@
1
- {"version":3,"file":"campaign.router.js","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/campaign.router.ts"],"names":[],"mappings":"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","sourcesContent":["import {z} from 'zod';\nimport {ltoCampaignService as service} from './services/limited-time-offer-campaign.service';\nimport {ltoCampaignSessionService as sessionService} from '@modules/limited-time-offer/session/limited-time-offer-campaign-session.service';\nimport {\n CreateLtoCampaignSchema,\n GetActiveCampaignSchema,\n GetLtoCampaignHistorySchema,\n GetLtoCampaignSessionsSchema,\n LtoActiveCampaignResponseSchema,\n LtoCampaignHistoryResponseSchema,\n LtoCampaignNullableResponseSchema,\n LtoCampaignResponseSchema,\n LtoCampaignSessionsResponseSchema,\n LtoEmptyResponseSchema,\n UpdateLtoCampaignSchema,\n} from './limited-time-offer-campaign.validation';\nimport {createTRPCRouter, publicProcedure} from '@lyxa.ai/core/dist/libraries/trpc';\nimport {createAuthenticatedProcedure} from '@lyxa.ai/core/dist/libraries/trpc/middlewares/auth';\nimport {AuthEntityType} from '@lyxa.ai/core/dist/utilities/enum';\nimport {ErrorHandler} from '@lyxa.ai/core/dist/utilities/error-handler';\nimport {response} from '@lyxa.ai/core/dist/utilities/response';\nimport {ZodValidation} from '@lyxa.ai/core/dist/utilities/validation';\nimport {limitedTimeOfferService as orchestrator} from '@modules/limited-time-offer/limited-time-offer.service';\nimport {assertLtoScheduleEnabled} from '@utility/feature-flags';\n\nconst crmProcedure = createAuthenticatedProcedure({entityTypes: [AuthEntityType.CRM]});\n\nexport const campaignRouter = createTRPCRouter({\n create: crmProcedure\n .input(CreateLtoCampaignSchema)\n .output(LtoCampaignResponseSchema)\n .mutation(async ({input}) =>\n ErrorHandler.wrapAsync(async () => {\n const result = await service.create(input);\n return response('Campaign created successfully', result);\n })\n ),\n\n getCurrent: createAuthenticatedProcedure({entityTypes: [AuthEntityType.CRM, AuthEntityType.SELLER]})\n .output(LtoCampaignNullableResponseSchema)\n .query(async () =>\n ErrorHandler.wrapAsync(async () => {\n const result = await service.getCurrent();\n return response('Current campaign fetched successfully', result);\n })\n ),\n\n getById: crmProcedure\n .input(z.object({campaignId: ZodValidation.objectId()}))\n .output(LtoCampaignResponseSchema)\n .query(async ({input}) =>\n ErrorHandler.wrapAsync(async () => {\n const result = await service.getById(input.campaignId);\n return response('Campaign fetched successfully', result);\n })\n ),\n\n getHistory: crmProcedure\n .input(GetLtoCampaignHistorySchema)\n .output(LtoCampaignHistoryResponseSchema)\n .query(async ({input}) =>\n ErrorHandler.wrapAsync(async () => {\n const result = await service.getHistory(input);\n return response('Campaign history fetched successfully', result);\n })\n ),\n\n update: crmProcedure\n .input(UpdateLtoCampaignSchema)\n .output(LtoCampaignResponseSchema)\n .mutation(async ({input}) =>\n ErrorHandler.wrapAsync(async () => {\n const result = await service.update(input);\n return response('Campaign updated successfully', result);\n })\n ),\n\n /** @deprecated use lto.getActive */\n getActive: publicProcedure\n .input(GetActiveCampaignSchema)\n .output(LtoActiveCampaignResponseSchema)\n .query(async ({input}) =>\n ErrorHandler.wrapAsync(async () => {\n const result = await orchestrator.getActiveCampaign(input);\n return response('Active campaign fetched successfully', result);\n })\n ),\n\n getSessions: crmProcedure\n .input(GetLtoCampaignSessionsSchema)\n .output(LtoCampaignSessionsResponseSchema)\n .query(async ({input}) =>\n ErrorHandler.wrapAsync(async () => {\n await assertLtoScheduleEnabled();\n const {documents, total} = await sessionService.getSessionsByCampaign(input.campaignId, input.page, input.size);\n return response('Campaign sessions fetched successfully', {\n documents,\n metadata: {page: input.page, size: input.size, totalElements: total, totalPages: Math.ceil(total / input.size)},\n });\n })\n ),\n\n /** @deprecated use lto.cancel */\n cancel: crmProcedure\n .input(z.object({campaignId: ZodValidation.objectId()}))\n .output(LtoEmptyResponseSchema)\n .mutation(async ({input}) =>\n ErrorHandler.wrapAsync(async () => {\n await orchestrator.cancelCampaign(input.campaignId);\n return response('Campaign cancelled successfully');\n })\n ),\n});\n"]}
1
+ {"version":3,"file":"campaign.router.js","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/campaign.router.ts"],"names":[],"mappings":"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","sourcesContent":["import {z} from 'zod';\nimport {ltoCampaignService as service} from './services/limited-time-offer-campaign.service';\nimport {\n CreateLtoCampaignSchema,\n GetActiveCampaignSchema,\n GetLtoCampaignHistorySchema,\n LtoActiveCampaignResponseSchema,\n LtoCampaignHistoryResponseSchema,\n LtoCampaignNullableResponseSchema,\n LtoCampaignResponseSchema,\n LtoEmptyResponseSchema,\n UpdateLtoCampaignSchema,\n} from './limited-time-offer-campaign.validation';\nimport {createTRPCRouter, publicProcedure} from '@lyxa.ai/core/dist/libraries/trpc';\nimport {createAuthenticatedProcedure} from '@lyxa.ai/core/dist/libraries/trpc/middlewares/auth';\nimport {AuthEntityType} from '@lyxa.ai/core/dist/utilities/enum';\nimport {ErrorHandler} from '@lyxa.ai/core/dist/utilities/error-handler';\nimport {response} from '@lyxa.ai/core/dist/utilities/response';\nimport {ZodValidation} from '@lyxa.ai/core/dist/utilities/validation';\nimport {limitedTimeOfferService as orchestrator} from '@modules/limited-time-offer/limited-time-offer.service';\n\nconst crmProcedure = createAuthenticatedProcedure({entityTypes: [AuthEntityType.CRM]});\n\nexport const campaignRouter = createTRPCRouter({\n create: crmProcedure\n .input(CreateLtoCampaignSchema)\n .output(LtoCampaignResponseSchema)\n .mutation(async ({input}) =>\n ErrorHandler.wrapAsync(async () => {\n const result = await service.create(input);\n return response('Campaign created successfully', result);\n })\n ),\n\n getCurrent: createAuthenticatedProcedure({entityTypes: [AuthEntityType.CRM, AuthEntityType.SELLER]})\n .output(LtoCampaignNullableResponseSchema)\n .query(async () =>\n ErrorHandler.wrapAsync(async () => {\n const result = await service.getCurrent();\n return response('Current campaign fetched successfully', result);\n })\n ),\n\n getById: crmProcedure\n .input(z.object({campaignId: ZodValidation.objectId()}))\n .output(LtoCampaignResponseSchema)\n .query(async ({input}) =>\n ErrorHandler.wrapAsync(async () => {\n const result = await service.getById(input.campaignId);\n return response('Campaign fetched successfully', result);\n })\n ),\n\n getHistory: crmProcedure\n .input(GetLtoCampaignHistorySchema)\n .output(LtoCampaignHistoryResponseSchema)\n .query(async ({input}) =>\n ErrorHandler.wrapAsync(async () => {\n const result = await service.getHistory(input);\n return response('Campaign history fetched successfully', result);\n })\n ),\n\n update: crmProcedure\n .input(UpdateLtoCampaignSchema)\n .output(LtoCampaignResponseSchema)\n .mutation(async ({input}) =>\n ErrorHandler.wrapAsync(async () => {\n const result = await service.update(input);\n return response('Campaign updated successfully', result);\n })\n ),\n\n /** @deprecated use lto.getActive */\n getActive: publicProcedure\n .input(GetActiveCampaignSchema)\n .output(LtoActiveCampaignResponseSchema)\n .query(async ({input}) =>\n ErrorHandler.wrapAsync(async () => {\n const result = await orchestrator.getActiveCampaign(input);\n return response('Active campaign fetched successfully', result);\n })\n ),\n\n /** @deprecated use lto.cancel */\n cancel: crmProcedure\n .input(z.object({campaignId: ZodValidation.objectId()}))\n .output(LtoEmptyResponseSchema)\n .mutation(async ({input}) =>\n ErrorHandler.wrapAsync(async () => {\n await orchestrator.cancelCampaign(input.campaignId);\n return response('Campaign cancelled successfully');\n })\n ),\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/jobs/index.ts"],"names":[],"mappings":"AAKA,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AAErD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKxD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/jobs/index.ts"],"names":[],"mappings":"AAEA,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AAErD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAExD"}
@@ -13,21 +13,12 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
13
13
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
- var __importDefault = (this && this.__importDefault) || function (mod) {
17
- return (mod && mod.__esModule) ? mod : { "default": mod };
18
- };
19
16
  Object.defineProperty(exports, "__esModule", { value: true });
20
17
  exports.startBullMQWorkers = startBullMQWorkers;
21
- const typedi_1 = __importDefault(require("typedi"));
22
18
  const limited_time_offer_campaign_worker_1 = require("./limited-time-offer-campaign.worker");
23
- const limited_time_offer_campaign_scheduler_service_1 = require("../services/limited-time-offer-campaign-scheduler.service");
24
- const feature_flags_1 = require("../../../../utility/feature-flags");
25
19
  __exportStar(require("./limited-time-offer-campaign.producer"), exports);
26
20
  __exportStar(require("./limited-time-offer-campaign.worker"), exports);
27
21
  async function startBullMQWorkers() {
28
22
  await limited_time_offer_campaign_worker_1.ltoCampaignQueueWorker.startWorker();
29
- if (await (0, feature_flags_1.isLtoScheduleEnabled)()) {
30
- await typedi_1.default.get(limited_time_offer_campaign_scheduler_service_1.LtoCampaignSchedulerService).rescheduleOrphanedRecurring();
31
- }
32
23
  }
33
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/jobs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAQA,gDAKC;AAbD,oDAA+B;AAC/B,6FAA8E;AAC9E,6HAAwG;AACxG,0DAA8D;AAE9D,yEAAuD;AACvD,uEAAqD;AAE9C,KAAK,UAAU,kBAAkB;IACpC,MAAM,2DAAsB,CAAC,WAAW,EAAE,CAAC;IAC3C,IAAI,MAAM,IAAA,oCAAoB,GAAE,EAAE,CAAC;QAC/B,MAAM,gBAAS,CAAC,GAAG,CAAC,2EAA2B,CAAC,CAAC,2BAA2B,EAAE,CAAC;IACnF,CAAC;AACL,CAAC","sourcesContent":["import Container from 'typedi';\nimport { ltoCampaignQueueWorker } from './limited-time-offer-campaign.worker';\nimport { LtoCampaignSchedulerService } from '../services/limited-time-offer-campaign-scheduler.service';\nimport { isLtoScheduleEnabled } from '@utility/feature-flags';\n\nexport * from './limited-time-offer-campaign.producer';\nexport * from './limited-time-offer-campaign.worker';\n\nexport async function startBullMQWorkers(): Promise<void> {\n await ltoCampaignQueueWorker.startWorker();\n if (await isLtoScheduleEnabled()) {\n await Container.get(LtoCampaignSchedulerService).rescheduleOrphanedRecurring();\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/jobs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAKA,gDAEC;AAPD,6FAA8E;AAE9E,yEAAuD;AACvD,uEAAqD;AAE9C,KAAK,UAAU,kBAAkB;IACpC,MAAM,2DAAsB,CAAC,WAAW,EAAE,CAAC;AAC/C,CAAC","sourcesContent":["import { ltoCampaignQueueWorker } from './limited-time-offer-campaign.worker';\n\nexport * from './limited-time-offer-campaign.producer';\nexport * from './limited-time-offer-campaign.worker';\n\nexport async function startBullMQWorkers(): Promise<void> {\n await ltoCampaignQueueWorker.startWorker();\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  export declare class LtoCampaignQueueWorker {
2
+ private lifecycle;
2
3
  constructor();
3
4
  startWorker(): Promise<void>;
4
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"limited-time-offer-campaign.worker.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.ts"],"names":[],"mappings":"AAMA,qBACa,sBAAsB;;IAGlB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAW5C;AAED,eAAO,MAAM,sBAAsB,wBAAwC,CAAC"}
1
+ {"version":3,"file":"limited-time-offer-campaign.worker.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.ts"],"names":[],"mappings":"AAOA,qBACa,sBAAsB;IAC/B,OAAO,CAAC,SAAS,CAA8B;;IAMlC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAW5C;AAED,eAAO,MAAM,sBAAsB,wBAAwC,CAAC"}
@@ -47,15 +47,19 @@ const typedi_1 = __importStar(require("typedi"));
47
47
  const typegoose_1 = require("@typegoose/typegoose");
48
48
  const core_1 = require("@lyxa.ai/core");
49
49
  const limited_time_offer_campaign_producer_1 = require("./limited-time-offer-campaign.producer");
50
+ const limited_time_offer_campaign_lifecycle_service_1 = require("../services/limited-time-offer-campaign-lifecycle.service");
50
51
  const limited_time_offer_service_1 = require("../../../limited-time-offer/limited-time-offer.service");
51
52
  let LtoCampaignQueueWorker = class LtoCampaignQueueWorker {
52
- constructor() { }
53
+ lifecycle;
54
+ constructor() {
55
+ this.lifecycle = typedi_1.default.get(limited_time_offer_campaign_lifecycle_service_1.LtoCampaignLifecycleService);
56
+ }
53
57
  async startWorker() {
54
58
  (0, core_1.getLibraries)().getBullMQService().createWorker(limited_time_offer_campaign_producer_1.LTO_CAMPAIGN_TRANSITIONS_QUEUE, async (job) => {
55
59
  const { campaignId: campaignIdStr } = job.data;
56
60
  const campaignId = new typegoose_1.mongoose.Types.ObjectId(campaignIdStr);
57
61
  if (job.name === limited_time_offer_campaign_producer_1.LtoCampaignJobName.ACTIVATE) {
58
- await limited_time_offer_service_1.limitedTimeOfferService.activateCampaign(campaignId);
62
+ await this.lifecycle.activateCampaign(campaignId);
59
63
  }
60
64
  else if (job.name === limited_time_offer_campaign_producer_1.LtoCampaignJobName.EXPIRE) {
61
65
  await limited_time_offer_service_1.limitedTimeOfferService.expireCampaign(campaignId);
@@ -1 +1 @@
1
- {"version":3,"file":"limited-time-offer-campaign.worker.js","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA4C;AAC5C,oDAAgD;AAChD,wCAA6C;AAC7C,iGAA4G;AAC5G,uGAAiG;AAG1F,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAC/B,gBAAe,CAAC;IAET,KAAK,CAAC,WAAW;QACpB,IAAA,mBAAY,GAAE,CAAC,gBAAgB,EAAE,CAAC,YAAY,CAAC,qEAA8B,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;YACvF,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,IAA8B,CAAC;YACzE,MAAM,UAAU,GAAG,IAAI,oBAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC9D,IAAI,GAAG,CAAC,IAAI,KAAK,yDAAkB,CAAC,QAAQ,EAAE,CAAC;gBAC3C,MAAM,oDAAuB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAC/D,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,yDAAkB,CAAC,MAAM,EAAE,CAAC;gBAChD,MAAM,oDAAuB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC7D,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AAdY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,gBAAO,GAAE;;GACG,sBAAsB,CAclC;AAEY,QAAA,sBAAsB,GAAG,gBAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC","sourcesContent":["import Container, { Service } from 'typedi';\nimport { mongoose } from '@typegoose/typegoose';\nimport { getLibraries } from '@lyxa.ai/core';\nimport { LTO_CAMPAIGN_TRANSITIONS_QUEUE, LtoCampaignJobName } from './limited-time-offer-campaign.producer';\nimport { limitedTimeOfferService } from '@modules/limited-time-offer/limited-time-offer.service';\n\n@Service()\nexport class LtoCampaignQueueWorker {\n constructor() {}\n\n public async startWorker(): Promise<void> {\n getLibraries().getBullMQService().createWorker(LTO_CAMPAIGN_TRANSITIONS_QUEUE, async job => {\n const { campaignId: campaignIdStr } = job.data as { campaignId: string };\n const campaignId = new mongoose.Types.ObjectId(campaignIdStr);\n if (job.name === LtoCampaignJobName.ACTIVATE) {\n await limitedTimeOfferService.activateCampaign(campaignId);\n } else if (job.name === LtoCampaignJobName.EXPIRE) {\n await limitedTimeOfferService.expireCampaign(campaignId);\n }\n });\n }\n}\n\nexport const ltoCampaignQueueWorker = Container.get(LtoCampaignQueueWorker);\n"]}
1
+ {"version":3,"file":"limited-time-offer-campaign.worker.js","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/jobs/limited-time-offer-campaign.worker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA4C;AAC5C,oDAAgD;AAChD,wCAA6C;AAC7C,iGAA4G;AAC5G,6HAAwG;AACxG,uGAAiG;AAG1F,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACvB,SAAS,CAA8B;IAE/C;QACI,IAAI,CAAC,SAAS,GAAG,gBAAS,CAAC,GAAG,CAAC,2EAA2B,CAAC,CAAC;IAChE,CAAC;IAEM,KAAK,CAAC,WAAW;QACpB,IAAA,mBAAY,GAAE,CAAC,gBAAgB,EAAE,CAAC,YAAY,CAAC,qEAA8B,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;YACvF,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,IAA8B,CAAC;YACzE,MAAM,UAAU,GAAG,IAAI,oBAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC9D,IAAI,GAAG,CAAC,IAAI,KAAK,yDAAkB,CAAC,QAAQ,EAAE,CAAC;gBAC3C,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,yDAAkB,CAAC,MAAM,EAAE,CAAC;gBAChD,MAAM,oDAAuB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC7D,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AAlBY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,gBAAO,GAAE;;GACG,sBAAsB,CAkBlC;AAEY,QAAA,sBAAsB,GAAG,gBAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC","sourcesContent":["import Container, { Service } from 'typedi';\nimport { mongoose } from '@typegoose/typegoose';\nimport { getLibraries } from '@lyxa.ai/core';\nimport { LTO_CAMPAIGN_TRANSITIONS_QUEUE, LtoCampaignJobName } from './limited-time-offer-campaign.producer';\nimport { LtoCampaignLifecycleService } from '../services/limited-time-offer-campaign-lifecycle.service';\nimport { limitedTimeOfferService } from '@modules/limited-time-offer/limited-time-offer.service';\n\n@Service()\nexport class LtoCampaignQueueWorker {\n private lifecycle: LtoCampaignLifecycleService;\n\n constructor() {\n this.lifecycle = Container.get(LtoCampaignLifecycleService);\n }\n\n public async startWorker(): Promise<void> {\n getLibraries().getBullMQService().createWorker(LTO_CAMPAIGN_TRANSITIONS_QUEUE, async job => {\n const { campaignId: campaignIdStr } = job.data as { campaignId: string };\n const campaignId = new mongoose.Types.ObjectId(campaignIdStr);\n if (job.name === LtoCampaignJobName.ACTIVATE) {\n await this.lifecycle.activateCampaign(campaignId);\n } else if (job.name === LtoCampaignJobName.EXPIRE) {\n await limitedTimeOfferService.expireCampaign(campaignId);\n }\n });\n }\n}\n\nexport const ltoCampaignQueueWorker = Container.get(LtoCampaignQueueWorker);\n"]}
@@ -1,21 +1,10 @@
1
1
  import { LimitedTimeOfferCampaign } from '@lyxa.ai/core/dist/libraries/mongo/models';
2
2
  import { LimitedTimeOfferCampaignStatus } from '@lyxa.ai/core/dist/utilities/enum';
3
3
  import { CreateLtoCampaignDTO, GetLtoCampaignHistoryDTO, UpdateLtoCampaignDTO } from './limited-time-offer-campaign.validation';
4
- export declare function nextOccurrenceDate(repeatDays: number[], refStart: Date, refEnd: Date): {
5
- startDate: Date;
6
- endDate: Date;
7
- };
8
4
  export declare class LtoCampaignQueryBuilder {
9
- static buildCreateInput(input: {
10
- dto: CreateLtoCampaignDTO;
11
- status: LimitedTimeOfferCampaignStatus;
12
- campaignNumber: number;
13
- config: {
14
- discountOptions: number[];
15
- maxDiscountCaps: number[];
16
- };
17
- startDate: Date;
18
- endDate: Date;
5
+ static buildCreateInput(dto: CreateLtoCampaignDTO, status: LimitedTimeOfferCampaignStatus, campaignNumber: number, config: {
6
+ discountOptions: number[];
7
+ maxDiscountCaps: number[];
19
8
  }): {
20
9
  campaignNumber: number;
21
10
  title: string | undefined;
@@ -25,11 +14,9 @@ export declare class LtoCampaignQueryBuilder {
25
14
  status: LimitedTimeOfferCampaignStatus;
26
15
  discountOptions: number[];
27
16
  maxDiscountCaps: number[];
28
- repeatDays: number[];
29
17
  };
30
18
  static buildUpdateInput(campaign: LimitedTimeOfferCampaign, dto: UpdateLtoCampaignDTO): {
31
19
  status: LimitedTimeOfferCampaignStatus;
32
- repeatDays?: number[] | undefined;
33
20
  maxDiscountCaps?: number[] | undefined;
34
21
  discountOptions?: number[] | undefined;
35
22
  title: string;
@@ -1 +1 @@
1
- {"version":3,"file":"limited-time-offer-campaign.builder.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,wBAAwB,EAAC,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAC,8BAA8B,EAAC,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAC,oBAAoB,EAAE,wBAAwB,EAAE,oBAAoB,EAAC,MAAM,0CAA0C,CAAC;AAE9H,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG;IAAC,SAAS,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAC,CAiBvH;AAaD,qBAAa,uBAAuB;IAChC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE;QAC3B,GAAG,EAAE,oBAAoB,CAAC;QAC1B,MAAM,EAAE,8BAA8B,CAAC;QACvC,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE;YAAC,eAAe,EAAE,MAAM,EAAE,CAAC;YAAC,eAAe,EAAE,MAAM,EAAE,CAAA;SAAC,CAAC;QAC/D,SAAS,EAAE,IAAI,CAAC;QAChB,OAAO,EAAE,IAAI,CAAC;KACjB;;;;;;;;;;;IAeD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,EAAE,GAAG,EAAE,oBAAoB;;;;;;;;;;IAerF,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,wBAAwB;;;;;;;IAIvD,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAI9C,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;CAGxD"}
1
+ {"version":3,"file":"limited-time-offer-campaign.builder.d.ts","sourceRoot":"/","sources":["modules/limited-time-offer/campaign/limited-time-offer-campaign.builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,wBAAwB,EAAC,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAC,8BAA8B,EAAC,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAC,oBAAoB,EAAE,wBAAwB,EAAE,oBAAoB,EAAC,MAAM,0CAA0C,CAAC;AAa9H,qBAAa,uBAAuB;IAChC,MAAM,CAAC,gBAAgB,CACnB,GAAG,EAAE,oBAAoB,EACzB,MAAM,EAAE,8BAA8B,EACtC,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE;QAAC,eAAe,EAAE,MAAM,EAAE,CAAC;QAAC,eAAe,EAAE,MAAM,EAAE,CAAA;KAAC;;;;;;;;;;IAclE,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,EAAE,GAAG,EAAE,oBAAoB;;;;;;;;;IAcrF,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,wBAAwB;;;;;;;IAIvD,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAI9C,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;CAGxD"}