You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

125 lines
5.7 KiB

<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
function ImportaDadosDesvio($dbcon) {
if (!$_SESSION["SSatuDesvio"]) {
//atualiza a table usada para o cálculo do desvio padrao
$query = " insert into pbx_media_atendimento(
mat_dac, mat_data, mat_semana, mat_dia_semana, mat_num_ca, mat_num_opr, mat_med_ca_opr)
SELECT D.id,
CAST((CALLDATE) AS DATE) AS DATA,
0,
DATE_PART('DOW', CAST((CALLDATE) AS DATE)) + 1 AS DIA_SEMANA,
COUNT(*) AS CHAMADAS,
COUNT(DISTINCT DSTCHANNEL) AS OPR,
(COUNT(*) / COUNT(DISTINCT DSTCHANNEL)) AS MEDIA
FROM PBX_BILHETES A, PBX_EVENTOS_DACS B, PBX_DACS D
WHERE B.UID2 = A.UNIQUEID
AND D.NOME = B.FILA
AND B.EVENTO = 'ENTERQUEUE'
and A.lastapp <> 'Transferred Call'
AND CAST(CALLDATE AS DATE) > coalesce((select max(mat_data) from pbx_media_atendimento), '2006-01-01')
AND NOT EXISTS(SELECT '' FROM PBX_MEDIA_ATENDIMENTO WHERE mat_data = cast(a.calldate as date))
GROUP BY D.id, CAST((CALLDATE) AS DATE)
ORDER BY 1, 2 ";
// --((CAST(NOW() AS DATE) - (DATE_PART('DOW', NOW()) + 1)::INT) - (52 * 7))
// --AND CAST(CALLDATE AS DATE) <= (CAST(NOW() AS DATE) - (DATE_PART('DOW', NOW()) + 1)::INT)
$_SESSION["SSatuDesvio"] = pg_query($dbcon, $query);
}
}
function ImportaDadosDesvioDia($dbcon) {
if (!$_SESSION["SSatuDesvioDia"]) {
$query = "insert into pbx_media_atendimento_dia
( mat_dac, mat_data, mat_periodo, mat_hora_ini, mat_hora_fim,
mat_dia_semana, mat_num_ca, mat_num_opr, mat_med_ca_opr
)
SELECT d.id, CAST((CALLDATE) AS DATE) AS DATA, c.periodo, hora_ini, hora_fim,
DATE_PART('DOW', CAST((CALLDATE) AS DATE)) + 1 AS DIA_SEMANA,
COUNT(*) AS CHAMADAS,
COUNT(DISTINCT DSTCHANNEL) AS OPR,
(COUNT(*) / COUNT(DISTINCT DSTCHANNEL)) AS MEDIA
FROM pbx_hora_dia c
INNER JOIN pbx_bilhetes a on cast(a.calldate as time) >= c.hora_ini and cast(a.calldate as time) < c.hora_fim and a.lastapp <> 'Transferred Call'
INNER JOIN pbx_eventos_dacs b on b.uid2 = a.uniqueid
INNER JOIN pbx_dacs d on d.nome = b.fila
WHERE b.evento = 'ENTERQUEUE'
AND a.calldate IS NOT NULL
AND CAST(CALLDATE AS DATE) > coalesce((select max(mat_data) from PBX_MEDIA_ATENDIMENTO_DIA), '2006-01-01')
AND NOT EXISTS(SELECT '' FROM PBX_MEDIA_ATENDIMENTO_DIA WHERE mat_data = cast(a.calldate as date))
group by d.id, CAST((CALLDATE) AS DATE), c.periodo, hora_ini, hora_fim
order by periodo ";
$_SESSION["SSatuDesvioDia"] = pg_query($dbcon, $query);
}
}
function GetDadosMes($dbcon, $dac, $dt) {
$query = " select (DATE_PART('DOW', cast('$dt' as date)) + 1) as diaSemana, ((CAST('$dt' AS DATE) - (52 * 7))) as dataIni, (cast('$dt' AS DATE) - (DATE_PART('DOW', cast('$dt' as date)) + 1)::INT) as dataFim";
$result = pg_query($dbcon, $query);
$row = pg_fetch_row($result);
$diaSemana = $row[0];
$dataIni = $row[1];
$dataFim = $row[2];
$query = "select mat_data, mat_dia_semana, mat_num_ca from pbx_media_atendimento where mat_dac = $dac and mat_data <= '$dataFim' and mat_dia_semana = $diaSemana order by mat_data desc limit 52";
$result = pg_query($dbcon, $query);
return $result;
}
function GetDadosDia($dbcon, $dac, $dt, $periodo) {
$query = " select (DATE_PART('DOW', cast('$dt' as date)) + 1) as diaSemana, ((CAST('$dt' AS DATE) - (52 * 7))) as dataIni, (cast('$dt' AS DATE) - (DATE_PART('DOW', cast('$dt' as date)) + 1)::INT) as dataFim";
$result = pg_query($dbcon, $query);
$row = pg_fetch_row($result);
$diaSemana = $row[0];
$dataIni = $row[1];
$dataFim = $row[2];
$query = "select mat_data, mat_dia_semana, mat_num_ca from pbx_media_atendimento_dia where mat_dac = $dac and mat_data <= '$dataFim' and mat_dia_semana = $diaSemana and mat_periodo = $periodo order by mat_data desc, mat_periodo desc limit 52 ";
//print $query; exit;
$result = pg_query($dbcon, $query);
return $result;
}
function GetDesvio($result, &$mediaCalc) {
$media = array();
$totalSemnas = 0;
while ($row = pg_fetch_array($result)) {
$media[$totalSemnas] = $row["mat_num_ca"];
$totalSemnas++;
}
//calcula a media das semanas
$mediaSemanas = 0;
for ($i = 0; $i < $totalSemnas; $i++)
$mediaSemanas += $media[$i];
$mediaSemanas = $totalSemnas == 0 ? 0 : $mediaSemanas / $totalSemnas;
$mediaCalc = $mediaSemanas;
//calcula variancia
$variancia = 0;
for ($i = 0; $i < $totalSemnas; $i++) {
//echo "Media: $media[$i]" . " - " . $mediaSemanas . " = " . ($media[$i] - $mediaSemanas) . " Quadrado = " . Quadrado(($media[$i] - $mediaSemanas)) . " <br>" ;
$variancia += Quadrado(($media[$i] - $mediaSemanas));
}
$variancia = ($totalSemnas - 1) == 0 ? 0 : round($variancia / ($totalSemnas - 1));
$_SESSION[SS_DESVIO_PADRAO] = round(sqrt($variancia), 4);
return $_SESSION[SS_DESVIO_PADRAO];
}
function Quadrado($num) {
return pow($num, 2);
}
?>