This repository has been archived on 2026-03-21. You can view files and clone it, but cannot push or open issues or pull requests.
payfrit-biz/api/grants/searchBusiness.cfm
John Mizerek f52d14bb7e Add Service Point Sharing infrastructure
Grant-based system allowing businesses to share service points with
other businesses. Includes grant CRUD API, time/eligibility/economics
policies, enforcement at cart creation and order submit, Stripe payment
routing for owner fees, and portal UI for managing grants.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 21:34:03 -08:00

57 lines
1.5 KiB
Text

<cfsetting showdebugoutput="false">
<cfsetting enablecfoutputonly="true">
<cfcontent type="application/json; charset=utf-8" reset="true">
<cfheader name="Cache-Control" value="no-store">
<cfscript>
data = {};
try {
raw = toString(getHttpRequestData().content);
if (len(trim(raw))) {
data = deserializeJSON(raw);
if (!isStruct(data)) data = {};
}
} catch (any e) { data = {}; }
query = trim(data.Query ?: "");
excludeBusinessID = val(data.ExcludeBusinessID ?: 0);
if (len(query) < 2) {
apiAbort({ "OK": false, "ERROR": "query_too_short", "MESSAGE": "Search query must be at least 2 characters." });
}
// Search by name or ID
params = {};
sql = "SELECT ID, Name FROM Businesses WHERE 1=1";
if (isNumeric(query)) {
sql &= " AND ID = :bizId";
params.bizId = { value = int(query), cfsqltype = "cf_sql_integer" };
} else {
sql &= " AND Name LIKE :namePattern";
params.namePattern = { value = "%" & query & "%", cfsqltype = "cf_sql_varchar" };
}
if (excludeBusinessID GT 0) {
sql &= " AND ID != :excludeId";
params.excludeId = { value = excludeBusinessID, cfsqltype = "cf_sql_integer" };
}
sql &= " ORDER BY Name LIMIT 20";
qResults = queryExecute(sql, params, { datasource = "payfrit" });
businesses = [];
for (row in qResults) {
arrayAppend(businesses, {
"BusinessID": row.ID,
"Name": row.Name
});
}
writeOutput(serializeJSON({
"OK": true,
"Count": arrayLen(businesses),
"Businesses": businesses
}));
</cfscript>