@devx-commerce/plugin-discounts-svaraa 0.0.2-beta.2 → 0.0.2-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/src/api/admin/discounts/validators.js +16 -1
- package/.medusa/server/src/api/middlewares.js +4 -1
- package/.medusa/server/src/api/pos/discounts/apply/route.js +151 -0
- package/.medusa/server/src/api/pos/discounts/apply-freebie/route.js +20 -0
- package/.medusa/server/src/api/pos/discounts/auto-apply/route.js +188 -0
- package/.medusa/server/src/api/pos/discounts/cart-eligible-coupons/[cart_id]/route.js +39 -0
- package/.medusa/server/src/api/pos/discounts/coupons/[id]/route.js +25 -0
- package/.medusa/server/src/api/pos/discounts/middlewares.js +99 -0
- package/.medusa/server/src/api/pos/discounts/offers-on-product/[variant_id]/route.js +19 -0
- package/.medusa/server/src/api/pos/discounts/price-rules/route.js +89 -0
- package/.medusa/server/src/api/pos/discounts/price-rules-list/route.js +54 -0
- package/.medusa/server/src/api/pos/discounts/remove/route.js +41 -0
- package/.medusa/server/src/api/pos/discounts/remove-store-discount/route.js +54 -0
- package/.medusa/server/src/api/pos/discounts/validators.js +358 -0
- package/.medusa/server/src/api/pos/discounts/verify-store-discount/route.js +394 -0
- package/.medusa/server/src/api/store/discounts/apply/route.js +126 -8
- package/.medusa/server/src/api/store/discounts/auto-apply/route.js +143 -80
- package/.medusa/server/src/api/store/discounts/cart-eligible-coupons/[cart_id]/route.js +23 -3
- package/.medusa/server/src/api/store/discounts/price-rules/route.js +65 -2
- package/.medusa/server/src/api/store/discounts/remove/route.js +23 -3
- package/.medusa/server/src/index.js +2 -1
- package/.medusa/server/src/lib/constant.js +126 -0
- package/.medusa/server/src/lib/helper.js +68 -0
- package/.medusa/server/src/lib/redis-utils.js +33 -0
- package/.medusa/server/src/lib/send-otp-helper.js +37 -0
- package/.medusa/server/src/lib/utils.js +11 -2
- package/.medusa/server/src/modules/discounts/migrations/Migration20250822052209.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250825073038.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250901083847.js +14 -0
- package/.medusa/server/src/modules/discounts/migrations/Migration20250918095658.js +14 -0
- package/.medusa/server/src/modules/discounts/models/price-rule.js +13 -1
- package/.medusa/server/src/modules/discounts/service.js +9 -7
- package/.medusa/server/src/subscribers/index.js +18 -0
- package/.medusa/server/src/subscribers/promocode-subscriber.js +77 -0
- package/.medusa/server/src/workflows/discount/add-more-code-in-price-rule/index.js +3 -3
- package/.medusa/server/src/workflows/discount/apply-coupon/index.js +36 -26
- package/.medusa/server/src/workflows/discount/apply-coupon/steps/apply-coupon-step.js +25 -187
- package/.medusa/server/src/workflows/discount/apply-coupon/steps/generate-adjustment-line-item.js +27 -9
- package/.medusa/server/src/workflows/discount/apply-coupon/steps/validate-coupon-step.js +3 -5
- package/.medusa/server/src/workflows/discount/auto-apply-coupon/steps/auto-apply-coupon.js +157 -87
- package/.medusa/server/src/workflows/discount/calculate-coupon-discount/index.js +36 -32
- package/.medusa/server/src/workflows/discount/calculate-coupon-discount/step/fetch-price-rule-by-code.js +36 -0
- package/.medusa/server/src/workflows/discount/create-discount-price-rule/steps/create-discount-price-rule-step.js +2 -2
- package/.medusa/server/src/workflows/discount/create-subscriber-to-discount-price-rule.js +10 -0
- package/.medusa/server/src/workflows/discount/get-cart-eligible-coupons/index.js +2 -1
- package/.medusa/server/src/workflows/discount/get-cart-eligible-coupons/step/get-cart-eligible-coupon.js +33 -10
- package/.medusa/server/src/workflows/discount/index.js +5 -1
- package/.medusa/server/src/workflows/discount/remove-coupon/index.js +22 -2
- package/.medusa/server/src/workflows/discount/remove-coupon/step/remove-coupon-step.js +45 -26
- package/.medusa/server/src/workflows/discount/rounded-cart-total/index.js +13 -0
- package/.medusa/server/src/workflows/discount/steps/rounded-cart-total.js +168 -0
- package/.medusa/server/src/workflows/discount/update-coupon-code-stats/index.js +12 -0
- package/.medusa/server/src/workflows/discount/update-coupon-code-stats/step/update-coupon-code-stats.js +52 -0
- package/.medusa/server/src/workflows/discount/update-discount-price-rule/index.js +1 -3
- package/package.json +4 -2
|
@@ -45,6 +45,16 @@ const CreateDiscountDetailsBaseSchema = zod_1.z.object({
|
|
|
45
45
|
applies_on: exports.DiscountAppliesOn.optional().default(exports.DiscountAppliesOn.Values.PRICE),
|
|
46
46
|
applies_on_components: zod_1.z.array(exports.DiscountAppliesOnComponents).optional(),
|
|
47
47
|
min_order_value: zod_1.z.number().optional(),
|
|
48
|
+
promocode_type_id: zod_1.z.number().optional(),
|
|
49
|
+
is_all_branch: zod_1.z.boolean().default(false),
|
|
50
|
+
code_count: zod_1.z.number().default(0).optional(),
|
|
51
|
+
is_category: zod_1.z.boolean().default(false),
|
|
52
|
+
is_make_type: zod_1.z.boolean().default(false),
|
|
53
|
+
is_style: zod_1.z.boolean().default(false),
|
|
54
|
+
is_stock_type: zod_1.z.boolean().default(false),
|
|
55
|
+
is_birthday: zod_1.z.boolean().default(false),
|
|
56
|
+
is_anniversary: zod_1.z.boolean().default(false),
|
|
57
|
+
assign_branch_nos: zod_1.z.string().optional(),
|
|
48
58
|
min_order_qty: zod_1.z.number().optional(),
|
|
49
59
|
max_discount: zod_1.z.number().optional(),
|
|
50
60
|
usage_limit_per_customer_type: exports.DiscountUsageLimitPerCustomerType.optional().default(exports.DiscountUsageLimitPerCustomerType.Values.UNLIMITED),
|
|
@@ -64,6 +74,9 @@ const CreateDiscountDetailsBaseSchema = zod_1.z.object({
|
|
|
64
74
|
at_y: zod_1.z.number().optional(),
|
|
65
75
|
applicable_product_variant_ids: zod_1.z.array(zod_1.z.string()).optional(),
|
|
66
76
|
applicable_category_ids: zod_1.z.array(zod_1.z.string()).optional(),
|
|
77
|
+
applicable_make_types: zod_1.z.array(zod_1.z.string()).optional(),
|
|
78
|
+
applicable_styles: zod_1.z.array(zod_1.z.string()).optional(),
|
|
79
|
+
applicable_stock_types: zod_1.z.array(zod_1.z.string()).optional(),
|
|
67
80
|
applicable_customer_ids: zod_1.z.array(zod_1.z.string()).optional(),
|
|
68
81
|
code: zod_1.z.string(),
|
|
69
82
|
// id: z.string().optional(),
|
|
@@ -339,6 +352,8 @@ exports.UpdateDiscountPriceRuleSchema = zod_1.z.object({
|
|
|
339
352
|
usage_limit_per_cart_type: exports.DiscountUsageLimitPerCartType.optional(),
|
|
340
353
|
usage_limit_per_cart_specific: zod_1.z.number().optional(),
|
|
341
354
|
is_active: zod_1.z.boolean().optional(),
|
|
355
|
+
thumbnail: zod_1.z.string().optional(),
|
|
356
|
+
term_and_conditions: zod_1.z.string().optional(),
|
|
342
357
|
get_percent: zod_1.z.number().optional(),
|
|
343
358
|
get_flat_discount: zod_1.z.number().optional(),
|
|
344
359
|
visibility: zod_1.z.boolean().optional(),
|
|
@@ -648,4 +663,4 @@ exports.ApplyFreebieInputValidator = zod_1.z.object({
|
|
|
648
663
|
// ###################################################
|
|
649
664
|
// ##################### FREEBIE #####################
|
|
650
665
|
// ###################################################
|
|
651
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vZGlzY291bnRzL3ZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0ZBQTZGO0FBQzdGLHNFQUcrQztBQUMvQyw2QkFBd0I7QUFFeEIsb0RBQW9EO0FBRXZDLFFBQUEsY0FBYyxHQUFHLE9BQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFHNUQsUUFBQSxZQUFZLEdBQUcsT0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFHL0QsUUFBQSxpQkFBaUIsR0FBRyxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFHN0MsUUFBQSwyQkFBMkIsR0FBRyxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFHdkUsUUFBQSxpQ0FBaUMsR0FBRyxPQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3RELFdBQVc7SUFDWCxXQUFXO0lBQ1gsVUFBVTtDQUNYLENBQUMsQ0FBQztBQUtVLFFBQUEsc0JBQXNCLEdBQUcsT0FBQyxDQUFDLElBQUksQ0FBQztJQUMzQyxXQUFXO0lBQ1gsV0FBVztJQUNYLFVBQVU7Q0FDWCxDQUFDLENBQUM7QUFHVSxRQUFBLDZCQUE2QixHQUFHLE9BQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEQsV0FBVztJQUNYLFdBQVc7SUFDWCxVQUFVO0NBQ1gsQ0FBQyxDQUFDO0FBS1UsUUFBQSw4QkFBOEIsR0FBRyxPQUFDLENBQUMsSUFBSSxDQUFDO0lBQ25ELEtBQUs7SUFDTCxVQUFVO0lBQ1YsTUFBTTtDQUNQLENBQUMsQ0FBQztBQUlVLFFBQUEs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
|
|
666
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vZGlzY291bnRzL3ZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0ZBQTZGO0FBQzdGLHNFQUcrQztBQUMvQyw2QkFBd0I7QUFFeEIsb0RBQW9EO0FBRXZDLFFBQUEsY0FBYyxHQUFHLE9BQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFHNUQsUUFBQSxZQUFZLEdBQUcsT0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFHL0QsUUFBQSxpQkFBaUIsR0FBRyxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFHN0MsUUFBQSwyQkFBMkIsR0FBRyxPQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFHdkUsUUFBQSxpQ0FBaUMsR0FBRyxPQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3RELFdBQVc7SUFDWCxXQUFXO0lBQ1gsVUFBVTtDQUNYLENBQUMsQ0FBQztBQUtVLFFBQUEsc0JBQXNCLEdBQUcsT0FBQyxDQUFDLElBQUksQ0FBQztJQUMzQyxXQUFXO0lBQ1gsV0FBVztJQUNYLFVBQVU7Q0FDWCxDQUFDLENBQUM7QUFHVSxRQUFBLDZCQUE2QixHQUFHLE9BQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEQsV0FBVztJQUNYLFdBQVc7SUFDWCxVQUFVO0NBQ1gsQ0FBQyxDQUFDO0FBS1UsUUFBQSw4QkFBOEIsR0FBRyxPQUFDLENBQUMsSUFBSSxDQUFDO0lBQ25ELEtBQUs7SUFDTCxVQUFVO0lBQ1YsTUFBTTtDQUNQLENBQUMsQ0FBQztBQUlVLFFBQUEs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
|
|
@@ -3,12 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const http_1 = require("@medusajs/framework/http");
|
|
4
4
|
const middlewares_1 = require("./admin/discounts/middlewares");
|
|
5
5
|
const middlewares_2 = require("./store/discounts/middlewares");
|
|
6
|
+
const middlewares_3 = require("./pos/discounts/middlewares");
|
|
6
7
|
exports.default = (0, http_1.defineMiddlewares)({
|
|
7
8
|
routes: [
|
|
8
9
|
// admin routes
|
|
9
10
|
...middlewares_1.adminDiscountRoutesMiddlewares,
|
|
10
11
|
// store routes
|
|
11
12
|
...middlewares_2.storeDiscountRoutesMiddlewares,
|
|
13
|
+
// pos routes
|
|
14
|
+
...middlewares_3.posDiscountRoutesMiddlewares,
|
|
12
15
|
],
|
|
13
16
|
});
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBQTZEO0FBQzdELCtEQUErRTtBQUMvRSwrREFBK0U7QUFDL0UsNkRBQTJFO0FBRTNFLGtCQUFlLElBQUEsd0JBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ04sZUFBZTtRQUNmLEdBQUcsNENBQThCO1FBRWpDLGVBQWU7UUFDZixHQUFHLDRDQUE4QjtRQUVqQyxhQUFhO1FBQ2IsR0FBRywwQ0FBNEI7S0FDaEM7Q0FDRixDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = POST;
|
|
4
|
+
const api_response_1 = require("../../../../lib/api-response");
|
|
5
|
+
const apply_coupon_1 = require("../../../../workflows/discount/apply-coupon");
|
|
6
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const utils_2 = require("../../../../lib/utils");
|
|
8
|
+
async function POST(req, res) {
|
|
9
|
+
try {
|
|
10
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
11
|
+
// Use customer_id from request body if provided (for POS staff applying on behalf), otherwise use authenticated customer
|
|
12
|
+
const userId = req.validatedBody?.customerId || req.auth_context?.actor_id || req.auth_context;
|
|
13
|
+
const { data: carts } = await query.graph({
|
|
14
|
+
entity: "cart",
|
|
15
|
+
fields: [
|
|
16
|
+
"*",
|
|
17
|
+
"items.*",
|
|
18
|
+
"items.variant.*",
|
|
19
|
+
"items.variant.prices.*",
|
|
20
|
+
"items.variant.extended_variant.mrp",
|
|
21
|
+
"promotions.*",
|
|
22
|
+
],
|
|
23
|
+
filters: { id: req.validatedBody.cart_id },
|
|
24
|
+
});
|
|
25
|
+
if (!carts.length) {
|
|
26
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`Cart ${req.validatedBody.cart_id} not found`, 404));
|
|
27
|
+
}
|
|
28
|
+
const { data: discount_codes } = await query.graph({
|
|
29
|
+
entity: "discount_code",
|
|
30
|
+
fields: [
|
|
31
|
+
"*",
|
|
32
|
+
],
|
|
33
|
+
filters: { code: req.validatedBody.code },
|
|
34
|
+
});
|
|
35
|
+
if (!discount_codes.length) {
|
|
36
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
|
|
37
|
+
discountResult: {
|
|
38
|
+
isApplied: false,
|
|
39
|
+
discount: 0,
|
|
40
|
+
message: "This coupon code is invalid or does not exist."
|
|
41
|
+
}
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
if ((req.validatedBody.code.toLowerCase().includes("birth") || req.validatedBody.code.toLowerCase().includes("anni"))
|
|
45
|
+
&& !userId) {
|
|
46
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
|
|
47
|
+
discountResult: {
|
|
48
|
+
isApplied: false,
|
|
49
|
+
discount: 0,
|
|
50
|
+
message: "This coupon is valid only for registered users. Please log in to apply it."
|
|
51
|
+
}
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
if (userId && (req.validatedBody.code.toLowerCase().includes("birth") || req.validatedBody.code.toLowerCase().includes("anni"))) {
|
|
55
|
+
const { data: customer } = await query.graph({
|
|
56
|
+
entity: "customer",
|
|
57
|
+
fields: ["metadata", "extended_customer.id"],
|
|
58
|
+
filters: { id: userId },
|
|
59
|
+
});
|
|
60
|
+
const externalId = customer?.[0]?.extended_customer?.id;
|
|
61
|
+
if (externalId) {
|
|
62
|
+
const { data: ext } = await query.graph({
|
|
63
|
+
entity: "extended_customer",
|
|
64
|
+
fields: ["birth_date", "anniversary_date"],
|
|
65
|
+
filters: { id: externalId },
|
|
66
|
+
});
|
|
67
|
+
const todayIST = (0, utils_2.getISTMonthDay)(new Date());
|
|
68
|
+
const bday = ext?.[0]?.birth_date;
|
|
69
|
+
const anniv = ext?.[0]?.anniversary_date;
|
|
70
|
+
const isBirthday = bday && (0, utils_2.getISTMonthDay)(bday) === todayIST;
|
|
71
|
+
const isAnniversary = anniv && (0, utils_2.getISTMonthDay)(anniv) === todayIST;
|
|
72
|
+
if ((!isBirthday && req.validatedBody.code.toLowerCase().includes("birth")) || (!isAnniversary && req.validatedBody.code.toLowerCase().includes("anni"))) {
|
|
73
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
|
|
74
|
+
discountResult: {
|
|
75
|
+
isApplied: false,
|
|
76
|
+
discount: 0,
|
|
77
|
+
message: "This coupon can only be applied on your birthday or anniversary."
|
|
78
|
+
}
|
|
79
|
+
}));
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
const today = new Date();
|
|
83
|
+
const currentYear = today.getFullYear();
|
|
84
|
+
const startOfYear = new Date(currentYear, 0, 1); // Jan 1
|
|
85
|
+
const endOfYear = new Date(currentYear, 11, 31, 23, 59, 59); // Dec 31
|
|
86
|
+
const { data: orders } = await query.graph({
|
|
87
|
+
entity: "order",
|
|
88
|
+
fields: ["*", "metadata"],
|
|
89
|
+
filters: {
|
|
90
|
+
customer_id: userId,
|
|
91
|
+
created_at: {
|
|
92
|
+
$gte: startOfYear.toISOString(),
|
|
93
|
+
$lte: endOfYear.toISOString(),
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
const matchingOrders = orders?.filter((order) => {
|
|
98
|
+
if (req.validatedBody.code?.toLowerCase()?.includes("birth")) {
|
|
99
|
+
return order?.metadata?.code?.toLowerCase()?.includes("birth") ||
|
|
100
|
+
order?.metadata?.discount?.code?.toLowerCase()?.includes("birth");
|
|
101
|
+
}
|
|
102
|
+
if (req.validatedBody.code?.toLowerCase()?.includes("anni")) {
|
|
103
|
+
return order?.metadata?.code?.toLowerCase()?.includes("anni") ||
|
|
104
|
+
order?.metadata?.discount?.code?.toLowerCase()?.includes("anni");
|
|
105
|
+
}
|
|
106
|
+
return order?.metadata?.code === req.validatedBody.code ||
|
|
107
|
+
order?.metadata?.discount?.code === req.validatedBody.code;
|
|
108
|
+
});
|
|
109
|
+
if (matchingOrders.length !== 0) {
|
|
110
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
|
|
111
|
+
discountResult: {
|
|
112
|
+
isApplied: false,
|
|
113
|
+
discount: 0,
|
|
114
|
+
message: "You have already used this coupon"
|
|
115
|
+
}
|
|
116
|
+
}));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const { result, errors } = await (0, apply_coupon_1.applyCouponWorkflow)(req.scope).run({
|
|
122
|
+
input: {
|
|
123
|
+
...req.validatedBody,
|
|
124
|
+
cart: carts[0],
|
|
125
|
+
customerId: req.auth_context?.actor_id || undefined,
|
|
126
|
+
},
|
|
127
|
+
throwOnError: false
|
|
128
|
+
});
|
|
129
|
+
if (errors && errors.length > 0) {
|
|
130
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
|
|
131
|
+
discountResult: {
|
|
132
|
+
isApplied: false,
|
|
133
|
+
discount: 0,
|
|
134
|
+
message: errors?.[0]?.error?.message || "Failed to apply coupon"
|
|
135
|
+
}
|
|
136
|
+
}));
|
|
137
|
+
}
|
|
138
|
+
if (!result) {
|
|
139
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Failed to apply coupon", 400));
|
|
140
|
+
}
|
|
141
|
+
// Return only discount result - frontend will fetch cart separately
|
|
142
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
|
|
143
|
+
discountResult: result,
|
|
144
|
+
}));
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
console.log("error: ", error);
|
|
148
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvYXBwbHkvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQkEsb0JBdUtDO0FBbExELCtEQUlzQztBQUN0Qyw4RUFBa0Y7QUFHbEYscURBQXNFO0FBQ3RFLGlEQUF1RDtBQUVoRCxLQUFLLFVBQVUsSUFBSSxDQUN4QixHQUEwRCxFQUMxRCxHQUFtQjtJQUVuQixJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSx5SEFBeUg7UUFDekgsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLGFBQWEsRUFBRSxVQUFVLElBQUksR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQztRQUMvRixNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztZQUN4QyxNQUFNLEVBQUUsTUFBTTtZQUNkLE1BQU0sRUFBRTtnQkFDTixHQUFHO2dCQUNILFNBQVM7Z0JBQ1QsaUJBQWlCO2dCQUNqQix3QkFBd0I7Z0JBQ3hCLG9DQUFvQztnQkFDcEMsY0FBYzthQUNmO1lBQ0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFO1NBQzNDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEIsT0FBTyxJQUFBLDhCQUFlLEVBQ3BCLEdBQUcsRUFDSCxJQUFBLGtDQUFtQixFQUFDLFFBQVEsR0FBRyxDQUFDLGFBQWEsQ0FBQyxPQUFPLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FDeEUsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLEVBQUUs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
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = POST;
|
|
4
|
+
const api_response_1 = require("../../../../lib/api-response");
|
|
5
|
+
const apply_freebie_1 = require("../../../../workflows/discount/apply-freebie");
|
|
6
|
+
async function POST(req, res) {
|
|
7
|
+
try {
|
|
8
|
+
const { result } = await (0, apply_freebie_1.applyFreebieWorkflow)(req.scope).run({
|
|
9
|
+
input: req.validatedBody,
|
|
10
|
+
});
|
|
11
|
+
if (!result) {
|
|
12
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Failed to create discount price rule", 400));
|
|
13
|
+
}
|
|
14
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(result));
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvYXBwbHktZnJlZWJpZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLG9CQW9CQztBQTVCRCwrREFJc0M7QUFDdEMsZ0ZBQW9GO0FBRzdFLEtBQUssVUFBVSxJQUFJLENBQ3hCLEdBQXlELEVBQ3pELEdBQW1CO0lBRW5CLElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUEsb0NBQW9CLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMzRCxLQUFLLEVBQUUsR0FBRyxDQUFDLGFBQWE7U0FDekIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTyxJQUFBLDhCQUFlLEVBQ3BCLEdBQUcsRUFDSCxJQUFBLGtDQUFtQixFQUFDLHNDQUFzQyxFQUFFLEdBQUcsQ0FBQyxDQUNqRSxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sSUFBQSw4QkFBZSxFQUFDLEdBQUcsRUFBRSxJQUFBLG9DQUFxQixFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLElBQUEsOEJBQWUsRUFBQyxHQUFHLEVBQUUsSUFBQSxrQ0FBbUIsRUFBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztBQUNILENBQUMifQ==
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = POST;
|
|
4
|
+
const api_response_1 = require("../../../../lib/api-response");
|
|
5
|
+
const apply_coupon_1 = require("../../../../workflows/discount/apply-coupon");
|
|
6
|
+
const calculate_coupon_discount_1 = require("../../../../workflows/discount/calculate-coupon-discount");
|
|
7
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
8
|
+
const redis_utils_1 = require("../../../../lib/redis-utils");
|
|
9
|
+
const utils_2 = require("../../../../lib/utils");
|
|
10
|
+
async function getDiscountCode(query, priceRule, cache) {
|
|
11
|
+
const cacheKey = `discount_code:${priceRule.id}`;
|
|
12
|
+
const cached = await cache.get(cacheKey);
|
|
13
|
+
if (cached)
|
|
14
|
+
return cached;
|
|
15
|
+
if (!priceRule.prefix) {
|
|
16
|
+
await cache.set(cacheKey, priceRule.discount_code, redis_utils_1.CACHE_VALIDATION_TIMES.DISCOUNT_CODE);
|
|
17
|
+
return priceRule.discount_code;
|
|
18
|
+
}
|
|
19
|
+
const { data: codes } = await query.graph({
|
|
20
|
+
entity: "discount_code",
|
|
21
|
+
fields: ["*"],
|
|
22
|
+
filters: {
|
|
23
|
+
$and: [
|
|
24
|
+
{ price_rule_id: { $eq: priceRule.id } },
|
|
25
|
+
(priceRule.usage_limit_per_customer_type === "SPECIFIC" || priceRule.usage_limit_per_customer_type === "ONLY_ONCE")
|
|
26
|
+
? { usage_count: 0 }
|
|
27
|
+
: {},
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
pagination: { take: 1 },
|
|
31
|
+
});
|
|
32
|
+
const code = codes.length > 0 ? codes[0].code : null;
|
|
33
|
+
await cache.set(cacheKey, code, redis_utils_1.CACHE_VALIDATION_TIMES.DISCOUNT_CODE);
|
|
34
|
+
return code;
|
|
35
|
+
}
|
|
36
|
+
function getBestDiscount(discounts) {
|
|
37
|
+
return discounts
|
|
38
|
+
.filter((d) => d.status === "fulfilled" && d.value)
|
|
39
|
+
.map((d) => d.value)
|
|
40
|
+
.reduce((best, cur) => (cur.discount > best.discount ? { discount: cur.discount, code: cur.code } : best), { discount: 0 });
|
|
41
|
+
}
|
|
42
|
+
function groupAdjustments(adjustments) {
|
|
43
|
+
return adjustments.reduce((map, adj) => {
|
|
44
|
+
if (adj.code) {
|
|
45
|
+
map[adj.code] = (map[adj.code] || 0) + Math.abs(adj.amount || 0);
|
|
46
|
+
}
|
|
47
|
+
return map;
|
|
48
|
+
}, {});
|
|
49
|
+
}
|
|
50
|
+
// --- Main Handler ---
|
|
51
|
+
async function POST(req, res) {
|
|
52
|
+
try {
|
|
53
|
+
const query = req.scope.resolve("query");
|
|
54
|
+
const cache = req.scope.resolve(utils_1.Modules.CACHE);
|
|
55
|
+
const userId = req.auth_context?.actor_id || undefined;
|
|
56
|
+
let filters = { ...req.filterableFields };
|
|
57
|
+
// --- Customer birthday/anniversary filters ---
|
|
58
|
+
if (userId) {
|
|
59
|
+
const { data: customer } = await query.graph({
|
|
60
|
+
entity: "customer",
|
|
61
|
+
fields: ["metadata"],
|
|
62
|
+
filters: { id: userId },
|
|
63
|
+
});
|
|
64
|
+
const externalId = customer?.[0]?.metadata?.external_id;
|
|
65
|
+
if (externalId) {
|
|
66
|
+
const { data: ext } = await query.graph({
|
|
67
|
+
entity: "extended_customer",
|
|
68
|
+
fields: ["birth_date", "anniversary_date"],
|
|
69
|
+
filters: { external_id: externalId },
|
|
70
|
+
});
|
|
71
|
+
const todayIST = (0, utils_2.getISTMonthDay)(new Date());
|
|
72
|
+
const bday = ext?.[0]?.birth_date;
|
|
73
|
+
const anniv = ext?.[0]?.anniversary_date;
|
|
74
|
+
const isBirthday = bday && (0, utils_2.getISTMonthDay)(bday) === todayIST;
|
|
75
|
+
const isAnniversary = anniv && (0, utils_2.getISTMonthDay)(anniv) === todayIST;
|
|
76
|
+
if (isBirthday || isAnniversary) {
|
|
77
|
+
filters.$or = [
|
|
78
|
+
...(isBirthday ? [{ is_birthday: true }] : []),
|
|
79
|
+
...(isAnniversary ? [{ is_anniversary: true }] : []),
|
|
80
|
+
{ is_birthday: false, is_anniversary: false },
|
|
81
|
+
];
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
filters.is_birthday = false;
|
|
85
|
+
filters.is_anniversary = false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
filters = { ...filters, usage_limit: "UNLIMITED", is_birthday: false, is_anniversary: false };
|
|
91
|
+
}
|
|
92
|
+
// --- 1. Fetch auto-apply rules (with caching) ---
|
|
93
|
+
const rulesCacheKey = "discount_price_rules:auto_apply";
|
|
94
|
+
let priceRules = (await cache.get(rulesCacheKey)) || (await query.graph({
|
|
95
|
+
entity: "discount_price_rule",
|
|
96
|
+
fields: ["*"],
|
|
97
|
+
filters: { ...filters, auto_apply: true },
|
|
98
|
+
})).data;
|
|
99
|
+
if (!(await cache.get(rulesCacheKey))) {
|
|
100
|
+
await cache.set(rulesCacheKey, priceRules, redis_utils_1.CACHE_VALIDATION_TIMES.DISCOUNT_CODE);
|
|
101
|
+
}
|
|
102
|
+
// --- 2. Fetch cart once ---
|
|
103
|
+
const { data: carts } = await query.graph({
|
|
104
|
+
entity: "cart",
|
|
105
|
+
fields: [
|
|
106
|
+
"*",
|
|
107
|
+
"items.*",
|
|
108
|
+
"items.variant.*",
|
|
109
|
+
"items.variant.prices.*",
|
|
110
|
+
"items.variant.extended_product_variants.compare_at_price",
|
|
111
|
+
"promotions.*",
|
|
112
|
+
],
|
|
113
|
+
filters: { id: req.validatedBody.cart_id },
|
|
114
|
+
});
|
|
115
|
+
if (!carts.length) {
|
|
116
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`Cart ${req.validatedBody.cart_id} not found`, 404));
|
|
117
|
+
}
|
|
118
|
+
const cart = carts[0];
|
|
119
|
+
// --- 3. Calculate discounts for each rule ---
|
|
120
|
+
const discounts = await Promise.allSettled(priceRules.map(async (rule) => {
|
|
121
|
+
try {
|
|
122
|
+
const code = await getDiscountCode(query, rule, cache);
|
|
123
|
+
if (!code)
|
|
124
|
+
return { discount: 0 };
|
|
125
|
+
const { result: { discount }, } = await (0, calculate_coupon_discount_1.calculateCouponDiscountWorkflow)(req.scope).run({
|
|
126
|
+
input: { cart_id: req.validatedBody.cart_id, cart, code, customerId: userId || undefined },
|
|
127
|
+
});
|
|
128
|
+
return { discount, code };
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
return { discount: 0 };
|
|
132
|
+
}
|
|
133
|
+
}));
|
|
134
|
+
const { discount: currentDiscount, code: currentCode } = getBestDiscount(discounts);
|
|
135
|
+
// --- 4. Fetch adjustments once ---
|
|
136
|
+
const { data: adjustments } = await query.graph({
|
|
137
|
+
entity: "line_item_adjustment",
|
|
138
|
+
fields: ["*"],
|
|
139
|
+
filters: {
|
|
140
|
+
item_id: { $in: cart.items.map((i) => i.id) },
|
|
141
|
+
code: { $ne: null },
|
|
142
|
+
},
|
|
143
|
+
});
|
|
144
|
+
const codeDiscountMap = groupAdjustments(adjustments);
|
|
145
|
+
const [appliedCouponCode, appliedCouponDiscount] = Object.entries(codeDiscountMap).reduce((best, [code, total]) => (total > best[1] ? [code, total] : best), ["", 0]);
|
|
146
|
+
// --- 5. Compare and apply ---
|
|
147
|
+
if (appliedCouponCode && appliedCouponDiscount >= currentDiscount) {
|
|
148
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
|
|
149
|
+
message: "Existing coupon provides better or equal discount. No auto coupon applied.",
|
|
150
|
+
code: appliedCouponCode,
|
|
151
|
+
discount: appliedCouponDiscount,
|
|
152
|
+
}));
|
|
153
|
+
}
|
|
154
|
+
let appliedCode = currentCode;
|
|
155
|
+
let appliedDiscount = currentDiscount;
|
|
156
|
+
if (currentCode) {
|
|
157
|
+
const { result } = await (0, apply_coupon_1.applyCouponWorkflow)(req.scope).run({
|
|
158
|
+
input: { code: currentCode, cart_id: req.validatedBody.cart_id, cart, customerId: userId || undefined },
|
|
159
|
+
});
|
|
160
|
+
if (!result) {
|
|
161
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Failed to apply coupon", 400));
|
|
162
|
+
}
|
|
163
|
+
// 🔄 Refresh adjustments after applying
|
|
164
|
+
const { data: adjustmentsAfter } = await query.graph({
|
|
165
|
+
entity: "line_item_adjustment",
|
|
166
|
+
fields: ["*"],
|
|
167
|
+
filters: {
|
|
168
|
+
item_id: { $in: cart.items.map((i) => i.id) },
|
|
169
|
+
code: { $ne: null },
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
const codeDiscountMapAfter = groupAdjustments(adjustmentsAfter);
|
|
173
|
+
const [newCode, newDiscount] = Object.entries(codeDiscountMapAfter).reduce((best, [code, total]) => (total > best[1] ? [code, total] : best), ["", 0]);
|
|
174
|
+
appliedCode = newCode;
|
|
175
|
+
appliedDiscount = newDiscount;
|
|
176
|
+
}
|
|
177
|
+
// --- 6. Final response ---
|
|
178
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
|
|
179
|
+
message: appliedCode ? "Coupon applied" : "No coupon applied",
|
|
180
|
+
code: appliedCode,
|
|
181
|
+
discount: appliedDiscount,
|
|
182
|
+
}));
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvYXV0by1hcHBseS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlFQSxvQkFrTEM7QUEvT0QsK0RBSXFDO0FBQ3JDLDhFQUFpRjtBQUNqRix3R0FBMEc7QUFFMUcscURBQW1EO0FBQ25ELDZEQUFvRTtBQUNwRSxpREFBc0Q7QUFFdEQsS0FBSyxVQUFVLGVBQWUsQ0FBQyxLQUFVLEVBQUUsU0FBYyxFQUFFLEtBQVU7SUFDbkUsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQTtJQUNoRCxNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDeEMsSUFBSSxNQUFNO1FBQUUsT0FBTyxNQUFNLENBQUE7SUFFekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0QixNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxhQUFhLEVBQUUsb0NBQXNCLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDeEYsT0FBTyxTQUFTLENBQUMsYUFBYSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN4QyxNQUFNLEVBQUUsZUFBZTtRQUN2QixNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDYixPQUFPLEVBQUU7WUFDUCxJQUFJLEVBQUU7Z0JBQ0osRUFBRSxhQUFhLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFO2dCQUN4QyxDQUFDLFNBQVMsQ0FBQyw2QkFBNkIsS0FBSyxVQUFVLElBQUksU0FBUyxDQUFDLDZCQUE2QixLQUFLLFdBQVcsQ0FBQztvQkFD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
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const api_response_1 = require("../../../../../lib/api-response");
|
|
6
|
+
const get_cart_eligible_coupons_1 = require("../../../../../workflows/discount/get-cart-eligible-coupons");
|
|
7
|
+
async function GET(req, res) {
|
|
8
|
+
try {
|
|
9
|
+
const { cart_id } = req.params;
|
|
10
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
11
|
+
const { data: carts } = await query.graph({
|
|
12
|
+
entity: "cart",
|
|
13
|
+
fields: [
|
|
14
|
+
"*",
|
|
15
|
+
"items.*",
|
|
16
|
+
"items.variant.*",
|
|
17
|
+
"items.variant.prices.*",
|
|
18
|
+
"items.variant.extended_variant.mrp",
|
|
19
|
+
],
|
|
20
|
+
filters: { id: cart_id },
|
|
21
|
+
});
|
|
22
|
+
if (!carts.length) {
|
|
23
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`Cart ${cart_id} not found`, 404));
|
|
24
|
+
}
|
|
25
|
+
const { result } = await (0, get_cart_eligible_coupons_1.getCartEligibleCouponsWorkflow)(req.scope).run({
|
|
26
|
+
input: {
|
|
27
|
+
cart_id,
|
|
28
|
+
customerId: req?.auth_context?.actor_id,
|
|
29
|
+
cart: carts[0],
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(result));
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
// Error logging removed - use proper error handling instead
|
|
36
|
+
return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvY2FydC1lbGlnaWJsZS1jb3Vwb25zL1tjYXJ0X2lkXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLGtCQXlDQztBQWxERCxxREFBc0U7QUFFdEUsa0VBSXlDO0FBQ3pDLDJHQUE2RztBQUV0RyxLQUFLLFVBQVUsR0FBRyxDQUN2QixHQUErQixFQUMvQixHQUFtQjtJQUVuQixJQUFJLENBQUM7UUFDSCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUUvQixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztZQUN4QyxNQUFNLEVBQUUsTUFBTTtZQUNkLE1BQU0sRUFBRTtnQkFDTixHQUFHO2dCQUNILFNBQVM7Z0JBQ1QsaUJBQWlCO2dCQUNqQix3QkFBd0I7Z0JBQ3hCLG9DQUFvQzthQUNyQztZQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUU7U0FDekIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsa0NBQW1CLEVBQUMsUUFBUSxPQUFPLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FDdEQsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLDBEQUE4QixFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDckUsS0FBSyxFQUFFO2dCQUNMLE9BQU87Z0JBQ1AsVUFBVSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsUUFBUTtnQkFDdkMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDZjtTQUNGLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBQSw4QkFBZSxFQUFDLEdBQUcsRUFBRSxJQUFBLG9DQUFxQixFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZiw0REFBNEQ7UUFDNUQsT0FBTyxJQUFBLDhCQUFlLEVBQUMsR0FBRyxFQUFFLElBQUEsa0NBQW1CLEVBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7QUFDSCxDQUFDIn0=
|