UNPKG

@devx-commerce/plugin-loyalty

Version:

A starter for Medusa plugins.

49 lines 4.34 kB
"use strict"; 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==