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()]); }