@lyxa.ai/marketing 1.0.18 → 1.0.19

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 (119) hide show
  1. package/dist/lib/index.d.ts +2 -0
  2. package/dist/lib/index.d.ts.map +1 -1
  3. package/dist/lib/index.js +1 -0
  4. package/dist/lib/index.js.map +1 -1
  5. package/dist/lib/modules/coupon/routers/coupon.router.d.ts +2 -0
  6. package/dist/lib/modules/coupon/routers/coupon.router.d.ts.map +1 -1
  7. package/dist/lib/modules/coupon/routers/coupon.router.js +1 -1
  8. package/dist/lib/modules/coupon/routers/coupon.router.js.map +1 -1
  9. package/dist/lib/modules/coupon/services/coupon.service.d.ts +2 -1
  10. package/dist/lib/modules/coupon/services/coupon.service.d.ts.map +1 -1
  11. package/dist/lib/modules/coupon/services/coupon.service.js +16 -7
  12. package/dist/lib/modules/coupon/services/coupon.service.js.map +1 -1
  13. package/dist/lib/modules/coupon/validations/coupon.validation.d.ts +3 -0
  14. package/dist/lib/modules/coupon/validations/coupon.validation.d.ts.map +1 -1
  15. package/dist/lib/modules/coupon/validations/coupon.validation.js +1 -0
  16. package/dist/lib/modules/coupon/validations/coupon.validation.js.map +1 -1
  17. package/dist/lib/modules/loyalty-point-setting/routers/index.d.ts +2 -0
  18. package/dist/lib/modules/loyalty-point-setting/routers/index.d.ts.map +1 -0
  19. package/dist/lib/modules/loyalty-point-setting/routers/index.js +18 -0
  20. package/dist/lib/modules/loyalty-point-setting/routers/index.js.map +1 -0
  21. package/dist/lib/modules/loyalty-point-setting/routers/loyalty-point-setting.router.d.ts +321 -0
  22. package/dist/lib/modules/loyalty-point-setting/routers/loyalty-point-setting.router.d.ts.map +1 -0
  23. package/dist/lib/modules/loyalty-point-setting/routers/loyalty-point-setting.router.js +82 -0
  24. package/dist/lib/modules/loyalty-point-setting/routers/loyalty-point-setting.router.js.map +1 -0
  25. package/dist/lib/modules/loyalty-point-setting/services/index.d.ts +3 -0
  26. package/dist/lib/modules/loyalty-point-setting/services/index.d.ts.map +1 -0
  27. package/dist/lib/modules/loyalty-point-setting/services/index.js +19 -0
  28. package/dist/lib/modules/loyalty-point-setting/services/index.js.map +1 -0
  29. package/dist/lib/modules/loyalty-point-setting/services/loyalty-point-category.service.d.ts +16 -0
  30. package/dist/lib/modules/loyalty-point-setting/services/loyalty-point-category.service.d.ts.map +1 -0
  31. package/dist/lib/modules/loyalty-point-setting/services/loyalty-point-category.service.js +133 -0
  32. package/dist/lib/modules/loyalty-point-setting/services/loyalty-point-category.service.js.map +1 -0
  33. package/dist/lib/modules/loyalty-point-setting/services/loyalty-point-setting.service.d.ts +16 -0
  34. package/dist/lib/modules/loyalty-point-setting/services/loyalty-point-setting.service.d.ts.map +1 -0
  35. package/dist/lib/modules/loyalty-point-setting/services/loyalty-point-setting.service.js +156 -0
  36. package/dist/lib/modules/loyalty-point-setting/services/loyalty-point-setting.service.js.map +1 -0
  37. package/dist/lib/modules/loyalty-point-setting/transformers/index.d.ts +3 -0
  38. package/dist/lib/modules/loyalty-point-setting/transformers/index.d.ts.map +1 -0
  39. package/dist/lib/modules/loyalty-point-setting/transformers/index.js +19 -0
  40. package/dist/lib/modules/loyalty-point-setting/transformers/index.js.map +1 -0
  41. package/dist/lib/modules/loyalty-point-setting/transformers/loyalty-point-category.transformer.d.ts +8 -0
  42. package/dist/lib/modules/loyalty-point-setting/transformers/loyalty-point-category.transformer.d.ts.map +1 -0
  43. package/dist/lib/modules/loyalty-point-setting/transformers/loyalty-point-category.transformer.js +7 -0
  44. package/dist/lib/modules/loyalty-point-setting/transformers/loyalty-point-category.transformer.js.map +1 -0
  45. package/dist/lib/modules/loyalty-point-setting/transformers/loyalty-point-setting.transformer.d.ts +9 -0
  46. package/dist/lib/modules/loyalty-point-setting/transformers/loyalty-point-setting.transformer.d.ts.map +1 -0
  47. package/dist/lib/modules/loyalty-point-setting/transformers/loyalty-point-setting.transformer.js +7 -0
  48. package/dist/lib/modules/loyalty-point-setting/transformers/loyalty-point-setting.transformer.js.map +1 -0
  49. package/dist/lib/modules/loyalty-point-setting/validations/index.d.ts +3 -0
  50. package/dist/lib/modules/loyalty-point-setting/validations/index.d.ts.map +1 -0
  51. package/dist/lib/modules/loyalty-point-setting/validations/index.js +19 -0
  52. package/dist/lib/modules/loyalty-point-setting/validations/index.js.map +1 -0
  53. package/dist/lib/modules/loyalty-point-setting/validations/loyalty-point-category.validation.d.ts +170 -0
  54. package/dist/lib/modules/loyalty-point-setting/validations/loyalty-point-category.validation.d.ts.map +1 -0
  55. package/dist/lib/modules/loyalty-point-setting/validations/loyalty-point-category.validation.js +19 -0
  56. package/dist/lib/modules/loyalty-point-setting/validations/loyalty-point-category.validation.js.map +1 -0
  57. package/dist/lib/modules/loyalty-point-setting/validations/loyalty-point-setting.validation.d.ts +188 -0
  58. package/dist/lib/modules/loyalty-point-setting/validations/loyalty-point-setting.validation.d.ts.map +1 -0
  59. package/dist/lib/modules/loyalty-point-setting/validations/loyalty-point-setting.validation.js +19 -0
  60. package/dist/lib/modules/loyalty-point-setting/validations/loyalty-point-setting.validation.js.map +1 -0
  61. package/dist/lib/modules/marketing/services/discount-marketing.service.js +2 -2
  62. package/dist/lib/modules/marketing/services/discount-marketing.service.js.map +1 -1
  63. package/dist/lib/modules/marketing/services/loyalty-point-marketing.service.d.ts +12 -0
  64. package/dist/lib/modules/marketing/services/loyalty-point-marketing.service.d.ts.map +1 -0
  65. package/dist/lib/modules/marketing/services/loyalty-point-marketing.service.js +149 -0
  66. package/dist/lib/modules/marketing/services/loyalty-point-marketing.service.js.map +1 -0
  67. package/dist/lib/modules/marketing/transformers/loyalty-point-marketing.transformer.d.ts +47 -0
  68. package/dist/lib/modules/marketing/transformers/loyalty-point-marketing.transformer.d.ts.map +1 -0
  69. package/dist/lib/modules/marketing/transformers/loyalty-point-marketing.transformer.js +7 -0
  70. package/dist/lib/modules/marketing/transformers/loyalty-point-marketing.transformer.js.map +1 -0
  71. package/dist/lib/modules/marketing/validations/discount-marketing.validation.js +3 -3
  72. package/dist/lib/modules/marketing/validations/discount-marketing.validation.js.map +1 -1
  73. package/dist/lib/modules/marketing/validations/loyalty-point-marketing.validation.d.ts +504 -0
  74. package/dist/lib/modules/marketing/validations/loyalty-point-marketing.validation.d.ts.map +1 -0
  75. package/dist/lib/modules/marketing/validations/loyalty-point-marketing.validation.js +34 -0
  76. package/dist/lib/modules/marketing/validations/loyalty-point-marketing.validation.js.map +1 -0
  77. package/dist/lib/modules/punch-marketing-history/services/punch-marketing-history.service.d.ts +1 -0
  78. package/dist/lib/modules/punch-marketing-history/services/punch-marketing-history.service.d.ts.map +1 -1
  79. package/dist/lib/modules/punch-marketing-history/services/punch-marketing-history.service.js +50 -4
  80. package/dist/lib/modules/punch-marketing-history/services/punch-marketing-history.service.js.map +1 -1
  81. package/dist/types/index.d.ts +2 -0
  82. package/dist/types/index.d.ts.map +1 -1
  83. package/dist/types/modules/coupon/routers/coupon.router.d.ts +2 -0
  84. package/dist/types/modules/coupon/routers/coupon.router.d.ts.map +1 -1
  85. package/dist/types/modules/coupon/services/coupon.service.d.ts +2 -1
  86. package/dist/types/modules/coupon/services/coupon.service.d.ts.map +1 -1
  87. package/dist/types/modules/coupon/validations/coupon.validation.d.ts +3 -0
  88. package/dist/types/modules/coupon/validations/coupon.validation.d.ts.map +1 -1
  89. package/dist/types/modules/loyalty-point-setting/routers/index.d.ts +2 -0
  90. package/dist/types/modules/loyalty-point-setting/routers/index.d.ts.map +1 -0
  91. package/dist/types/modules/loyalty-point-setting/routers/loyalty-point-setting.router.d.ts +321 -0
  92. package/dist/types/modules/loyalty-point-setting/routers/loyalty-point-setting.router.d.ts.map +1 -0
  93. package/dist/types/modules/loyalty-point-setting/services/index.d.ts +3 -0
  94. package/dist/types/modules/loyalty-point-setting/services/index.d.ts.map +1 -0
  95. package/dist/types/modules/loyalty-point-setting/services/loyalty-point-category.service.d.ts +37 -0
  96. package/dist/types/modules/loyalty-point-setting/services/loyalty-point-category.service.d.ts.map +1 -0
  97. package/dist/types/modules/loyalty-point-setting/services/loyalty-point-setting.service.d.ts +34 -0
  98. package/dist/types/modules/loyalty-point-setting/services/loyalty-point-setting.service.d.ts.map +1 -0
  99. package/dist/types/modules/loyalty-point-setting/transformers/index.d.ts +3 -0
  100. package/dist/types/modules/loyalty-point-setting/transformers/index.d.ts.map +1 -0
  101. package/dist/types/modules/loyalty-point-setting/transformers/loyalty-point-category.transformer.d.ts +8 -0
  102. package/dist/types/modules/loyalty-point-setting/transformers/loyalty-point-category.transformer.d.ts.map +1 -0
  103. package/dist/types/modules/loyalty-point-setting/transformers/loyalty-point-setting.transformer.d.ts +9 -0
  104. package/dist/types/modules/loyalty-point-setting/transformers/loyalty-point-setting.transformer.d.ts.map +1 -0
  105. package/dist/types/modules/loyalty-point-setting/validations/index.d.ts +3 -0
  106. package/dist/types/modules/loyalty-point-setting/validations/index.d.ts.map +1 -0
  107. package/dist/types/modules/loyalty-point-setting/validations/loyalty-point-category.validation.d.ts +179 -0
  108. package/dist/types/modules/loyalty-point-setting/validations/loyalty-point-category.validation.d.ts.map +1 -0
  109. package/dist/types/modules/loyalty-point-setting/validations/loyalty-point-setting.validation.d.ts +197 -0
  110. package/dist/types/modules/loyalty-point-setting/validations/loyalty-point-setting.validation.d.ts.map +1 -0
  111. package/dist/types/modules/marketing/services/loyalty-point-marketing.service.d.ts +21 -0
  112. package/dist/types/modules/marketing/services/loyalty-point-marketing.service.d.ts.map +1 -0
  113. package/dist/types/modules/marketing/transformers/loyalty-point-marketing.transformer.d.ts +47 -0
  114. package/dist/types/modules/marketing/transformers/loyalty-point-marketing.transformer.d.ts.map +1 -0
  115. package/dist/types/modules/marketing/validations/loyalty-point-marketing.validation.d.ts +513 -0
  116. package/dist/types/modules/marketing/validations/loyalty-point-marketing.validation.d.ts.map +1 -0
  117. package/dist/types/modules/punch-marketing-history/services/punch-marketing-history.service.d.ts +1 -0
  118. package/dist/types/modules/punch-marketing-history/services/punch-marketing-history.service.d.ts.map +1 -1
  119. package/package.json +2 -2
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.loyaltyPointMarketingService = exports.LoyaltyPointMarketingService = void 0;
46
+ const typedi_1 = __importStar(require("typedi"));
47
+ const server_1 = require("@trpc/server");
48
+ const models_1 = require("@lyxa.ai/core/dist/libraries/mongo/models");
49
+ const _1 = require("./");
50
+ let LoyaltyPointMarketingService = class LoyaltyPointMarketingService {
51
+ model;
52
+ productModel;
53
+ constructor() {
54
+ this.model = models_1.LoyaltyPointMarketingModel;
55
+ this.productModel = models_1.ProductModel;
56
+ }
57
+ async create(data) {
58
+ const result = await this.model.create(data);
59
+ if (data.products && data.products.length > 0) {
60
+ for (const product of data.products) {
61
+ _1.productMarketingService.create({
62
+ marketing: result._id,
63
+ product: product.product,
64
+ value: data.value,
65
+ valueType: data.valueType,
66
+ loyaltyPointCategory: product.loyaltyPointCategory,
67
+ });
68
+ }
69
+ }
70
+ else if (data.isEntireMenu) {
71
+ const products = this.productModel
72
+ .find({
73
+ shop: data.shop,
74
+ })
75
+ .select('_id')
76
+ .exec()
77
+ .then(productDocuments => {
78
+ for (const product of productDocuments) {
79
+ _1.productMarketingService.create({
80
+ marketing: result._id,
81
+ product: product._id,
82
+ value: data.value,
83
+ valueType: data.valueType,
84
+ loyaltyPointCategory: data.category,
85
+ });
86
+ }
87
+ });
88
+ }
89
+ return result;
90
+ }
91
+ async update(_id, data) {
92
+ const { products, ...rest } = data;
93
+ const record = await this.model.findOneAndUpdate({
94
+ _id: _id,
95
+ deletedAt: null,
96
+ }, rest, {
97
+ new: true,
98
+ runValidators: true,
99
+ });
100
+ if (data.products) {
101
+ const productIds = [];
102
+ for (const product of data.products) {
103
+ _1.productMarketingService.updateOne({
104
+ product: product.product,
105
+ marketing: _id,
106
+ }, product);
107
+ productIds.push(product.product);
108
+ }
109
+ _1.productMarketingService.deleteMultipleProducts({
110
+ marketing: _id,
111
+ products: productIds,
112
+ }, true);
113
+ }
114
+ else if (data.isEntireMenu) {
115
+ this.productModel
116
+ .find({
117
+ shop: data.shop,
118
+ })
119
+ .select('_id')
120
+ .exec()
121
+ .then(productDocuments => {
122
+ for (const product of productDocuments) {
123
+ _1.productMarketingService.updateOne({
124
+ product: product._id,
125
+ marketing: _id,
126
+ }, {
127
+ value: data.value,
128
+ valueType: data.valueType,
129
+ loyaltyPointCategory: data.category,
130
+ });
131
+ }
132
+ });
133
+ }
134
+ if (!record) {
135
+ throw new server_1.TRPCError({
136
+ code: 'NOT_FOUND',
137
+ message: `Record not found`,
138
+ });
139
+ }
140
+ return record;
141
+ }
142
+ };
143
+ exports.LoyaltyPointMarketingService = LoyaltyPointMarketingService;
144
+ exports.LoyaltyPointMarketingService = LoyaltyPointMarketingService = __decorate([
145
+ (0, typedi_1.Service)(),
146
+ __metadata("design:paramtypes", [])
147
+ ], LoyaltyPointMarketingService);
148
+ exports.loyaltyPointMarketingService = typedi_1.default.get(LoyaltyPointMarketingService);
149
+ //# sourceMappingURL=loyalty-point-marketing.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loyalty-point-marketing.service.js","sourceRoot":"/","sources":["modules/marketing/services/loyalty-point-marketing.service.ts"],"names":[],"mappings":"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","sourcesContent":["import Container, { Service } from 'typedi';\nimport { TRPCError } from '@trpc/server';\nimport { DocumentType, mongoose } from '@typegoose/typegoose';\nimport {\n\tLoyaltyPointMarketingModel,\n\tLoyaltyPointMarketing as Model,\n\tProductModel,\n} from '@lyxa.ai/core/dist/libraries/mongo/models';\nimport {\n\tCreateLoyaltyPointMarketingDTO as CreateDTO,\n\tUpdateLoyaltyPointMarketingDTO as UpdateDTO,\n} from '@modules/marketing/validations';\nimport { productMarketingService } from './';\n\n@Service()\nexport class LoyaltyPointMarketingService {\n\tprivate model: typeof LoyaltyPointMarketingModel;\n\tprivate productModel: typeof ProductModel;\n\n\tconstructor() {\n\t\tthis.model = LoyaltyPointMarketingModel;\n\t\tthis.productModel = ProductModel;\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\n\t\tif (data.products && data.products.length > 0) {\n\t\t\tfor (const product of data.products) {\n\t\t\t\tproductMarketingService.create({\n\t\t\t\t\tmarketing: result._id,\n\t\t\t\t\tproduct: product.product,\n\t\t\t\t\tvalue: data.value,\n\t\t\t\t\tvalueType: data.valueType,\n\t\t\t\t\tloyaltyPointCategory: product.loyaltyPointCategory,\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (data.isEntireMenu) {\n\t\t\tconst products = this.productModel\n\t\t\t\t.find({\n\t\t\t\t\tshop: data.shop,\n\t\t\t\t})\n\t\t\t\t.select('_id')\n\t\t\t\t.exec()\n\t\t\t\t.then(productDocuments => {\n\t\t\t\t\tfor (const product of productDocuments) {\n\t\t\t\t\t\tproductMarketingService.create({\n\t\t\t\t\t\t\tmarketing: result._id,\n\t\t\t\t\t\t\tproduct: product._id,\n\t\t\t\t\t\t\tvalue: data.value,\n\t\t\t\t\t\t\tvalueType: data.valueType,\n\t\t\t\t\t\t\tloyaltyPointCategory: data.category,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\treturn result;\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: mongoose.Types.ObjectId, data: UpdateDTO): Promise<DocumentType<Model>> {\n\t\tconst { products, ...rest } = data;\n\t\tconst record = await this.model.findOneAndUpdate(\n\t\t\t{\n\t\t\t\t_id: _id,\n\t\t\t\tdeletedAt: null,\n\t\t\t},\n\t\t\trest,\n\t\t\t{\n\t\t\t\tnew: true,\n\t\t\t\trunValidators: true,\n\t\t\t}\n\t\t);\n\n\t\tif (data.products) {\n\t\t\tconst productIds: Array<mongoose.Types.ObjectId> = [];\n\t\t\tfor (const product of data.products) {\n\t\t\t\tproductMarketingService.updateOne(\n\t\t\t\t\t{\n\t\t\t\t\t\tproduct: product.product,\n\t\t\t\t\t\tmarketing: _id,\n\t\t\t\t\t},\n\t\t\t\t\tproduct\n\t\t\t\t);\n\t\t\t\tproductIds.push(product.product);\n\t\t\t}\n\n\t\t\t// remove products that had marketing but not anymore\n\t\t\tproductMarketingService.deleteMultipleProducts(\n\t\t\t\t{\n\t\t\t\t\tmarketing: _id,\n\t\t\t\t\tproducts: productIds,\n\t\t\t\t},\n\t\t\t\ttrue\n\t\t\t);\n\t\t} else if (data.isEntireMenu) {\n\t\t\tthis.productModel\n\t\t\t\t.find({\n\t\t\t\t\tshop: data.shop,\n\t\t\t\t})\n\t\t\t\t.select('_id')\n\t\t\t\t.exec()\n\t\t\t\t.then(productDocuments => {\n\t\t\t\t\tfor (const product of productDocuments) {\n\t\t\t\t\t\tproductMarketingService.updateOne(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tproduct: product._id,\n\t\t\t\t\t\t\t\tmarketing: _id,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue: data.value,\n\t\t\t\t\t\t\t\tvalueType: data.valueType,\n\t\t\t\t\t\t\t\tloyaltyPointCategory: data.category,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\n\t\tif (!record) {\n\t\t\tthrow new TRPCError({\n\t\t\t\tcode: 'NOT_FOUND',\n\t\t\t\tmessage: `Record not found`,\n\t\t\t});\n\t\t}\n\n\t\treturn record;\n\t}\n}\n\nexport const loyaltyPointMarketingService = Container.get(LoyaltyPointMarketingService);\n"]}
@@ -0,0 +1,47 @@
1
+ import { LoyaltyPointMarketing as Model } from '@lyxa.ai/core/dist/libraries/mongo/models/providers/loyalty-point-marketing.model';
2
+ export declare const loyaltyPointMarketingTransformer: import("@lyxa.ai/core/dist/utilities/transformers").GlobalTransformer<Model, import("zod").objectOutputType<{
3
+ marketingType: import("zod").ZodOptional<import("zod").ZodLiteral<import("@lyxa.ai/core/dist/utilities/enum").MarketingType.LOYALTY_POINT>>;
4
+ isEntireMenu: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodBoolean>>;
5
+ valueType: import("zod").ZodOptional<import("zod").ZodNativeEnum<typeof import("@lyxa.ai/core/dist/utilities/enum").ValueType>>;
6
+ value: import("zod").ZodOptional<import("zod").ZodNumber>;
7
+ category: 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>]>>;
8
+ products: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
9
+ product: 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>]>;
10
+ marketing: 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>]>>;
11
+ loyaltyPointCategory: 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>]>>;
12
+ isBuy1Get1: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodBoolean>>;
13
+ valueType: import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNativeEnum<typeof import("@lyxa.ai/core/dist/utilities/enum").ValueType>>>>;
14
+ value: import("zod").ZodOptional<import("zod").ZodNumber>;
15
+ }, "strip", import("zod").ZodTypeAny, {
16
+ product: import("mongoose").Types.ObjectId;
17
+ value?: number | undefined;
18
+ marketing?: import("mongoose").Types.ObjectId | undefined;
19
+ loyaltyPointCategory?: import("mongoose").Types.ObjectId | undefined;
20
+ isBuy1Get1?: boolean | undefined;
21
+ valueType?: import("@lyxa.ai/core/dist/utilities/enum").ValueType | null | undefined;
22
+ }, {
23
+ product: string | import("mongoose").Types.ObjectId;
24
+ value?: number | undefined;
25
+ marketing?: string | import("mongoose").Types.ObjectId | undefined;
26
+ loyaltyPointCategory?: string | import("mongoose").Types.ObjectId | undefined;
27
+ isBuy1Get1?: boolean | undefined;
28
+ valueType?: import("@lyxa.ai/core/dist/utilities/enum").ValueType | null | undefined;
29
+ }>, "many">>>>;
30
+ spendLimit: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNumber>>;
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>]>>;
32
+ isAppliedByCompany: import("zod").ZodOptional<import("zod").ZodBoolean>;
33
+ duration: import("zod").ZodOptional<import("zod").ZodObject<{
34
+ start: import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Date, string>, import("zod").ZodDate]>, Date, string | Date>, Date, string | Date>;
35
+ end: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Date, string>, import("zod").ZodDate]>, Date, string | Date>, Date, string | Date>>;
36
+ }, "strip", import("zod").ZodTypeAny, {
37
+ start: Date;
38
+ end?: Date | undefined;
39
+ }, {
40
+ start: string | Date;
41
+ end?: string | Date | undefined;
42
+ }>>;
43
+ status: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNativeEnum<typeof import("@lyxa.ai/core/dist/utilities/enum").MarketingStatus>>>;
44
+ pausedAt: import("zod").ZodOptional<import("zod").ZodDefault<import("zod").ZodNullable<import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodUnion<[import("zod").ZodEffects<import("zod").ZodEffects<import("zod").ZodString, string, string>, Date, string>, import("zod").ZodDate]>, Date, string | Date>, Date, string | Date>>>>>;
45
+ _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
+ }, import("zod").ZodTypeAny, "passthrough">>;
47
+ //# sourceMappingURL=loyalty-point-marketing.transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loyalty-point-marketing.transformer.d.ts","sourceRoot":"/","sources":["modules/marketing/transformers/loyalty-point-marketing.transformer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,IAAI,KAAK,EAAE,MAAM,mFAAmF,CAAC;AAMnI,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CAAwC,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loyaltyPointMarketingTransformer = void 0;
4
+ const transformers_1 = require("@lyxa.ai/core/dist/utilities/transformers");
5
+ const loyalty_point_marketing_validation_1 = require("../../marketing/validations/loyalty-point-marketing.validation");
6
+ exports.loyaltyPointMarketingTransformer = (0, transformers_1.createTransformer)(loyalty_point_marketing_validation_1.LoyaltyPointMarketingSchema);
7
+ //# sourceMappingURL=loyalty-point-marketing.transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loyalty-point-marketing.transformer.js","sourceRoot":"/","sources":["modules/marketing/transformers/loyalty-point-marketing.transformer.ts"],"names":[],"mappings":";;;AAAA,4EAA8E;AAE9E,0HAG2E;AAE9D,QAAA,gCAAgC,GAAG,IAAA,gCAAiB,EAAa,gEAAM,CAAC,CAAC","sourcesContent":["import { createTransformer } from '@lyxa.ai/core/dist/utilities/transformers';\nimport { LoyaltyPointMarketing as Model } from '@lyxa.ai/core/dist/libraries/mongo/models/providers/loyalty-point-marketing.model';\nimport {\n\tLoyaltyPointMarketingSchema as Schema,\n\tLoyaltyPointMarketingDTO as DTO,\n} from '@modules/marketing/validations/loyalty-point-marketing.validation';\n\nexport const loyaltyPointMarketingTransformer = createTransformer<Model, DTO>(Schema);\n"]}
@@ -49,11 +49,11 @@ const DiscountMarketingValidationSchemaRefined = DiscountMarketingValidationSche
49
49
  path: ['products', 'value', 'valueType', 'isEntireMenu'],
