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), ]);