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/workers/myBusinesses.cfm
John Mizerek 39448c5d91 Fix prefixed column names in auth, orders, portal team, users search, workers APIs
Updated Users (UserID, UserFirstName, UserLastName, UserEmailAddress, UserContactNumber),
ServicePoints (ServicePointID, ServicePointName, ServicePointTypeID), and Businesses
(BusinessID, BusinessName, BusinessTaxRate, BusinessPhone) column references with proper
prefixed names and AS aliases for API compatibility.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 17:43:33 -08:00

81 lines
2.3 KiB
Text

<cfsetting showdebugoutput="false">
<cfsetting enablecfoutputonly="true">
<cffunction name="apiAbort" access="public" returntype="void" output="true">
<cfargument name="payload" type="struct" required="true">
<cfcontent type="application/json; charset=utf-8">
<cfoutput>#serializeJSON(arguments.payload)#</cfoutput>
<cfabort>
</cffunction>
<cffunction name="readJsonBody" access="public" returntype="struct" output="false">
<cfset var raw = getHttpRequestData().content>
<cfif isNull(raw) OR len(trim(raw)) EQ 0>
<cfreturn {}>
</cfif>
<cftry>
<cfset var data = deserializeJSON(raw)>
<cfif isStruct(data)>
<cfreturn data>
<cfelse>
<cfreturn {}>
</cfif>
<cfcatch>
<cfreturn {}>
</cfcatch>
</cftry>
</cffunction>
<cfset data = readJsonBody()>
<cfset UserID = val( structKeyExists(data,"UserID") ? data.UserID : 0 )>
<cfif UserID LTE 0>
<cfset apiAbort({ "OK": false, "ERROR": "missing_params", "MESSAGE": "UserID is required." })>
</cfif>
<cftry>
<cfset qBusinesses = queryExecute("
SELECT
MIN(e.ID) AS EmployeeID,
e.BusinessID,
MIN(e.StatusID) AS StatusID,
MAX(e.IsActive) AS IsActive,
b.BusinessName AS Name,
(SELECT COUNT(*) FROM Tasks t WHERE t.BusinessID = e.BusinessID AND t.ClaimedByUserID = 0) AS PendingTaskCount
FROM Employees e
INNER JOIN Businesses b ON b.BusinessID = e.BusinessID
WHERE e.UserID = ? AND e.IsActive = b'1'
GROUP BY e.BusinessID, b.BusinessName
ORDER BY b.BusinessName ASC
", [ { value = UserID, cfsqltype = "cf_sql_integer" } ], { datasource = "payfrit" })>
<cfset businesses = []>
<cfloop query="qBusinesses">
<cfset arrayAppend(businesses, {
"EmployeeID": qBusinesses.EmployeeID,
"BusinessID": qBusinesses.BusinessID,
"Name": qBusinesses.Name,
"Address": "",
"City": "",
"StatusID": qBusinesses.StatusID,
"PendingTaskCount": qBusinesses.PendingTaskCount
})>
</cfloop>
<cfset apiAbort({
"OK": true,
"ERROR": "",
"BUSINESSES": businesses,
"COUNT": arrayLen(businesses)
})>
<cfcatch>
<cfset apiAbort({
"OK": false,
"ERROR": "server_error",
"MESSAGE": "Error loading businesses",
"DETAIL": cfcatch.message
})>
</cfcatch>
</cftry>