50
50
  });
51
51
  }
52
- if (data.products.length < 1 && !(data.value && data.valueType && data.isEntireMenu)) {
52
+ if (data.products.length < 1 && data.categories.length < 1 && !(data.value && data.valueType && data.isEntireMenu)) {
53
53
  ctx.addIssue({
54
54
  code: zod_1.z.ZodIssueCode.custom,
55
- message: 'Please provide discount information for individual products or the entire menu',
56
- path: ['products', 'value', 'valueType', 'isEntireMenu'],
55
+ message: 'Please provide discount information for individual products or categories or the entire menu',
56
+ path: ['products', 'value', 'valueType', 'isEntireMenu', 'categories'],
57
57
  });
58
58
  }
59
59
  });
@@ -1 +1 @@
1
- {"version":3,"file":"discount-marketing.validation.js","sourceRoot":"/","sources":["modules/marketing/validations/discount-marketing.validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport {\n\tZodValidation,\n\tcreateSchemaBuilder,\n\tDTO,\n} from '@lyxa.ai/core/dist/utilities/validation/global-validation';\nimport { MarketingType, ValueType } from '@lyxa.ai/core/dist/utilities/enum';\nimport { baseMarketingFields } from './marketing.validation';\nimport { baseFields as baseProductMarketingFields } from './product-marketing.validation';\n\n/**\n * Define the base parent schema fields\n */\nconst baseFields = {\n\t...baseMarketingFields,\n\tmarketingType: z.literal(MarketingType.DISCOUNT),\n\tcategoryValueType: ZodValidation.enumType(ValueType, 'Category value type').optional(),\n\tcategoryValue: ZodValidation.number('Category value').optional(),\n\tcategories: ZodValidation.array(ZodValidation.objectId('Category'), 'Categories').optional().default([]),\n\tisEntireMenu: ZodValidation.boolean('IsEntireMenu').default(false),\n\tvalueType: ZodValidation.enumType(ValueType, 'Value type').optional(),\n\tvalue: ZodValidation.number('Value').optional(),\n\tproducts: ZodValidation.array(z.object(baseProductMarketingFields), 'Products').optional().default([]),\n\tmaxDiscountPerOrder: ZodValidation.number('Max discount per order').default(0),\n\tspendLimit: ZodValidation.number('Spend limit').default(0),\n\tisOnlyForSubscriber: ZodValidation.boolean('IsOnlyForSubscriber').default(false),\n};\n\n/**\n * Create schema builder for Parent entity\n * - Includes timestamps\n * - Excludes 'createdAt' from update operations\n */\nconst schemaBuilder = createSchemaBuilder(baseFields);\n\n/**\n * Get all schemas for the Parent entity\n */\nconst {\n\tBaseSchema: DiscountMarketingValidationSchema,\n\tEntitySchema: DiscountMarketingSchema,\n\tIdSchema: DiscountMarketingIdSchema,\n\tUpdateSchema: UpdateDiscountMarketingSchema,\n} = schemaBuilder.getAllSchemas({ createdAt: true });\n\nconst DiscountMarketingValidationSchemaRefined = DiscountMarketingValidationSchema.superRefine(\n\t(data, ctx) => {\n\t\tif (data.maxDiscountPerOrder && data.spendLimit) {\n\t\t\tif (data.maxDiscountPerOrder > data.spendLimit) {\n\t\t\t\tctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: 'Spend limit cannot be less than max discount per order',\n\t\t\t\t\tpath: ['maxDiscountPerOrder', 'spendLimit'],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (data.categories.length > 0 && (!data.categoryValue || !data.categoryValueType)) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'Please provide discount information for categories',\n\t\t\t\tpath: ['categories', 'categoryValue', 'categoryValueType'],\n\t\t\t});\n\t\t}\n\n\t\tif (data.products.length > 0 && (data.value || data.valueType || data.isEntireMenu)) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'Please provide discount information for either individual products or the entire menu',\n\t\t\t\tpath: ['products', 'value', 'valueType', 'isEntireMenu'],\n\t\t\t});\n\t\t}\n\n\t\tif (data.products.length < 1 && !(data.value && data.valueType && data.isEntireMenu)) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'Please provide discount information for individual products or the entire menu',\n\t\t\t\tpath: ['products', 'value', 'valueType', 'isEntireMenu'],\n\t\t\t});\n\t\t}\n\t}\n);\n\n/**\n * Export schemas\n */\nexport {\n\tDiscountMarketingValidationSchemaRefined as DiscountMarketingValidationSchema,\n\tDiscountMarketingSchema,\n\tDiscountMarketingIdSchema as DiscountMarketingIdValidationSchema,\n\tUpdateDiscountMarketingSchema,\n};\n\n/**\n * Export DTO types\n */\nexport type CreateDiscountMarketingDTO = DTO<typeof DiscountMarketingValidationSchema>;\nexport type DiscountMarketingDTO = DTO<typeof DiscountMarketingSchema>;\nexport type UpdateDiscountMarketingDTO = DTO<typeof UpdateDiscountMarketingSchema>;\n"]}
1
+ {"version":3,"file":"discount-marketing.validation.js","sourceRoot":"/","sources":["modules/marketing/validations/discount-marketing.validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\nimport {\n\tZodValidation,\n\tcreateSchemaBuilder,\n\tDTO,\n} from '@lyxa.ai/core/dist/utilities/validation/global-validation';\nimport { MarketingType, ValueType } from '@lyxa.ai/core/dist/utilities/enum';\nimport { baseMarketingFields } from './marketing.validation';\nimport { baseFields as baseProductMarketingFields } from './product-marketing.validation';\n\n/**\n * Define the base parent schema fields\n */\nconst baseFields = {\n\t...baseMarketingFields,\n\tmarketingType: z.literal(MarketingType.DISCOUNT),\n\tcategoryValueType: ZodValidation.enumType(ValueType, 'Category value type').optional(),\n\tcategoryValue: ZodValidation.number('Category value').optional(),\n\tcategories: ZodValidation.array(ZodValidation.objectId('Category'), 'Categories').optional().default([]),\n\tisEntireMenu: ZodValidation.boolean('IsEntireMenu').default(false),\n\tvalueType: ZodValidation.enumType(ValueType, 'Value type').optional(),\n\tvalue: ZodValidation.number('Value').optional(),\n\tproducts: ZodValidation.array(z.object(baseProductMarketingFields), 'Products').optional().default([]),\n\tmaxDiscountPerOrder: ZodValidation.number('Max discount per order').default(0),\n\tspendLimit: ZodValidation.number('Spend limit').default(0),\n\tisOnlyForSubscriber: ZodValidation.boolean('IsOnlyForSubscriber').default(false),\n};\n\n/**\n * Create schema builder for Parent entity\n * - Includes timestamps\n * - Excludes 'createdAt' from update operations\n */\nconst schemaBuilder = createSchemaBuilder(baseFields);\n\n/**\n * Get all schemas for the Parent entity\n */\nconst {\n\tBaseSchema: DiscountMarketingValidationSchema,\n\tEntitySchema: DiscountMarketingSchema,\n\tIdSchema: DiscountMarketingIdSchema,\n\tUpdateSchema: UpdateDiscountMarketingSchema,\n} = schemaBuilder.getAllSchemas({ createdAt: true });\n\nconst DiscountMarketingValidationSchemaRefined = DiscountMarketingValidationSchema.superRefine(\n\t(data, ctx) => {\n\t\tif (data.maxDiscountPerOrder && data.spendLimit) {\n\t\t\tif (data.maxDiscountPerOrder > data.spendLimit) {\n\t\t\t\tctx.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: 'Spend limit cannot be less than max discount per order',\n\t\t\t\t\tpath: ['maxDiscountPerOrder', 'spendLimit'],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (data.categories.length > 0 && (!data.categoryValue || !data.categoryValueType)) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'Please provide discount information for categories',\n\t\t\t\tpath: ['categories', 'categoryValue', 'categoryValueType'],\n\t\t\t});\n\t\t}\n\n\t\tif (data.products.length > 0 && (data.value || data.valueType || data.isEntireMenu)) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'Please provide discount information for either individual products or the entire menu',\n\t\t\t\tpath: ['products', 'value', 'valueType', 'isEntireMenu'],\n\t\t\t});\n\t\t}\n\n\t\tif (data.products.length < 1 && data.categories.length < 1 && !(data.value && data.valueType && data.isEntireMenu)) {\n\t\t\tctx.addIssue({\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tmessage: 'Please provide discount information for individual products or categories or the entire menu',\n\t\t\t\tpath: ['products', 'value', 'valueType', 'isEntireMenu', 'categories'],\n\t\t\t});\n\t\t}\n\t}\n);\n\n/**\n * Export schemas\n */\nexport {\n\tDiscountMarketingValidationSchemaRefined as DiscountMarketingValidationSchema,\n\tDiscountMarketingSchema,\n\tDiscountMarketingIdSchema as DiscountMarketingIdValidationSchema,\n\tUpdateDiscountMarketingSchema,\n};\n\n/**\n * Export DTO types\n */\nexport type CreateDiscountMarketingDTO = DTO<typeof DiscountMarketingValidationSchema>;\nexport type DiscountMarketingDTO = DTO<typeof DiscountMarketingSchema>;\nexport type UpdateDiscountMarketingDTO = DTO<typeof UpdateDiscountMarketingSchema>;\n"]}