diff --git a/api/portal/searchUser.cfm b/api/portal/searchUser.cfm index 2a6d9ed..8ae6c45 100644 --- a/api/portal/searchUser.cfm +++ b/api/portal/searchUser.cfm @@ -35,6 +35,7 @@ if (len(query) < 3) { try { // Detect if it's a phone number or email isPhone = reFind("^[\d\s\-\(\)\+]+$", query) && len(normalizePhone(query)) >= 7; + isEmail = find("@", query) > 0; if (isPhone) { // Search by phone - normalize both sides @@ -47,15 +48,26 @@ try { ", { phone: { value: "%" & phoneDigits & "%", cfsqltype: "cf_sql_varchar" } }, { datasource: "payfrit" }); - } else { - // Search by email + } else if (isEmail) { + // Search by email (partial match) qUser = queryExecute(" SELECT UserID, UserFirstName, UserLastName, UserContactNumber, UserEmailAddress FROM Users - WHERE UserEmailAddress = :email + WHERE UserEmailAddress LIKE :email LIMIT 1 ", { - email: { value: query, cfsqltype: "cf_sql_varchar" } + email: { value: "%" & query & "%", cfsqltype: "cf_sql_varchar" } + }, { datasource: "payfrit" }); + } else { + // Search by name + qUser = queryExecute(" + SELECT UserID, UserFirstName, UserLastName, UserContactNumber, UserEmailAddress + FROM Users + WHERE UserFirstName LIKE :name OR UserLastName LIKE :name + OR CONCAT(UserFirstName, ' ', UserLastName) LIKE :name + LIMIT 1 + ", { + name: { value: "%" & query & "%", cfsqltype: "cf_sql_varchar" } }, { datasource: "payfrit" }); }