Update all SQL queries, query result references, and ColdFusion code to match
the renamed database schema. Tables use plural CamelCase, PKs are all `ID`,
column prefixes stripped (e.g. BusinessName→Name, UserFirstName→FirstName).
Key changes:
- Strip table-name prefixes from all column references (Businesses, Users,
Addresses, Hours, Menus, Categories, Items, Stations, Orders,
OrderLineItems, Tasks, TaskCategories, TaskRatings, QuickTaskTemplates,
ScheduledTaskDefinitions, ChatMessages, Beacons, ServicePoints, Employees,
VisitorTrackings, ApiPerfLogs, tt_States, tt_Days, tt_AddressTypes,
tt_OrderTypes, tt_TaskTypes)
- Rename PK references from {TableName}ID to ID in all queries
- Rewrite 7 admin beacon files to use ServicePoints.BeaconID instead of
dropped lt_Beacon_Businesses_ServicePoints link table
- Rewrite beacon assignment files (list, save, delete) for new schema
- Fix FK references incorrectly changed to ID (OrderLineItems.OrderID,
Categories.MenuID, Tasks.CategoryID, ServicePoints.BeaconID)
- Update Addresses: AddressLat→Latitude, AddressLng→Longitude
- Update Users: UserPassword→Password, UserIsEmailVerified→IsEmailVerified,
UserIsActive→IsActive, UserBalance→Balance, etc.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
72 lines
2.2 KiB
Text
72 lines
2.2 KiB
Text
<cfsetting showdebugoutput="false">
|
|
<cfsetting enablecfoutputonly="true">
|
|
<cfcontent type="application/json; charset=utf-8" reset="true">
|
|
|
|
<cfscript>
|
|
/**
|
|
* Worker Tier + Activation Status
|
|
* Returns cached DB state. No Stripe polling.
|
|
* Tier is derived: payoutsEnabled ? 1 : 0
|
|
*/
|
|
|
|
response = { "OK": false };
|
|
|
|
try {
|
|
requestData = deserializeJSON(toString(getHttpRequestData().content));
|
|
userID = val(requestData.UserID ?: 0);
|
|
|
|
// Fallback to auth header
|
|
if (userID == 0 && structKeyExists(request, "UserID")) {
|
|
userID = val(request.UserID);
|
|
}
|
|
|
|
if (userID == 0) {
|
|
response["ERROR"] = "missing_params";
|
|
response["MESSAGE"] = "UserID is required.";
|
|
writeOutput(serializeJSON(response));
|
|
abort;
|
|
}
|
|
|
|
qUser = queryExecute("
|
|
SELECT StripeConnectedAccountID, StripePayoutsEnabled,
|
|
ActivationBalanceCents, ActivationCapCents
|
|
FROM Users WHERE ID = :userID
|
|
", { userID: userID }, { datasource: "payfrit" });
|
|
|
|
if (qUser.recordCount == 0) {
|
|
response["ERROR"] = "user_not_found";
|
|
writeOutput(serializeJSON(response));
|
|
abort;
|
|
}
|
|
|
|
payoutsEnabled = qUser.StripePayoutsEnabled == 1;
|
|
hasAccount = len(trim(qUser.StripeConnectedAccountID ?: "")) > 0;
|
|
balanceCents = val(qUser.ActivationBalanceCents);
|
|
capCents = val(qUser.ActivationCapCents);
|
|
remainingCents = capCents - balanceCents;
|
|
if (remainingCents < 0) remainingCents = 0;
|
|
isComplete = (remainingCents == 0);
|
|
progressPercent = capCents > 0 ? round((balanceCents / capCents) * 100) : 100;
|
|
if (progressPercent > 100) progressPercent = 100;
|
|
|
|
response["OK"] = true;
|
|
response["TIER"] = payoutsEnabled ? 1 : 0;
|
|
response["STRIPE"] = {
|
|
"HasAccount": hasAccount,
|
|
"PayoutsEnabled": payoutsEnabled,
|
|
"SetupIncomplete": hasAccount && !payoutsEnabled
|
|
};
|
|
response["ACTIVATION"] = {
|
|
"BalanceCents": balanceCents,
|
|
"CapCents": capCents,
|
|
"RemainingCents": remainingCents,
|
|
"IsComplete": isComplete,
|
|
"ProgressPercent": progressPercent
|
|
};
|
|
|
|
} catch (any e) {
|
|
response["ERROR"] = e.message;
|
|
}
|
|
|
|
writeOutput(serializeJSON(response));
|
|
</cfscript>
|