UNPKG

@devx-commerce/plugin-loyalty

Version:

A starter for Medusa plugins.

37 lines 3.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const core_flows_1 = require("@medusajs/medusa/core-flows"); const loyalty_1 = require("../../modules/loyalty"); const helper_1 = require("../../utils/helper"); const utils_1 = require("@medusajs/framework/utils"); core_flows_1.completeCartWorkflow.hooks.validate(async ({ cart }, { container }) => { const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY); const loyaltyModuleService = container.resolve(loyalty_1.LOYALTY_MODULE); const { data: carts } = await query.graph({ entity: "cart", fields: [ "id", "promotions.*", "customer.*", "promotions.rules.*", "promotions.rules.values.*", "promotions.application_method.*", "metadata", ], filters: { id: cart.id, }, }, { throwIfKeyNotFound: true, }); const loyaltyPromo = (0, helper_1.getCartLoyaltyPromotion)(carts[0]); if (!loyaltyPromo) { return; } const customerLoyaltyPoints = await loyaltyModuleService.getPoints(carts[0].customer.id); const requiredPoints = await 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}`); } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxldGUtY2FydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvaG9va3MvY29tcGxldGUtY2FydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDREQUFtRTtBQUVuRSxtREFBdUQ7QUFDdkQsK0NBQXVFO0FBQ3ZFLHFEQUdtQztBQUVuQyxpQ0FBb0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUNwRSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sb0JBQW9CLEdBQ3hCLFNBQVMsQ0FBQyxPQUFPLENBQUMsd0JBQWMsQ0FBQyxDQUFDO0lBRXBDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUN2QztRQUNFLE1BQU0sRUFBRSxNQUFNO1FBQ2QsTUFBTSxFQUFFO1lBQ04sSUFBSTtZQUNKLGNBQWM7WUFDZCxZQUFZO1lBQ1osb0JBQW9CO1lBQ3BCLDJCQUEyQjtZQUMzQixpQ0FBaUM7WUFDakMsVUFBVTtTQUNYO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1NBQ1o7S0FDRixFQUNEO1FBQ0Usa0JBQWtCLEVBQUUsSUFBSTtLQUN6QixDQUNGLENBQUM7SUFFRixNQUFNLFlBQVksR0FBRyxJQUFBLGdDQUF1QixFQUFDLEtBQUssQ0FBQyxDQUFDLENBQXdCLENBQUMsQ0FBQztJQUU5RSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEIsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLHFCQUFxQixHQUFHLE1BQU0sb0JBQW9CLENBQUMsU0FBUyxDQUNoRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUyxDQUFDLEVBQUUsQ0FDdEIsQ0FBQztJQUNGLE1BQU0sY0FBYyxHQUFHLE1BQU0sb0JBQW9CLENBQUMseUJBQXlCLENBQ3pFLFlBQVksQ0FBQyxrQkFBbUIsQ0FBQyxLQUFlLENBQ2pELENBQUM7SUFFRixJQUFJLHFCQUFxQixHQUFHLGNBQWMsRUFBRSxDQUFDO1FBQzNDLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDJEQUEyRCxjQUFjLGdCQUFnQixxQkFBcUIsRUFBRSxDQUNqSCxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQyxDQUFDIn0=