@devx-commerce/plugin-loyalty
Version:
A starter for Medusa plugins.
51 lines • 4.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getLoyaltyRedeemablePointsWorkflow = void 0;
const utils_1 = require("@medusajs/framework/utils");
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
const core_flows_1 = require("@medusajs/medusa/core-flows");
const calculate_points_on_cart_1 = require("./steps/calculate-points-on-cart");
const get_cart_promotion_1 = require("./steps/get-cart-promotion");
const validate_customer_exists_1 = require("./steps/validate-customer-exists");
const validate_loyalty_exist_1 = require("./steps/validate-loyalty-exist");
const fields = [
"id",
"customer.*",
"promotions.*",
"promotions.application_method.*",
"promotions.rules.*",
"promotions.rules.values.*",
"currency_code",
"total",
"shipping_total",
"metadata",
"items.*",
"items.adjustments.*",
];
const throwLoyaltyAlreadyExistError = (0, workflows_sdk_1.createStep)("throw-loyalty-already-exist-error", async (input) => {
throw new utils_1.MedusaError(utils_1.MedusaError.Types.CONFLICT, "Loyalty already exists on cart");
});
exports.getLoyaltyRedeemablePointsWorkflow = (0, workflows_sdk_1.createWorkflow)("get-loyalty-redeemable-points", (input) => {
const { data: carts } = (0, core_flows_1.useQueryGraphStep)({
entity: "cart",
fields,
filters: { id: input.cart_id },
options: { throwIfKeyNotFound: true },
});
const cart = (0, workflows_sdk_1.transform)({ carts }, ({ carts }) => carts[0]);
const loyaltyAppliedToCart = (0, validate_loyalty_exist_1.validateLoyaltyExistStep)({ cart });
(0, workflows_sdk_1.when)({ loyaltyAppliedToCart }, (result) => result.loyaltyAppliedToCart).then(() => {
throwLoyaltyAlreadyExistError({});
});
(0, validate_customer_exists_1.validateCustomerExistsStep)({
customer: cart.customer,
});
// Check if loyalty promotion already exists on cart.
(0, get_cart_promotion_1.getCartPromotionStep)({ cart, throwErrorOn: "found" });
// calculate amount that will be used to create loyalty promotion
const amount = (0, calculate_points_on_cart_1.calculatePointsOnCartStep)({
cart,
});
return new workflows_sdk_1.WorkflowResponse({ amount });
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWxveWFsdHktcmVkZWVtYWJsZS1wb2ludHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2NhcnQvZ2V0LWxveWFsdHktcmVkZWVtYWJsZS1wb2ludHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXdEO0FBQ3hELHFFQU0yQztBQUMzQyw0REFBZ0U7QUFJaEUsK0VBQTZFO0FBQzdFLG1FQUFrRTtBQUNsRSwrRUFHMEM7QUFDMUMsMkVBQTBFO0FBTTFFLE1BQU0sTUFBTSxHQUFHO0lBQ2IsSUFBSTtJQUNKLFlBQVk7SUFDWixjQUFjO0lBQ2QsaUNBQWlDO0lBQ2pDLG9CQUFvQjtJQUNwQiwyQkFBMkI7SUFDM0IsZUFBZTtJQUNmLE9BQU87SUFDUCxnQkFBZ0I7SUFDaEIsVUFBVTtJQUNWLFNBQVM7SUFDVCxxQkFBcUI7Q0FDdEIsQ0FBQztBQUVGLE1BQU0sNkJBQTZCLEdBQUcsSUFBQSwwQkFBVSxFQUM5QyxtQ0FBbUMsRUFDbkMsS0FBSyxFQUFFLEtBQVUsRUFBRSxFQUFFO0lBQ25CLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQzFCLGdDQUFnQyxDQUNqQyxDQUFDO0FBQ0osQ0FBQyxDQUNGLENBQUM7QUFFVyxRQUFBLGtDQUFrQyxHQUFHLElBQUEsOEJBQWMsRUFDOUQsK0JBQStCLEVBQy9CLENBQUMsS0FBb0IsRUFBRSxFQUFFO0lBQ3ZCLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBQSw4QkFBaUIsRUFBQztRQUN4QyxNQUFNLEVBQUUsTUFBTTtRQUNkLE1BQU07UUFDTixPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRTtRQUM5QixPQUFPLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUU7S0FDdEMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxJQUFJLEdBQUcsSUFBQSx5QkFBUyxFQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFhLENBQUMsQ0FBQztJQUV2RSxNQUFNLG9CQUFvQixHQUFHLElBQUEsaURBQXdCLEVBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRWhFLElBQUEsb0JBQUksRUFDRixFQUFFLG9CQUFvQixFQUFFLEVBQ3hCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQ3hDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNWLDZCQUE2QixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBQSxxREFBMEIsRUFBQztRQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7S0FDVyxDQUFDLENBQUM7SUFFdEMscURBQXFEO0lBQ3JELElBQUEseUNBQW9CLEVBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFFdEQsaUVBQWlFO0lBQ2pFLE1BQU0sTUFBTSxHQUFHLElBQUEsb0RBQXlCLEVBQUM7UUFDdkMsSUFBSTtLQUM0QyxDQUFDLENBQUM7SUFFcEQsT0FBTyxJQUFJLGdDQUFnQixDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUMxQyxDQUFDLENBQ0YsQ0FBQyJ9