|
|
|
@ -95,26 +95,68 @@ class DashboardController extends Controller
|
|
|
|
|
private function relatoriosDados() |
|
|
|
|
{ |
|
|
|
|
$id_empresa = Helper::getIdEmpresa(); |
|
|
|
|
$relatorios = DB::select(" |
|
|
|
|
SELECT |
|
|
|
|
q.nome, q.id, |
|
|
|
|
COUNT(DISTINCT s.matricula) AS agentes, |
|
|
|
|
SUM(CASE WHEN evento = 'EMESPERA' THEN 1 ELSE 0 END) AS em_espera, |
|
|
|
|
SUM(CASE WHEN evento = 'START' THEN 1 ELSE 0 END) AS iniciadas, |
|
|
|
|
SUM(CASE WHEN evento IN ('COMPLETE_AGENT', 'COMPLETE_CALLER') THEN 1 ELSE 0 END) AS finalizadas, |
|
|
|
|
SUM(CASE WHEN evento = 'ABANDON' THEN 1 ELSE 0 END) AS abandonadas |
|
|
|
|
FROM queues q |
|
|
|
|
LEFT JOIN supervisor s ON s.fila = q.nome AND s.id_empresa = :id_empresa |
|
|
|
|
LEFT JOIN atendimento a ON a.matricula = s.matricula |
|
|
|
|
LEFT JOIN eventos_atendimento ea ON ea.uniqueid = a.uniqueid |
|
|
|
|
AND ea.id = (SELECT MAX(id) FROM eventos_atendimento ee WHERE ee.uniqueid = ea.uniqueid) |
|
|
|
|
AND a.data_reg::date = CURRENT_DATE |
|
|
|
|
where q.is_ativa = true |
|
|
|
|
GROUP BY q.nome, q.id |
|
|
|
|
ORDER BY q.nome |
|
|
|
|
", ['id_empresa' => $id_empresa]); |
|
|
|
|
|
|
|
|
|
return $relatorios; |
|
|
|
|
$relatorios = DB::select(" |
|
|
|
|
SELECT |
|
|
|
|
q.id, q.nome, |
|
|
|
|
SUM(CASE WHEN evento = 'EMESPERA' THEN 1 ELSE 0 END) AS em_espera, |
|
|
|
|
SUM(CASE WHEN evento = 'START' THEN 1 ELSE 0 END) AS iniciadas, |
|
|
|
|
SUM(CASE WHEN evento = 'SENDED' THEN 1 ELSE 0 END) AS enviados, |
|
|
|
|
SUM(CASE WHEN evento IN ('COMPLETE_AGENT','COMPLETE_CALLER') THEN 1 ELSE 0 END) AS finalizadas, |
|
|
|
|
SUM(CASE WHEN evento = 'ABANDON' THEN 1 ELSE 0 END) AS abandonadas, |
|
|
|
|
SUM(CASE WHEN evento = 'CANCELADO' THEN 1 ELSE 0 END) AS cancelado |
|
|
|
|
FROM atendimento a |
|
|
|
|
INNER JOIN eventos_atendimento ea ON ea.uniqueid = a.uniqueid and ea.id = (SELECT MAX(id) FROM eventos_atendimento ee WHERE ee.uniqueid = ea.uniqueid) |
|
|
|
|
INNER JOIN queues q on q.id = ea.id_queue |
|
|
|
|
WHERE a.data_reg::date = CURRENT_DATE |
|
|
|
|
AND a.id_empresa = :id_empresa |
|
|
|
|
GROUP BY q.nome, q.id |
|
|
|
|
ORDER BY q.id |
|
|
|
|
", ['id_empresa' => $id_empresa]); |
|
|
|
|
|
|
|
|
|
$filas = DB::select(" |
|
|
|
|
SELECT |
|
|
|
|
q.nome, q.id, count(s.nome) as agentes |
|
|
|
|
FROM |
|
|
|
|
queues q |
|
|
|
|
LEFT JOIN supervisor s on s.fila = q.nome |
|
|
|
|
WHERE q.id_empresa = :id_empresa AND q.is_ativa = true |
|
|
|
|
GROUP BY q.nome, q.id |
|
|
|
|
", ['id_empresa' => $id_empresa]); |
|
|
|
|
|
|
|
|
|
$relatoriosPorId = []; |
|
|
|
|
|
|
|
|
|
foreach ($relatorios as $relatorio) { |
|
|
|
|
$relatoriosPorId[$relatorio->id] = [ |
|
|
|
|
'em_espera' => $relatorio->em_espera, |
|
|
|
|
'iniciadas' => $relatorio->iniciadas, |
|
|
|
|
'enviadas' => $relatorio->enviados, |
|
|
|
|
'finalizadas' => $relatorio->finalizadas, |
|
|
|
|
'abandonadas' => $relatorio->abandonadas, |
|
|
|
|
'canceladas' => $relatorio->cancelado, |
|
|
|
|
]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
foreach ($filas as &$fila) { |
|
|
|
|
$idFila = $fila->id; |
|
|
|
|
|
|
|
|
|
if (isset($relatoriosPorId[$idFila])) { |
|
|
|
|
$fila->em_espera = $relatoriosPorId[$idFila]['em_espera']; |
|
|
|
|
$fila->iniciadas = $relatoriosPorId[$idFila]['iniciadas']; |
|
|
|
|
$fila->enviadas = $relatoriosPorId[$idFila]['enviadas']; |
|
|
|
|
$fila->finalizadas = $relatoriosPorId[$idFila]['finalizadas']; |
|
|
|
|
$fila->abandonadas = $relatoriosPorId[$idFila]['abandonadas']; |
|
|
|
|
$fila->canceladas = $relatoriosPorId[$idFila]['canceladas']; |
|
|
|
|
} else { |
|
|
|
|
$fila->em_espera = 0; |
|
|
|
|
$fila->iniciadas = 0; |
|
|
|
|
$fila->enviadas = 0; |
|
|
|
|
$fila->finalizadas = 0; |
|
|
|
|
$fila->abandonadas = 0; |
|
|
|
|
$fila->canceladas = 0; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $filas; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private function getAtendimentosMes($data_inicio, $data_fim) |
|
|
|
|