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Á 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ão foi encontrado nenhum dado com as informaçõ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 = ""; 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 = ""; 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 = ""; 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 = ""; 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 = ""; } // } else if ($vpn && VerificaConexaoCentral(base64_decode($vpn))) { // $linkAudio = "http://$url/index.php?idProg=327&audio=$audioUnique&srv=$vpn"; // $audioHTML = ""; // } $downloadAudio = ""; $linhas .= " $empresa $fila $apelido $data $duration $orig $dest $proto $clasDesc $ItemDesc"; if (empty($audioHTML)) { $linhas .= "Áudio/Servidor inacessível!"; } else { $linhas .= "$audioHTML $downloadAudio"; } $linhas .= ""; } $linhas .= " Total de Registros $pagMostra de $contaReg "; return $linhas; } /* * FUNCAO QUE UTILIZA API PING PARA VERIFICAR SE O SERVIDOR ESTÁ 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Á 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; } } ?>