|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* TIMEOUT DE RESPOSTA - (SEGUNDOS)
|
|
|
|
|
*/
|
|
|
|
|
ini_set('default_socket_timeout', 10);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* VARIAVEIS CONSTANTES
|
|
|
|
|
*/
|
|
|
|
|
define('DIR_APP_AUDIO', "/var/www/html/aplicativo/audio/");
|
|
|
|
|
define('LOGIN_API', 'sinccontasenha');
|
|
|
|
|
define('PASSWD_API', 's3ncC0nt@S2nh@');
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* VARIAVEIS DE ENTRADA DE DADOS
|
|
|
|
|
*/
|
|
|
|
|
$dataIni = isset($_REQUEST["dataIni"]) ? trim($_REQUEST["dataIni"]) : date("d/m/Y");
|
|
|
|
|
$dataFim = isset($_REQUEST["dataFim"]) ? trim($_REQUEST["dataFim"]) : date("d/m/Y");
|
|
|
|
|
$src = isset($_REQUEST["src"]) ? trim($_REQUEST["src"]) : '';
|
|
|
|
|
$dst = isset($_REQUEST["dst"]) ? trim($_REQUEST["dst"]) : '';
|
|
|
|
|
$protocolo = isset($_REQUEST["proto"]) ? trim($_REQUEST["proto"]) : '';
|
|
|
|
|
|
|
|
|
|
$empresa = isset($_REQUEST["listaDacs"]) ? trim($_REQUEST["listaDacs"]) : '';
|
|
|
|
|
$agente = isset($_REQUEST["listaAgente"]) ? trim($_REQUEST["listaAgente"]) : '';
|
|
|
|
|
$classificacao = isset($_REQUEST["listaClass"]) ? trim($_REQUEST["listaClass"]) : '';
|
|
|
|
|
$item = isset($_REQUEST["listaItem"]) ? trim($_REQUEST["listaItem"]) : '';
|
|
|
|
|
|
|
|
|
|
$audio = isset($_GET['audio']) ? $_GET['audio'] : '';
|
|
|
|
|
$servidor = isset($_GET['srv']) ? $_GET['srv'] : '';
|
|
|
|
|
$dwn = isset($_GET['download']) ? true : false;
|
|
|
|
|
|
|
|
|
|
$ajax = isset($_GET['ajax']) ? $_GET['ajax'] : '';
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* LIMPA OS SERVIDORES COM STATUS OFFLINE
|
|
|
|
|
*/
|
|
|
|
|
if ($ajax == 1) {
|
|
|
|
|
SetServidorOffline('RemoveAll');
|
|
|
|
|
echo "OK";
|
|
|
|
|
exit();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* VARIAVEIS COMPLEMENTARES
|
|
|
|
|
*/
|
|
|
|
|
$revendasUser = GetRevendasUsuario($dbcon, 0, true);
|
|
|
|
|
$colspan = 11;
|
|
|
|
|
$exitAudio = 0;
|
|
|
|
|
$pagMostra = 0;
|
|
|
|
|
$contaReg = 0;
|
|
|
|
|
$param = '';
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* VERIFICA SE POSSUI UM <EFBFBD>UDIO NA CHAMADA DA APP
|
|
|
|
|
*/
|
|
|
|
|
GetAudioAlgar($servidor, $audio, $dwn);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* CARREGA COMBOS DA PAGINA
|
|
|
|
|
*/
|
|
|
|
|
$emp = ___GetEmpresa($dataIni, $dataFim, $revendasUser, $empresa);
|
|
|
|
|
$agentes = ___GetAgente($revendasUser, $agente, $empresa);
|
|
|
|
|
$optClass = ___GetClassificacao($dataIni, $dataFim, $revendasUser, $empresa, $classificacao, $item, $agente);
|
|
|
|
|
$class = $optClass[0];
|
|
|
|
|
$itemClass = $optClass[1];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* LISTA DO REQUEST
|
|
|
|
|
*/
|
|
|
|
|
$params = array('listaDacs', 'listaAgente', 'listaItem', 'listaClass', 'dataIni', 'dataFim', 'src', 'dst', 'tipoConsulta');
|
|
|
|
|
foreach ($params as $nomeParam) {
|
|
|
|
|
$param .= sprintf('&%s=%s', $nomeParam, $_REQUEST[$nomeParam]);
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
* COLETA A QUERY A SER EXECUTADA
|
|
|
|
|
*/
|
|
|
|
|
$setQuery = GetQuery($dataIni, $dataFim, $src, $dst, $protocolo, $empresa, $agente, $classificacao, $item, $revendasUser, 'query');
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* EXECUTA A QUERY COM A PAGINACAO
|
|
|
|
|
*/
|
|
|
|
|
$links = PaginaDados($idProg, $setQuery, $param, $regPagina, $offSet, $pagMostra, true);
|
|
|
|
|
$dadosAudios = GetQuery('', '', '', '', '', '', '', '', '', '', $setQuery . " LIMIT $regPagina OFFSET $offSet ");
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* EXIBE A RESPOSTA NA GRID
|
|
|
|
|
*/
|
|
|
|
|
$linhas = ___GetGrid($dadosAudios);
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
$mensagem = $ex->getMessage();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$jsJQuery[] = "\$('#dataIni').keypress(function(){formataDataHora(this);}) ";
|
|
|
|
|
$jsJQuery[] = "\$('#dataFim').keypress(function(){formataDataHora(this);}) ";
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* VARIAVEIS PARA SER PASSADA PARA O SMARTY
|
|
|
|
|
*/
|
|
|
|
|
$smarty->assign('dtIni', $dataIni);
|
|
|
|
|
$smarty->assign('dtFim', $dataFim);
|
|
|
|
|
$smarty->assign('src', $src);
|
|
|
|
|
$smarty->assign('dst', $dst);
|
|
|
|
|
$smarty->assign('proto', $protocolo);
|
|
|
|
|
$smarty->assign('dacs', $emp);
|
|
|
|
|
$smarty->assign('agentes', $agentes);
|
|
|
|
|
$smarty->assign('class', $class);
|
|
|
|
|
$smarty->assign('hasClass', $classificacao);
|
|
|
|
|
$smarty->assign('itemClas', $itemClass);
|
|
|
|
|
$smarty->assign('linhas', $linhas);
|
|
|
|
|
$smarty->assign('colspan', 10);
|
|
|
|
|
$smarty->assign('mensagem', $mensagem);
|
|
|
|
|
$smarty->assign('links', $links);
|
|
|
|
|
$smarty->assign("pagMostra", $pagMostra);
|
|
|
|
|
$smarty->assign("totalReg", $totalReg);
|
|
|
|
|
$smarty->assign("status", $statusAtivo);
|
|
|
|
|
$smarty->assign("pgn", $_REQUEST["pgn"]);
|
|
|
|
|
$smarty->assign("bloco", $_REQUEST["bloco"]);
|
|
|
|
|
$smarty->assign("pg", $_REQUEST["pg"]);
|
|
|
|
|
|
|
|
|
|
GetTemplate($smarty, 'audio_algar.tpl');
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* DETERMINA QUAL O TIPO DE EXECUCAO SER<EFBFBD> FEITA (STREMING NA PAGINA OU DOWNLOAD)
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function GetAudioAlgar($servidor, $audio, $dwn = false) {
|
|
|
|
|
global $jsJQuery;
|
|
|
|
|
|
|
|
|
|
if (!$audio) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($servidor && !$dwn) {
|
|
|
|
|
echo GetAudioApi($servidor, $audio);
|
|
|
|
|
} else if ($servidor && $dwn) {
|
|
|
|
|
GetAudioApi($servidor, $audio, true);
|
|
|
|
|
CreateDownloadStream(base64_decode($audio));
|
|
|
|
|
} else {
|
|
|
|
|
$patch = explode('/', base64_decode($audio));
|
|
|
|
|
$arq = count($patch);
|
|
|
|
|
$file = $patch[$arq - 1];
|
|
|
|
|
$dstAudio = DIR_APP_AUDIO . str_ireplace('.WAV', '.MP3', $file);
|
|
|
|
|
CnvrtWavToMp3(base64_decode($audio), $dstAudio);
|
|
|
|
|
DownloadAudio($file, base64_decode($audio), 'mp3');
|
|
|
|
|
}
|
|
|
|
|
exit();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* BUSCA NO SERVIDOR O AUDIO PARA SER REPRODUZIDO
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function GetAudioApi($servidor, $audio, $create = false) {
|
|
|
|
|
$vpn = base64_decode($servidor);
|
|
|
|
|
$audioMp3 = base64_decode($audio);
|
|
|
|
|
$url = "http://$vpn/integracao?method=GetAudio&login=" . LOGIN_API . "&uniqueid=$audioMp3&senha=" . PASSWD_API . "&tipo=mp3&tipoRetorno=XML";
|
|
|
|
|
if ($create) {
|
|
|
|
|
file_put_contents(DIR_APP_AUDIO . $audioMp3 . '.WAV', file_get_contents($url));
|
|
|
|
|
} else {
|
|
|
|
|
return file_get_contents($url);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* EXECUCAO DA QUERY DE CHAMADAS NO BANCO
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function GetQuery($dataIni, $dataFim, $src, $dst, $protocolo, $empId, $agente, $classificacao, $item, $revendasUser, $param = null) {
|
|
|
|
|
global $contaReg;
|
|
|
|
|
|
|
|
|
|
if ($param == 'query') {
|
|
|
|
|
$query = "SELECT a.uid,e.emp_nome_fantasia,emp_cnpj,chm_fila,vdr_apelido,chm_calldate,chm_duration,chm_src,
|
|
|
|
|
chm_dst,prt_proto_parceiro,clas_descricao,clas_descricao_item,a.uid,chm_userfield,emp_vpn,emp_diretorio_ftp
|
|
|
|
|
FROM vds_chamadas a
|
|
|
|
|
INNER JOIN vds_vendedores b ON a.emp_id = b.emp_id
|
|
|
|
|
INNER JOIN vds_classificacoes c ON c.uid = a.uid
|
|
|
|
|
INNER JOIN vds_protcolos d ON d.uid = a.uid
|
|
|
|
|
INNER JOIN vds_empresas e ON e.emp_id = a.emp_id
|
|
|
|
|
WHERE chm_matricula = vdr_matricula
|
|
|
|
|
AND a.chm_evento IN ('COMPLETEAGENT','COMPLETECALLER','COMPLETAAGENT','COMPLETACALLER', 'TRANSFER') ";
|
|
|
|
|
|
|
|
|
|
if (!$protocolo) {
|
|
|
|
|
$query .= $dataIni && $dataFim ? sprintf(" AND chm_data_bilhete >= '%s' AND chm_data_bilhete <= '%s' ", FormatDtMssql($dataIni), FormatDtMssql($dataFim)) : '';
|
|
|
|
|
$query .= $src ? "AND chm_src = '$src' " : '';
|
|
|
|
|
$query .= $dst ? "AND chm_dst = '$dst' " : '';
|
|
|
|
|
$query .= $agente ? sprintf("AND vdr_apelido = '%s' ", explode('|', $agente)[1]) : '';
|
|
|
|
|
$query .= $classificacao ? "AND clas_descricao = '$classificacao' " : '';
|
|
|
|
|
$query .= $item ? "AND clas_descricao_item = '$item' " : '';
|
|
|
|
|
|
|
|
|
|
if ($empId) {
|
|
|
|
|
$query .= sprintf("AND a.emp_id IN (%s) ", $empId);
|
|
|
|
|
} else if ($agente) {
|
|
|
|
|
$query .= sprintf("AND a.emp_id IN (%s) ", explode('|', $agente)[0]);
|
|
|
|
|
} else {
|
|
|
|
|
$query .= "AND a.emp_id IN ($revendasUser) ";
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$query .= $protocolo ? "AND prt_proto_parceiro = '$protocolo' " : '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query .= " ORDER BY 3 DESC ";
|
|
|
|
|
|
|
|
|
|
$data = ___GetData($query);
|
|
|
|
|
$contaReg = count($data);
|
|
|
|
|
|
|
|
|
|
return $query;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$data = ___GetData($param);
|
|
|
|
|
|
|
|
|
|
if (!$data) {
|
|
|
|
|
throw new Exception("N<EFBFBD>o foi encontrado nenhum dado com as informa<EFBFBD><EFBFBD>es passadas!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* CRIA O COMBO COM AS EMPRESAS DE ACORDO COM A RAGE DE DATA E CHAMADA PRESENTE NA PESQUISA
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function ___GetEmpresa($dataIni, $dataFim, $revendaUser, $empId = null) {
|
|
|
|
|
|
|
|
|
|
$query = sprintf("SELECT DISTINCT a.emp_id,emp_diretorio_ftp
|
|
|
|
|
FROM vds_chamadas a
|
|
|
|
|
INNER JOIN vds_empresas b ON a.emp_id = b.emp_id
|
|
|
|
|
WHERE chm_data_bilhete >= '%s' AND chm_data_bilhete <= '%s' ", FormatDtMssql($dataIni), FormatDtMssql($dataFim));
|
|
|
|
|
$query .= " AND emp_diretorio_ftp IS NOT NULL AND a.emp_id IN($revendaUser) ORDER BY 2;";
|
|
|
|
|
|
|
|
|
|
$select = $empId ? '' : 'selected="selected"';
|
|
|
|
|
$option = "<select name=\"listaDacs\" id=\"listaDacs\" size=\"1\">";
|
|
|
|
|
$option .= "<option value=\"0\" $select>-----------------</option>";
|
|
|
|
|
|
|
|
|
|
$dadosEmp = ___GetData($query);
|
|
|
|
|
|
|
|
|
|
foreach ($dadosEmp as $emp) {
|
|
|
|
|
|
|
|
|
|
if (strpos($emp['emp_diretorio_ftp'], '/') !== false) {
|
|
|
|
|
$str = explode('/', $emp['emp_diretorio_ftp']);
|
|
|
|
|
$str = $str[count($str) - 1];
|
|
|
|
|
} else {
|
|
|
|
|
$str = $emp['emp_diretorio_ftp'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($emp['emp_id'] == $empId) {
|
|
|
|
|
$select = "selected=\"selected\"";
|
|
|
|
|
} else {
|
|
|
|
|
$select = '';
|
|
|
|
|
}
|
|
|
|
|
$option .= "<option value=\"{$emp['emp_id']}\" $select>$str</option>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$option .= "</select>";
|
|
|
|
|
|
|
|
|
|
return $option;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* CRIA O COMBO COM OS AGENTES DE ACORDO COM A RAGE DE DATA E CHAMADA PRESENTE NA PESQUISA
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function ___GetAgente($revendaUser, $agente = null, $empId = null) {
|
|
|
|
|
global $dataIni, $dataFim;
|
|
|
|
|
|
|
|
|
|
if (!$empId) {
|
|
|
|
|
$query = "SELECT vdr_apelido AS apelido, vdr_matricula AS matricula, emp_id
|
|
|
|
|
FROM vds_vendedores
|
|
|
|
|
WHERE ";
|
|
|
|
|
$query .= "emp_id IN ($revendaUser) ORDER BY apelido";
|
|
|
|
|
} else {
|
|
|
|
|
$query = sprintf("SELECT DISTINCT vdr_apelido AS apelido, vdr_matricula AS matricula, a.emp_id
|
|
|
|
|
FROM vds_chamadas a
|
|
|
|
|
INNER JOIN vds_vendedores b ON a.emp_id = b.emp_id
|
|
|
|
|
WHERE chm_data_bilhete >= '%s' AND chm_data_bilhete <= '%s' AND b.emp_id = %s", FormatDtMssql($dataIni), FormatDtMssql($dataFim), $empId);
|
|
|
|
|
$query .= " ORDER BY apelido";
|
|
|
|
|
}
|
|
|
|
|
$select = $agente ? '' : 'selected="selected"';
|
|
|
|
|
$option = "<select name=\"listaAgente\" id=\"listaAgente\" size=\"1\">";
|
|
|
|
|
$option .= "<option value=\"0\" $select>-----------------</option>";
|
|
|
|
|
|
|
|
|
|
$dadosAgentes = ___GetData($query);
|
|
|
|
|
|
|
|
|
|
foreach ($dadosAgentes as $agt) {
|
|
|
|
|
if ("{$agt['emp_id']}|{$agt['apelido']}|{$agt['matricula']}" == $agente) {
|
|
|
|
|
$select = "selected=\"selected\"";
|
|
|
|
|
} else {
|
|
|
|
|
$select = '';
|
|
|
|
|
}
|
|
|
|
|
$option .= "<option value=\"{$agt['emp_id']}|{$agt['apelido']}|{$agt['matricula']}\" $select>{$agt['apelido']}</option>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$option .= "</select>";
|
|
|
|
|
|
|
|
|
|
return $option;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* CRIA O COMBO COM AS CLASSIFICACOES DE ACORDO COM A RAGE DE DATA E CHAMADA PRESENTE NA PESQUISA
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function ___GetClassificacao($dataIni, $dataFim, $revendaUser, $empId = null, $classificacao = null, $item = null, $agente = null) {
|
|
|
|
|
|
|
|
|
|
$query = sprintf("SELECT DISTINCT clas_descricao AS classificacao FROM vds_classificacoes
|
|
|
|
|
WHERE clas_data >= '%s' AND clas_data <= '%s' ", FormatDtMssql($dataIni), FormatDtMssql($dataFim));
|
|
|
|
|
|
|
|
|
|
if ($empId) {
|
|
|
|
|
$query .= sprintf(" AND emp_id IN('%s') ", $empId);
|
|
|
|
|
} else if ($agente) {
|
|
|
|
|
$query .= sprintf(" AND clas_matricula = '%s' ", explode('|', $agente)[2]);
|
|
|
|
|
$query .= sprintf(" AND emp_id IN('%s') ", explode('|', $agente)[0]);
|
|
|
|
|
} else {
|
|
|
|
|
$query .= " AND emp_id IN($revendaUser) ";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$select = $classificacao ? '' : 'selected="selected"';
|
|
|
|
|
$option = "<select name=\"listaClass\" id=\"listaClass\" size=\"1\">";
|
|
|
|
|
$option .= "<option value=\"0\" $select>-----------------</option>";
|
|
|
|
|
$dadosClassificacao = ___GetData($query);
|
|
|
|
|
|
|
|
|
|
foreach ($dadosClassificacao as $clas) {
|
|
|
|
|
if ($clas['classificacao'] == $classificacao) {
|
|
|
|
|
$select = "selected=\"selected\"";
|
|
|
|
|
} else {
|
|
|
|
|
$select = '';
|
|
|
|
|
}
|
|
|
|
|
$option .= "<option value=\"{$clas['classificacao']}\" $select>{$clas['classificacao']}</option>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$option .= "</select>";
|
|
|
|
|
if ($classificacao) {
|
|
|
|
|
$itemOption = ___GetClassificacaoItem($dataIni, $dataFim, $revendaUser, $classificacao, $item ? $item : '', $empId);
|
|
|
|
|
return array($option, $itemOption);
|
|
|
|
|
} else {
|
|
|
|
|
return array($option);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* CRIA E EXIBE COMBO COM OS ITENS DE CLASSIFICACAO DE ACORDO A PESQUISA DE CLASSFICACAO
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function ___GetClassificacaoItem($dataIni, $dataFim, $revendaUser, $classificacao, $item = null, $empId = null) {
|
|
|
|
|
|
|
|
|
|
$query = sprintf("SELECT DISTINCT clas_descricao_item AS item
|
|
|
|
|
FROM vds_classificacoes a
|
|
|
|
|
INNER JOIN vds_chamadas b ON a.uid = b.uid
|
|
|
|
|
WHERE clas_reg::DATE >= '%s' AND clas_reg::DATE <= '%s'
|
|
|
|
|
AND clas_descricao = '$classificacao' ", FormatDtMssql($dataIni), FormatDtMssql($dataFim));
|
|
|
|
|
if ($empId) {
|
|
|
|
|
$query .= sprintf(" AND a.emp_id IN(%s); ", $empId);
|
|
|
|
|
} else {
|
|
|
|
|
$query .= " AND emp_id IN($revendaUser);";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$select = $classificacao ? '' : 'selected="selected"';
|
|
|
|
|
$option = "<select name=\"listaItem\" id=\"listaItem\" size=\"1\">";
|
|
|
|
|
$option .= "<option value=\"0\" $select>-----------------</option>";
|
|
|
|
|
|
|
|
|
|
$dadosClassificacao = ___GetData($query);
|
|
|
|
|
|
|
|
|
|
foreach ($dadosClassificacao as $clas) {
|
|
|
|
|
if ($clas['item'] == $item) {
|
|
|
|
|
$select = "selected=\"selected\"";
|
|
|
|
|
} else {
|
|
|
|
|
$select = '';
|
|
|
|
|
}
|
|
|
|
|
$option .= "<option value=\"{$clas['item']}\" $select>{$clas['item']}</option>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$option .= "</select>";
|
|
|
|
|
return $option;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* FUNCAO PARA EXECUTAR QUERY E TRAZER OS DADOS EM ARRAY
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function ___GetData($query) {
|
|
|
|
|
global $dbcon;
|
|
|
|
|
|
|
|
|
|
$result = pg_query($dbcon, $query);
|
|
|
|
|
$resp = pg_fetch_all($result);
|
|
|
|
|
|
|
|
|
|
if (!$resp) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $resp;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* MONTA A GRID A SER APRESENTADA PARA O USUARIO FINAL DA APLICACAO
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function ___GetGrid($dadosAudios) {
|
|
|
|
|
global $colspan, $pagMostra, $contaReg;
|
|
|
|
|
|
|
|
|
|
foreach ($dadosAudios as $dados) {
|
|
|
|
|
$audioHTML = '';
|
|
|
|
|
$uid = $dados['uid'] ? $dados['uid'] : "";
|
|
|
|
|
$empresa = $dados['emp_nome_fantasia'] ? str_replace(" - ALGAR TELECOM", '', $dados['emp_nome_fantasia']) : ' - ';
|
|
|
|
|
$fila = $dados['chm_fila'] ? $dados['chm_fila'] : ' - ';
|
|
|
|
|
$apelido = $dados['vdr_apelido'] ? $dados['vdr_apelido'] : ' - ';
|
|
|
|
|
$data = date('d/m/Y H:i:s', strtotime($dados['chm_calldate']));
|
|
|
|
|
$dataDir = date('Y/m/d', strtotime($dados['chm_calldate']));
|
|
|
|
|
$duration = SecondToStrTime($dados['chm_duration']);
|
|
|
|
|
$orig = $dados['chm_src'] ? $dados['chm_src'] : ' - ';
|
|
|
|
|
$dest = $dados['chm_dst'] ? $dados['chm_dst'] : ' - ';
|
|
|
|
|
$proto = $dados["prt_proto_parceiro"] ? $dados["prt_proto_parceiro"] : ' - ';
|
|
|
|
|
$clasDesc = !$dados["clas_descricao"] ? '-' : $dados["clas_descricao"];
|
|
|
|
|
$ItemDesc = !$dados["clas_descricao_item"] ? '-' : $dados["clas_descricao_item"];
|
|
|
|
|
$vpn = $dados['emp_vpn'] ? base64_encode($dados['emp_vpn']) : '';
|
|
|
|
|
$audioUnique = $dados['uid'] ? base64_encode($dados['uid']) : '';
|
|
|
|
|
|
|
|
|
|
$url = $_SERVER['SERVER_NAME'];
|
|
|
|
|
$audioDir = VerificaAudioHDAUX($dados['emp_diretorio_ftp'], $dataDir, $proto, $uid);
|
|
|
|
|
if ($audioDir) {
|
|
|
|
|
$linkAudio = "https://$url/index.php?idProg=327&audio=$audioDir";
|
|
|
|
|
$audioHTML = "<audio controls preload='none' controlsList=\"download\" reconnect src=\"$linkAudio\"></audio>";
|
|
|
|
|
}
|
|
|
|
|
// } else if ($vpn && VerificaConexaoCentral(base64_decode($vpn))) {
|
|
|
|
|
// $linkAudio = "http://$url/index.php?idProg=327&audio=$audioUnique&srv=$vpn";
|
|
|
|
|
// $audioHTML = "<audio controls preload='none' controlsList=\"nodownload\" reconnect src=\"$linkAudio\"></audio>";
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
$downloadAudio = "<a href='$linkAudio&download=dwn'><img src=\"imgSite/cloud-download.png\" width='35px' ></a>";
|
|
|
|
|
|
|
|
|
|
$linhas .= "<tr>
|
|
|
|
|
<td align=\"left\" class=\"headData\">$empresa</td>
|
|
|
|
|
<td align=\"left\" class=\"headData\">$fila</td>
|
|
|
|
|
<td align=\"left\" class=\"headData\">$apelido</td>
|
|
|
|
|
<td align=\"left\" class=\"headData\">$data</td>
|
|
|
|
|
<td align=\"center\" class=\"headData\">$duration</td>
|
|
|
|
|
<td align=\"center\" class=\"headData\">$orig</td>
|
|
|
|
|
<td align=\"center\" class=\"headData\">$dest</td>
|
|
|
|
|
<td align=\"center\" class=\"headData\">$proto</td>
|
|
|
|
|
<td align=\"center\" class=\"headData\">$clasDesc</td>
|
|
|
|
|
<td align=\"center\" class=\"headData\">$ItemDesc</td>";
|
|
|
|
|
if (empty($audioHTML)) {
|
|
|
|
|
$linhas .= "<td align=\"center\" class=\"headData\" colspan='2'><b><EFBFBD>udio/Servidor inacess<EFBFBD>vel!</b></td>";
|
|
|
|
|
} else {
|
|
|
|
|
$linhas .= "<td align=\"center\" class=\"headData\">$audioHTML</td>
|
|
|
|
|
<td align=\"center\" class=\"headData\">$downloadAudio</td>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$linhas .= "</tr>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$linhas .= "<tr>
|
|
|
|
|
<th colspan=\"$colspan\" align=\"center\" class=\"headColun\">Total de Registros</th>
|
|
|
|
|
<th align=\"center\" class=\"headColun\">$pagMostra de $contaReg</th>
|
|
|
|
|
</tr>";
|
|
|
|
|
|
|
|
|
|
return $linhas;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* FUNCAO QUE UTILIZA API PING PARA VERIFICAR SE O SERVIDOR EST<EFBFBD> ATIVO
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function VerificaConexaoCentral($servidor) {
|
|
|
|
|
|
|
|
|
|
if (!SetServidorOffline($servidor)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$url = "http://$servidor/integracao/?method=Ping&login=" . LOGIN_API . "&senha=" . PASSWD_API . "&tipoRetorno=XML";
|
|
|
|
|
$ret = file_get_contents($url);
|
|
|
|
|
$xml = simplexml_load_string($ret);
|
|
|
|
|
|
|
|
|
|
if (strval($xml->status) == 'OK' && strval($xml->result) == true) {
|
|
|
|
|
return true;
|
|
|
|
|
} else {
|
|
|
|
|
SetServidorOffline($servidor, 1);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* ARMAZENA AS VPN's COM O STATUS OFFLINE
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function SetServidorOffline($servidor, $add = null) {
|
|
|
|
|
|
|
|
|
|
if ($servidor == 'RemoveAll') {
|
|
|
|
|
unset($_SESSION['SSServerPingFail']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!isset($_SESSION['SSServerPingFail'])) {
|
|
|
|
|
$_SESSION['SSServerPingFail'] = array();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($add) {
|
|
|
|
|
$_SESSION['SSServerPingFail'][] = $servidor;
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach ($_SESSION['SSServerPingFail'] as $server) {
|
|
|
|
|
if ($servidor == $server) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* VERIFICA SE O ARQUIVO EST<EFBFBD> NO SERVIDOR
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function VerificaAudioHDAUX($dir, $dataDir, $proto, $uid) {
|
|
|
|
|
if ($dir && $proto != ' - ') {
|
|
|
|
|
$filename = '/hdaux/ftp/algar/audios/' . $dir . '/' . $dataDir . '/' . $proto . '.WAV';
|
|
|
|
|
if (CnvrtFileExists($filename)) {
|
|
|
|
|
return base64_encode($filename);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$filename = sprintf('/hdaux/ftp/algar/audios/%s/%s/%s_%s.WAV', $dir, $dataDir, $proto, $uid);
|
|
|
|
|
if (CnvrtFileExists($filename)) {
|
|
|
|
|
return base64_encode($filename);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
?>
|