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']++;
}
?>
| Client |
Tickets |
Response met |
Response missed |
Response % |
Resolution met |
Resolution missed |
Resolution % |
Avg time to respond |
Avg clock to resolve |
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_name ?> |
= $ticket_count ?> |
= $response_met ?> |
= $response_missed ?> |
= slaPercentDisplay($response_percent) ?> |
= $resolution_met ?> |
= $resolution_missed ?> |
= slaPercentDisplay($resolution_percent) ?> |
= $avg_time_to_respond ?> |
= $avg_time_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.