payfrit-works/api/businesses/update.cfm
John Mizerek d4e0ae1162 Add branding features: header upload and brand color picker
- Add uploadHeader.cfm API for 1200px header images
- Add saveBrandColor.cfm API for hex color storage
- Add Branding section to menu builder sidebar
- Fix header upload path and permissions
- Various beacon and service point API improvements

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 12:14:24 -08:00

115 lines
3.6 KiB
Text

<cfsetting showdebugoutput="false">
<cfsetting enablecfoutputonly="true">
<cfcontent type="application/json; charset=utf-8" reset="true">
<cfscript>
/**
* Update Business Info
*
* POST JSON:
* {
* "BusinessID": 37,
* "BusinessName": "My Business",
* "BusinessPhone": "(555) 123-4567",
* "AddressLine1": "123 Main St",
* "City": "Los Angeles",
* "State": "CA",
* "Zip": "90001"
* }
*/
response = { "OK": false };
try {
requestBody = toString(getHttpRequestData().content);
if (!len(requestBody)) {
throw(message="No request body provided");
}
data = deserializeJSON(requestBody);
businessId = structKeyExists(data, "BusinessID") ? val(data.BusinessID) : 0;
if (businessId == 0) {
throw(message="BusinessID is required");
}
// Update business name and phone
bizName = structKeyExists(data, "BusinessName") && isSimpleValue(data.BusinessName) ? trim(data.BusinessName) : "";
bizPhone = structKeyExists(data, "BusinessPhone") && isSimpleValue(data.BusinessPhone) ? trim(data.BusinessPhone) : "";
if (len(bizName)) {
queryExecute("
UPDATE Businesses SET BusinessName = :name, BusinessPhone = :phone
WHERE BusinessID = :id
", {
name: bizName,
phone: bizPhone,
id: businessId
}, { datasource: "payfrit" });
}
// Update or create address
addressLine1 = structKeyExists(data, "AddressLine1") && isSimpleValue(data.AddressLine1) ? trim(data.AddressLine1) : "";
city = structKeyExists(data, "City") && isSimpleValue(data.City) ? trim(data.City) : "";
state = structKeyExists(data, "State") && isSimpleValue(data.State) ? trim(data.State) : "";
zip = structKeyExists(data, "Zip") && isSimpleValue(data.Zip) ? trim(data.Zip) : "";
// Clean up city - remove trailing punctuation
city = reReplace(city, "[,.\s]+$", "", "all");
// Get state ID
stateID = 0;
if (len(state)) {
qState = queryExecute("
SELECT tt_StateID FROM tt_States WHERE tt_StateAbbreviation = :abbr
", { abbr: uCase(state) }, { datasource: "payfrit" });
if (qState.recordCount > 0) {
stateID = qState.tt_StateID;
}
}
// Check if business has an address
qAddr = queryExecute("
SELECT AddressID FROM Addresses
WHERE AddressBusinessID = :bizID AND AddressUserID = 0 AND AddressIsDeleted = 0
LIMIT 1
", { bizID: businessId }, { datasource: "payfrit" });
if (qAddr.recordCount > 0) {
// Update existing address
queryExecute("
UPDATE Addresses SET
AddressLine1 = :line1,
AddressCity = :city,
AddressStateID = :stateID,
AddressZIPCode = :zip
WHERE AddressID = :addrID
", {
line1: addressLine1,
city: city,
stateID: stateID,
zip: zip,
addrID: qAddr.AddressID
}, { datasource: "payfrit" });
} else {
// Create new address
queryExecute("
INSERT INTO Addresses (AddressLine1, AddressCity, AddressStateID, AddressZIPCode, AddressBusinessID, AddressUserID, AddressTypeID, AddressAddedOn)
VALUES (:line1, :city, :stateID, :zip, :bizID, 0, 2, NOW())
", {
line1: addressLine1,
city: city,
stateID: stateID,
zip: zip,
bizID: businessId
}, { datasource: "payfrit" });
}
response.OK = true;
} catch (any e) {
response.ERROR = e.message;
}
writeOutput(serializeJSON(response));
</cfscript>