Esempio n. 1
0
    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;
    }