UNPKG

@devx-commerce/plugin-product-reviews

Version:
106 lines 8.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.findOrCreateCustomerStep = exports.findOrCreateCustomerStepId = void 0; const utils_1 = require("@medusajs/framework/utils"); const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk"); exports.findOrCreateCustomerStepId = "find-or-create-customer-custom"; exports.findOrCreateCustomerStep = (0, workflows_sdk_1.createStep)(exports.findOrCreateCustomerStepId, async (data, { container }) => { if (!(0, utils_1.isDefined)(data.customerId) && !(0, utils_1.isDefined)(data.email) && !(0, utils_1.isDefined)(data.phone)) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "At least one of customerId, email, or phone number must be provided"); } const service = container.resolve(utils_1.Modules.CUSTOMER); let customerData = null; let originalCustomer = null; let customerWasCreated = false; if (data.customerId) { originalCustomer = await service.retrieveCustomer(data.customerId); customerData = { customer: originalCustomer, email: originalCustomer.email, phone: originalCustomer.phone, }; } // Try to find customer by phone first if (data.phone && !originalCustomer) { const [customerByPhone] = await service.listCustomers({ // @ts-ignore phone: data.phone, }); if (customerByPhone) { customerData = { customer: customerByPhone, email: customerByPhone.email, phone: customerByPhone.phone, }; } else { // Create new customer with phone since none exists with this phone const firstName = data.name?.split(" ")[0]; const lastName = data.name?.split(" ").slice(1).join(" "); const newCustomer = await service.createCustomers({ phone: data.phone, email: data.email, // Include email if provided first_name: firstName, last_name: lastName, has_account: false, }); customerWasCreated = true; customerData = { customer: newCustomer, email: newCustomer.email, phone: newCustomer.phone, }; } } // If no customer found by phone, try email if (data.email && !customerData) { // Changed from !originalCustomer to !customerData const validatedEmail = (0, utils_1.validateEmail)(data.email); const [customerByEmail] = await service.listCustomers({ email: validatedEmail, }); if (customerByEmail) { customerData = { customer: customerByEmail, email: customerByEmail.email, phone: customerByEmail.phone, }; } else { // Create new customer with email since none exists with this email const firstName = data.name?.split(" ")[0]; const lastName = data.name?.split(" ").slice(1).join(" "); const newCustomer = await service.createCustomers({ email: validatedEmail, phone: data.phone, // Include phone if provided first_name: firstName, last_name: lastName, has_account: false, }); customerWasCreated = true; customerData = { customer: newCustomer, email: newCustomer.email, phone: newCustomer.phone, }; } } // Ensure we have a customer at this point // @ts-ignore if (!customerData || !("customer" in customerData)) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Failed to find or create customer"); } return new workflows_sdk_1.StepResponse(customerData, { customerWasCreated, }); }, async (compData, { container }) => { const { customer, customerWasCreated } = compData; if (!customerWasCreated || !customer?.id) { return; } const service = container.resolve(utils_1.Modules.CUSTOMER); await service.deleteCustomers(customer.id); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1vci1jcmVhdGUtY3VzdG9tZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2N1c3RvbWVyL2ZpbmQtb3ItY3JlYXRlLWN1c3RvbWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUttQztBQUNuQyxxRUFBNkU7QUFvQmhFLFFBQUEsMEJBQTBCLEdBQUcsZ0NBQWdDLENBQUM7QUFFOUQsUUFBQSx3QkFBd0IsR0FBRyxJQUFBLDBCQUFVLEVBQ2hELGtDQUEwQixFQUMxQixLQUFLLEVBQUUsSUFBbUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDM0QsSUFDRSxDQUFDLElBQUEsaUJBQVMsRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzNCLENBQUMsSUFBQSxpQkFBUyxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdEIsQ0FBQyxJQUFBLGlCQUFTLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUN0QixDQUFDO1FBQ0QsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIscUVBQXFFLENBQ3RFLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBeUIsZUFBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTVFLElBQUksWUFBWSxHQUFnRCxJQUFJLENBQUM7SUFDckUsSUFBSSxnQkFBZ0IsR0FBdUIsSUFBSSxDQUFDO0lBQ2hELElBQUksa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBRS9CLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLGdCQUFnQixHQUFHLE1BQU0sT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuRSxZQUFZLEdBQUc7WUFDYixRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLEtBQUssRUFBRSxn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