payfrit-api/api/tabs/getActive.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

68 lines
2.9 KiB
PHP

<?php
require_once __DIR__ . '/../helpers.php';
runAuth();
try {
$data = readJsonBody();
$userID = (int) ($data['UserID'] ?? 0);
if ($userID === 0) apiAbort(['OK' => false, 'ERROR' => 'missing_UserID']);
$qTab = queryOne("
SELECT t.ID, t.UUID, t.BusinessID, t.OwnerUserID, t.ServicePointID,
t.StatusID, t.AuthAmountCents, t.RunningTotalCents,
t.OpenedOn, t.LastActivityOn, t.PaymentStatus, t.ApprovalMode,
b.Name AS BusinessName, b.TabApprovalRequired,
tm.RoleID,
sp.Name AS ServicePointName,
u.FirstName AS OwnerFirstName, u.LastName AS OwnerLastName
FROM TabMembers tm
JOIN Tabs t ON t.ID = tm.TabID
JOIN Businesses b ON b.ID = t.BusinessID
LEFT JOIN ServicePoints sp ON sp.ID = t.ServicePointID
JOIN Users u ON u.ID = t.OwnerUserID
WHERE tm.UserID = ? AND tm.StatusID = 1 AND t.StatusID = 1
LIMIT 1
", [$userID]);
if (!$qTab) jsonResponse(['OK' => true, 'HAS_TAB' => false]);
$qMembers = queryOne("SELECT COUNT(*) AS MemberCount FROM TabMembers WHERE TabID = ? AND StatusID = 1", [$qTab['ID']]);
$pendingCount = 0;
if ((int) $qTab['RoleID'] === 1) {
$qPending = queryOne("SELECT COUNT(*) AS PendingCount FROM TabOrders WHERE TabID = ? AND ApprovalStatus = 'pending'", [$qTab['ID']]);
$pendingCount = (int) $qPending['PendingCount'];
}
$approvalMode = $qTab['ApprovalMode'] ?? '';
$approvalRequired = (is_numeric($approvalMode) && $approvalMode !== '')
? (int) $approvalMode === 1
: (int) ($qTab['TabApprovalRequired'] ?? 0) === 1;
jsonResponse([
'OK' => true,
'HAS_TAB' => true,
'TAB' => [
'ID' => (int) $qTab['ID'],
'UUID' => $qTab['UUID'],
'BusinessID' => (int) $qTab['BusinessID'],
'BusinessName' => $qTab['BusinessName'],
'OwnerUserID' => (int) $qTab['OwnerUserID'],
'OwnerName' => $qTab['OwnerFirstName'] . ' ' . $qTab['OwnerLastName'],
'ServicePointID' => (int) ($qTab['ServicePointID'] ?? 0),
'ServicePointName' => $qTab['ServicePointName'] ?? '',
'StatusID' => (int) $qTab['StatusID'],
'AuthAmountCents' => (int) $qTab['AuthAmountCents'],
'RunningTotalCents' => (int) $qTab['RunningTotalCents'],
'RemainingCents' => (int) $qTab['AuthAmountCents'] - (int) $qTab['RunningTotalCents'],
'OpenedOn' => toISO8601($qTab['OpenedOn']),
'MemberCount' => (int) $qMembers['MemberCount'],
'PendingOrderCount' => $pendingCount,
'IsOwner' => (int) $qTab['RoleID'] === 1,
'ApprovalRequired' => $approvalRequired,
],
]);
} catch (Exception $e) {
jsonResponse(['OK' => false, 'ERROR' => 'server_error', 'MESSAGE' => $e->getMessage()]);
}