@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
@@ -1 +1 @@
1
- {"version":3,"file":"product-marketing.service.js","sourceRoot":"/","sources":["modules/marketing/services/product-marketing.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 {\n\tMarketingModel,\n\tProductMarketingModel,\n\tProductMarketing as Model,\n\tProductModel,\n} from '@lyxa.ai/core/dist/libraries/mongo/models/';\nimport {\n\tBatchCreateProductMarketingsInputDTO,\n\tCreateProductMarketingDTO as CreateDTO,\n\tQueryProductMarketingDTO as QueryDTO,\n\tQueryMultipleProductMarketingDTO,\n\tUpdateProductMarketingDTO as UpdateDTO,\n} from '@modules/marketing/validations';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { FilterDTO, PaginatedResponse } 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 { MarketingCampaignType, MarketingStatus, ValueType } from '@lyxa.ai/core/dist/utilities/enum';\nimport {\n\tSynchronizeProductMarketingService,\n\tsynchronizeProductMarketingService,\n} from './synchronize-product-marketing.service';\nimport { badRequestError } from '@lyxa.ai/core/dist/utilities/error-common';\n\n@Service()\nexport class ProductMarketingService {\n\tprivate model: typeof ProductMarketingModel & SoftDeleteModel<Model>;\n\tprivate productModel: typeof ProductModel;\n\n\tprivate syncProductsMarketingInfoService: SynchronizeProductMarketingService;\n\n\tconstructor() {\n\t\tthis.model = ProductMarketingModel as typeof ProductMarketingModel & SoftDeleteModel<Model>;\n\t\tthis.productModel = ProductModel;\n\n\t\tthis.syncProductsMarketingInfoService = synchronizeProductMarketingService;\n\t}\n\n\t/**\n\t * Create a new record\n\t * @param data Data for the new record\n\t */\n\tpublic async create(data: CreateDTO): Promise<DocumentType<Model>> {\n\t\tconst result = await this.model.create(data);\n\t\tif (!result) badRequestError('Product marketing creation failed');\n\t\treturn result;\n\t}\n\n\t/**\n\t * Bulk create new records\n\t * @param data Data for the new records\n\t */\n\tpublic async bulkCreate(data: CreateDTO[]): Promise<void> {\n\t\tawait this.model.insertMany(data, { ordered: false });\n\t}\n\n\tpublic async bulkCreateFromCursor<T>(cursor: AsyncIterable<T>, mapper: (item: T) => any) {\n\t\tconst BATCH_SIZE = 500;\n\t\tconst batch = [];\n\n\t\tfor await (const item of cursor) {\n\t\t\tbatch.push(mapper(item));\n\n\t\t\tif (batch.length === BATCH_SIZE) {\n\t\t\t\tawait this.bulkCreate(batch);\n\t\t\t\tbatch.length = 0;\n\t\t\t}\n\t\t}\n\n\t\tif (batch.length) {\n\t\t\tawait this.bulkCreate(batch);\n\t\t}\n\t}\n\n\tpublic async bulkCreateFromArray<T>(items: Iterable<T>, mapper: (item: T) => any) {\n\t\tconst BATCH_SIZE = 500;\n\t\tconst batch = [];\n\n\t\tfor (const item of items) {\n\t\t\tbatch.push(mapper(item));\n\n\t\t\tif (batch.length === BATCH_SIZE) {\n\t\t\t\tawait this.bulkCreate(batch);\n\t\t\t\tbatch.length = 0;\n\t\t\t}\n\t\t}\n\n\t\tif (batch.length) {\n\t\t\tawait this.bulkCreate(batch);\n\t\t}\n\t}\n\n\tprivate async buildProductsMap(data: {\n\t\tproducts: {\n\t\t\tproduct: mongoose.Types.ObjectId;\n\t\t\tvalue?: number;\n\t\t\tvalueType?: ValueType | null;\n\t\t}[];\n\t\tisBuy1Get1: boolean;\n\t\tcategories?: mongoose.Types.ObjectId[];\n\t\tcategoryValue?: number;\n\t\tcategoryValueType?: ValueType;\n\t}): Promise<Record<string, { value?: number; valueType?: ValueType; isBuy1Get1?: boolean }>> {\n\t\tconst map: Record<string, { value?: number; valueType?: ValueType; isBuy1Get1?: boolean }> = {};\n\n\t\t// explicit products\n\t\tfor (const p of data.products || []) {\n\t\t\tif (data.isBuy1Get1) {\n\t\t\t\tmap[p.product.toString()] = {\n\t\t\t\t\tisBuy1Get1: true,\n\t\t\t\t};\n\t\t\t} else if (p.value !== undefined && p.valueType) {\n\t\t\t\tmap[p.product.toString()] = {\n\t\t\t\t\tvalue: Number(p.value),\n\t\t\t\t\tvalueType: p.valueType,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// category products\n\t\tif (data.categories?.length) {\n\t\t\tconst categoryProducts = await this.productModel\n\t\t\t\t.find({ shopCategory: { $in: data.categories } })\n\t\t\t\t.select('_id')\n\t\t\t\t.lean();\n\n\t\t\tfor (const p of categoryProducts) {\n\t\t\t\tconst id = p._id.toString();\n\t\t\t\tif (!map[id]) {\n\t\t\t\t\tif (data.isBuy1Get1) {\n\t\t\t\t\t\tmap[id.toString()] = {\n\t\t\t\t\t\t\tisBuy1Get1: true,\n\t\t\t\t\t\t};\n\t\t\t\t\t} else if (data.categoryValue !== undefined && data.categoryValueType) {\n\t\t\t\t\t\tmap[id] = {\n\t\t\t\t\t\t\tvalue: Number(data.categoryValue),\n\t\t\t\t\t\t\tvalueType: data.categoryValueType,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn map;\n\t}\n\n\tpublic async createProductMarketings(data: BatchCreateProductMarketingsInputDTO): Promise<void> {\n\t\tconst {\n\t\t\tshop,\n\t\t\tmarketingId,\n\t\t\tproducts,\n\t\t\tcategories,\n\t\t\tisEntireMenu,\n\t\t\tisAppliedByCompany,\n\t\t\tcategoryValue,\n\t\t\tcategoryValueType,\n\t\t\tvalue,\n\t\t\tvalueType,\n\t\t\tisBuy1Get1,\n\t\t} = data;\n\n\t\tif (isEntireMenu) {\n\t\t\tawait this.bulkCreateFromCursor(\n\t\t\t\tthis.productModel.find({ shop }).select('_id').lean().cursor(),\n\t\t\t\tproduct => ({\n\t\t\t\t\tmarketing: marketingId,\n\t\t\t\t\tproduct: product._id,\n\t\t\t\t\tvalue,\n\t\t\t\t\tvalueType,\n\t\t\t\t\tisAppliedByCompany,\n\t\t\t\t\tisBuy1Get1,\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst productsMap = await this.buildProductsMap({\n\t\t\tproducts: data.products,\n\t\t\tisBuy1Get1: data.isBuy1Get1,\n\t\t\tcategories: data.categories,\n\t\t\tcategoryValue: data.categoryValue,\n\t\t\tcategoryValueType: data.categoryValueType,\n\t\t});\n\n\t\tawait this.bulkCreateFromArray(Object.entries(productsMap), ([productId, info]) => ({\n\t\t\tmarketing: marketingId,\n\t\t\tproduct: new mongoose.Types.ObjectId(productId),\n\t\t\tvalue: info.value,\n\t\t\tvalueType: info.valueType,\n\t\t\tisAppliedByCompany,\n\t\t\tisBuy1Get1: info.isBuy1Get1,\n\t\t}));\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\tconst paginatedResult = await paginate(options);\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\t/**\n\t * Update single record based on query\n\t * @param query Query to find the record\n\t * @param data Data to update\n\t */\n\tpublic async updateOne(query: QueryDTO, data: UpdateDTO): Promise<string> {\n\t\tconst record = await this.model.findOneAndUpdate(query, data, {\n\t\t\tnew: true,\n\t\t\trunValidators: true,\n\t\t});\n\n\t\tif (!record) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: `Record not found`,\n\t\t\t});\n\t\t}\n\n\t\treturn 'Records updated successfully';\n\t}\n\n\t/**\n\t * Delete record\n\t * @param data Data for delete\n\t */\n\tpublic async deleteMany(filter: QueryDTO, softDelete: boolean): Promise<string> {\n\t\tconst productMarketings = await this.model.find(filter);\n\n\t\tawait this.model.deleteRecords(filter, softDelete);\n\n\t\tconst productIds: mongoose.Types.ObjectId[] = productMarketings\n\t\t\t.map((r: any) => r.product)\n\t\t\t.filter((p: any): p is mongoose.Types.ObjectId | string => !!p) // filter out null/undefined\n\t\t\t.map((p: any) => (p instanceof mongoose.Types.ObjectId ? p : new mongoose.Types.ObjectId(p))); // convert to ObjectId\n\n\t\tconst uniqueProductIds = [...new Set(productIds.map((id: any) => new mongoose.Types.ObjectId(id)))];\n\t\tawait this.syncProductsMarketingInfoService.syncProductMarketingInfoByProductIds(uniqueProductIds);\n\n\t\treturn 'Record deleted successfully';\n\t}\n\n\tpublic async deleteManyByMarketingIds(marketingIds: mongoose.Types.ObjectId[], softDelete: boolean): Promise<void> {\n\t\tif (marketingIds.length === 0) return;\n\n\t\tconst productMarketings = await this.model\n\t\t\t.find({ marketing: { $in: marketingIds } })\n\t\t\t.select('product')\n\t\t\t.lean();\n\n\t\tawait this.model.deleteRecords({ marketing: { $in: marketingIds } }, softDelete);\n\n\t\tconst uniqueProductIds = [\n\t\t\t...new Map(\n\t\t\t\tproductMarketings\n\t\t\t\t\t.map((r: any) => r.product)\n\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t.map((p: any) => {\n\t\t\t\t\t\tconst id = p instanceof mongoose.Types.ObjectId ? p : new mongoose.Types.ObjectId(p);\n\t\t\t\t\t\treturn [id.toString(), id] as [string, mongoose.Types.ObjectId];\n\t\t\t\t\t})\n\t\t\t).values(),\n\t\t];\n\n\t\tif (uniqueProductIds.length) {\n\t\t\tawait this.syncProductsMarketingInfoService.syncProductMarketingInfoByProductIds(uniqueProductIds);\n\t\t}\n\t}\n\n\tpublic async syncProductMarketingInfo(marketingId: mongoose.Types.ObjectId) {\n\t\tconst productMarketings = await this.model.find({ marketing: marketingId });\n\n\t\tconst productIds: mongoose.Types.ObjectId[] = productMarketings\n\t\t\t.map((r: any) => r.product)\n\t\t\t.filter((p: any): p is mongoose.Types.ObjectId | string => !!p) // filter out null/undefined\n\t\t\t.map((p: any) => (p instanceof mongoose.Types.ObjectId ? p : new mongoose.Types.ObjectId(p))); // convert to ObjectId\n\n\t\tawait this.syncProductsMarketingInfoService.syncProductMarketingInfoByProductIds(productIds);\n\t}\n\n\t/**\n\t * Delete record\n\t * @param data Data for delete\n\t */\n\tpublic async deleteMultipleProducts(\n\t\tfilter: QueryMultipleProductMarketingDTO,\n\t\tsoftDelete: boolean\n\t): Promise<string> {\n\t\tconst result = await this.model.deleteRecords(\n\t\t\t{\n\t\t\t\tmarketing: filter.marketing,\n\t\t\t\tproduct: { $in: filter.products },\n\t\t\t},\n\t\t\tsoftDelete\n\t\t);\n\t\t// sync\n\t\treturn 'Record deleted successfully';\n\t}\n\n\t/**\n\t * Check if products are available for marketing\n\t * @param products Array of product IDs\n\t */\n\tpublic async checkProductMarketingAvailability(\n\t\tproducts: mongoose.Types.ObjectId[],\n\t\tisAppliedByCompany?: boolean\n\t): Promise<boolean> {\n\t\tconst now = new Date();\n\n\t\tconst marketingMatch: any = {\n\t\t\t'marketingDoc.status': MarketingStatus.ACTIVE,\n\t\t\t'marketingDoc.duration.start': { $lt: now },\n\t\t\t'marketingDoc.duration.end': { $gt: now },\n\t\t};\n\n\t\t// Only add this filter if explicitly provided\n\t\tif (typeof isAppliedByCompany === 'boolean') {\n\t\t\tmarketingMatch['marketingDoc.isAppliedByCompany'] = isAppliedByCompany;\n\t\t}\n\n\t\tconst result = await this.model.aggregate([\n\t\t\t{\n\t\t\t\t$match: { product: { $in: products }, deletedAt: null },\n\t\t\t},\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: 'marketings',\n\t\t\t\t\tlocalField: 'marketing',\n\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\tas: 'marketingDoc',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ $unwind: '$marketingDoc' },\n\t\t\t{\n\t\t\t\t$match: marketingMatch,\n\t\t\t},\n\t\t\t{ $limit: 1 }, // stop as soon as one match is found\n\t\t]);\n\n\t\tconst anyExist = result.length > 0;\n\n\t\treturn !anyExist;\n\t}\n\n\t/**\n\t * Pause any standard (non-LTO) marketing already covering these products, so a\n\t * Limited Time Offer marketing can take them over instead of being blocked by it.\n\t * @param products Array of product IDs\n\t */\n\tpublic async pauseConflictingMarketings(\n\t\tproducts: mongoose.Types.ObjectId[]\n\t): Promise<mongoose.Types.ObjectId[]> {\n\t\tconst now = new Date();\n\n\t\tconst result = await this.model.aggregate([\n\t\t\t{\n\t\t\t\t$match: { product: { $in: products }, deletedAt: null },\n\t\t\t},\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: 'marketings',\n\t\t\t\t\tlocalField: 'marketing',\n\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\tas: 'marketingDoc',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ $unwind: '$marketingDoc' },\n\t\t\t{\n\t\t\t\t$match: {\n\t\t\t\t\t'marketingDoc.status': MarketingStatus.ACTIVE,\n\t\t\t\t\t'marketingDoc.duration.start': { $lt: now },\n\t\t\t\t\t'marketingDoc.duration.end': { $gt: now },\n\t\t\t\t\t'marketingDoc.campaignType': { $in: [MarketingCampaignType.STANDARD, null] },\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ $group: { _id: '$marketingDoc._id' } },\n\t\t]);\n\n\t\tconst marketingIds = result.map(r => r._id);\n\t\tif (!marketingIds.length) return [];\n\n\t\tawait MarketingModel.updateMany({ _id: { $in: marketingIds } }, { $set: { status: MarketingStatus.PAUSED } });\n\t\tawait synchronizeProductMarketingService.syncProductMarketingInfoByMarketingIds(marketingIds);\n\t\treturn marketingIds;\n\t}\n\n\tpublic async upsertProductMarketingsForPage(data: {\n\t\tshop: mongoose.Types.ObjectId;\n\t\tmarketingId: mongoose.Types.ObjectId;\n\t\tpage: number;\n\t\tpageSize: number;\n\t\tisAppliedByCompany: boolean;\n\t\tisBuy1Get1: boolean;\n\t\tvalue?: number;\n\t\tvalueType?: ValueType;\n\t}): Promise<mongoose.Types.ObjectId[]> {\n\t\tconst { shop, marketingId, page, pageSize, isAppliedByCompany, isBuy1Get1, value, valueType } = data;\n\n\t\tconst products = await this.productModel\n\t\t\t.find({ shop })\n\t\t\t.select('_id')\n\t\t\t.skip(page * pageSize)\n\t\t\t.limit(pageSize)\n\t\t\t.lean();\n\n\t\tif (!products.length) return [];\n\n\t\tconst ops = products.map(product => ({\n\t\t\tupdateOne: {\n\t\t\t\tfilter: { marketing: marketingId, product: product._id, deletedAt: null },\n\t\t\t\tupdate: {\n\t\t\t\t\t$set: { value, valueType, isAppliedByCompany, isBuy1Get1 },\n\t\t\t\t\t$setOnInsert: { marketing: marketingId, product: product._id },\n\t\t\t\t},\n\t\t\t\tupsert: true,\n\t\t\t},\n\t\t}));\n\n\t\tawait this.model.bulkWrite(ops);\n\n\t\treturn products.map(p => p._id as mongoose.Types.ObjectId);\n\t}\n\n\tpublic async countDocuments(filter: QueryDTO): Promise<number> {\n\t\tconst count = await this.model.countDocuments({ ...filter, deletedAt: null });\n\t\treturn count ?? 0;\n\t}\n}\n\nexport const productMarketingService = Container.get(ProductMarketingService);\n"]}
1
+ {"version":3,"file":"product-marketing.service.js","sourceRoot":"/","sources":["modules/marketing/services/product-marketing.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 {\n\tProductMarketingModel,\n\tProductMarketing as Model,\n\tProductModel,\n} from '@lyxa.ai/core/dist/libraries/mongo/models/';\nimport {\n\tBatchCreateProductMarketingsInputDTO,\n\tCreateProductMarketingDTO as CreateDTO,\n\tQueryProductMarketingDTO as QueryDTO,\n\tQueryMultipleProductMarketingDTO,\n\tUpdateProductMarketingDTO as UpdateDTO,\n} from '@modules/marketing/validations';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { FilterDTO, PaginatedResponse } 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 { MarketingStatus, ValueType } from '@lyxa.ai/core/dist/utilities/enum';\nimport {\n\tSynchronizeProductMarketingService,\n\tsynchronizeProductMarketingService,\n} from './synchronize-product-marketing.service';\nimport { badRequestError } from '@lyxa.ai/core/dist/utilities/error-common';\n\n@Service()\nexport class ProductMarketingService {\n\tprivate model: typeof ProductMarketingModel & SoftDeleteModel<Model>;\n\tprivate productModel: typeof ProductModel;\n\n\tprivate syncProductsMarketingInfoService: SynchronizeProductMarketingService;\n\n\tconstructor() {\n\t\tthis.model = ProductMarketingModel as typeof ProductMarketingModel & SoftDeleteModel<Model>;\n\t\tthis.productModel = ProductModel;\n\n\t\tthis.syncProductsMarketingInfoService = synchronizeProductMarketingService;\n\t}\n\n\t/**\n\t * Create a new record\n\t * @param data Data for the new record\n\t */\n\tpublic async create(data: CreateDTO): Promise<DocumentType<Model>> {\n\t\tconst result = await this.model.create(data);\n\t\tif (!result) badRequestError('Product marketing creation failed');\n\t\treturn result;\n\t}\n\n\t/**\n\t * Bulk create new records\n\t * @param data Data for the new records\n\t */\n\tpublic async bulkCreate(data: CreateDTO[]): Promise<void> {\n\t\tawait this.model.insertMany(data, { ordered: false });\n\t}\n\n\tpublic async bulkCreateFromCursor<T>(cursor: AsyncIterable<T>, mapper: (item: T) => any) {\n\t\tconst BATCH_SIZE = 500;\n\t\tconst batch = [];\n\n\t\tfor await (const item of cursor) {\n\t\t\tbatch.push(mapper(item));\n\n\t\t\tif (batch.length === BATCH_SIZE) {\n\t\t\t\tawait this.bulkCreate(batch);\n\t\t\t\tbatch.length = 0;\n\t\t\t}\n\t\t}\n\n\t\tif (batch.length) {\n\t\t\tawait this.bulkCreate(batch);\n\t\t}\n\t}\n\n\tpublic async bulkCreateFromArray<T>(items: Iterable<T>, mapper: (item: T) => any) {\n\t\tconst BATCH_SIZE = 500;\n\t\tconst batch = [];\n\n\t\tfor (const item of items) {\n\t\t\tbatch.push(mapper(item));\n\n\t\t\tif (batch.length === BATCH_SIZE) {\n\t\t\t\tawait this.bulkCreate(batch);\n\t\t\t\tbatch.length = 0;\n\t\t\t}\n\t\t}\n\n\t\tif (batch.length) {\n\t\t\tawait this.bulkCreate(batch);\n\t\t}\n\t}\n\n\tprivate async buildProductsMap(data: {\n\t\tproducts: {\n\t\t\tproduct: mongoose.Types.ObjectId;\n\t\t\tvalue?: number;\n\t\t\tvalueType?: ValueType | null;\n\t\t}[];\n\t\tisBuy1Get1: boolean;\n\t\tcategories?: mongoose.Types.ObjectId[];\n\t\tcategoryValue?: number;\n\t\tcategoryValueType?: ValueType;\n\t}): Promise<Record<string, { value?: number; valueType?: ValueType; isBuy1Get1?: boolean }>> {\n\t\tconst map: Record<string, { value?: number; valueType?: ValueType; isBuy1Get1?: boolean }> = {};\n\n\t\t// explicit products\n\t\tfor (const p of data.products || []) {\n\t\t\tif (data.isBuy1Get1) {\n\t\t\t\tmap[p.product.toString()] = {\n\t\t\t\t\tisBuy1Get1: true,\n\t\t\t\t};\n\t\t\t} else if (p.value !== undefined && p.valueType) {\n\t\t\t\tmap[p.product.toString()] = {\n\t\t\t\t\tvalue: Number(p.value),\n\t\t\t\t\tvalueType: p.valueType,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// category products\n\t\tif (data.categories?.length) {\n\t\t\tconst categoryProducts = await this.productModel\n\t\t\t\t.find({ shopCategory: { $in: data.categories } })\n\t\t\t\t.select('_id')\n\t\t\t\t.lean();\n\n\t\t\tfor (const p of categoryProducts) {\n\t\t\t\tconst id = p._id.toString();\n\t\t\t\tif (!map[id]) {\n\t\t\t\t\tif (data.isBuy1Get1) {\n\t\t\t\t\t\tmap[id.toString()] = {\n\t\t\t\t\t\t\tisBuy1Get1: true,\n\t\t\t\t\t\t};\n\t\t\t\t\t} else if (data.categoryValue !== undefined && data.categoryValueType) {\n\t\t\t\t\t\tmap[id] = {\n\t\t\t\t\t\t\tvalue: Number(data.categoryValue),\n\t\t\t\t\t\t\tvalueType: data.categoryValueType,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn map;\n\t}\n\n\tpublic async createProductMarketings(data: BatchCreateProductMarketingsInputDTO): Promise<void> {\n\t\tconst {\n\t\t\tshop,\n\t\t\tmarketingId,\n\t\t\tproducts,\n\t\t\tcategories,\n\t\t\tisEntireMenu,\n\t\t\tisAppliedByCompany,\n\t\t\tcategoryValue,\n\t\t\tcategoryValueType,\n\t\t\tvalue,\n\t\t\tvalueType,\n\t\t\tisBuy1Get1,\n\t\t} = data;\n\n\t\tif (isEntireMenu) {\n\t\t\tawait this.bulkCreateFromCursor(\n\t\t\t\tthis.productModel.find({ shop }).select('_id').lean().cursor(),\n\t\t\t\tproduct => ({\n\t\t\t\t\tmarketing: marketingId,\n\t\t\t\t\tproduct: product._id,\n\t\t\t\t\tvalue,\n\t\t\t\t\tvalueType,\n\t\t\t\t\tisAppliedByCompany,\n\t\t\t\t\tisBuy1Get1,\n\t\t\t\t})\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst productsMap = await this.buildProductsMap({\n\t\t\tproducts: data.products,\n\t\t\tisBuy1Get1: data.isBuy1Get1,\n\t\t\tcategories: data.categories,\n\t\t\tcategoryValue: data.categoryValue,\n\t\t\tcategoryValueType: data.categoryValueType,\n\t\t});\n\n\t\tawait this.bulkCreateFromArray(Object.entries(productsMap), ([productId, info]) => ({\n\t\t\tmarketing: marketingId,\n\t\t\tproduct: new mongoose.Types.ObjectId(productId),\n\t\t\tvalue: info.value,\n\t\t\tvalueType: info.valueType,\n\t\t\tisAppliedByCompany,\n\t\t\tisBuy1Get1: info.isBuy1Get1,\n\t\t}));\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\tconst paginatedResult = await paginate(options);\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\t/**\n\t * Update single record based on query\n\t * @param query Query to find the record\n\t * @param data Data to update\n\t */\n\tpublic async updateOne(query: QueryDTO, data: UpdateDTO): Promise<string> {\n\t\tconst record = await this.model.findOneAndUpdate(query, data, {\n\t\t\tnew: true,\n\t\t\trunValidators: true,\n\t\t});\n\n\t\tif (!record) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: `Record not found`,\n\t\t\t});\n\t\t}\n\n\t\treturn 'Records updated successfully';\n\t}\n\n\t/**\n\t * Delete record\n\t * @param data Data for delete\n\t */\n\tpublic async deleteMany(filter: QueryDTO, softDelete: boolean): Promise<string> {\n\t\tconst productMarketings = await this.model.find(filter);\n\n\t\tawait this.model.deleteRecords(filter, softDelete);\n\n\t\tconst productIds: mongoose.Types.ObjectId[] = productMarketings\n\t\t\t.map((r: any) => r.product)\n\t\t\t.filter((p: any): p is mongoose.Types.ObjectId | string => !!p) // filter out null/undefined\n\t\t\t.map((p: any) => (p instanceof mongoose.Types.ObjectId ? p : new mongoose.Types.ObjectId(p))); // convert to ObjectId\n\n\t\tconst uniqueProductIds = [...new Set(productIds.map((id: any) => new mongoose.Types.ObjectId(id)))];\n\t\tawait this.syncProductsMarketingInfoService.syncProductMarketingInfoByProductIds(uniqueProductIds);\n\n\t\treturn 'Record deleted successfully';\n\t}\n\n\tpublic async deleteManyByMarketingIds(marketingIds: mongoose.Types.ObjectId[], softDelete: boolean): Promise<void> {\n\t\tif (marketingIds.length === 0) return;\n\n\t\tconst productMarketings = await this.model\n\t\t\t.find({ marketing: { $in: marketingIds } })\n\t\t\t.select('product')\n\t\t\t.lean();\n\n\t\tawait this.model.deleteRecords({ marketing: { $in: marketingIds } }, softDelete);\n\n\t\tconst uniqueProductIds = [\n\t\t\t...new Map(\n\t\t\t\tproductMarketings\n\t\t\t\t\t.map((r: any) => r.product)\n\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t.map((p: any) => {\n\t\t\t\t\t\tconst id = p instanceof mongoose.Types.ObjectId ? p : new mongoose.Types.ObjectId(p);\n\t\t\t\t\t\treturn [id.toString(), id] as [string, mongoose.Types.ObjectId];\n\t\t\t\t\t})\n\t\t\t).values(),\n\t\t];\n\n\t\tif (uniqueProductIds.length) {\n\t\t\tawait this.syncProductsMarketingInfoService.syncProductMarketingInfoByProductIds(uniqueProductIds);\n\t\t}\n\t}\n\n\tpublic async syncProductMarketingInfo(marketingId: mongoose.Types.ObjectId) {\n\t\tconst productMarketings = await this.model.find({ marketing: marketingId });\n\n\t\tconst productIds: mongoose.Types.ObjectId[] = productMarketings\n\t\t\t.map((r: any) => r.product)\n\t\t\t.filter((p: any): p is mongoose.Types.ObjectId | string => !!p) // filter out null/undefined\n\t\t\t.map((p: any) => (p instanceof mongoose.Types.ObjectId ? p : new mongoose.Types.ObjectId(p))); // convert to ObjectId\n\n\t\tawait this.syncProductsMarketingInfoService.syncProductMarketingInfoByProductIds(productIds);\n\t}\n\n\t/**\n\t * Delete record\n\t * @param data Data for delete\n\t */\n\tpublic async deleteMultipleProducts(\n\t\tfilter: QueryMultipleProductMarketingDTO,\n\t\tsoftDelete: boolean\n\t): Promise<string> {\n\t\tconst result = await this.model.deleteRecords(\n\t\t\t{\n\t\t\t\tmarketing: filter.marketing,\n\t\t\t\tproduct: { $in: filter.products },\n\t\t\t},\n\t\t\tsoftDelete\n\t\t);\n\t\t// sync\n\t\treturn 'Record deleted successfully';\n\t}\n\n\t/**\n\t * Check if products are available for marketing\n\t * @param products Array of product IDs\n\t */\n\tpublic async checkProductMarketingAvailability(\n\t\tproducts: mongoose.Types.ObjectId[],\n\t\tisAppliedByCompany?: boolean\n\t): Promise<boolean> {\n\t\tconst now = new Date();\n\n\t\tconst marketingMatch: any = {\n\t\t\t'marketingDoc.status': MarketingStatus.ACTIVE,\n\t\t\t'marketingDoc.duration.start': { $lt: now },\n\t\t\t'marketingDoc.duration.end': { $gt: now },\n\t\t};\n\n\t\t// Only add this filter if explicitly provided\n\t\tif (typeof isAppliedByCompany === 'boolean') {\n\t\t\tmarketingMatch['marketingDoc.isAppliedByCompany'] = isAppliedByCompany;\n\t\t}\n\n\t\tconst result = await this.model.aggregate([\n\t\t\t{\n\t\t\t\t$match: { product: { $in: products }, deletedAt: null },\n\t\t\t},\n\t\t\t{\n\t\t\t\t$lookup: {\n\t\t\t\t\tfrom: 'marketings',\n\t\t\t\t\tlocalField: 'marketing',\n\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\tas: 'marketingDoc',\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ $unwind: '$marketingDoc' },\n\t\t\t{\n\t\t\t\t$match: marketingMatch,\n\t\t\t},\n\t\t\t{ $limit: 1 }, // stop as soon as one match is found\n\t\t]);\n\n\t\tconst anyExist = result.length > 0;\n\n\t\treturn !anyExist;\n\t}\n\n\tpublic async upsertProductMarketingsForPage(data: {\n\t\tshop: mongoose.Types.ObjectId;\n\t\tmarketingId: mongoose.Types.ObjectId;\n\t\tpage: number;\n\t\tpageSize: number;\n\t\tisAppliedByCompany: boolean;\n\t\tisBuy1Get1: boolean;\n\t\tvalue?: number;\n\t\tvalueType?: ValueType;\n\t}): Promise<mongoose.Types.ObjectId[]> {\n\t\tconst { shop, marketingId, page, pageSize, isAppliedByCompany, isBuy1Get1, value, valueType } = data;\n\n\t\tconst products = await this.productModel\n\t\t\t.find({ shop })\n\t\t\t.select('_id')\n\t\t\t.skip(page * pageSize)\n\t\t\t.limit(pageSize)\n\t\t\t.lean();\n\n\t\tif (!products.length) return [];\n\n\t\tconst ops = products.map(product => ({\n\t\t\tupdateOne: {\n\t\t\t\tfilter: { marketing: marketingId, product: product._id, deletedAt: null },\n\t\t\t\tupdate: {\n\t\t\t\t\t$set: { value, valueType, isAppliedByCompany, isBuy1Get1 },\n\t\t\t\t\t$setOnInsert: { marketing: marketingId, product: product._id },\n\t\t\t\t},\n\t\t\t\tupsert: true,\n\t\t\t},\n\t\t}));\n\n\t\tawait this.model.bulkWrite(ops);\n\n\t\treturn products.map(p => p._id as mongoose.Types.ObjectId);\n\t}\n\n\tpublic async countDocuments(filter: QueryDTO): Promise<number> {\n\t\tconst count = await this.model.countDocuments({ ...filter, deletedAt: null });\n\t\treturn count ?? 0;\n\t}\n}\n\nexport const productMarketingService = Container.get(ProductMarketingService);\n"]}
@@ -104,10 +104,10 @@ declare const PunchMarketingValidationSchema: z.ZodEffects<z.ZodObject<{
104
104
  end?: Date | undefined;
105
105
  };
