@devx-commerce/plugin-loyalty
Version:
A starter for Medusa plugins.
52 lines • 4.55 kB
JavaScript
;
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=