false, 'ERROR' => 'missing_params', 'MESSAGE' => 'BusinessID is required']); } if ($servicePointID <= 0) { jsonResponse([ 'OK' => true, 'HAS_ACTIVE_CHAT' => false, 'TASK_ID' => 0, 'TASK_TITLE' => '', ]); } try { $qChat = queryOne(" SELECT t.ID, t.Title, (SELECT MAX(cm.CreatedOn) FROM ChatMessages cm WHERE cm.TaskID = t.ID) as LastMessageTime FROM Tasks t WHERE t.BusinessID = ? AND t.TaskTypeID = 2 AND t.CompletedOn IS NULL AND t.SourceType = 'servicepoint' AND t.SourceID = ? ORDER BY CASE WHEN t.ClaimedByUserID > 0 THEN 0 ELSE 1 END, t.CreatedOn DESC LIMIT 1 ", [$businessID, $servicePointID]); if ($qChat) { jsonResponse([ 'OK' => true, 'HAS_ACTIVE_CHAT' => true, 'TASK_ID' => (int) $qChat['ID'], 'TASK_TITLE' => $qChat['Title'], ]); } else { jsonResponse([ 'OK' => true, 'HAS_ACTIVE_CHAT' => false, 'TASK_ID' => 0, 'TASK_TITLE' => '', ]); } } catch (Exception $e) { jsonResponse(['OK' => false, 'ERROR' => 'server_error', 'MESSAGE' => $e->getMessage()]); }