106
106
  shop: import("mongoose").Types.ObjectId;
107
- minimumOrderValue: number;
108
107
  isAppliedByCompany: boolean;
109
108
  pausedAt: Date | null;
110
109
  marketingType: MarketingType.PUNCH_MARKETING;
110
+ minimumOrderValue: number;
111
111
  couponValueType: ValueType;
112
112
  couponValue: number;
113
113
  couponDurationInDays: number;
@@ -120,9 +120,9 @@ declare const PunchMarketingValidationSchema: z.ZodEffects<z.ZodObject<{
120
120
  end?: string | Date | undefined;
121
121
  };
122
122
  shop: string | import("mongoose").Types.ObjectId;
123
- minimumOrderValue: number;
124
123
  isAppliedByCompany: boolean;
125
124
  marketingType: MarketingType.PUNCH_MARKETING;
125
+ minimumOrderValue: number;
126
126
  couponValueType: ValueType;
127
127
  couponValue: number;
128
128
  couponDurationInDays: number;
@@ -138,10 +138,10 @@ declare const PunchMarketingValidationSchema: z.ZodEffects<z.ZodObject<{
138
138
  end?: Date | undefined;
139
139
  };
140
140
  shop: import("mongoose").Types.ObjectId;
141
- minimumOrderValue: number;
142
141
  isAppliedByCompany: boolean;
