@devx-commerce/plugin-product-reviews
Version:
Product Reviews Plugin for Medusa
106 lines • 8.89 kB
JavaScript
;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1vci1jcmVhdGUtY3VzdG9tZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2N1c3RvbWVyL2ZpbmQtb3ItY3JlYXRlLWN1c3RvbWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUttQztBQUNuQyxxRUFBNkU7QUFvQmhFLFFBQUEsMEJBQTBCLEdBQUcsZ0NBQWdDLENBQUM7QUFFOUQsUUFBQSx3QkFBd0IsR0FBRyxJQUFBLDBCQUFVLEVBQ2hELGtDQUEwQixFQUMxQixLQUFLLEVBQUUsSUFBbUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDM0QsSUFDRSxDQUFDLElBQUEsaUJBQVMsRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzNCLENBQUMsSUFBQSxpQkFBUyxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdEIsQ0FBQyxJQUFBLGlCQUFTLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUN0QixDQUFDO1FBQ0QsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIscUVBQXFFLENBQ3RFLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBeUIsZUFBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTVFLElBQUksWUFBWSxHQUFnRCxJQUFJLENBQUM7SUFDckUsSUFBSSxnQkFBZ0IsR0FBdUIsSUFBSSxDQUFDO0lBQ2hELElBQUksa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0lBRS9CLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLGdCQUFnQixHQUFHLE1BQU0sT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuRSxZQUFZLEdBQUc7WUFDYixRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLO1lBQzdCLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLO1NBQzlCLENBQUM7SUFDSixDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDcEMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLGFBQWEsQ0FBQztZQUNwRCxhQUFhO1lBQ2IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2xCLENBQUMsQ0FBQztRQUVILElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsWUFBWSxHQUFHO2dCQUNiLFFBQVEsRUFBRSxlQUFlO2dCQUN6QixLQUFLLEVBQUUsZUFBZSxDQUFDLEtBQUs7Z0JBQzVCLEtBQUssRUFBRSxlQUFlLENBQUMsS0FBSzthQUM3QixDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixtRUFBbUU7WUFDbkUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUUxRCxNQUFNLFdBQVcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxlQUFlLENBQUM7Z0JBQ2hELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsNEJBQTRCO2dCQUMvQyxVQUFVLEVBQUUsU0FBUztnQkFDckIsU0FBUyxFQUFFLFFBQVE7Z0JBQ25CLFdBQVcsRUFBRSxLQUFLO2FBQ25CLENBQUMsQ0FBQztZQUVILGtCQUFrQixHQUFHLElBQUksQ0FBQztZQUMxQixZQUFZLEdBQUc7Z0JBQ2IsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSztnQkFDeEIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLO2FBQ3pCLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELDJDQUEyQztJQUMzQyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNoQyxrREFBa0Q7UUFDbEQsTUFBTSxjQUFjLEdBQUcsSUFBQSxxQkFBYSxFQUFDLElBQUksQ0FBQyxLQUFLLENBQVcsQ0FBQztRQUUzRCxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQ3BELEtBQUssRUFBRSxjQUFjO1NBQ3RCLENBQUMsQ0FBQztRQUVILElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsWUFBWSxHQUFHO2dCQUNiLFFBQVEsRUFBRSxlQUFlO2dCQUN6QixLQUFLLEVBQUUsZUFBZSxDQUFDLEtBQUs7Z0JBQzVCLEtBQUssRUFBRSxlQUFlLENBQUMsS0FBSzthQUM3QixDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixtRUFBbUU7WUFDbkUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUUxRCxNQUFNLFdBQVcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxlQUFlLENBQUM7Z0JBQ2hELEtBQUssRUFBRSxjQUFjO2dCQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSw0QkFBNEI7Z0JBQy9DLFVBQVUsRUFBRSxTQUFTO2dCQUNyQixTQUFTLEVBQUUsUUFBUTtnQkFDbkIsV0FBVyxFQUFFLEtBQUs7YUFDbkIsQ0FBQyxDQUFDO1lBRUgsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1lBQzFCLFlBQVksR0FBRztnQkFDYixRQUFRLEVBQUUsV0FBVztnQkFDckIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLO2dCQUN4QixLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUs7YUFDekIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsMENBQTBDO0lBQzFDLGFBQWE7SUFDYixJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNuRCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUMzQixtQ0FBbUMsQ0FDcEMsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLElBQUksNEJBQVksQ0FBQyxZQUFZLEVBQUU7UUFDcEMsa0JBQWtCO0tBQ25CLENBQUMsQ0FBQztBQUNMLENBQUMsRUFDRCxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUNoQyxNQUFNLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLEdBQUcsUUFBK0IsQ0FBQztJQUV6RSxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDekMsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUF5QixlQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUUsTUFBTSxPQUFPLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQ0YsQ0FBQyJ9