payfrit-api/api/portal/team.php
John Mizerek 1f81d98c52 Initial PHP API migration from CFML
Complete port of all 163 API endpoints from Lucee/CFML to PHP 8.3.
Shared helpers in api/helpers.php (DB, auth, request/response, security).
PDO prepared statements throughout. Same JSON response shapes as CFML.
2026-03-14 14:26:59 -07:00

61 lines
1.6 KiB
PHP

<?php
require_once __DIR__ . '/../helpers.php';
runAuth();
$data = readJsonBody();
$businessId = (int) ($data['BusinessID'] ?? 0);
if ($businessId <= 0) {
apiAbort(['OK' => false, 'ERROR' => 'missing_business_id']);
}
$rows = queryTimed(
"SELECT
e.ID,
e.UserID,
e.StatusID,
e.RoleID,
CAST(e.IsActive AS UNSIGNED) AS IsActive,
u.FirstName,
u.LastName,
u.EmailAddress,
u.ContactNumber,
COALESCE(sr.Name, 'Staff') AS RoleName,
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.ID
LEFT JOIN tt_StaffRoles sr ON sr.ID = e.RoleID
WHERE e.BusinessID = ?
ORDER BY e.IsActive DESC, u.FirstName ASC",
[$businessId]
);
$team = [];
foreach ($rows as $row) {
$team[] = [
'EmployeeID' => (int) $row['ID'],
'UserID' => (int) $row['UserID'],
'Name' => trim($row['FirstName'] . ' ' . $row['LastName']),
'FirstName' => $row['FirstName'],
'LastName' => $row['LastName'],
'Email' => $row['EmailAddress'],
'Phone' => $row['ContactNumber'],
'RoleID' => (int) $row['RoleID'],
'RoleName' => $row['RoleName'],
'StatusID' => (int) $row['StatusID'],
'StatusName' => $row['StatusName'],
'IsActive' => (int) $row['IsActive'] === 1,
];
}
jsonResponse([
'OK' => true,
'TEAM' => $team,
'COUNT' => count($team),
]);