|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
require("jpgraph/jpgraph.php");
|
|
|
|
|
require("jpgraph/jpgraph_line.php");
|
|
|
|
|
|
|
|
|
|
//variaveis para manter o estado
|
|
|
|
|
$listaDacs = isset($_REQUEST["listaDacs"]) ? $_REQUEST["listaDacs"] : GetIdDacPadrao($dbcon, GetIdUser());
|
|
|
|
|
$dataIni = isset($_REQUEST["dataIni"]) ? $_REQUEST["dataIni"] : date('d/m/Y');
|
|
|
|
|
$dataFim = isset($_REQUEST["dataFim"]) ? $_REQUEST["dataFim"] : date('d/m/Y');
|
|
|
|
|
$tipoChamada = isset($_REQUEST["tipoChamada"]) ? $_REQUEST["tipoChamada"] : 1;
|
|
|
|
|
$totalMedia = isset($_REQUEST["totalMedia"]) ? $_REQUEST["totalMedia"] : 1;
|
|
|
|
|
|
|
|
|
|
$cssBlock = "<style>
|
|
|
|
|
@media print {
|
|
|
|
|
.headSite, #rodapeSite, .filtro {
|
|
|
|
|
display: none;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>";
|
|
|
|
|
|
|
|
|
|
$linkGraph = '';
|
|
|
|
|
$printGraph = isset($_REQUEST['printGraph']) ? 1 : 0;
|
|
|
|
|
|
|
|
|
|
if ($printGraph) {
|
|
|
|
|
ob_clean();
|
|
|
|
|
$query = GetQuery($dataIni, $dataFim, $listaDacs);
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
|
|
|
|
|
$abandonadas = array(0, 0, 0, 0, 0, 0, 0, 0);
|
|
|
|
|
$atendidas = array(0, 0, 0, 0, 0, 0, 0, 0);
|
|
|
|
|
$espera = array(0, 0, 0, 0, 0, 0, 0, 0);
|
|
|
|
|
|
|
|
|
|
$arLabel = array('TE<=10', '10<TE<=20', '20<TE<=30', '30<TE<=60', '60<TE<=120', '120<TE<=180', '180<TE<=300', '300<TE');
|
|
|
|
|
|
|
|
|
|
$dac = "";
|
|
|
|
|
// oferecidas originadas abandonadas nao_atendidas nao_atendidas atendidas efetuadas transbordadas
|
|
|
|
|
// total_oferecidas total_originadas total_abandonadas total_nao_atendidas total_atendidas total_efetuadas total_transbordadas
|
|
|
|
|
while ($row = pg_fetch_array($result, null, PGSQL_ASSOC)) {
|
|
|
|
|
$tipo = $row['tipo'];
|
|
|
|
|
if ($tipo == 'ab') {
|
|
|
|
|
$abandonadas = array($row['ate_10'], $row['ate_20'], $row['ate_30'], $row['ate_60'], $row['ate_120'], $row['ate_180'], $row['ate_300'], $row['ate_maior']);
|
|
|
|
|
} else if ($tipo == 'at') {
|
|
|
|
|
$atendidas = array($row['ate_10'], $row['ate_20'], $row['ate_30'], $row['ate_60'], $row['ate_120'], $row['ate_180'], $row['ate_300'], $row['ate_maior']);
|
|
|
|
|
} else if ($tipo == 'ie') {
|
|
|
|
|
$espera = array($row['ate_10'], $row['ate_20'], $row['ate_30'], $row['ate_60'], $row['ate_120'], $row['ate_180'], $row['ate_300'], $row['ate_maior']);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$totalAtd = array_sum($atendidas);
|
|
|
|
|
$totalAbd = array_sum($abandonadas);
|
|
|
|
|
$totalEsp = array_sum($espera);
|
|
|
|
|
|
|
|
|
|
for ($i = 0; $i < count($atendidas); $i++) {
|
|
|
|
|
$value = $atendidas[$i];
|
|
|
|
|
$atendidas[$i] = !$totalAtd ? 0 : round(($value / $totalAtd) * 100.0);
|
|
|
|
|
|
|
|
|
|
$value = $abandonadas[$i];
|
|
|
|
|
$abandonadas[$i] = !$totalAbd ? 0 : round(($value / $totalAbd) * 100.0);
|
|
|
|
|
|
|
|
|
|
$value = $espera[$i];
|
|
|
|
|
$espera[$i] = !$totalEsp ? 0 : round(($value / $totalEsp) * 100.0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$graph = new Graph(1080, 650);
|
|
|
|
|
$graph->SetMargin(40, 20, 40, 40);
|
|
|
|
|
|
|
|
|
|
$graph->SetScale("textint");
|
|
|
|
|
|
|
|
|
|
$graph->img->SetAntiAliasing(false);
|
|
|
|
|
$graph->title->Set(sprintf("%s De: %s At<EFBFBD>: %s\nDac: %s Emitido: %s Usu<EFBFBD>rio: %s", "Per<EFBFBD>odo", $dataIni, $dataFim, GetNomeDac($listaDacs), date("d/m/Y H:i:s"), GetLogin()));
|
|
|
|
|
$graph->SetBox(false);
|
|
|
|
|
|
|
|
|
|
$graph->img->SetAntiAliasing();
|
|
|
|
|
$graph->yaxis->HideZeroLabel();
|
|
|
|
|
$graph->yaxis->HideLine(false);
|
|
|
|
|
$graph->yaxis->HideTicks(false, false);
|
|
|
|
|
$graph->yaxis->title->Set('Percentual');
|
|
|
|
|
|
|
|
|
|
$graph->xgrid->Show();
|
|
|
|
|
$graph->xgrid->SetLineStyle("solid");
|
|
|
|
|
$graph->xaxis->SetTickLabels($arLabel);
|
|
|
|
|
$graph->xgrid->SetColor('#E3E3E3');
|
|
|
|
|
|
|
|
|
|
$graph->xaxis->title->Set(sprintf("\nTotal Atendidas [ %s ] Total Abandonadas [ %s ] Total Espera [ %s ] ", FormataValor($totalAtd, 0), FormataValor($totalAbd, 0), FormataValor($totalEsp, 0)));
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Constru<EFBFBD><EFBFBD>o das linhas.
|
|
|
|
|
*/
|
|
|
|
|
$atdPlot = new LinePlot($atendidas);
|
|
|
|
|
$graph->Add($atdPlot);
|
|
|
|
|
$atdPlot->SetColor("green");
|
|
|
|
|
$atdPlot->SetLegend('Chamadas Atendidas');
|
|
|
|
|
|
|
|
|
|
$abdPlot = new LinePlot($abandonadas);
|
|
|
|
|
$graph->Add($abdPlot);
|
|
|
|
|
$abdPlot->SetColor("red");
|
|
|
|
|
$abdPlot->SetLegend('Chamadas Abandonadas');
|
|
|
|
|
|
|
|
|
|
$espPlot = new LinePlot($espera);
|
|
|
|
|
$graph->Add($espPlot);
|
|
|
|
|
$espPlot->SetColor("orange");
|
|
|
|
|
$espPlot->SetLegend('Chamadas em Espera');
|
|
|
|
|
|
|
|
|
|
$graph->legend->SetFrameWeight(1);
|
|
|
|
|
$graph->Stroke();
|
|
|
|
|
exit;
|
|
|
|
|
} else if (IsPostBack()) {
|
|
|
|
|
if (!is_date($dataIni)) {
|
|
|
|
|
$jsStartup[] = "alert('Data inicial inv<EFBFBD>lida!');";
|
|
|
|
|
} else if (!is_date($dataFim)) {
|
|
|
|
|
$jsStartup[] = "alert('Data final inv<EFBFBD>lida!');";
|
|
|
|
|
} else {
|
|
|
|
|
$linkGraph = sprintf('<img id="relGrafico" src="index.php?idProg=300&dataIni=%s&dataFim=%s&listaDacs=%s&tipoChamada=%s&printGraph=1" border="0">', $dataIni, $dataFim, $listaDacs, $totalMedia);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// echo GetQuery($dataIni, $dataFim, $listaDacs);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//carrega dacs
|
|
|
|
|
$dacs = GetDac($dbcon, $listaDacs, '', 1);
|
|
|
|
|
$smarty->assign('imp', $i);
|
|
|
|
|
$smarty->assign('dacs', $dacs);
|
|
|
|
|
$smarty->assign('dataIni', $dataIni);
|
|
|
|
|
$smarty->assign('dataFim', $dataFim);
|
|
|
|
|
$smarty->assign('erro', $erro);
|
|
|
|
|
$smarty->assign('tipoChamada', $tipoChamada);
|
|
|
|
|
$smarty->assign('linkGraph', $linkGraph);
|
|
|
|
|
GetTemplate($smarty, 'analise/desempenhoDac.tpl');
|
|
|
|
|
|
|
|
|
|
function GetQuery($dataIni, $dataFim, $dac) {
|
|
|
|
|
$dataIni = FormatDtMssql($dataIni);
|
|
|
|
|
$dataFim = FormatDtMssql($dataFim);
|
|
|
|
|
|
|
|
|
|
$query = "SELECT 'ab' as tipo
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param3) <= 10)) THEN 1 ELSE 0 END) as ate_10
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param3) > 10) AND (strtoint(param3) <= 20) ) THEN 1 ELSE 0 END) as ate_20
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param3) > 20) AND (strtoint(param3) <= 30) ) THEN 1 ELSE 0 END) as ate_30
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param3) > 30) AND (strtoint(param3) <= 60) ) THEN 1 ELSE 0 END) as ate_60
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param3) > 60) AND (strtoint(param3) <= 120) ) THEN 1 ELSE 0 END) as ate_120
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param3) > 120) AND (strtoint(param3) <= 180) ) THEN 1 ELSE 0 END) as ate_180
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param3) > 180) AND (strtoint(param3) <= 300) ) THEN 1 ELSE 0 END) as ate_300
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param3) > 300) ) THEN 1 ELSE 0 END) as ate_MAIOR
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT to_char(a.calldate,'YYYY-MM-DD') AS DATA
|
|
|
|
|
,a.calldate
|
|
|
|
|
,b.fila
|
|
|
|
|
,b.evento
|
|
|
|
|
,b.param1
|
|
|
|
|
,b.param2
|
|
|
|
|
,b.param3
|
|
|
|
|
,b.param4
|
|
|
|
|
FROM pbx_eventos_dacs b, pbx_bilhetes a, pbx_dacs c
|
|
|
|
|
where a.uniqueid = b.uid2
|
|
|
|
|
and c.nome = b.fila
|
|
|
|
|
and a.lastapp <> 'Transferred Call'
|
|
|
|
|
and b.evento = 'ABANDON'
|
|
|
|
|
and a.data_bilhete >= '$dataIni'
|
|
|
|
|
and a.data_bilhete <= '$dataFim'
|
|
|
|
|
and c.id = '$dac'\n";
|
|
|
|
|
|
|
|
|
|
$query .= " ) AS DADOS
|
|
|
|
|
UNION ALL
|
|
|
|
|
SELECT 'at' as tipo
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param1) <= 10)) THEN 1 ELSE 0 END) as ate_10
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param1) > 10) AND (strtoint(param1) <= 20) ) THEN 1 ELSE 0 END) as ate_20
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param1) > 20) AND (strtoint(param1) <= 30) ) THEN 1 ELSE 0 END) as ate_30
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param1) > 30) AND (strtoint(param1) <= 60) ) THEN 1 ELSE 0 END) as ate_60
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param1) > 60) AND (strtoint(param1) <= 120) ) THEN 1 ELSE 0 END) as ate_120
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param1) > 120) AND (strtoint(param1) <= 180) ) THEN 1 ELSE 0 END) as ate_180
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param1) > 180) AND (strtoint(param1) <= 300) ) THEN 1 ELSE 0 END) as ate_300
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param1) > 300) ) THEN 1 ELSE 0 END) as ate_MAIOR
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT to_char(a.calldate,'YYYY-MM-DD') AS DATA, a.calldate,b.fila,
|
|
|
|
|
b.evento,b.param1,b.param2,b.param3,b.param4
|
|
|
|
|
FROM pbx_eventos_dacs b, pbx_bilhetes a, pbx_dacs c
|
|
|
|
|
WHERE a.uniqueid = b.uid2
|
|
|
|
|
and c.nome = b.fila
|
|
|
|
|
and a.lastapp <> 'Transferred Call'
|
|
|
|
|
AND b.evento IN ('COMPLETEAGENT','COMPLETECALLER','TRANSFER')
|
|
|
|
|
AND a.data_bilhete >= '$dataIni'
|
|
|
|
|
AND a.data_bilhete <= '$dataFim'
|
|
|
|
|
AND c.id = '$dac'\n";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$query .= " ) AS DADOS
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UNION ALL
|
|
|
|
|
SELECT 'ie' as tipo
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param1) <= 10)) THEN 1 ELSE 0 END) as ate_10
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param1) > 10) AND (strtoint(param1) <= 20) ) THEN 1 ELSE 0 END) as ate_20
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param1) > 20) AND (strtoint(param1) <= 30) ) THEN 1 ELSE 0 END) as ate_30
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param1) > 30) AND (strtoint(param1) <= 60) ) THEN 1 ELSE 0 END) as ate_60
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param1) > 60) AND (strtoint(param1) <= 120) ) THEN 1 ELSE 0 END) as ate_120
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param1) > 120) AND (strtoint(param1) <= 180) ) THEN 1 ELSE 0 END) as ate_180
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param1) > 180) AND (strtoint(param1) <= 300) ) THEN 1 ELSE 0 END) as ate_300
|
|
|
|
|
,SUM (CASE WHEN( (strtoint(param1) > 300) ) THEN 1 ELSE 0 END) as ate_MAIOR
|
|
|
|
|
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT to_char(a.calldate,'YYYY-MM-DD') AS DATA, a.calldate,b.fila,
|
|
|
|
|
b.evento,b.param1,b.param2,b.param3,b.param4
|
|
|
|
|
FROM pbx_eventos_dacs b, pbx_bilhetes a, pbx_dacs c
|
|
|
|
|
WHERE a.uniqueid = b.uid2
|
|
|
|
|
and c.nome = b.fila
|
|
|
|
|
and a.lastapp <> 'Transferred Call'
|
|
|
|
|
and b.evento = 'CONNECT'
|
|
|
|
|
AND strtoint(param1) > 3
|
|
|
|
|
AND a.data_bilhete >= '$dataIni'
|
|
|
|
|
AND a.data_bilhete <= '$dataFim'
|
|
|
|
|
AND c.id = '$dac'\n";
|
|
|
|
|
|
|
|
|
|
$query .= " ) AS DADOS ORDER BY 1 ";
|
|
|
|
|
//if(IsAdmin()){ echo $query; exit; }
|
|
|
|
|
return $query;
|
|
|
|
|
}
|