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/portal/team.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

99 lines
2.4 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>
/*
PATH: /api/portal/team.cfm
INPUT (JSON):
{ "BusinessID": 17 }
OUTPUT (JSON):
{ OK: true, TEAM: [ { EmployeeID, UserID, Name, Email, Phone, StatusID, StatusName, IsActive } ] }
*/
function apiAbort(required struct payload) {
writeOutput(serializeJSON(payload));
abort;
}
function readJsonBody() {
var raw = getHttpRequestData().content;
if (isNull(raw)) raw = "";
if (!len(trim(raw))) return {};
try {
var data = deserializeJSON(raw);
if (isStruct(data)) return data;
} catch (any e) {}
return {};
}
data = readJsonBody();
businessId = structKeyExists(data, "BusinessID") ? val(data.BusinessID) : 0;
if (businessId <= 0) {
apiAbort({ "OK": false, "ERROR": "missing_business_id" });
}
try {
// Get employees for this business with user details
// Cast BIT to INT to avoid binary comparison issues
qTeam = queryExecute("
SELECT
e.ID,
e.UserID,
e.StatusID,
CAST(e.IsActive AS UNSIGNED) AS IsActive,
u.UserFirstName AS FirstName,
u.UserLastName AS LastName,
u.UserEmailAddress AS EmailAddress,
u.UserContactNumber AS ContactNumber,
CASE e.StatusID
WHEN 0 THEN 'Pending'
WHEN 1 THEN 'Invited'
WHEN 2 THEN 'Active'
WHEN 3 THEN 'Suspended'
ELSE 'Unknown'
END AS StatusName
FROM Employees e
JOIN Users u ON e.UserID = u.UserID
WHERE e.BusinessID = ?
ORDER BY e.IsActive DESC, u.UserFirstName ASC
", [
{ value: businessId, cfsqltype: "cf_sql_integer" }
], { datasource: "payfrit" });
team = [];
for (row in qTeam) {
arrayAppend(team, {
"EmployeeID": row.ID,
"UserID": row.UserID,
"Name": trim(row.FirstName & " " & row.LastName),
"FirstName": row.FirstName,
"LastName": row.LastName,
"Email": row.EmailAddress,
"Phone": row.ContactNumber,
"StatusID": row.StatusID,
"StatusName": row.StatusName,
"IsActive": val(row.IsActive) == 1
});
}
try{logPerf(0);}catch(any e){}
writeOutput(serializeJSON({
"OK": true,
"TEAM": team,
"COUNT": arrayLen(team)
}));
abort;
} catch (any e) {
apiAbort({
"OK": false,
"ERROR": "server_error",
"MESSAGE": e.message
});
}
</cfscript>