@devx-commerce/plugin-loyalty
Version:
A starter for Medusa plugins.
49 lines • 4.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createOrderEventStep = void 0;
const utils_1 = require("@medusajs/framework/utils");
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
const loyalty_1 = require("../../../modules/loyalty");
exports.createOrderEventStep = (0, workflows_sdk_1.createStep)("create-order-event", async (input, { container }) => {
const loyaltyModuleService = container.resolve(loyalty_1.LOYALTY_MODULE);
const eventBus = container.resolve(utils_1.Modules.EVENT_BUS);
const locking = container.resolve(utils_1.Modules.LOCKING);
const { customer_id, amount, order_id, order_display_id, event } = input;
const { pointsToAdd, expires_at } = await loyaltyModuleService.calculatePointsToAddFromOrderEvent(event, amount);
if (pointsToAdd <= 0) {
return new workflows_sdk_1.StepResponse({
customer_id: input.customer_id,
points: 0,
order_id: input.order_id,
});
}
const result = await locking.execute(`wallet_points_${customer_id}`, async () => {
return await loyaltyModuleService.addPoints({
customer_id: customer_id,
points: pointsToAdd,
referenceType: "order",
description: `Points earned for order with total amount ${input.amount}`,
expires_at,
order_id,
order_display_id,
metadata: input.metadata,
});
});
await eventBus.emit({
name: "loyalty.points_credited",
data: {
orderId: order_id,
total_balance: Number(result?.points),
perpetual_balance: Number(result?.perpetual_points),
expirable_balance: Number(result?.points) - Number(result?.perpetual_points),
transaction_amount: Number(pointsToAdd),
},
});
return new workflows_sdk_1.StepResponse({
customer_id: input.customer_id,
points: pointsToAdd,
order_id: input.order_id,
wallet: result,
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yZGVyLWV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9vcmRlci9zdGVwcy9jcmVhdGUtb3JkZXItZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQW9EO0FBQ3BELHFFQUE2RTtBQUc3RSxzREFBMEQ7QUFZN0MsUUFBQSxvQkFBb0IsR0FBRyxJQUFBLDBCQUFVLEVBQzVDLG9CQUFvQixFQUNwQixLQUFLLEVBQUUsS0FBZ0IsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDeEMsTUFBTSxvQkFBb0IsR0FDeEIsU0FBUyxDQUFDLE9BQU8sQ0FBQyx3QkFBYyxDQUFDLENBQUM7SUFDcEMsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFbkQsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQztJQUV6RSxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxHQUMvQixNQUFNLG9CQUFvQixDQUFDLGtDQUFrQyxDQUMzRCxLQUFpQixFQUNqQixNQUFNLENBQ1AsQ0FBQztJQUVKLElBQUksV0FBVyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sSUFBSSw0QkFBWSxDQUFDO1lBQ3RCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixNQUFNLEVBQUUsQ0FBQztZQUNULFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtTQUN6QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQVEsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUN2QyxpQkFBaUIsV0FBVyxFQUFFLEVBQzlCLEtBQUssSUFBSSxFQUFFO1FBQ1QsT0FBTyxNQUFNLG9CQUFvQixDQUFDLFNBQVMsQ0FBQztZQUMxQyxXQUFXLEVBQUUsV0FBVztZQUN4QixNQUFNLEVBQUUsV0FBVztZQUNuQixhQUFhLEVBQUUsT0FBTztZQUN0QixXQUFXLEVBQUUsNkNBQTZDLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDeEUsVUFBVTtZQUNWLFFBQVE7WUFDUixnQkFBZ0I7WUFDaEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FDRixDQUFDO0lBRUYsTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ2xCLElBQUksRUFBRSx5QkFBeUI7UUFDL0IsSUFBSSxFQUFFO1lBQ0osT0FBTyxFQUFFLFFBQVE7WUFDakIsYUFBYSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO1lBQ3JDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUM7WUFDbkQsaUJBQWlCLEVBQ2YsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDO1lBQzNELGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUM7U0FDeEM7S0FDRixDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksNEJBQVksQ0FBQztRQUN0QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7UUFDOUIsTUFBTSxFQUFFLFdBQVc7UUFDbkIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1FBQ3hCLE1BQU0sRUFBRSxNQUFNO0tBQ2YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUNGLENBQUMifQ==