UNPKG

@devx-commerce/plugin-loyalty

Version:

A starter for Medusa plugins.

52 lines 4.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateLoyaltyPointsWorkflow = exports.validateLoyaltyPointsStep = void 0; const utils_1 = require("@medusajs/framework/utils"); const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk"); const loyalty_1 = require("../../modules/loyalty"); const helper_1 = require("../../utils/helper"); exports.validateLoyaltyPointsStep = (0, workflows_sdk_1.createStep)("validate-loyalty-points", async (input, { container }) => { const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY); const loyaltyModuleService = container.resolve(loyalty_1.LOYALTY_MODULE); const { data: [refetchedCart], } = await query.graph({ entity: "cart", fields: [ "id", "completed_at", "promotions.*", "customer.*", "promotions.rules.*", "promotions.rules.values.*", "promotions.application_method.*", "metadata", ], filters: { id: input.id }, }); if (!refetchedCart) { return new workflows_sdk_1.StepResponse(null); } if (refetchedCart.completed_at) { return new workflows_sdk_1.StepResponse(null); } const loyaltyPromo = (0, helper_1.getCartLoyaltyPromotion)(refetchedCart); if (!loyaltyPromo) { return new workflows_sdk_1.StepResponse(null); } const [customerLoyaltyPoints, requiredPoints] = await Promise.all([ loyaltyModuleService.getPoints(refetchedCart.customer.id), loyaltyModuleService.calculatePointsFromAmount(loyaltyPromo.application_method.value), ]); if (customerLoyaltyPoints < requiredPoints) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Customer does not have enough loyalty points. Required: ${requiredPoints}, Available: ${customerLoyaltyPoints}`); } return new workflows_sdk_1.StepResponse({ validated: true, customerLoyaltyPoints, requiredPoints, }); }); exports.validateLoyaltyPointsWorkflow = (0, workflows_sdk_1.createWorkflow)("validate-loyalty-points-workflow", (input) => { (0, exports.validateLoyaltyPointsStep)(input); return new workflows_sdk_1.WorkflowResponse(null); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtbG95YWx0eS1wb2ludHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL3ZhbGlkYXRlLWxveWFsdHktcG9pbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUdtQztBQUNuQyxxRUFBK0c7QUFDL0csbURBQXVEO0FBRXZELCtDQUF1RTtBQUUxRCxRQUFBLHlCQUF5QixHQUFHLElBQUEsMEJBQVUsRUFDakQseUJBQXlCLEVBQ3pCLEtBQUssRUFDSCxLQUFxQixFQUNyQixFQUFFLFNBQVMsRUFBRSxFQUNiLEVBQUU7SUFDRixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sb0JBQW9CLEdBQ3hCLFNBQVMsQ0FBQyxPQUFPLENBQUMsd0JBQWMsQ0FBQyxDQUFDO0lBRXBDLE1BQU0sRUFDSixJQUFJLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FDdEIsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDcEIsTUFBTSxFQUFFLE1BQU07UUFDZCxNQUFNLEVBQUU7WUFDTixJQUFJO1lBQ0osY0FBYztZQUNkLGNBQWM7WUFDZCxZQUFZO1lBQ1osb0JBQW9CO1lBQ3BCLDJCQUEyQjtZQUMzQixpQ0FBaUM7WUFDakMsVUFBVTtTQUNYO1FBQ0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7S0FDMUIsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ25CLE9BQU8sSUFBSSw0QkFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMvQixPQUFPLElBQUksNEJBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsSUFBQSxnQ0FBdUIsRUFDMUMsYUFBb0MsQ0FDckMsQ0FBQztJQUVGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixPQUFPLElBQUksNEJBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsTUFBTSxDQUFDLHFCQUFxQixFQUFFLGNBQWMsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUNoRSxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFFBQVMsQ0FBQyxFQUFFLENBQUM7UUFDMUQsb0JBQW9CLENBQUMseUJBQXlCLENBQzVDLFlBQVksQ0FBQyxrQkFBbUIsQ0FBQyxLQUFlLENBQ2pEO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsSUFBSSxxQkFBcUIsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUMzQyxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QiwyREFBMkQsY0FBYyxnQkFBZ0IscUJBQXFCLEVBQUUsQ0FDakgsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLElBQUksNEJBQVksQ0FBQztRQUN0QixTQUFTLEVBQUUsSUFBSTtRQUNmLHFCQUFxQjtRQUNyQixjQUFjO0tBQ2YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUNGLENBQUM7QUFFVyxRQUFBLDZCQUE2QixHQUFHLElBQUEsOEJBQWMsRUFDekQsa0NBQWtDLEVBQ2xDLENBQUMsS0FBcUIsRUFBRSxFQUFFO0lBQ3hCLElBQUEsaUNBQXlCLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsT0FBTyxJQUFJLGdDQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FDRixDQUFBIn0=