public function getRowsForOperator($operator) { /* Format for tdStats [ 'A' => [ 'count' => 10, 'execTime' => 30 ], 'B' => [ 'count' => 10, 'execTime' => 30 ], ... ] */ $tdStats = array(); $tickets = TicketStats::fromDatabaseListByOperator($operator->getCode(), $this->dateFrom, $this->dateTo); $totalCount = count($tickets); $averageExecTime = 0; foreach ($tickets as $ticket) { $ticketCode = $ticket->getCode(); if (!isset($tdStats[$ticketCode])) { $tdStats[$ticketCode] = array('count' => 0, 'execTime' => 0); } $timeInExecution = $ticket->getTimeOut() - $ticket->getTimeExec(); $tdStats[$ticketCode]['count'] += 1; $tdStats[$ticketCode]['execTime'] += $timeInExecution; $averageExecTime += $timeInExecution; } ksort($tdStats); $rows = ''; foreach ($tdStats as $code => $values) { // Division by zero should never occur $percentage = (int) ($values['count'] / $totalCount * 100); $averageTime = (int) ($values['execTime'] / $values['count'] / 60); $rows .= <<<EOS <tr> <td>{$code}</td> <td>{$values['count']}</td> <td>{$percentage} %</td> <td>{$averageTime} min</td> </tr> EOS; } if (!$rows) { $rows = "<tr><td colspan=\"4\">Nessuna statistica disponibile</td></tr>"; } else { $averageExecTime = (int) ($averageExecTime / $totalCount / 60); $rows .= <<<EOS <tr> <td><b>TOTALE</b></td> <td><b>{$totalCount}</b></td> <td><b>100 %</b></td> <td><b>{$averageExecTime} min</b></td> </tr> EOS; } return $rows; }