forked from SimplesIP/pabx-app
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
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); |
|
} |
|
|
|
?>
|
|
|