/** * Get Active Tab * Checks if user has/is on an active tab (globally). * * POST: { UserID: int } */ try { requestData = deserializeJSON(toString(getHttpRequestData().content)); userID = val(requestData.UserID ?: 0); if (userID == 0) apiAbort({ "OK": false, "ERROR": "missing_UserID" }); qTab = queryTimed(" SELECT t.ID, t.UUID, t.BusinessID, t.OwnerUserID, t.ServicePointID, t.StatusID, t.AuthAmountCents, t.RunningTotalCents, t.OpenedOn, t.LastActivityOn, t.PaymentStatus, 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 = :userID AND tm.StatusID = 1 AND t.StatusID = 1 LIMIT 1 ", { userID: { value: userID, cfsqltype: "cf_sql_integer" } }); if (qTab.recordCount == 0) { apiAbort({ "OK": true, "HAS_TAB": false }); } // Get member count qMembers = queryTimed(" SELECT COUNT(*) AS MemberCount FROM TabMembers WHERE TabID = :tabID AND StatusID = 1 ", { tabID: { value: qTab.ID, cfsqltype: "cf_sql_integer" } }); // Get pending order count (for tab owner) pendingCount = 0; if (qTab.RoleID == 1) { qPending = queryTimed(" SELECT COUNT(*) AS PendingCount FROM TabOrders WHERE TabID = :tabID AND ApprovalStatus = 'pending' ", { tabID: { value: qTab.ID, cfsqltype: "cf_sql_integer" } }); pendingCount = qPending.PendingCount; } apiAbort({ "OK": true, "HAS_TAB": true, "TAB": { "ID": qTab.ID, "UUID": qTab.UUID, "BusinessID": qTab.BusinessID, "BusinessName": qTab.BusinessName, "OwnerUserID": qTab.OwnerUserID, "OwnerName": "#qTab.OwnerFirstName# #qTab.OwnerLastName#", "ServicePointID": val(qTab.ServicePointID), "ServicePointName": qTab.ServicePointName ?: "", "StatusID": qTab.StatusID, "AuthAmountCents": qTab.AuthAmountCents, "RunningTotalCents": qTab.RunningTotalCents, "RemainingCents": qTab.AuthAmountCents - qTab.RunningTotalCents, "OpenedOn": toISO8601(qTab.OpenedOn), "MemberCount": qMembers.MemberCount, "PendingOrderCount": pendingCount, "IsOwner": qTab.RoleID == 1, "ApprovalRequired": qTab.TabApprovalRequired == 1 } }); } catch (any e) { apiAbort({ "OK": false, "ERROR": "server_error", "MESSAGE": e.message }); }