0 AND ticket_resolved_at IS NOT NULL AND $period_query GROUP BY ticket_id, ticket_client_id, ticket_created_at, ticket_resolved_at" ); while ($resolve_row = mysqli_fetch_assoc($sql_resolve_times)) { $resolve_client_id = intval($resolve_row['ticket_client_id']); $resolve_minutes = is_null($resolve_row['logged_minutes']) ? businessMinutesBetween($resolve_row['ticket_created_at'], $resolve_row['ticket_resolved_at']) : intval($resolve_row['logged_minutes']); if (!isset($resolve_totals[$resolve_client_id])) { $resolve_totals[$resolve_client_id] = ['minutes' => 0, 'count' => 0]; } $resolve_totals[$resolve_client_id]['minutes'] += $resolve_minutes; $resolve_totals[$resolve_client_id]['count']++; } ?>

SLA by Client

0 AND ticket_client_id = $client_id AND $period_query" )); $ticket_count = intval($stats['ticket_count']); if ($ticket_count == 0) { continue; } $any_rows = true; $response_met = intval($stats['response_met']); $response_missed = intval($stats['response_missed']); $resolution_met = intval($stats['resolution_met']); $resolution_missed = intval($stats['resolution_missed']); $response_judged = $response_met + $response_missed; $response_percent = $response_judged ? round($response_met / $response_judged * 100, 1) : null; $resolution_judged = $resolution_met + $resolution_missed; $resolution_percent = $resolution_judged ? round($resolution_met / $resolution_judged * 100, 1) : null; $avg_time_to_respond = is_null($stats['avg_response_seconds']) ? '-' : secondsToTime($stats['avg_response_seconds']); // Clock time actually spent - paused spells excluded, which is // what the SLA itself judged on $avg_time_to_resolve = '-'; if (!empty($resolve_totals[$client_id]['count'])) { $avg_time_to_resolve = secondsToTime(($resolve_totals[$client_id]['minutes'] / $resolve_totals[$client_id]['count']) * 60); } ?>
Client Tickets Response met Response missed Response % Resolution met Resolution missed Resolution % Avg time to respond Avg clock to resolve
No tickets with an SLA in this period.
Time to respond is wall-clock from ticket creation. Time to resolve counts only business hours with the SLA clock running, so paused time is excluded.