payfrit-api/api/workers/myBusinesses.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

59 lines
1.9 KiB
PHP

<?php
require_once __DIR__ . '/../helpers.php';
runAuth();
/**
* List businesses where user is an active employee
* POST: { UserID: int }
*/
$data = readJsonBody();
$userID = (int) ($data['UserID'] ?? 0);
if ($userID <= 0) {
apiAbort(['OK' => false, 'ERROR' => 'missing_params', 'MESSAGE' => 'UserID is required.']);
}
try {
$qBusinesses = queryTimed("
SELECT
MIN(e.ID) AS EmployeeID,
e.BusinessID,
MIN(e.StatusID) AS StatusID,
MAX(e.IsActive) AS IsActive,
MAX(COALESCE(e.RoleID, 1)) AS RoleID,
b.Name AS Name,
(SELECT COUNT(*) FROM Tasks t WHERE t.BusinessID = e.BusinessID AND t.ClaimedByUserID = 0 AND t.CompletedOn IS NULL) AS PendingTaskCount,
(SELECT COUNT(*) FROM Tasks t WHERE t.BusinessID = e.BusinessID AND t.ClaimedByUserID = ? AND t.CompletedOn IS NULL) AS ActiveTaskCount
FROM Employees e
INNER JOIN Businesses b ON b.ID = e.BusinessID
WHERE e.UserID = ? AND e.IsActive = 1
GROUP BY e.BusinessID, b.Name
ORDER BY b.Name ASC
", [$userID, $userID]);
$businesses = [];
foreach ($qBusinesses as $row) {
$businesses[] = [
'EmployeeID' => (int) $row['EmployeeID'],
'BusinessID' => (int) $row['BusinessID'],
'Name' => $row['Name'],
'Address' => '',
'City' => '',
'StatusID' => (int) $row['StatusID'],
'RoleID' => (int) $row['RoleID'],
'PendingTaskCount' => (int) $row['PendingTaskCount'],
'ActiveTaskCount' => (int) $row['ActiveTaskCount'],
];
}
jsonResponse([
'OK' => true,
'ERROR' => '',
'BUSINESSES' => $businesses,
'COUNT' => count($businesses),
]);
} catch (Exception $e) {
jsonResponse(['OK' => false, 'ERROR' => 'server_error', 'MESSAGE' => 'Error loading businesses', 'DETAIL' => $e->getMessage()]);
}