<cfsetting showdebugoutput="false">
<cfsetting enablecfoutputonly="true">
<cfcontent type="application/json; charset=utf-8" reset="true">

<cfscript>
phone = structKeyExists(url, "phone") ? url.phone : "";
phone = reReplace(phone, "[^0-9]", "", "all");

if (!len(phone)) {
  writeOutput(serializeJSON({ "OK": false, "ERROR": "missing phone" }));
  abort;
}

q = queryExecute("
  SELECT ID, FirstName, LastName, EmailAddress, ContactNumber, IsContactVerified
  FROM Users
  WHERE ContactNumber = :phone OR EmailAddress = :phone
  LIMIT 1
", { phone: phone }, { datasource: "payfrit" });

if (q.recordCount EQ 0) {
  writeOutput(serializeJSON({ "OK": false, "ERROR": "user_not_found", "phone": phone }));
  abort;
}

writeOutput(serializeJSON({
  "OK": true,
  "UserID": q.ID,
  "FirstName": q.FirstName,
  "LastName": q.LastName,
  "Email": q.EmailAddress,
  "Phone": q.ContactNumber,
  "Verified": q.IsContactVerified
}));
</cfscript>
