$a['unassigned'], 'mine' => $a['mine'], 'unassignedCount' => count($a['unassigned']), 'mineCount' => count($a['mine'])]; } $since = trim($_GET['since'] ?? ''); if ($since === '') { // Erster Aufruf nach Login: nur die Serverzeit als Referenzpunkt liefern, noch nichts zählen // (verhindert Uhrzeit-Abweichungen zwischen Client und Server bei der Baseline). api_json(['newReplies' => 0, 'newUnassigned' => 0, 'attention' => api_attention($pdo, $staff), 'serverTime' => db_now(), 'health' => has_permission($staff, 'manage_email_addresses') ? system_health($pdo) : []]); } if (strtotime($since) === false) { api_error(422, 'INVALID_SINCE', 'Der since-Zeitstempel ist ungültig.'); } $sinceSql = date('Y-m-d H:i:s', strtotime($since)); $stmt = $pdo->prepare( "SELECT COUNT(*) FROM tickets WHERE assigned_staff_id = ? AND updated_at > ? AND status NOT IN ('resolved','closed')" ); $stmt->execute([$staff['id'], $sinceSql]); $newReplies = (int) $stmt->fetchColumn(); $departmentIds = staff_department_ids($staff); [$deptFilter, $deptParams] = dept_filter_sql($departmentIds, 'department_id'); $stmt = $pdo->prepare( "SELECT COUNT(*) FROM tickets WHERE assigned_staff_id IS NULL AND created_at > ?{$deptFilter}" ); $stmt->execute([$sinceSql, ...$deptParams]); $newUnassigned = (int) $stmt->fetchColumn(); api_json([ 'newReplies' => $newReplies, 'newUnassigned' => $newUnassigned, 'attention' => api_attention($pdo, $staff), 'serverTime' => db_now(), 'health' => has_permission($staff, 'manage_email_addresses') ? system_health($pdo) : [], ]);