PABX da Simples IP
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.
 
 
 
 
 
 

305 lines
12 KiB

<?php
//VerificaPerfilAcesso(SEG_AUDIO);
require_once("bd.php");
$exitAudio = 1;
if (isset($_GET["audio"]) || isset($_GET["repAudio"])) {
$file = $_GET["audio"] ? $_GET["audio"] : $_GET["repAudio"];
$filepath = VerificaCharFinal($_SESSION[SS_PRM_PATH_AUDIO]) . $_GET["audio"];
if (!@file_get_contents($filepath)) {
$jsStartup[] = "alert('Arquivo não encontrado!');";
$exitAudio = 0;
} else {
if (isset($_GET["audio"])) {
DownloadAudio($file, $filepath);
exit;
}
}
}
$trocaDac = 0;
//variaveis para manter o estado
if (isset($_POST["btConsulta"])) {
//print "listaAgente: " . $_SESSION["listaDacs"] ." - ". $_POST["listaDacs"];
$trocaDac = $_SESSION["listaDacs"] != $_POST["listaDacs"];
$_SESSION["listaDacs"] = $_POST["listaDacs"];
$_SESSION["listaAgente"] = $_POST["listaAgente"];
$_SESSION["dataIni"] = $_POST["dataIni"];
$_SESSION["dataFim"] = $_POST["dataFim"];
$_SESSION["src"] = $_POST["src"];
$_SESSION["dst"] = $_POST["dst"];
$_SESSION["proto"] = $_POST["proto"];
$_SESSION["tipoLigacao"] = $_POST["tipoLigacao"];
} else if (!isset($_GET["audio"])) {
$_SESSION["listaDacs"] = !IsAjax() ? GetIdDacPadrao($dbcon, $_SESSION["SSidUser"]) : $_GET["listaDacs"];
$_SESSION["dataIni"] = !IsAjax() ? date('d/m/Y') : $_GET["dataIni"];
$_SESSION["dataFim"] = !IsAjax() ? date('d/m/Y') : $_GET["dataFim"];
$_SESSION["tipoLigacao"] = "0";
}
//carrega dacs
$dacs = GetDac($dbcon, $_SESSION["listaDacs"], "", 1, 1, 1);
//Combo de filtro para tipo de ligacao
$tipoLigacao = GetTipoLigacao($_SESSION["tipoLigacao"]);
//carrega Atendente
if (!IsAjax())
$codSel = ((!$_SESSION["listaAgente"]) || ($trocaDac)) ? 0 : $_SESSION["listaAgente"];
else
$codSel = $_GET["codAgt"] ? $_GET["codAgt"] : 0;
$agentes = "<select name=\"listaAgente\" id=\"listaAgente\" size=\"1\">";
$agentes .= "<option value=\"0\" $sel>Todos</option>";
if (!IsAjax())
$idDac = $_SESSION["listaDacs"];
else
$idDac = $_GET["listaDacs"];
$dtAgtIni = FormatDtMssql($_SESSION["dataIni"]);
$dtAgtFim = FormatDtMssql($_SESSION["dataFim"]);
$query = " select distinct matricula, apelido as nome
from pbx_bilhetes a, pbx_eventos_dacs b, pbx_usuarios c, pbx_dacs d
where b.uid2 = a.uniqueid
and c.matricula = substring(b.agente, 7, 4)
and d.nome = b.fila
and b.evento in('CONNECT', 'COMPLETECALLER', 'COMPLETEAGENT' , 'TRANSFER', 'COMPLETAAGENT','COMPLETACALLER','TRANSFERORIG') \n";
if ($idDac)
$query .= " and d.id = $idDac ";
$query .= " and a.lastapp <> 'Transferred Call'
and coalesce(a.userfield, '') <> ''
and cast(a.calldate as date) >= '$dtAgtIni'
and cast(a.calldate as date) <= '$dtAgtFim' order by 2";
$result = pg_query($dbcon, $query);
//if(IsAdmin())echo $query;
$numAgt = 0;
while ($dados = @pg_fetch_row($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
$i = 1;
} else {
$sel = "";
}
$agentes .= "<option value=\"$dados[0]\" $sel>$dados[1]</option>";
$numAgt++;
}
$agentes .= "</select>";
if (!$numAgt)
$agentes = str_replace('Todos', '------', $agentes);
if (IsAjax()) {
echo $agentes;
} else {
//relatorio
$imp = 0;
$linhas = "";
//Verifica se é o primeiro acesso a pagia
$isPostBack = isset($_GET["idProg"]) ? 0 : 1;
if ($isPostBack || !$exitAudio) {
$setQuery = !$exitAudio ? $_SESSION["setQuery"] : GetQuery($trocaDac);
$result = pg_query($dbcon, $setQuery);
$_SESSION["setQuery"] = $setQuery;
$contaReg = 0;
$audio = array();
$audioTemp = array();
$dadosSaida = array();
$dadosTipo = array();
while ($dados = @pg_fetch_array($result)) {
$fila = trim($dados[fila]);
if ($fila <> '-') {
$dados['tipo'] = 'ext_fila';
}
$dadosSaida[] = $dados;
$userField = trim($dados["userfield"]);
$tipo = ($dados["direcao"]);
if (!$dadosTipo[$userField][$tipo])
$dadosTipo[$userField][$tipo] = 0;
else
$dadosTipo[$userField][$tipo] ++;
if (!$audioTemp[$userField])
$audioTemp[$userField] = 1;
else
$audioTemp[$userField] ++;
}
$dados = array();
foreach ($dadosSaida as $dados) {
$userField = trim($dados["userfield"]);
$linkAudio = "<a href=\"index.php?idProg=23&audio=$dados[userfield]\" style=\"color: #000;\">" . "<img src=\"imgSite/sound22.png\" width=\"22\" height=\"22\" border=\"0\">" . "</a>";
// $repAudio = "<embed src=\"http://localhost/contacteSite/getAudio.php?&repAudio=$dados[userfield]\" autostart=\"false\" loop=\"false\" width=\"145\" height=\"50\" align=\"center\">";
$data = date('d/m/Y H:i:s', strtotime($dados['calldate']));
$duration = SecondToStrTime($dados['duration']);
$dados["src"] = strtoupper($dados["src"]) == "S" ? "-" : $dados["src"];
$dst = $dados["destino"];
$idAud = array_search($dados[userfield], $audio);
$fila = trim($dados[fila]);
$tipo = GetTipoAudio($dados["tipo"], $fila);
$proto = substr($dados["protocolo"], 0, 4) . '-' . substr($dados["protocolo"], 4, 6);
if (($idAud === false) && !empty($userField)) {
if ($audioTemp[$userField] > 1)
$tipo = GetTipoAudioDupl($dadosTipo[$userField], $dados["direcao"], $dados[fila]);
$linhas .= "<tr>
<td align=\"left\" class=\"headData\">$fila </td>
<td align=\"left\" class=\"headData\"> $dados[apelido]</td>
<td align=\"left\" class=\"headData\"> $data</td>
<td align=\"center\" class=\"headData\">$duration</td>
<td align=\"left\" class=\"headData\">$dados[src]</td>
<td align=\"left\" class=\"headData\">$dst</td>
<td align=\"left\" class=\"headData\">$tipo</td>
<td align=\"center\" class=\"headData\">$proto</td>
<td align=\"center\" class=\"headData\">$linkAudio</td>
</tr>";
$contaReg++;
}
$audio[] = $userField;
}
}
$linhas .= "<tr>
<th colspan=\"8\" align=\"left\" class=\"headColun\">Total de Registros</th>
<th align=\"center\" class=\"headColun\"> $contaReg</th>
</tr>";
$jsJQuery[] = "\$('#listaDacs').change(function(){GetAgtFromAudio();}) ";
$jsJQuery[] = "\$('#dataIni').keypress(function(){formataDataHora(this);}) ";
$jsJQuery[] = "\$('#dataIni').blur(function(){GetAgtFromAudio();}) ";
$jsJQuery[] = "\$('#dataFim').keypress(function(){formataDataHora(this);}) ";
$jsJQuery[] = "\$('#dataFim').blur(function(){GetAgtFromAudio();}) ";
if ($isPostBack) {
$erro = "";
if (pg_last_error($dbcon))
$erro = "Ocorreram erros durante a operação. Erro: " . pg_last_error($dbcon);
}
$smarty->assign('erro', $erro);
$smarty->assign('dtIni', $_SESSION["dataIni"]);
$smarty->assign('dtFim', $_SESSION["dataFim"]);
$smarty->assign('dacs', $dacs);
$smarty->assign('agentes', $agentes);
$smarty->assign('src', $_SESSION["src"]);
$smarty->assign('dst', $_SESSION["dst"]);
$smarty->assign('proto', $_SESSION["proto"]);
$smarty->assign('linhas', $linhas);
$smarty->assign('tipoLigacao', $tipoLigacao);
DispRel($smarty);
}
function DispRel($smarty) {
$smarty->display('audio.tpl');
//$smarty->display('audioOld.tpl');
}
function GetQuery($trocaDac) {
//print "agente ".$_POST["listaAgente"]."<br>";
$dac = $_POST["listaDacs"];
$agente = ((!$_POST["listaAgente"]) || ($trocaDac)) ? $_SESSION["listaAgente"] : $_POST["listaAgente"];
$dt = !$_POST["dataIni"] ? $_SESSION["dataIni"] : $_POST["dataIni"];
$dtFim = !$_POST["dataFim"] ? $_SESSION["dataFim"] : $_POST["dataFim"];
$src = !$_POST["src"] ? $_SESSION["src"] : $_POST["src"];
$dst = !$_POST["dst"] ? $_SESSION["dst"] : $_POST["dst"];
$proto = soNumero($_SESSION["proto"]);
$tpLigacao = $_SESSION["tipoLigacao"];
$query = "select * from (
select distinct case coalesce(c.direcao, '-') when('entrada-pstn')then 'entrada-pstn'
when('ext-ramais')then 'interna'
when('interna')then 'interna'
when('saida-pstn')then 'saida-pstn'
when('ext-fila')then 'ext-fila'
when('-')then (case when(b.fila is not null)then 'ext-fila' else 'ni' end)
else 'interna' end as tipo, c.direcao,
e.id as iddac, coalesce(b.fila, '-') as fila, coalesce(d.apelido, '-') as apelido, coalesce(d.matricula, '-') as matricula, a.calldate, a.src, a.dst as destino,
case when(coalesce(b.fila, '') <> '')then
case when( (b.evento in('COMPLETECALLER', 'COMPLETEAGENT', 'COMPLETAAGENT','COMPLETACALLER')) and (coalesce(b.param2, '') <> ''))then b.param2::int
else
case when( (b.evento in('TRANSFER','TRANSFERORIG')) and (coalesce(b.param4, '') <> ''))then b.param4::int else 0 end
end
else
a.billsec
end as duration, a.userfield, f.protocolo
from pbx_bilhetes a
left outer join pbx_eventos_dacs b on b.uid2 = a.uniqueid and b.evento in('CONNECT','COMPLETAAGENT','COMPLETACALLER','TRANSFERORIG', 'COMPLETECALLER', 'COMPLETEAGENT' , 'TRANSFER')
left outer join pbx_bilhetes_complemento c on c.uniqueid2 = a.uniqueid
left outer join pbx_usuarios d on d.matricula = substring(b.agente, 7, 4)
left outer join pbx_dacs e on e.nome = b.fila
left outer join pbx_protocolo_reg f on f.uniqueid = a.uniqueid
where 1=1
and a.lastapp <> 'Transferred Call'
) as a where 1=1 and a.duration > 0 ";
if (empty($proto)) {
if ($dac)
$query .= " and a.idDac = $dac ";
if (!empty($dt))
$query .= " and cast(a.calldate as date) >= '" . FormatDtMssql($dt) . "'\n";
if (!empty($dtFim))
$query .= " and cast(a.calldate as date) <= '" . FormatDtMssql($dtFim) . "'\n";
if ($agente)
$query .= " and a.matricula = '" . $agente . "'\n";
if ($src)
$query .= " and a.src like '%" . $src . "%'\n";
if ($dst)
$query .= " and a.destino like '%" . $dst . "%'\n";
if (($tpLigacao == 'ext-fila') || ($tpLigacao == 'entrada-pstn')) {
$query .= $dac ? "and a.tipo in( 'ext-fila', 'entrada-pstn') and fila <> '-' " : " and a.tipo in( 'ext-fila', 'entrada-pstn') and fila = '-' ";
} else if ($tpLigacao) {
$query .= " and a.tipo = '$tpLigacao' ";
}
} else {
$query .= " and a.protocolo = '$proto' \n";
}
$query .= " order by 6 desc\n ";
//if(IsAdmin()) echo $query;
return $query;
}
function GetTipoAudio($tipo, $fila) {
if ($fila <> '-')
return 'Fila';
if ($tipo == 'ext-entrada')
return 'Entrada';
else if ($tipo == 'ext-saida')
return 'Saída';
else if ($tipo == 'ext-fila')
return 'Fila';
else
return 'interna';
}
function GetTipoAudioDupl($dadosTipo, $tipo, $fila) {
if (array_key_exists('ext-fila', $dadosTipo))
return $fila == '-' ? 'Entrada' : 'Fila';
if (array_key_exists('entrada-pstn', $dadosTipo))
return 'Entrada';
if (array_key_exists('saida-pstn', $dadosTipo))
return 'Saída';
if (array_key_exists('ext-ramais', $dadosTipo))
return 'interna';
return ($tipo);
}
?>