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.
305 lines
12 KiB
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); |
|
} |
|
?> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|