Fix user search to support name, email, and phone

This commit is contained in:
John Mizerek 2026-01-18 13:29:25 -08:00
parent ef92c86fcc
commit 13554c1b02

View file

@ -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" });
}