143
142
  pausedAt: Date | null;
144
143
  marketingType: MarketingType.PUNCH_MARKETING;
144
+ minimumOrderValue: number;
145
145
  couponValueType: ValueType;
146
146
  couponValue: number;
147
147
  couponDurationInDays: number;
@@ -154,9 +154,9 @@ declare const PunchMarketingValidationSchema: z.ZodEffects<z.ZodObject<{
154
154
  end?: string | Date | undefined;
155
155
  };
156
156
  shop: string | import("mongoose").Types.ObjectId;
157
- minimumOrderValue: number;
158
157
  isAppliedByCompany: boolean;
159
158
  marketingType: MarketingType.PUNCH_MARKETING;
159
+ minimumOrderValue: number;
160
160
  couponValueType: ValueType;
161
161
  couponValue: number;
162
162
  couponDurationInDays: number;
@@ -1 +1 @@
1
- {"version":3,"file":"referral-setting.validation.d.ts","sourceRoot":"/","sources":["modules/referral-setting/validations/referral-setting.validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAGN,GAAG,EACH,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAgC9D,QAAA,MACa,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAC7B,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCACzB,uBAAuB,mNACnB,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCACU,CAAC;AAKrD,OAAO,EACN,+BAA+B,EAC/B,qBAAqB,EACrB,uBAAuB,IAAI,iCAAiC,EAC5D,2BAA2B,GAC3B,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA8C,CAAC;AAKzF,MAAM,MAAM,wBAAwB,GAAG,GAAG,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACnF,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACnE,MAAM,MAAM,wBAAwB,GAAG,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
1
+ {"version":3,"file":"referral-setting.validation.d.ts","sourceRoot":"/","sources":["modules/referral-setting/validations/referral-setting.validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAGN,GAAG,EACH,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AA+B9D,QAAA,MACa,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAC7B,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCACzB,uBAAuB,mNACnB,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCACU,CAAC;AAKrD,OAAO,EACN,+BAA+B,EAC/B,qBAAqB,EACrB,uBAAuB,IAAI,iCAAiC,EAC5D,2BAA2B,GAC3B,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA8C,CAAC;AAKzF,MAAM,MAAM,wBAAwB,GAAG,GAAG,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACnF,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACnE,MAAM,MAAM,wBAAwB,GAAG,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"referral-setting.validation.js","sourceRoot":"/","sources":["modules/referral-setting/validations/referral-setting.validation.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,iGAImE;AACnE,4DAA8D;AAC9D,wEAA+E;AAM/E,MAAM,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IACrC,SAAS,EAAE,iCAAa,CAAC,QAAQ,CAAC,gBAAS,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,gBAAS,CAAC,UAAU,CAAC;IACxF,KAAK,EAAE,iCAAa,CAAC,MAAM,CAAC,OAAO,CAAC;IACpC,iBAAiB,EAAE,iCAAa,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;CACzE,CAAC,CAAC;AAKH,MAAM,UAAU,GAAG;IAClB,MAAM,EAAE,oBAAoB;IAC5B,QAAQ,EAAE,oBAAoB;CAE9B,CAAC;AAOF,MAAM,aAAa,GAAG,IAAA,uCAAmB,EAAC,UAAU,CAAC,CAAC;AAKtD,MAAM,EACL,UAAU,EAAE,+BAA+B,EAC3C,YAAY,EAAE,qBAAqB,EACnC,QAAQ,EAAE,uBAAuB,EACjC,YAAY,EAAE,2BAA2B,GACzC,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAMpD,0EAA+B;AAC/B,sDAAqB;AACM,oEAAiC;AAC5D,kEAA2B;AAGf,QAAA,6BAA6B,GAAG,IAAA,iCAAoB,EAAC,qBAAqB,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\nimport {\n\tZodValidation,\n\tcreateSchemaBuilder,\n\tDTO,\n} from '@lyxa.ai/core/dist/utilities/validation/global-validation';\nimport { ValueType } from '@lyxa.ai/core/dist/utilities/enum';\nimport { createResponseSchema } from '@lyxa.ai/core/dist/utilities/validation';\n\n/**\n * Define the sub schema\n */\n\nconst DiscountConfigSchema = z.object({\n\tvalueType: ZodValidation.enumType(ValueType, 'Value type').default(ValueType.PERCENTAGE),\n\tvalue: ZodValidation.number('Value'),\n\tminimumOrderValue: ZodValidation.number('Minumum order value').default(0),\n});\n\n/**\n * Define the base parent schema fields\n */\nconst baseFields = {\n\tsender: DiscountConfigSchema,\n\treceiver: DiscountConfigSchema,\n\t\n};\n\n/**\n * Create schema builder for Parent entity\n * - Includes timestamps\n * - Excludes 'createdAt' from update operations\n */\nconst schemaBuilder = createSchemaBuilder(baseFields);\n\n/**\n * Get all schemas for the Parent entity\n */\nconst {\n\tBaseSchema: ReferralSettingValidationSchema,\n\tEntitySchema: ReferralSettingSchema,\n\tIdSchema: ReferralSettingIdSchema,\n\tUpdateSchema: UpdateReferralSettingSchema,\n} = schemaBuilder.getAllSchemas({ createdAt: true });\n\n/**\n * Export schemas\n */\nexport {\n\tReferralSettingValidationSchema,\n\tReferralSettingSchema,\n\tReferralSettingIdSchema as ReferralSettingIdValidationSchema,\n\tUpdateReferralSettingSchema,\n};\n\nexport const ReferralSettingResponseSchema = createResponseSchema(ReferralSettingSchema);\n\n/**\n * Export DTO types\n */\nexport type CreateReferralSettingDTO = DTO<typeof ReferralSettingValidationSchema>;\nexport type ReferralSettingDTO = DTO<typeof ReferralSettingSchema>;\nexport type UpdateReferralSettingDTO = DTO<typeof UpdateReferralSettingSchema>;\n"]}
1
+ {"version":3,"file":"referral-setting.validation.js","sourceRoot":"/","sources":["modules/referral-setting/validations/referral-setting.validation.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,iGAImE;AACnE,4DAA8D;AAC9D,wEAA+E;AAM/E,MAAM,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IACrC,SAAS,EAAE,iCAAa,CAAC,QAAQ,CAAC,gBAAS,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,gBAAS,CAAC,UAAU,CAAC;IACxF,KAAK,EAAE,iCAAa,CAAC,MAAM,CAAC,OAAO,CAAC;IACpC,iBAAiB,EAAE,iCAAa,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;CACzE,CAAC,CAAC;AAKH,MAAM,UAAU,GAAG;IAClB,MAAM,EAAE,oBAAoB;IAC5B,QAAQ,EAAE,oBAAoB;CAC9B,CAAC;AAOF,MAAM,aAAa,GAAG,IAAA,uCAAmB,EAAC,UAAU,CAAC,CAAC;AAKtD,MAAM,EACL,UAAU,EAAE,+BAA+B,EAC3C,YAAY,EAAE,qBAAqB,EACnC,QAAQ,EAAE,uBAAuB,EACjC,YAAY,EAAE,2BAA2B,GACzC,GAAG,aAAa,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAMpD,0EAA+B;AAC/B,sDAAqB;AACM,oEAAiC;AAC5D,kEAA2B;AAGf,QAAA,6BAA6B,GAAG,IAAA,iCAAoB,EAAC,qBAAqB,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\nimport {\n\tZodValidation,\n\tcreateSchemaBuilder,\n\tDTO,\n} from '@lyxa.ai/core/dist/utilities/validation/global-validation';\nimport { ValueType } from '@lyxa.ai/core/dist/utilities/enum';\nimport { createResponseSchema } from '@lyxa.ai/core/dist/utilities/validation';\n\n/**\n * Define the sub schema\n */\n\nconst DiscountConfigSchema = z.object({\n\tvalueType: ZodValidation.enumType(ValueType, 'Value type').default(ValueType.PERCENTAGE),\n\tvalue: ZodValidation.number('Value'),\n\tminimumOrderValue: ZodValidation.number('Minumum order value').default(0),\n});\n\n/**\n * Define the base parent schema fields\n */\nconst baseFields = {\n\tsender: DiscountConfigSchema,\n\treceiver: DiscountConfigSchema,\n};\n\n/**\n * Create schema builder for Parent entity\n * - Includes timestamps\n * - Excludes 'createdAt' from update operations\n */\nconst schemaBuilder = createSchemaBuilder(baseFields);\n\n/**\n * Get all schemas for the Parent entity\n */\nconst {\n\tBaseSchema: ReferralSettingValidationSchema,\n\tEntitySchema: ReferralSettingSchema,\n\tIdSchema: ReferralSettingIdSchema,\n\tUpdateSchema: UpdateReferralSettingSchema,\n} = schemaBuilder.getAllSchemas({ createdAt: true });\n\n/**\n * Export schemas\n */\nexport {\n\tReferralSettingValidationSchema,\n\tReferralSettingSchema,\n\tReferralSettingIdSchema as ReferralSettingIdValidationSchema,\n\tUpdateReferralSettingSchema,\n};\n\nexport const ReferralSettingResponseSchema = createResponseSchema(ReferralSettingSchema);\n\n/**\n * Export DTO types\n */\nexport type CreateReferralSettingDTO = DTO<typeof ReferralSettingValidationSchema>;\nexport type ReferralSettingDTO = DTO<typeof ReferralSettingSchema>;\nexport type UpdateReferralSettingDTO = DTO<typeof UpdateReferralSettingSchema>;\n"]}
@@ -15,10 +15,9 @@ export declare class SpendToGetHistoryRepository {
15
15
  user: mongoose.Types.ObjectId;
16
16
  shop: mongoose.Types.ObjectId;
17
17
  marketing: mongoose.Types.ObjectId;
18
- order: mongoose.Types.ObjectId | string;
18
+ order: mongoose.Types.ObjectId;
19
19
  }): Promise<void>;
20
- decrementRedemption(orderId: mongoose.Types.ObjectId | string): Promise<void>;
21
- private toObjectId;
20
+ decrementRedemption(orderId: mongoose.Types.ObjectId): Promise<void>;
22
21
  findByUserAndMarketing(userId: mongoose.Types.ObjectId, marketingId: mongoose.Types.ObjectId): Promise<DocumentType<Model> | null>;
23
22
  }
24
23
  export declare const spendToGetHistoryRepository: SpendToGetHistoryRepository;
@@ -1 +1 @@
1
- {"version":3,"file":"spend-to-get-history.repository.d.ts","sourceRoot":"/","sources":["modules/spend-to-get-history/spend-to-get-history.repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAA0B,iBAAiB,IAAI,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAG/G,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,EACN,0BAA0B,IAAI,SAAS,EACvC,0BAA0B,IAAI,SAAS,EACvC,MAAM,mCAAmC,CAAC;AAE3C,qBACa,2BAA2B;IACvC,OAAO,CAAC,KAAK,CAAyD;;IAMhE,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAIrD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAInF,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAa/F,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAO5E,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvF,mBAAmB,CAAC,MAAM,EAAE;QACjC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QACnC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;KACxC,GAAG,OAAO,CAAC,IAAI,CAAC;IAeX,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnF,OAAO,CAAC,UAAU;IAIZ,sBAAsB,CAC3B,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAC/B,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAClC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;CAGtC;AAED,eAAO,MAAM,2BAA2B,6BAA6C,CAAC"}
1
+ {"version":3,"file":"spend-to-get-history.repository.d.ts","sourceRoot":"/","sources":["modules/spend-to-get-history/spend-to-get-history.repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAmB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAA0B,iBAAiB,IAAI,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAG/G,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,EACN,0BAA0B,IAAI,SAAS,EACvC,0BAA0B,IAAI,SAAS,EACvC,MAAM,mCAAmC,CAAC;AAE3C,qBACa,2BAA2B;IACvC,OAAO,CAAC,KAAK,CAAyD;;IAMhE,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAIrD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAInF,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAa/F,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAO5E,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvF,mBAAmB,CAAC,MAAM,EAAE;QACjC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QACnC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;KAC/B,GAAG,OAAO,CAAC,IAAI,CAAC;IAYX,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpE,sBAAsB,CAC3B,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAC/B,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAClC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;CAGtC;AAED,eAAO,MAAM,2BAA2B,6BAA6C,CAAC"}
@@ -44,7 +44,6 @@ var __metadata = (this && this.__metadata) || function (k, v) {
44
44
  Object.defineProperty(exports, "__esModule", { value: true });
45
45
  exports.spendToGetHistoryRepository = exports.SpendToGetHistoryRepository = void 0;
46
46
  const typedi_1 = __importStar(require("typedi"));
47
- const typegoose_1 = require("@typegoose/typegoose");
48
47
  const models_1 = require("@lyxa.ai/core/dist/libraries/mongo/models");
49
48
  const pagination_1 = require("@lyxa.ai/core/dist/utilities/pagination");
50
49
  let SpendToGetHistoryRepository = class SpendToGetHistoryRepository {
@@ -80,29 +79,22 @@ let SpendToGetHistoryRepository = class SpendToGetHistoryRepository {
80
79
  return this.model.deleteRecord({ _id: id, deletedAt: null }, softDelete);
81
80
  }
82
81
  async incrementRedemption(params) {
83
- const order = this.toObjectId(params.order);
84
82
  await this.model.findOneAndUpdate({ user: params.user, marketing: params.marketing }, [
85
83
  {
86
84
  $set: {
87
85
  shop: params.shop,
88
- lastOrder: order,
89
- createdAt: { $ifNull: ['$createdAt', new Date()] },
90
- redeemingOrders: { $setUnion: [{ $ifNull: ['$redeemingOrders', []] }, [order]] },
86
+ redeemingOrders: { $setUnion: [{ $ifNull: ['$redeemingOrders', []] }, [params.order]] },
91
87
  },
92
88
  },
93
89
  { $set: { redemptionCount: { $size: '$redeemingOrders' } } },
94
90
  ], { upsert: true });
95
91
  }
96
92
  async decrementRedemption(orderId) {
97
- const oid = this.toObjectId(orderId);
98
- await this.model.findOneAndUpdate({ redeemingOrders: oid }, [
99
- { $set: { redeemingOrders: { $setDifference: [{ $ifNull: ['$redeemingOrders', []] }, [oid]] } } },
93
+ await this.model.findOneAndUpdate({ redeemingOrders: orderId }, [
94
+ { $set: { redeemingOrders: { $setDifference: [{ $ifNull: ['$redeemingOrders', []] }, [orderId]] } } },
100
95
  { $set: { redemptionCount: { $size: '$redeemingOrders' } } },
101
96
  ]);
102
97
  }
103
- toObjectId(id) {
104
- return id instanceof typegoose_1.mongoose.Types.ObjectId ? id : new typegoose_1.mongoose.Types.ObjectId(id);
105
- }
106
98
  async findByUserAndMarketing(userId, marketingId) {
107
99
  return this.model.findOne({ user: userId, marketing: marketingId });
108
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"spend-to-get-history.repository.js","sourceRoot":"/","sources":["modules/spend-to-get-history/spend-to-get-history.repository.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, { Service } from 'typedi';\nimport { DocumentType, mongoose, ReturnModelType } from '@typegoose/typegoose';\nimport { ModelType } from '@typegoose/typegoose/lib/types';\nimport { SpendToGetHistoryModel, SpendToGetHistory as Model } from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { createRawDocumentPaginatorObject, PaginatorOptions } from '@lyxa.ai/core/dist/utilities/pagination';\nimport { FilterDTO, PaginatedResponse } from '@lyxa.ai/core/dist/utilities/validation';\nimport {\n\tCreateSpendToGetHistoryDTO as CreateDTO,\n\tUpdateSpendToGetHistoryDTO as UpdateDTO,\n} from './spend-to-get-history.validation';\n\n@Service()\nexport class SpendToGetHistoryRepository {\n\tprivate model: typeof SpendToGetHistoryModel & SoftDeleteModel<Model>;\n\n\tconstructor() {\n\t\tthis.model = SpendToGetHistoryModel as typeof SpendToGetHistoryModel & SoftDeleteModel<Model>;\n\t}\n\n\tasync create(data: CreateDTO): Promise<DocumentType<Model>> {\n\t\treturn this.model.create(data);\n\t}\n\n\tasync findById(id: string | mongoose.Types.ObjectId): Promise<DocumentType<Model> | null> {\n\t\treturn this.model.findOne({ _id: id, deletedAt: null });\n\t}\n\n\tasync paginate(data?: Partial<FilterDTO>): Promise<PaginatedResponse<DocumentType<ModelType<Model>>>> {\n\t\tconst paginate = createRawDocumentPaginatorObject(this.model as ReturnModelType<typeof this.model>);\n\t\tconst options: PaginatorOptions<typeof Model> = {\n\t\t\tpage: data?.page,\n\t\t\tsize: data?.size,\n\t\t\tsort: data?.sort,\n\t\t\tquery: data?.query,\n\t\t\tselect: data?.select,\n\t\t\tpopulate: data?.populate,\n\t\t};\n\t\treturn paginate(options);\n\t}\n\n\tasync updateById(id: string, data: UpdateDTO): Promise<DocumentType<Model> | null> {\n\t\treturn this.model.findOneAndUpdate({ _id: id, deletedAt: null }, data, {\n\t\t\tnew: true,\n\t\t\trunValidators: true,\n\t\t});\n\t}\n\n\tasync deleteById(id: string | mongoose.Types.ObjectId, softDelete: boolean): Promise<unknown> {\n\t\treturn this.model.deleteRecord({ _id: id, deletedAt: null }, softDelete);\n\t}\n\n\tasync incrementRedemption(params: {\n\t\tuser: mongoose.Types.ObjectId;\n\t\tshop: mongoose.Types.ObjectId;\n\t\tmarketing: mongoose.Types.ObjectId;\n\t\torder: mongoose.Types.ObjectId | string;\n\t}): Promise<void> {\n\t\tconst order = this.toObjectId(params.order);\n\t\tawait this.model.findOneAndUpdate({ user: params.user, marketing: params.marketing }, [\n\t\t\t{\n\t\t\t\t$set: {\n\t\t\t\t\tshop: params.shop,\n\t\t\t\t\tlastOrder: order,\n\t\t\t\t\tcreatedAt: { $ifNull: ['$createdAt', new Date()] },\n\t\t\t\t\tredeemingOrders: { $setUnion: [{ $ifNull: ['$redeemingOrders', []] }, [order]] },\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ $set: { redemptionCount: { $size: '$redeemingOrders' } } },\n\t\t], { upsert: true });\n\t}\n\n\tasync decrementRedemption(orderId: mongoose.Types.ObjectId | string): Promise<void> {\n\t\tconst oid = this.toObjectId(orderId);\n\t\tawait this.model.findOneAndUpdate({ redeemingOrders: oid }, [\n\t\t\t{ $set: { redeemingOrders: { $setDifference: [{ $ifNull: ['$redeemingOrders', []] }, [oid]] } } },\n\t\t\t{ $set: { redemptionCount: { $size: '$redeemingOrders' } } },\n\t\t]);\n\t}\n\n\tprivate toObjectId(id: mongoose.Types.ObjectId | string): mongoose.Types.ObjectId {\n\t\treturn id instanceof mongoose.Types.ObjectId ? id : new mongoose.Types.ObjectId(id);\n\t}\n\n\tasync findByUserAndMarketing(\n\t\tuserId: mongoose.Types.ObjectId,\n\t\tmarketingId: mongoose.Types.ObjectId\n\t): Promise<DocumentType<Model> | null> {\n\t\treturn this.model.findOne({ user: userId, marketing: marketingId });\n\t}\n}\n\nexport const spendToGetHistoryRepository = Container.get(SpendToGetHistoryRepository);\n"]}
1
+ {"version":3,"file":"spend-to-get-history.repository.js","sourceRoot":"/","sources":["modules/spend-to-get-history/spend-to-get-history.repository.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, { Service } from 'typedi';\nimport { DocumentType, mongoose, ReturnModelType } from '@typegoose/typegoose';\nimport { ModelType } from '@typegoose/typegoose/lib/types';\nimport { SpendToGetHistoryModel, SpendToGetHistory as Model } from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport { SoftDeleteModel } from '@lyxa.ai/core/dist/libraries/mongo/plugins/soft-delete-plugin';\nimport { createRawDocumentPaginatorObject, PaginatorOptions } from '@lyxa.ai/core/dist/utilities/pagination';\nimport { FilterDTO, PaginatedResponse } from '@lyxa.ai/core/dist/utilities/validation';\nimport {\n\tCreateSpendToGetHistoryDTO as CreateDTO,\n\tUpdateSpendToGetHistoryDTO as UpdateDTO,\n} from './spend-to-get-history.validation';\n\n@Service()\nexport class SpendToGetHistoryRepository {\n\tprivate model: typeof SpendToGetHistoryModel & SoftDeleteModel<Model>;\n\n\tconstructor() {\n\t\tthis.model = SpendToGetHistoryModel as typeof SpendToGetHistoryModel & SoftDeleteModel<Model>;\n\t}\n\n\tasync create(data: CreateDTO): Promise<DocumentType<Model>> {\n\t\treturn this.model.create(data);\n\t}\n\n\tasync findById(id: string | mongoose.Types.ObjectId): Promise<DocumentType<Model> | null> {\n\t\treturn this.model.findOne({ _id: id, deletedAt: null });\n\t}\n\n\tasync paginate(data?: Partial<FilterDTO>): Promise<PaginatedResponse<DocumentType<ModelType<Model>>>> {\n\t\tconst paginate = createRawDocumentPaginatorObject(this.model as ReturnModelType<typeof this.model>);\n\t\tconst options: PaginatorOptions<typeof Model> = {\n\t\t\tpage: data?.page,\n\t\t\tsize: data?.size,\n\t\t\tsort: data?.sort,\n\t\t\tquery: data?.query,\n\t\t\tselect: data?.select,\n\t\t\tpopulate: data?.populate,\n\t\t};\n\t\treturn paginate(options);\n\t}\n\n\tasync updateById(id: string, data: UpdateDTO): Promise<DocumentType<Model> | null> {\n\t\treturn this.model.findOneAndUpdate({ _id: id, deletedAt: null }, data, {\n\t\t\tnew: true,\n\t\t\trunValidators: true,\n\t\t});\n\t}\n\n\tasync deleteById(id: string | mongoose.Types.ObjectId, softDelete: boolean): Promise<unknown> {\n\t\treturn this.model.deleteRecord({ _id: id, deletedAt: null }, softDelete);\n\t}\n\n\tasync incrementRedemption(params: {\n\t\tuser: mongoose.Types.ObjectId;\n\t\tshop: mongoose.Types.ObjectId;\n\t\tmarketing: mongoose.Types.ObjectId;\n\t\torder: mongoose.Types.ObjectId;\n\t}): Promise<void> {\n\t\tawait this.model.findOneAndUpdate({ user: params.user, marketing: params.marketing }, [\n\t\t\t{\n\t\t\t\t$set: {\n\t\t\t\t\tshop: params.shop,\n\t\t\t\t\tredeemingOrders: { $setUnion: [{ $ifNull: ['$redeemingOrders', []] }, [params.order]] },\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ $set: { redemptionCount: { $size: '$redeemingOrders' } } },\n\t\t], { upsert: true });\n\t}\n\n\tasync decrementRedemption(orderId: mongoose.Types.ObjectId): Promise<void> {\n\t\tawait this.model.findOneAndUpdate({ redeemingOrders: orderId }, [\n\t\t\t{ $set: { redeemingOrders: { $setDifference: [{ $ifNull: ['$redeemingOrders', []] }, [orderId]] } } },\n\t\t\t{ $set: { redemptionCount: { $size: '$redeemingOrders' } } },\n\t\t]);\n\t}\n\n\tasync findByUserAndMarketing(\n\t\tuserId: mongoose.Types.ObjectId,\n\t\tmarketingId: mongoose.Types.ObjectId\n\t): Promise<DocumentType<Model> | null> {\n\t\treturn this.model.findOne({ user: userId, marketing: marketingId });\n\t}\n}\n\nexport const spendToGetHistoryRepository = Container.get(SpendToGetHistoryRepository);\n"]}
@@ -21,7 +21,6 @@ export declare const spendToGetHistoryRouter: import("@trpc/server").TRPCBuiltRo
21
21
  marketing: string | import("mongoose").Types.ObjectId;
22
22
  redemptionCount?: number | undefined;
23
23
  redeemingOrders?: (string | import("mongoose").Types.ObjectId)[] | undefined;
24
- lastOrder?: string | import("mongoose").Types.ObjectId | undefined;
25
24
  };
26
25
  output: {
27
26
  message: string;
@@ -32,7 +31,6 @@ export declare const spendToGetHistoryRouter: import("@trpc/server").TRPCBuiltRo
32
31
  shop: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
33
32
  redemptionCount: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
34
33
  redeemingOrders: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>, "many">>>;
35
- lastOrder: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
36
34
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
37
35
  }, import("zod").ZodTypeAny, "passthrough"> | {
38
36
  documents: import("zod").objectInputType<{
@@ -41,7 +39,6 @@ export declare const spendToGetHistoryRouter: import("@trpc/server").TRPCBuiltRo
41
39
  shop: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
42
40
  redemptionCount: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
43
41
  redeemingOrders: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>, "many">>>;
44
- lastOrder: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
45
42
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
46
43
  }, import("zod").ZodTypeAny, "passthrough">[];
47
44
  metadata?: {
@@ -65,7 +62,6 @@ export declare const spendToGetHistoryRouter: import("@trpc/server").TRPCBuiltRo
65
62
  shop: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
66
63
  redemptionCount: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
67
64
  redeemingOrders: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>, "many">>>;
68
- lastOrder: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
69
65
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
70
66
  }, import("zod").ZodTypeAny, "passthrough"> | {
71
67
  documents: import("zod").objectInputType<{
@@ -74,7 +70,6 @@ export declare const spendToGetHistoryRouter: import("@trpc/server").TRPCBuiltRo
74
70
  shop: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
75
71
  redemptionCount: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
76
72
  redeemingOrders: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>, "many">>>;
77
- lastOrder: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
78
73
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
79
74
  }, import("zod").ZodTypeAny, "passthrough">[];
80
75
  metadata?: {
@@ -109,7 +104,6 @@ export declare const spendToGetHistoryRouter: import("@trpc/server").TRPCBuiltRo
109
104
  shop: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
110
105
  redemptionCount: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
111
106
  redeemingOrders: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>, "many">>>;
112
- lastOrder: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
113
107
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
114
108
  }, import("zod").ZodTypeAny, "passthrough"> | {
115
109
  documents: import("zod").objectInputType<{
@@ -118,7 +112,6 @@ export declare const spendToGetHistoryRouter: import("@trpc/server").TRPCBuiltRo
118
112
  shop: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
119
113
  redemptionCount: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
120
114
  redeemingOrders: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>, "many">>>;
121
- lastOrder: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
122
115
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
123
116
  }, import("zod").ZodTypeAny, "passthrough">[];
124
117
  metadata?: {
@@ -140,7 +133,6 @@ export declare const spendToGetHistoryRouter: import("@trpc/server").TRPCBuiltRo
140
133
  shop: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
141
134
  redemptionCount: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
142
135
  redeemingOrders: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>, "many">>>;
143
- lastOrder: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
144
136
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
145
137
  }, import("zod").ZodTypeAny, "passthrough">;
146
138
  output: {
@@ -152,7 +144,6 @@ export declare const spendToGetHistoryRouter: import("@trpc/server").TRPCBuiltRo
152
144
  shop: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
153
145
  redemptionCount: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
154
146
  redeemingOrders: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>, "many">>>;
155
- lastOrder: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
156
147
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
157
148
  }, import("zod").ZodTypeAny, "passthrough"> | {
158
149
  documents: import("zod").objectInputType<{
@@ -161,7 +152,6 @@ export declare const spendToGetHistoryRouter: import("@trpc/server").TRPCBuiltRo
161
152
  shop: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
162
153
  redemptionCount: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
163
154
  redeemingOrders: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>, "many">>>;
164
- lastOrder: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
165
155
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
166
156
  }, import("zod").ZodTypeAny, "passthrough">[];
167
157
  metadata?: {
@@ -188,7 +178,6 @@ export declare const spendToGetHistoryRouter: import("@trpc/server").TRPCBuiltRo
188
178
  shop: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
189
179
  redemptionCount: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
190
180
  redeemingOrders: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>, "many">>>;
191
- lastOrder: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
192
181
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
193
182
  }, import("zod").ZodTypeAny, "passthrough"> | {
194
183
  documents: import("zod").objectInputType<{
@@ -197,7 +186,6 @@ export declare const spendToGetHistoryRouter: import("@trpc/server").TRPCBuiltRo
197
186
  shop: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
198
187
  redemptionCount: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
199
188
  redeemingOrders: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>, "many">>>;
200
- lastOrder: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
201
189
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
202
190
  }, import("zod").ZodTypeAny, "passthrough">[];
203
191
  metadata?: {
@@ -226,7 +214,6 @@ export declare const spendToGetHistoryRouter: import("@trpc/server").TRPCBuiltRo
226
214
  shop: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
227
215
  redemptionCount: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
228
216
  redeemingOrders: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>, "many">>>;
229
- lastOrder: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
230
217
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
231
218
  }, import("zod").ZodTypeAny, "passthrough"> | {
232
219
  documents: import("zod").objectInputType<{
@@ -235,7 +222,6 @@ export declare const spendToGetHistoryRouter: import("@trpc/server").TRPCBuiltRo
235
222
  shop: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
236
223
  redemptionCount: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
237
224
  redeemingOrders: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>, "many">>>;
238
- lastOrder: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
239
225
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
240
226
  }, import("zod").ZodTypeAny, "passthrough">[];
241
227
  metadata?: {
@@ -261,7 +247,6 @@ export declare const spendToGetHistoryRouter: import("@trpc/server").TRPCBuiltRo
261
247
  shop: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
262
248
  redemptionCount: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
263
249
  redeemingOrders: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>, "many">>>;
264
- lastOrder: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
265
250
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
266
251
  }, import("zod").ZodTypeAny, "passthrough"> | {
267
252
  documents: import("zod").objectInputType<{
@@ -270,7 +255,6 @@ export declare const spendToGetHistoryRouter: import("@trpc/server").TRPCBuiltRo
270
255
  shop: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
271
256
  redemptionCount: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodNumber>>;
272
257
  redeemingOrders: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>, "many">>>;
273
- lastOrder: import("zod").ZodOptional<import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>>;
274
258
  _id: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, import("mongoose").Types.ObjectId, string>, import("zod").ZodType<import("mongoose").Types.ObjectId, import("zod").ZodTypeDef, import("mongoose").Types.ObjectId>]>>;
275
259
  }, import("zod").ZodTypeAny, "passthrough">[];
276
260
  metadata?: {
@@ -1 +1 @@
1
- {"version":3,"file":"spend-to-get-history.router.d.ts","sourceRoot":"/","sources":["modules/spend-to-get-history/spend-to-get-history.router.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BA+BzB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCV,CAAC"}
1
+ {"version":3,"file":"spend-to-get-history.router.d.ts","sourceRoot":"/","sources":["modules/spend-to-get-history/spend-to-get-history.router.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BA+BzB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCV,CAAC"}
@@ -15,9 +15,9 @@ export declare class SpendToGetHistoryService {
15
15
  user: mongoose.Types.ObjectId;
16
16
  shop: mongoose.Types.ObjectId;
17
17
  marketing: mongoose.Types.ObjectId;
18
- order: mongoose.Types.ObjectId | string;
18
+ order: mongoose.Types.ObjectId;
19
19
  }): Promise<void>;
20
- returnRedemption(orderId: mongoose.Types.ObjectId | string): Promise<void>;
20
+ returnRedemption(orderId: mongoose.Types.ObjectId): Promise<void>;
21
21
  hasUserReachedLimit(userId: mongoose.Types.ObjectId, marketingId: mongoose.Types.ObjectId, perUserLimit: number): Promise<boolean>;
22
22
  }
23
23
  export declare const spendToGetHistoryService: SpendToGetHistoryService;
@@ -1 +1 @@
1
- {"version":3,"file":"spend-to-get-history.service.d.ts","sourceRoot":"/","sources":["modules/spend-to-get-history/spend-to-get-history.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAClG,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,iBAAiB,IAAI,KAAK,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EACN,0BAA0B,IAAI,SAAS,EACvC,0BAA0B,IAAI,SAAS,EACvC,MAAM,mCAAmC,CAAC;AAG3C,qBACa,wBAAwB;IACpC,OAAO,CAAC,UAAU,CAA8B;;IAUnC,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAQrD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAe5E,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAgB3F,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAiBjE,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAkB5C,gBAAgB,CAAC,MAAM,EAAE;QACrC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QACnC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;KACxC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQJ,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1E,mBAAmB,CAC/B,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAC/B,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EACpC,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC;CAInB;AAED,eAAO,MAAM,wBAAwB,0BAA0C,CAAC"}
1
+ {"version":3,"file":"spend-to-get-history.service.d.ts","sourceRoot":"/","sources":["modules/spend-to-get-history/spend-to-get-history.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAClG,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,iBAAiB,IAAI,KAAK,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EACN,0BAA0B,IAAI,SAAS,EACvC,0BAA0B,IAAI,SAAS,EACvC,MAAM,mCAAmC,CAAC;AAG3C,qBACa,wBAAwB;IACpC,OAAO,CAAC,UAAU,CAA8B;;IAUnC,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAQrD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAe5E,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAgB3F,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAiBjE,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAkB5C,gBAAgB,CAAC,MAAM,EAAE;QACrC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC9B,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QACnC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;KAC/B,GAAG,OAAO,CAAC,IAAI,CAAC;IAQJ,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjE,mBAAmB,CAC/B,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAC/B,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EACpC,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC;CAInB;AAED,eAAO,MAAM,wBAAwB,0BAA0C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"spend-to-get-history.service.js","sourceRoot":"/","sources":["modules/spend-to-get-history/spend-to-get-history.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA4C;AAC5C,yCAAyC;AASzC,uFAAgF;AAGzE,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAC5B,UAAU,CAA8B;IAEhD;QACC,IAAI,CAAC,UAAU,GAAG,gBAAS,CAAC,GAAG,CAAC,6DAA2B,CAAC,CAAC;IAC9D,CAAC;IAMM,KAAK,CAAC,MAAM,CAAC,IAAe;QAClC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAMM,KAAK,CAAC,QAAQ,CAAC,EAAoC;QACzD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAClD,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,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,QAAQ,GAAG,EAAE;aACtB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAOM,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAAe;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAE1D,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,kBAAkB;aAC3B,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAMM,KAAK,CAAC,UAAU,CAAC,IAAe;QACtC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAEjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,kBAAkB;aAC3B,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,6BAA6B,CAAC;IACtC,CAAC;IAMM,KAAK,CAAC,gBAAgB,CAAC,MAK7B;QACA,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAMM,KAAK,CAAC,gBAAgB,CAAC,OAAyC;QACtE,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAKM,KAAK,CAAC,mBAAmB,CAC/B,MAA+B,EAC/B,WAAoC,EACpC,YAAoB;QAEpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAClF,OAAO,CAAC,OAAO,EAAE,eAAe,IAAI,CAAC,CAAC,IAAI,YAAY,CAAC;IACxD,CAAC;CACD,CAAA;AAjHY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,gBAAO,GAAE;;GACG,wBAAwB,CAiHpC;AAEY,QAAA,wBAAwB,GAAG,gBAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC","sourcesContent":["import Container, { Service } from 'typedi';\nimport { TRPCError } from '@trpc/server';\nimport { DocumentType, mongoose } from '@typegoose/typegoose';\nimport { FilterDTO, PaginatedResponse, DeleteDTO } from '@lyxa.ai/core/dist/utilities/validation';\nimport { ModelType } from '@typegoose/typegoose/lib/types';\nimport { SpendToGetHistory as Model } from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {\n\tCreateSpendToGetHistoryDTO as CreateDTO,\n\tUpdateSpendToGetHistoryDTO as UpdateDTO,\n} from './spend-to-get-history.validation';\nimport { SpendToGetHistoryRepository } from './spend-to-get-history.repository';\n\n@Service()\nexport class SpendToGetHistoryService {\n\tprivate repository: SpendToGetHistoryRepository;\n\n\tconstructor() {\n\t\tthis.repository = Container.get(SpendToGetHistoryRepository);\n\t}\n\n\t/**\n\t * Create a new record\n\t * @param data Data for the new record\n\t */\n\tpublic async create(data: CreateDTO): Promise<DocumentType<Model>> {\n\t\treturn await this.repository.create(data);\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.repository.findById(id);\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\treturn await this.repository.paginate(data);\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\t/**\n\t * Update record\n\t * @param id ID of the record\n\t * @param data Data to update\n\t */\n\tpublic async update(id: string, data: UpdateDTO): Promise<DocumentType<Model>> {\n\t\tconst record = await this.repository.updateById(id, data);\n\n\t\tif (!record) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: `Record not found`,\n\t\t\t});\n\t\t}\n\n\t\treturn record;\n\t}\n\n\t/**\n\t * Delete record by ID\n\t * @param data ID + softDelete flag\n\t */\n\tpublic async deleteById(data: DeleteDTO): Promise<string> {\n\t\tconst { _id, softDelete } = data;\n\n\t\tconst result = await this.repository.deleteById(_id, softDelete);\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\treturn 'Record deleted successfully';\n\t}\n\n\t/**\n\t * Record a redemption for a user against a Spend-to-Get promotion (per-user limit counter).\n\t * Called on order placement; upserts the one history doc per (user, marketing).\n\t */\n\tpublic async recordRedemption(params: {\n\t\tuser: mongoose.Types.ObjectId;\n\t\tshop: mongoose.Types.ObjectId;\n\t\tmarketing: mongoose.Types.ObjectId;\n\t\torder: mongoose.Types.ObjectId | string;\n\t}): Promise<void> {\n\t\tawait this.repository.incrementRedemption(params);\n\t}\n\n\t/**\n\t * Reverse a redemption when the order that granted it is cancelled, restoring budget for the\n\t * user's per-user limit.\n\t */\n\tpublic async returnRedemption(orderId: mongoose.Types.ObjectId | string): Promise<void> {\n\t\tawait this.repository.decrementRedemption(orderId);\n\t}\n\n\t/**\n\t * Whether a user has exhausted their per-user redemption limit for a Spend-to-Get promotion.\n\t */\n\tpublic async hasUserReachedLimit(\n\t\tuserId: mongoose.Types.ObjectId,\n\t\tmarketingId: mongoose.Types.ObjectId,\n\t\tperUserLimit: number\n\t): Promise<boolean> {\n\t\tconst history = await this.repository.findByUserAndMarketing(userId, marketingId);\n\t\treturn (history?.redemptionCount ?? 0) >= perUserLimit;\n\t}\n}\n\nexport const spendToGetHistoryService = Container.get(SpendToGetHistoryService);\n"]}
1
+ {"version":3,"file":"spend-to-get-history.service.js","sourceRoot":"/","sources":["modules/spend-to-get-history/spend-to-get-history.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA4C;AAC5C,yCAAyC;AASzC,uFAAgF;AAGzE,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAC5B,UAAU,CAA8B;IAEhD;QACC,IAAI,CAAC,UAAU,GAAG,gBAAS,CAAC,GAAG,CAAC,6DAA2B,CAAC,CAAC;IAC9D,CAAC;IAMM,KAAK,CAAC,MAAM,CAAC,IAAe;QAClC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAMM,KAAK,CAAC,QAAQ,CAAC,EAAoC;QACzD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAClD,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,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,QAAQ,GAAG,EAAE;aACtB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAOM,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,IAAe;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAE1D,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,kBAAkB;aAC3B,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IACf,CAAC;IAMM,KAAK,CAAC,UAAU,CAAC,IAAe;QACtC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAEjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,kBAAS,CAAC;gBACnB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,kBAAkB;aAC3B,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,6BAA6B,CAAC;IACtC,CAAC;IAMM,KAAK,CAAC,gBAAgB,CAAC,MAK7B;QACA,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAMM,KAAK,CAAC,gBAAgB,CAAC,OAAgC;QAC7D,MAAM,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAKM,KAAK,CAAC,mBAAmB,CAC/B,MAA+B,EAC/B,WAAoC,EACpC,YAAoB;QAEpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAClF,OAAO,CAAC,OAAO,EAAE,eAAe,IAAI,CAAC,CAAC,IAAI,YAAY,CAAC;IACxD,CAAC;CACD,CAAA;AAjHY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,gBAAO,GAAE;;GACG,wBAAwB,CAiHpC;AAEY,QAAA,wBAAwB,GAAG,gBAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC","sourcesContent":["import Container, { Service } from 'typedi';\nimport { TRPCError } from '@trpc/server';\nimport { DocumentType, mongoose } from '@typegoose/typegoose';\nimport { FilterDTO, PaginatedResponse, DeleteDTO } from '@lyxa.ai/core/dist/utilities/validation';\nimport { ModelType } from '@typegoose/typegoose/lib/types';\nimport { SpendToGetHistory as Model } from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {\n\tCreateSpendToGetHistoryDTO as CreateDTO,\n\tUpdateSpendToGetHistoryDTO as UpdateDTO,\n} from './spend-to-get-history.validation';\nimport { SpendToGetHistoryRepository } from './spend-to-get-history.repository';\n\n@Service()\nexport class SpendToGetHistoryService {\n\tprivate repository: SpendToGetHistoryRepository;\n\n\tconstructor() {\n\t\tthis.repository = Container.get(SpendToGetHistoryRepository);\n\t}\n\n\t/**\n\t * Create a new record\n\t * @param data Data for the new record\n\t */\n\tpublic async create(data: CreateDTO): Promise<DocumentType<Model>> {\n\t\treturn await this.repository.create(data);\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.repository.findById(id);\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\treturn await this.repository.paginate(data);\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\t/**\n\t * Update record\n\t * @param id ID of the record\n\t * @param data Data to update\n\t */\n\tpublic async update(id: string, data: UpdateDTO): Promise<DocumentType<Model>> {\n\t\tconst record = await this.repository.updateById(id, data);\n\n\t\tif (!record) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: `Record not found`,\n\t\t\t});\n\t\t}\n\n\t\treturn record;\n\t}\n\n\t/**\n\t * Delete record by ID\n\t * @param data ID + softDelete flag\n\t */\n\tpublic async deleteById(data: DeleteDTO): Promise<string> {\n\t\tconst { _id, softDelete } = data;\n\n\t\tconst result = await this.repository.deleteById(_id, softDelete);\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\treturn 'Record deleted successfully';\n\t}\n\n\t/**\n\t * Record a redemption for a user against a Spend-to-Get promotion (per-user limit counter).\n\t * Called on order placement; upserts the one history doc per (user, marketing).\n\t */\n\tpublic async recordRedemption(params: {\n\t\tuser: mongoose.Types.ObjectId;\n\t\tshop: mongoose.Types.ObjectId;\n\t\tmarketing: mongoose.Types.ObjectId;\n\t\torder: mongoose.Types.ObjectId;\n\t}): Promise<void> {\n\t\tawait this.repository.incrementRedemption(params);\n\t}\n\n\t/**\n\t * Reverse a redemption when the order that granted it is cancelled, restoring budget for the\n\t * user's per-user limit.\n\t */\n\tpublic async returnRedemption(orderId: mongoose.Types.ObjectId): Promise<void> {\n\t\tawait this.repository.decrementRedemption(orderId);\n\t}\n\n\t/**\n\t * Whether a user has exhausted their per-user redemption limit for a Spend-to-Get promotion.\n\t */\n\tpublic async hasUserReachedLimit(\n\t\tuserId: mongoose.Types.ObjectId,\n\t\tmarketingId: mongoose.Types.ObjectId,\n\t\tperUserLimit: number\n\t): Promise<boolean> {\n\t\tconst history = await this.repository.findByUserAndMarketing(userId, marketingId);\n\t\treturn (history?.redemptionCount ?? 0) >= perUserLimit;\n\t}\n}\n\nexport const spendToGetHistoryService = Container.get(SpendToGetHistoryService);\n"]}