private function tempo_medio_atendentes($dataInicial, $dataFinal) { $dados = array(); $query = $this->em()->createQuery("\n SELECT\n CONCAT(u.nome, CONCAT(' ', u.sobrenome)) as atendente,\n COUNT(a) as total,\n AVG(a.dataChamada - a.dataChegada) as espera,\n AVG(a.dataInicio - a.dataChamada) as deslocamento,\n AVG(a.dataFim - a.dataInicio) as atendimento,\n AVG(a.dataFim - a.dataChegada) as tempoTotal\n FROM\n Novosga\\Model\\ViewAtendimento a\n JOIN a.usuario u\n WHERE\n a.dataChegada >= :dataInicial AND\n a.dataChegada <= :dataFinal AND\n a.dataFim IS NOT NULL\n GROUP BY\n u\n ORDER BY\n u.nome\n "); $query->setParameter('dataInicial', $dataInicial); $query->setParameter('dataFinal', $dataFinal); $query->setMaxResults(self::MAX_RESULTS); $rs = $query->getResult(); foreach ($rs as $r) { $d = array('atendente' => $r['atendente'], 'total' => $r['total']); try { // se der erro tentando converter a data do banco para segundos, assume que ja esta em segundos // Isso é necessário para manter a compatibilidade entre os bancos $d['espera'] = DateUtil::timeToSec($r['espera']); $d['deslocamento'] = DateUtil::timeToSec($r['deslocamento']); $d['atendimento'] = DateUtil::timeToSec($r['atendimento']); $d['tempoTotal'] = DateUtil::timeToSec($r['tempoTotal']); } catch (\Exception $e) { $d['espera'] = $r['espera']; $d['deslocamento'] = $r['deslocamento']; $d['atendimento'] = $r['atendimento']; $d['tempoTotal'] = $r['tempoTotal']; } $dados[] = $d; } return $dados; }