@lodashventure/medusa-campaign 1.4.1 → 1.4.2
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/admin/index.js +939 -504
- package/.medusa/server/src/admin/index.mjs +941 -506
- package/.medusa/server/src/api/admin/buy-x-get-y/[id]/route.js +2 -6
- package/.medusa/server/src/api/admin/coupons/[id]/route.js +76 -0
- package/.medusa/server/src/api/admin/coupons/route.js +88 -0
- package/.medusa/server/src/api/middlewares.js +32 -1
- package/.medusa/server/src/api/store/campaigns/route.js +78 -7
- package/.medusa/server/src/api/store/coupons/public/route.js +110 -0
- package/.medusa/server/src/api/store/customers/me/coupons/route.js +148 -0
- package/.medusa/server/src/modules/custom-campaigns/migrations/Migration20251024000000.js +2 -2
- package/.medusa/server/src/modules/custom-campaigns/migrations/Migration20251025000000.js +2 -2
- package/.medusa/server/src/modules/custom-campaigns/migrations/Migration20251101000000.js +16 -0
- package/.medusa/server/src/modules/custom-campaigns/types/campaign-type.enum.js +2 -1
- package/.medusa/server/src/workflows/custom-campaign/createCouponCampaignWorkflow.js +105 -0
- package/.medusa/server/src/workflows/custom-campaign/updateCouponCampaignWorkflow.js +59 -0
- package/.medusa/server/src/workflows/index.js +6 -2
- package/package.json +15 -30
- package/src/admin/components/BuyXGetYForm.tsx +24 -13
- package/src/admin/components/CouponForm.tsx +352 -0
- package/src/admin/components/CouponPage.tsx +104 -0
- package/src/admin/components/ProductSelector.tsx +22 -11
- package/src/admin/hooks/useCouponById.ts +36 -0
- package/src/admin/hooks/useCoupons.ts +46 -0
- package/src/admin/hooks/useFlashSaleById.ts +36 -10
- package/src/admin/hooks/useFlashSales.ts +36 -10
- package/src/admin/routes/coupons/[id]/page.tsx +147 -0
- package/src/admin/routes/coupons/create/page.tsx +49 -0
- package/src/admin/routes/coupons/page.tsx +15 -0
- package/src/admin/routes/flash-sales/[id]/page.tsx +2 -11
- package/src/admin/routes/flash-sales/create/page.tsx +0 -6
- package/src/admin/widgets/campaign-detail-widget.tsx +33 -26
- package/src/api/admin/buy-x-get-y/[id]/route.ts +11 -15
- package/src/api/admin/coupons/[id]/route.ts +98 -0
- package/src/api/admin/coupons/route.ts +109 -0
- package/src/api/middlewares.ts +34 -0
- package/src/api/store/campaigns/route.ts +107 -24
- package/src/api/store/coupons/public/route.ts +165 -0
- package/src/api/store/customers/me/coupons/route.ts +244 -0
- package/src/modules/custom-campaigns/migrations/Migration20251024000000.ts +1 -1
- package/src/modules/custom-campaigns/migrations/Migration20251025000000.ts +1 -1
- package/src/modules/custom-campaigns/migrations/Migration20251101000000.ts +21 -0
- package/src/modules/custom-campaigns/types/campaign-type.enum.ts +1 -0
- package/src/workflows/custom-campaign/createCouponCampaignWorkflow.ts +176 -0
- package/src/workflows/custom-campaign/updateCouponCampaignWorkflow.ts +105 -0
- package/src/workflows/index.ts +3 -1
- package/src/admin/widgets/campaign-stats-widget.tsx +0 -238
|
@@ -21,11 +21,7 @@ const GET = async (req, res) => {
|
|
|
21
21
|
// Find the custom campaign type by campaign ID
|
|
22
22
|
const { data: [customCampaignTypes], } = await query.graph({
|
|
23
23
|
entity: "custom_campaign_type",
|
|
24
|
-
fields: [
|
|
25
|
-
"id",
|
|
26
|
-
"campaign.*",
|
|
27
|
-
"campaign.promotions.*",
|
|
28
|
-
],
|
|
24
|
+
fields: ["id", "campaign.*", "campaign.promotions.*"],
|
|
29
25
|
filters: {
|
|
30
26
|
type: campaign_type_enum_1.CampaignTypeEnum.BuyXGetY,
|
|
31
27
|
campaign_id: id,
|
|
@@ -113,4 +109,4 @@ const PUT = async (req, res) => {
|
|
|
113
109
|
}
|
|
114
110
|
};
|
|
115
111
|
exports.PUT = PUT;
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2J1eS14LWdldC15L1tpZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQStFO0FBQy9FLHFEQUltQztBQUNuQyxzR0FBaUc7QUFFakcseUhBQXNIO0FBQ3RILDJFQUE4RTtBQUc5RTs7R0FFRztBQUNJLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNuRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUUxQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDUixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qix5QkFBeUIsQ0FDMUIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxxQkFBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRSxNQUFNLGNBQWMsR0FBRyxxQkFBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUQsTUFBTSwyQkFBMkIsR0FDL0IscUJBQVMsQ0FBQyxPQUFPLENBQThCLHlDQUFzQixDQUFDLENBQUM7SUFFekUsSUFBSSxDQUFDO1FBQ0gsK0NBQStDO1FBQy9DLE1BQU0sRUFDSixJQUFJLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxHQUM1QixHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNwQixNQUFNLEVBQUUsc0JBQXNCO1lBQzlCLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsdUJBQXVCLENBQUM7WUFDckQsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxxQ0FBZ0IsQ0FBQyxRQUFRO2dCQUMvQixXQUFXLEVBQUUsRUFB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
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.PUT = exports.GET = void 0;
|
|
7
|
+
const framework_1 = require("@medusajs/framework");
|
|
8
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
9
|
+
const zod_1 = __importDefault(require("zod"));
|
|
10
|
+
const route_1 = require("../route");
|
|
11
|
+
const updateCouponCampaignWorkflow_1 = require("../../../../workflows/custom-campaign/updateCouponCampaignWorkflow");
|
|
12
|
+
const custom_campaigns_1 = require("../../../../modules/custom-campaigns");
|
|
13
|
+
const campaign_type_enum_1 = require("../../../../modules/custom-campaigns/types/campaign-type.enum");
|
|
14
|
+
const updateCouponSchema = route_1.createCouponCampaignSchema.extend({
|
|
15
|
+
type: zod_1.default.literal(campaign_type_enum_1.CampaignTypeEnum.Coupon),
|
|
16
|
+
});
|
|
17
|
+
const GET = async (req, res) => {
|
|
18
|
+
const { id } = req.params;
|
|
19
|
+
const promotionService = framework_1.container.resolve(utils_1.Modules.PROMOTION);
|
|
20
|
+
const customCampaignModuleService = framework_1.container.resolve(custom_campaigns_1.CUSTOM_CAMPAIGN_MODULE);
|
|
21
|
+
try {
|
|
22
|
+
const campaign = await promotionService.retrieveCampaign(id, {
|
|
23
|
+
relations: ["promotions", "promotions.application_method"],
|
|
24
|
+
});
|
|
25
|
+
if (!campaign) {
|
|
26
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Coupon campaign not found");
|
|
27
|
+
}
|
|
28
|
+
const [campaignType] = await customCampaignModuleService.listCustomCampaignTypes({
|
|
29
|
+
campaign_id: campaign.id,
|
|
30
|
+
});
|
|
31
|
+
if (campaignType?.type !== campaign_type_enum_1.CampaignTypeEnum.Coupon) {
|
|
32
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Campaign is not a coupon");
|
|
33
|
+
}
|
|
34
|
+
const [detail] = await customCampaignModuleService.listCampaignDetails({
|
|
35
|
+
campaign_id: campaign.id,
|
|
36
|
+
});
|
|
37
|
+
res.status(200).json({
|
|
38
|
+
campaign,
|
|
39
|
+
campaign_detail: detail ?? null,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
if (error instanceof utils_1.MedusaError) {
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, error?.message ?? "Failed to retrieve coupon");
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
exports.GET = GET;
|
|
50
|
+
const PUT = async (req, res) => {
|
|
51
|
+
const { id } = req.params;
|
|
52
|
+
const body = req.body;
|
|
53
|
+
if (body.type !== campaign_type_enum_1.CampaignTypeEnum.Coupon) {
|
|
54
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Campaign type must be coupon");
|
|
55
|
+
}
|
|
56
|
+
await updateCouponCampaignWorkflow_1.updateCouponCampaignWorkflow.run({
|
|
57
|
+
input: {
|
|
58
|
+
id,
|
|
59
|
+
name: body.name,
|
|
60
|
+
description: body.description,
|
|
61
|
+
code: body.code,
|
|
62
|
+
starts_at: new Date(body.starts_at),
|
|
63
|
+
ends_at: new Date(body.ends_at),
|
|
64
|
+
discount_type: body.discount_type,
|
|
65
|
+
discount_value: body.discount_value,
|
|
66
|
+
currency_code: body.currency_code,
|
|
67
|
+
allocation: body.allocation,
|
|
68
|
+
target_type: body.target_type,
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
res.status(200).json({
|
|
72
|
+
message: "Coupon campaign updated",
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
exports.PUT = PUT;
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbnMvW2lkXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBK0U7QUFDL0UscURBQWlFO0FBQ2pFLDhDQUFvQjtBQUNwQixvQ0FBc0Q7QUFDdEQscUhBQWtIO0FBQ2xILDJFQUE4RTtBQUU5RSxzR0FBaUc7QUFFakcsTUFBTSxrQkFBa0IsR0FBRyxrQ0FBMEIsQ0FBQyxNQUFNLENBQUM7SUFDM0QsSUFBSSxFQUFFLGFBQUMsQ0FBQyxPQUFPLENBQUMscUNBQWdCLENBQUMsTUFBTSxDQUFDO0NBQ3pDLENBQUMsQ0FBQztBQUVJLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNuRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUUxQixNQUFNLGdCQUFnQixHQUFHLHFCQUFTLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5RCxNQUFNLDJCQUEyQixHQUMvQixxQkFBUyxDQUFDLE9BQU8sQ0FBOEIseUNBQXNCLENBQUMsQ0FBQztJQUV6RSxJQUFJLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRTtZQUMzRCxTQUFTLEVBQUUsQ0FBQyxZQUFZLEVBQUUsK0JBQStCLENBQUM7U0FDM0QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IsMkJBQTJCLENBQzVCLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUNsQixNQUFNLDJCQUEyQixDQUFDLHVCQUF1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
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.GET = exports.POST = exports.GetCouponCampaignsSchema = exports.createCouponCampaignSchema = void 0;
|
|
7
|
+
const framework_1 = require("@medusajs/framework");
|
|
8
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
9
|
+
const validators_1 = require("@medusajs/medusa/api/utils/validators");
|
|
10
|
+
const zod_1 = __importDefault(require("zod"));
|
|
11
|
+
const campaign_type_enum_1 = require("../../../modules/custom-campaigns/types/campaign-type.enum");
|
|
12
|
+
const createCouponCampaignWorkflow_1 = require("../../../workflows/custom-campaign/createCouponCampaignWorkflow");
|
|
13
|
+
const custom_campaigns_1 = require("../../../modules/custom-campaigns");
|
|
14
|
+
exports.createCouponCampaignSchema = zod_1.default
|
|
15
|
+
.object({
|
|
16
|
+
name: zod_1.default.string().min(1, "Name is required"),
|
|
17
|
+
description: zod_1.default.string().min(1, "Description is required"),
|
|
18
|
+
type: zod_1.default.literal(campaign_type_enum_1.CampaignTypeEnum.Coupon),
|
|
19
|
+
code: zod_1.default.string().min(1, "Coupon code is required"),
|
|
20
|
+
starts_at: zod_1.default.coerce.date(),
|
|
21
|
+
ends_at: zod_1.default.coerce.date(),
|
|
22
|
+
discount_type: zod_1.default.enum(["percentage", "fixed"]),
|
|
23
|
+
discount_value: zod_1.default.number().positive("Discount value must be positive"),
|
|
24
|
+
currency_code: zod_1.default.string().optional(),
|
|
25
|
+
allocation: zod_1.default.enum(["each", "total"]).optional(),
|
|
26
|
+
target_type: zod_1.default.enum(["order", "items"]).optional(),
|
|
27
|
+
})
|
|
28
|
+
.superRefine((data, ctx) => {
|
|
29
|
+
if (data.ends_at <= data.starts_at) {
|
|
30
|
+
ctx.addIssue({
|
|
31
|
+
code: zod_1.default.ZodIssueCode.custom,
|
|
32
|
+
message: "End date must be after start date",
|
|
33
|
+
path: ["ends_at"],
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
if (data.discount_type === "fixed" && !data.currency_code) {
|
|
37
|
+
ctx.addIssue({
|
|
38
|
+
code: zod_1.default.ZodIssueCode.custom,
|
|
39
|
+
message: "currency_code is required for fixed discount type",
|
|
40
|
+
path: ["currency_code"],
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
exports.GetCouponCampaignsSchema = (0, validators_1.createFindParams)({
|
|
45
|
+
order: "-created_at",
|
|
46
|
+
});
|
|
47
|
+
const POST = async (req, res) => {
|
|
48
|
+
const body = req.body;
|
|
49
|
+
if (body.type !== campaign_type_enum_1.CampaignTypeEnum.Coupon) {
|
|
50
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Invalid campaign type for coupons");
|
|
51
|
+
}
|
|
52
|
+
const { result } = await createCouponCampaignWorkflow_1.createCouponCampaignWorkflow.run({
|
|
53
|
+
input: {
|
|
54
|
+
...body,
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
res.status(200).json(result);
|
|
58
|
+
};
|
|
59
|
+
exports.POST = POST;
|
|
60
|
+
const GET = async (req, res) => {
|
|
61
|
+
const customCampaignModuleService = framework_1.container.resolve(custom_campaigns_1.CUSTOM_CAMPAIGN_MODULE);
|
|
62
|
+
const promotionService = framework_1.container.resolve(utils_1.Modules.PROMOTION);
|
|
63
|
+
const customCampaignTypes = await customCampaignModuleService.listCustomCampaignTypes({
|
|
64
|
+
type: campaign_type_enum_1.CampaignTypeEnum.Coupon,
|
|
65
|
+
});
|
|
66
|
+
if (!customCampaignTypes.length) {
|
|
67
|
+
return res.status(200).json({
|
|
68
|
+
campaigns: [],
|
|
69
|
+
count: 0,
|
|
70
|
+
limit: 20,
|
|
71
|
+
offset: 0,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
const campaignIds = customCampaignTypes.map((ct) => ct.campaign_id);
|
|
75
|
+
const campaigns = await promotionService.listCampaigns({
|
|
76
|
+
id: campaignIds,
|
|
77
|
+
}, {
|
|
78
|
+
relations: ["promotions", "promotions.application_method"],
|
|
79
|
+
});
|
|
80
|
+
res.status(200).json({
|
|
81
|
+
campaigns,
|
|
82
|
+
count: campaigns.length,
|
|
83
|
+
limit: campaigns.length,
|
|
84
|
+
offset: 0,
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
exports.GET = GET;
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbnMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQStFO0FBQy9FLHFEQUdtQztBQUNuQyxzRUFBeUU7QUFDekUsOENBQW9CO0FBQ3BCLG1HQUE4RjtBQUM5RixrSEFBK0c7QUFDL0csd0VBQTJFO0FBRzlELFFBQUEsMEJBQTBCLEdBQUcsYUFBQztLQUN4QyxNQUFNLENBQUM7SUFDTixJQUFJLEVBQUUsYUFBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUM7SUFDM0MsV0FBVyxFQUFFLGFBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLHlCQUF5QixDQUFDO0lBQ3pELElBQUksRUFBRSxhQUFDLENBQUMsT0FBTyxDQUFDLHFDQUFnQixDQUFDLE1BQU0sQ0FBQztJQUN4QyxJQUFJLEVBQUUsYUFBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUseUJBQXlCLENBQUM7SUFDbEQsU0FBUyxFQUFFLGFBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO0lBQzFCLE9BQU8sRUFBRSxhQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtJQUN4QixhQUFhLEVBQUUsYUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QyxjQUFjLEVBQUUsYUFBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxpQ0FBaUMsQ0FBQztJQUN0RSxhQUFhLEVBQUUsYUFBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNwQyxVQUFVLEVBQUUsYUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFB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
|
|
@@ -5,7 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const framework_1 = require("@medusajs/framework");
|
|
7
7
|
const route_1 = require("./admin/flash-sales/route");
|
|
8
|
+
const route_2 = require("./admin/coupons/route");
|
|
8
9
|
const multer_1 = __importDefault(require("multer"));
|
|
10
|
+
const route_3 = require("./store/customers/me/coupons/route");
|
|
9
11
|
const upload = (0, multer_1.default)({
|
|
10
12
|
storage: multer_1.default.memoryStorage(),
|
|
11
13
|
});
|
|
@@ -30,6 +32,30 @@ exports.default = (0, framework_1.defineMiddlewares)([
|
|
|
30
32
|
}),
|
|
31
33
|
],
|
|
32
34
|
},
|
|
35
|
+
{
|
|
36
|
+
methods: ["POST"],
|
|
37
|
+
matcher: "/admin/coupons",
|
|
38
|
+
middlewares: [
|
|
39
|
+
(0, framework_1.validateAndTransformBody)(route_2.createCouponCampaignSchema),
|
|
40
|
+
],
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
methods: ["PUT"],
|
|
44
|
+
matcher: "/admin/coupons/:id",
|
|
45
|
+
middlewares: [
|
|
46
|
+
(0, framework_1.validateAndTransformBody)(route_2.createCouponCampaignSchema),
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
methods: ["GET"],
|
|
51
|
+
matcher: "/admin/coupons",
|
|
52
|
+
middlewares: [
|
|
53
|
+
(0, framework_1.validateAndTransformQuery)(route_2.GetCouponCampaignsSchema, {
|
|
54
|
+
defaults: ["*", "campaign.*"],
|
|
55
|
+
isList: true,
|
|
56
|
+
}),
|
|
57
|
+
],
|
|
58
|
+
},
|
|
33
59
|
{
|
|
34
60
|
methods: ["POST"],
|
|
35
61
|
matcher: "/admin/campaigns/:id/image",
|
|
@@ -46,5 +72,10 @@ exports.default = (0, framework_1.defineMiddlewares)([
|
|
|
46
72
|
upload.single("file"),
|
|
47
73
|
],
|
|
48
74
|
},
|
|
75
|
+
{
|
|
76
|
+
methods: ["POST"],
|
|
77
|
+
matcher: "/store/customers/me/coupons",
|
|
78
|
+
middlewares: [(0, framework_1.validateAndTransformBody)(route_3.collectCouponSchema)],
|
|
79
|
+
},
|
|
49
80
|
]);
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbURBSTZCO0FBQzdCLHFEQUdtQztBQUNuQyxpREFHK0I7QUFDL0Isb0RBQTRCO0FBQzVCLDhEQUF5RTtBQUV6RSxNQUFNLE1BQU0sR0FBRyxJQUFBLGdCQUFNLEVBQUM7SUFDcEIsT0FBTyxFQUFFLGdCQUFNLENBQUMsYUFBYSxFQUFFO0NBQ2hDLENBQUMsQ0FBQztBQUVILGtCQUFlLElBQUEsNkJBQWlCLEVBQUM7SUFDL0I7UUFDRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDakIsT0FBTyxFQUFFLG9CQUFvQjtRQUM3QixXQUFXLEVBQUUsQ0FBQyxJQUFBLG9DQUF3QixFQUFDLGtDQUFpQyxDQUFDLENBQUM7S0FDM0U7SUFDRDtRQUNFLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNoQixPQUFPLEVBQUUsd0JBQXdCO1FBQ2pDLFdBQVcsRUFBRSxDQUFDLElBQUEsb0NBQXdCLEVBQUMsa0NBQWlDLENBQUMsQ0FBQztLQUMzRTtJQUNEO1FBQ0UsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxvQkFBb0I7UUFDN0IsV0FBVyxFQUFFO1lBQ1gsSUFBQSxxQ0FBeUIsRUFBQywyQkFBMEIsRUFBRTtnQkFDcEQsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQztnQkFDN0IsTUFBTSxFQUFFLElBQUk7YUFDYixDQUFDO1NBQ0g7S0FDRjtJQUNEO1FBQ0UsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2pCLE9BQU8sRUFBRSxnQkFBZ0I7UUFDekIsV0FBVyxFQUFFO1lBQ1gsSUFBQSxvQ0FBd0IsRUFBQyxrQ0FBaUMsQ0FBQztTQUM1RDtLQUNGO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDaEIsT0FBTyxFQUFFLG9CQUFvQjtRQUM3QixXQUFXLEVBQUU7WUFDWCxJQUFBLG9DQUF3QixFQUFDLGtDQUFpQyxDQUFDO1NBQzVEO0tBQ0Y7SUFDRDtRQUNFLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNoQixPQUFPLEVBQUUsZ0JBQWdCO1FBQ3pCLFdBQVcsRUFBRTtZQUNYLElBQUEscUNBQXlCLEVBQUMsZ0NBQStCLEVBQUU7Z0JBQ3pELFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUM7Z0JBQzdCLE1BQU0sRUFBRSxJQUFJO2FBQ2IsQ0FBQztTQUNIO0tBQ0Y7SUFDRDtRQUNFLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNqQixPQUFPLEVBQUUsNEJBQTRCO1FBQ3JDLFdBQVcsRUFBRTtZQUNYLGFBQWE7WUFDYixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztTQUN0QjtLQUNGO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDakIsT0FBTyxFQUFFLGdDQUFnQztRQUN6QyxXQUFXLEVBQUU7WUFDWCxhQUFhO1lBQ2IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDdEI7S0FDRjtJQUNEO1FBQ0UsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2pCLE9BQU8sRUFBRSw2QkFBNkI7UUFDdEMsV0FBVyxFQUFFLENBQUMsSUFBQSxvQ0FBd0IsRUFBQywyQkFBMEIsQ0FBQyxDQUFDO0tBQ3BFO0NBQ0YsQ0FBQyxDQUFDIn0=
|
|
@@ -11,6 +11,7 @@ const custom_campaigns_1 = require("../../../modules/custom-campaigns");
|
|
|
11
11
|
const GET = async (req, res) => {
|
|
12
12
|
const customCampaignModuleService = framework_1.container.resolve(custom_campaigns_1.CUSTOM_CAMPAIGN_MODULE);
|
|
13
13
|
const promotionService = framework_1.container.resolve(utils_1.Modules.PROMOTION);
|
|
14
|
+
const productService = framework_1.container.resolve(utils_1.Modules.PRODUCT);
|
|
14
15
|
const now = new Date();
|
|
15
16
|
try {
|
|
16
17
|
// Get the campaign type filter from query params (optional)
|
|
@@ -53,9 +54,23 @@ const GET = async (req, res) => {
|
|
|
53
54
|
// Fetch ALL campaigns first for debugging
|
|
54
55
|
const allCampaigns = await promotionService.listCampaigns({});
|
|
55
56
|
console.log(`Total campaigns in system: ${allCampaigns.length}`);
|
|
56
|
-
// Then fetch specific campaigns
|
|
57
|
+
// Then fetch specific campaigns with relations
|
|
57
58
|
const campaigns = campaignIds.length > 0
|
|
58
|
-
?
|
|
59
|
+
? await Promise.all(campaignIds.map(async (campaignId) => {
|
|
60
|
+
try {
|
|
61
|
+
return await promotionService.retrieveCampaign(campaignId, {
|
|
62
|
+
relations: [
|
|
63
|
+
"promotions",
|
|
64
|
+
"promotions.application_method",
|
|
65
|
+
"promotions.application_method.target_rules",
|
|
66
|
+
],
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
console.error(`Error fetching campaign ${campaignId}:`, error);
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
})).then((results) => results.filter((c) => c !== null))
|
|
59
74
|
: [];
|
|
60
75
|
console.log(`Found ${campaigns.length} matching campaigns`);
|
|
61
76
|
campaigns.forEach((c) => {
|
|
@@ -66,7 +81,7 @@ const GET = async (req, res) => {
|
|
|
66
81
|
// Create a map of campaign_id to campaign_type
|
|
67
82
|
const campaignTypeMap = new Map(customCampaignTypes.map((ct) => [ct.campaign_id, ct.type]));
|
|
68
83
|
// Process ALL campaigns first (without date filter) for debugging
|
|
69
|
-
const allProcessedCampaigns = campaigns.map((campaign) => {
|
|
84
|
+
const allProcessedCampaigns = await Promise.all(campaigns.map(async (campaign) => {
|
|
70
85
|
const startsAt = new Date(campaign.starts_at);
|
|
71
86
|
const endsAt = new Date(campaign.ends_at);
|
|
72
87
|
const isActive = startsAt <= now && endsAt >= now;
|
|
@@ -74,6 +89,61 @@ const GET = async (req, res) => {
|
|
|
74
89
|
console.log(` Start: ${startsAt.toISOString()} (${startsAt <= now ? 'started' : 'not started'})`);
|
|
75
90
|
console.log(` End: ${endsAt.toISOString()} (${endsAt >= now ? 'not ended' : 'ended'})`);
|
|
76
91
|
console.log(` Active: ${isActive}`);
|
|
92
|
+
const campaignType = campaignTypeMap.get(campaign.id);
|
|
93
|
+
// Fetch products for flash-sale campaigns
|
|
94
|
+
let products = [];
|
|
95
|
+
if (campaignType === campaign_type_enum_1.CampaignTypeEnum.FlashSale) {
|
|
96
|
+
try {
|
|
97
|
+
// Fetch promotion usage limits for this campaign
|
|
98
|
+
const promotionUsageLimits = await customCampaignModuleService.listPromotionUsageLimits({
|
|
99
|
+
campaign_id: campaign.id,
|
|
100
|
+
});
|
|
101
|
+
// Create a map of promotion usage limits by promotion ID
|
|
102
|
+
const promotionLimitsMap = new Map();
|
|
103
|
+
promotionUsageLimits.forEach((limit) => {
|
|
104
|
+
promotionLimitsMap.set(limit.promotion_id, limit);
|
|
105
|
+
});
|
|
106
|
+
// Process promotions to extract product information
|
|
107
|
+
for (const promotion of campaign.promotions ?? []) {
|
|
108
|
+
if (!promotion.application_method?.target_rules?.length) {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
const promotionLimit = promotionLimitsMap.get(promotion.id);
|
|
112
|
+
if (!promotionLimit?.product_id) {
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
try {
|
|
116
|
+
const product = await productService.retrieveProduct(promotionLimit.product_id, {
|
|
117
|
+
select: ["id", "title", "thumbnail", "handle", "description"],
|
|
118
|
+
relations: ["images"],
|
|
119
|
+
});
|
|
120
|
+
if (promotion.application_method.value !== undefined) {
|
|
121
|
+
products.push({
|
|
122
|
+
product: {
|
|
123
|
+
id: product.id,
|
|
124
|
+
title: product.title,
|
|
125
|
+
thumbnail: product.thumbnail,
|
|
126
|
+
handle: product.handle,
|
|
127
|
+
description: product.description,
|
|
128
|
+
images: product.images,
|
|
129
|
+
},
|
|
130
|
+
discountType: promotion.application_method?.type,
|
|
131
|
+
discountValue: promotion.application_method?.value,
|
|
132
|
+
maxQty: promotion.application_method?.max_quantity ?? 0,
|
|
133
|
+
limit: promotionLimit?.limit ?? 0,
|
|
134
|
+
used: promotionLimit?.used ?? 0,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
console.error(`Error fetching product ${promotionLimit.product_id}:`, error);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
console.error(`Error fetching products for campaign ${campaign.id}:`, error);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
77
147
|
return {
|
|
78
148
|
id: campaign.id,
|
|
79
149
|
name: campaign.name,
|
|
@@ -81,10 +151,11 @@ const GET = async (req, res) => {
|
|
|
81
151
|
campaign_identifier: campaign.campaign_identifier,
|
|
82
152
|
starts_at: campaign.starts_at,
|
|
83
153
|
ends_at: campaign.ends_at,
|
|
84
|
-
campaign_type:
|
|
85
|
-
is_active: isActive
|
|
154
|
+
campaign_type: campaignType,
|
|
155
|
+
is_active: isActive,
|
|
156
|
+
...(products.length > 0 && { products }),
|
|
86
157
|
};
|
|
87
|
-
});
|
|
158
|
+
}));
|
|
88
159
|
// Filter for active campaigns
|
|
89
160
|
const activeCampaigns = allProcessedCampaigns.filter(c => c.is_active);
|
|
90
161
|
console.log(`Returning ${activeCampaigns.length} active campaigns out of ${allProcessedCampaigns.length} total`);
|
|
@@ -125,4 +196,4 @@ const GET = async (req, res) => {
|
|
|
125
196
|
}
|
|
126
197
|
};
|
|
127
198
|
exports.GET = GET;
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2NhbXBhaWducy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBK0U7QUFDL0UscURBQStFO0FBQy9FLG1HQUE4RjtBQUM5Rix3RUFBMkU7QUFHM0U7O0dBRUc7QUFDSSxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDbkUsTUFBTSwyQkFBMkIsR0FDL0IscUJBQVMsQ0FBQyxPQUFPLENBQThCLHlDQUFzQixDQUFDLENBQUM7SUFDekUsTUFBTSxnQkFBZ0IsR0FBRyxxQkFBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUV2QixJQUFJLENBQUM7UUFDSCw0REFBNEQ7UUFDNUQsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFvQyxDQUFDO1FBRXJFLE1BQU0sT0FBTyxHQUFRLEVBQUUsQ0FBQztRQUN4QixJQUFJLFlBQVksSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLHFDQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDM0UsT0FBTyxDQUFDLElBQUksR0FBRyxZQUFZLENBQUM7UUFDOUIsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUM3QyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNoRCxPQUFPLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRXBELCtEQUErRDtRQUMvRCxNQUFNLHNCQUFzQixHQUMxQixNQUFNLDJCQUEyQixDQUFDLHVCQUF1QixD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
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2NhbXBhaWducy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBK0U7QUFDL0UscURBQW9EO0FBQ3BELG1HQUE4RjtBQUM5Rix3RUFBMkU7QUFHM0U7O0dBRUc7QUFDSSxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDbkUsTUFBTSwyQkFBMkIsR0FDL0IscUJBQVMsQ0FBQyxPQUFPLENBQThCLHlDQUFzQixDQUFDLENBQUM7SUFDekUsTUFBTSxnQkFBZ0IsR0FBRyxxQkFBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUQsTUFBTSxjQUFjLEdBQUcscUJBQVMsQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFELE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFFdkIsSUFBSSxDQUFDO1FBQ0gsNERBQTREO1FBQzVELE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBb0MsQ0FBQztRQUVyRSxNQUFNLE9BQU8sR0FBUSxFQUFFLENBQUM7UUFDeEIsSUFBSSxZQUFZLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxxQ0FBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQzNFLE9BQU8sQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDO1FBQzlCLENBQUM7UUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDN0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxZQUFZLENBQUMs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
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = void 0;
|
|
4
|
+
const framework_1 = require("@medusajs/framework");
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const campaign_type_enum_1 = require("../../../../modules/custom-campaigns/types/campaign-type.enum");
|
|
7
|
+
const custom_campaigns_1 = require("../../../../modules/custom-campaigns");
|
|
8
|
+
const USABLE_PROMO_MODULE = "usable_promotion";
|
|
9
|
+
const PROMOTION_CACHE_MODULE = "promotion_cache";
|
|
10
|
+
const resolveOptional = (token) => {
|
|
11
|
+
try {
|
|
12
|
+
return framework_1.container.resolve(token);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const GET = async (req, res) => {
|
|
19
|
+
const customCampaignModuleService = framework_1.container.resolve(custom_campaigns_1.CUSTOM_CAMPAIGN_MODULE);
|
|
20
|
+
const promotionService = framework_1.container.resolve(utils_1.Modules.PROMOTION);
|
|
21
|
+
const usablePromoService = resolveOptional(USABLE_PROMO_MODULE);
|
|
22
|
+
const promotionCacheService = resolveOptional(PROMOTION_CACHE_MODULE);
|
|
23
|
+
const now = new Date();
|
|
24
|
+
const customerId = req?.auth_context?.actor_id;
|
|
25
|
+
const parsedLimit = req.query?.limit ? Number(req.query.limit) : 20;
|
|
26
|
+
const parsedOffset = req.query?.offset ? Number(req.query.offset) : 0;
|
|
27
|
+
const limit = Number.isNaN(parsedLimit) ? 20 : parsedLimit;
|
|
28
|
+
const offset = Number.isNaN(parsedOffset) ? 0 : parsedOffset;
|
|
29
|
+
const couponCampaignTypes = await customCampaignModuleService.listCustomCampaignTypes({
|
|
30
|
+
type: campaign_type_enum_1.CampaignTypeEnum.Coupon,
|
|
31
|
+
});
|
|
32
|
+
if (!couponCampaignTypes.length) {
|
|
33
|
+
return res.status(200).json({
|
|
34
|
+
coupons: [],
|
|
35
|
+
count: 0,
|
|
36
|
+
limit,
|
|
37
|
+
offset,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const campaignIds = couponCampaignTypes.map((ct) => ct.campaign_id);
|
|
41
|
+
const promotions = await promotionService.listPromotions({
|
|
42
|
+
campaign_id: { $in: campaignIds },
|
|
43
|
+
}, {
|
|
44
|
+
relations: ["campaign", "application_method"],
|
|
45
|
+
});
|
|
46
|
+
const campaignDetails = await customCampaignModuleService.listCampaignDetails({
|
|
47
|
+
campaign_id: campaignIds,
|
|
48
|
+
});
|
|
49
|
+
const detailMap = new Map(campaignDetails.map((detail) => [detail.campaign_id, detail]));
|
|
50
|
+
const usablePromotions = usablePromoService
|
|
51
|
+
? await usablePromoService.listUsablePromotions({
|
|
52
|
+
promotion_id: promotions.map((promo) => promo.id),
|
|
53
|
+
})
|
|
54
|
+
: [];
|
|
55
|
+
const usableMap = new Map(usablePromotions.map((usable) => [usable.promotion_id, usable.enabled]));
|
|
56
|
+
const filteredPromotions = promotions.filter((promotion) => {
|
|
57
|
+
const campaign = promotion.campaign;
|
|
58
|
+
if (!campaign) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
const startsAt = campaign.starts_at ? new Date(campaign.starts_at) : null;
|
|
62
|
+
const endsAt = campaign.ends_at ? new Date(campaign.ends_at) : null;
|
|
63
|
+
const withinWindow = (!startsAt || startsAt <= now) && (!endsAt || endsAt >= now);
|
|
64
|
+
const isCollectable = usableMap.has(promotion.id)
|
|
65
|
+
? usableMap.get(promotion.id)
|
|
66
|
+
: true;
|
|
67
|
+
return (campaign &&
|
|
68
|
+
withinWindow &&
|
|
69
|
+
promotion.status === "active" &&
|
|
70
|
+
!promotion.is_automatic &&
|
|
71
|
+
isCollectable);
|
|
72
|
+
});
|
|
73
|
+
const paginated = filteredPromotions.slice(offset, offset + limit);
|
|
74
|
+
const coupons = await Promise.all(paginated.map(async (promotion) => {
|
|
75
|
+
const campaign = promotion.campaign;
|
|
76
|
+
const detail = detailMap.get(campaign.id);
|
|
77
|
+
let isCollected = false;
|
|
78
|
+
if (customerId && promotionCacheService) {
|
|
79
|
+
const key = `user:${customerId}:promotion:${promotion.id}`;
|
|
80
|
+
isCollected = await promotionCacheService.exists(key);
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
id: promotion.id,
|
|
84
|
+
code: promotion.code,
|
|
85
|
+
name: campaign.name,
|
|
86
|
+
description: campaign.description,
|
|
87
|
+
starts_at: campaign.starts_at,
|
|
88
|
+
ends_at: campaign.ends_at,
|
|
89
|
+
discount_type: promotion.application_method?.type,
|
|
90
|
+
discount_value: promotion.application_method?.value,
|
|
91
|
+
allocation: promotion.application_method?.allocation,
|
|
92
|
+
target_type: promotion.application_method?.target_type,
|
|
93
|
+
currency_code: promotion.application_method?.currency_code,
|
|
94
|
+
campaign_id: campaign.id,
|
|
95
|
+
is_collectable: usableMap.has(promotion.id)
|
|
96
|
+
? usableMap.get(promotion.id)
|
|
97
|
+
: true,
|
|
98
|
+
is_collected: isCollected,
|
|
99
|
+
detail: detail ?? null,
|
|
100
|
+
};
|
|
101
|
+
}));
|
|
102
|
+
res.status(200).json({
|
|
103
|
+
coupons,
|
|
104
|
+
count: filteredPromotions.length,
|
|
105
|
+
limit,
|
|
106
|
+
offset,
|
|
107
|
+
});
|
|
108
|
+
};
|
|
109
|
+
exports.GET = GET;
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2NvdXBvbnMvcHVibGljL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUErRTtBQUMvRSxxREFBb0Q7QUFDcEQsc0dBQWlHO0FBQ2pHLDJFQUE4RTtBQWlCOUUsTUFBTSxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FBQztBQUMvQyxNQUFNLHNCQUFzQixHQUFHLGlCQUFpQixDQUFDO0FBRWpELE1BQU0sZUFBZSxHQUFHLENBQUksS0FBYSxFQUFZLEVBQUU7SUFDckQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxxQkFBUyxDQUFDLE9BQU8sQ0FBSSxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUssTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ25FLE1BQU0sMkJBQTJCLEdBQy9CLHFCQUFTLENBQUMsT0FBTyxDQUE4Qix5Q0FBc0IsQ0FBQyxDQUFDO0lBQ3pFLE1BQU0sZ0JBQWdCLEdBQUcscUJBQVMsQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTlELE1BQU0sa0JBQWtCLEdBQ3RCLGVBQWUsQ0FBMkIsbUJBQW1CLENBQUMsQ0FBQztJQUNqRSxNQUFNLHFCQUFxQixHQUFHLGVBQWUsQ0FDM0Msc0JBQXNCLENBQ3ZCLENBQUM7SUFFRixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3ZCLE1BQU0sVUFBVSxHQUNkLEdBQ0QsRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDO0lBRTFCLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FB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
|