UNPKG

@devx-commerce/plugin-product-reviews

Version:
78 lines 6.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkReviewEligibilityStep = exports.checkReviewEligibilityStepId = void 0; const utils_1 = require("@medusajs/framework/utils"); const workflows_sdk_1 = require("@medusajs/workflows-sdk"); exports.checkReviewEligibilityStepId = "check-review-eligibility-step"; exports.checkReviewEligibilityStep = (0, workflows_sdk_1.createStep)(exports.checkReviewEligibilityStepId, async (input, { container }) => { const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY); const { customer_id, email, phone, product_id } = input; // 1. Check if VERIFIED_PURCHASES_ONLY config is enabled const { data: [verifiedPurchasesConfig], } = await query.graph({ entity: "product_review_config", fields: ["value"], filters: { key: "VERIFIED_PURCHASES_ONLY" }, }); const requireVerifiedPurchase = verifiedPurchasesConfig?.value === true; // If verified purchases are not required, user is eligible if (!requireVerifiedPurchase) { return new workflows_sdk_1.StepResponse({ eligible: true, requireVerifiedPurchase, order_id: null, order_item_id: null, message: "User is eligible to review this product", }); } // 2. Find customer if not provided directly let customerId = customer_id; if (!customerId && (email || phone)) { const customerFilters = {}; if (email) customerFilters.email = email; if (phone) customerFilters.phone = phone; const { data: customers } = await query.graph({ entity: "customer", fields: ["id"], filters: customerFilters, }); if (customers.length > 0) { customerId = customers[0].id; } } // If no customer found, they're not eligible if (!customerId) { return new workflows_sdk_1.StepResponse({ eligible: false, requireVerifiedPurchase, order_id: null, order_item_id: null, message: "Customer not found", }); } // 3. Check if customer has purchased the product const { data: orders } = await query.graph({ entity: "order", fields: ["id", "items.id", "items.product_id"], filters: { customer_id: customerId, status: utils_1.OrderStatus.COMPLETED, items: { product_id }, }, }); const eligible = orders.length > 0; const orderItem = eligible ? orders[0].items.find((item) => item.product_id === product_id) : null; return new workflows_sdk_1.StepResponse({ eligible, requireVerifiedPurchase, order_id: eligible ? orders[0].id : null, order_item_id: orderItem?.id || null, message: eligible ? "User is eligible to review this product" : "User has not purchased this product", }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stcmV2aWV3LWVsaWdpYmlsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9wcm9kdWN0LXJldmlld3Mvc3RlcHMvY2hlY2stcmV2aWV3LWVsaWdpYmlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUdtQztBQUNuQywyREFBbUU7QUFpQnRELFFBQUEsNEJBQTRCLEdBQUcsK0JBQStCLENBQUM7QUFFL0QsUUFBQSwwQkFBMEIsR0FBRyxJQUFBLDBCQUFVLEVBSWxELG9DQUE0QixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQzdELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQVEsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEUsTUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUV4RCx3REFBd0Q7SUFDeEQsTUFBTSxFQUNKLElBQUksRUFBRSxDQUFDLHVCQUF1QixDQUFDLEdBQ2hDLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3BCLE1BQU0sRUFBRSx1QkFBdUI7UUFDL0IsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDO1FBQ2pCLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSx5QkFBeUIsRUFBRTtLQUM1QyxDQUFDLENBQUM7SUFFSCxNQUFNLHVCQUF1QixHQUFHLHVCQUF1QixFQUFFLEtBQUssS0FBSyxJQUFJLENBQUM7SUFFeEUsMkRBQTJEO0lBQzNELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSw0QkFBWSxDQUFDO1lBQ3RCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsdUJBQXVCO1lBQ3ZCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsYUFBYSxFQUFFLElBQUk7WUFDbkIsT0FB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