|
|
|
|
#!/usr/bin/php -q
|
|
|
|
|
<?php
|
|
|
|
|
error_reporting(E_ERROR);
|
|
|
|
|
ini_set('display_errors', 0);
|
|
|
|
|
ini_set("memory_limit", "512M");
|
|
|
|
|
include("/var/lib/asterisk/scripts/vendas/configVendasAlgar.php");
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Inclui fun<EFBFBD>oes gen<EFBFBD>ricas.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Registra ocorr<EFBFBD>ncias na aplica<EFBFBD><EFBFBD>o.
|
|
|
|
|
*/
|
|
|
|
|
$pathLog = "/var/log/asterisk/consolidaVendas.log";
|
|
|
|
|
|
|
|
|
|
$VDS_LIMIT_EXPORTA = 500;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Em caso de servidores compartilhados um CNPJ apenas deve controlar o n<EFBFBD>o perturbe
|
|
|
|
|
* a variavel "$cnpjClienteAlgarNbp" deve ser atribuida com o CNPJ escolido, a variavel
|
|
|
|
|
* deve ser declarada na unit configVendasAlgar.php
|
|
|
|
|
*/
|
|
|
|
|
if (!isset($cnpjClienteAlgarNbp)) {
|
|
|
|
|
$cnpjClienteAlgarNbp = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Mantem com false se ainda nao configuarado no arquivo configVendasAlgar.php.
|
|
|
|
|
* Atribua $desativaNpb = true no arquivo configVendasAlgar.php para desativar
|
|
|
|
|
* o nao perturbe.
|
|
|
|
|
*/
|
|
|
|
|
if (!isset($desativaNpb)) {
|
|
|
|
|
$desativaNpb = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Para ambientes compartilhados os dados sao segmentados por filas,
|
|
|
|
|
* aqui devem ser informadas as filas ligadas ao cnpj em questao.
|
|
|
|
|
*/
|
|
|
|
|
$filas = isset($argv[1]) ? trim($argv[1]) : false;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Cnpj do cliente, a partir desse parametros iremos capturar o seu id na base remota.
|
|
|
|
|
* KNET -> '07980651000134'; IP -> 180
|
|
|
|
|
* NEW TELECOM -> "21843508000121"; IP -> 181
|
|
|
|
|
* MARTECC CELULAR -> "12324775000100"; IP -> 183
|
|
|
|
|
* SAICON-TEL -> "05029136000300"; IP -> 194
|
|
|
|
|
* PRIME TELECOM -> "18731324000165"; IP -> 198
|
|
|
|
|
*/
|
|
|
|
|
$cnpjCliente = isset($argv[2]) ? trim($argv[2]) : $cnpjClienteAlgar;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Id do cliente cadastrado na base remota, este parametro <EFBFBD> importante para
|
|
|
|
|
* n<EFBFBD>o haver conflito na base.
|
|
|
|
|
*/
|
|
|
|
|
$idCliente = 0;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Simples flag para o arquivo de pid nao ser apagado antes do inicios da execucao do script.
|
|
|
|
|
*/
|
|
|
|
|
$encerra = 0;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Deixa ativo apenas o nao pereturbe.
|
|
|
|
|
*/
|
|
|
|
|
$atvNaoPerturbe = isset($naoPerturbeApenas) ? $naoPerturbeApenas : false;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Arquivo para impedir a execu<EFBFBD><EFBFBD>o de dois scripts ao mesmo tempo.
|
|
|
|
|
*/
|
|
|
|
|
$dataFile = date("Y-m-d");
|
|
|
|
|
$fileProcess = "/tmp/vendas_{$dataFile}_$cnpjCliente.pid";
|
|
|
|
|
//$fileProcess = '';
|
|
|
|
|
try {
|
|
|
|
|
/*
|
|
|
|
|
* Impede duas instancias do mesmo arquivo.
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
// */30 * * * * root /var/lib/asterisk/scripts/vendas/consolidaVendas.php
|
|
|
|
|
if (vdsEmExecucao($fileProcess)) {
|
|
|
|
|
__GeraExcept__("Script j<EFBFBD> em execu<EFBFBD><EFBFBD>o!");
|
|
|
|
|
}
|
|
|
|
|
@vdsIniciaExec($fileProcess);
|
|
|
|
|
$encerra = true;
|
|
|
|
|
/*
|
|
|
|
|
* Aguarda um tempo aleat<EFBFBD>rio para iniciar.
|
|
|
|
|
*/
|
|
|
|
|
//$tmp = rand(0, 120);
|
|
|
|
|
//sleep($tmp);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Realiza a conexao com o banco de dados local;
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Funcao garente que parametros de configuracao esteja peresentes,
|
|
|
|
|
* nao modifique os valores nesta funcao, utilize o arquivo configVendasAlgar.php.
|
|
|
|
|
*/
|
|
|
|
|
__VerificaDefault();
|
|
|
|
|
/*
|
|
|
|
|
* Configura<EFBFBD><EFBFBD>es do servidor de banco de dados, as informa<EFBFBD><EFBFBD>es omitidas ser<EFBFBD>o
|
|
|
|
|
* retornadas pela fun<EFBFBD><EFBFBD>o padr<EFBFBD>o;
|
|
|
|
|
*/
|
|
|
|
|
__GetParams($paramLocalConn);
|
|
|
|
|
$connL = vdsGetConnectionL();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Realiza a conexao com o banco de dados remoto;
|
|
|
|
|
*/
|
|
|
|
|
/*
|
|
|
|
|
* Modifique esses valores antes da chamada para as fun<EFBFBD><EFBFBD>es de conexao para for<EFBFBD>ar uma
|
|
|
|
|
* conexao diferente da padrao.
|
|
|
|
|
*/
|
|
|
|
|
__GetParams($paramRemoteConn);
|
|
|
|
|
$connR = vdsGetConnectionR();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Valida as filas passadas para base compartilhada.
|
|
|
|
|
*/
|
|
|
|
|
$filasValidas = ValidaFilas($connL, $filas);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Recupera o id do cliente na base remota.
|
|
|
|
|
*/
|
|
|
|
|
$idCliente = GetIdCliente($connR, $cnpjCliente);
|
|
|
|
|
|
|
|
|
|
// VerificaReproc($connR, $connL, $idCliente);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Verifica lista nao perturbe.
|
|
|
|
|
*/
|
|
|
|
|
if (!$desativaNpb && (!$cnpjClienteAlgarNbp || ($cnpjClienteAlgarNbp == $cnpjCliente))) {
|
|
|
|
|
ImportaNaoPerturbe($connL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Importa<EFBFBD><EFBFBD>o dos dados.
|
|
|
|
|
*/
|
|
|
|
|
if (!$atvNaoPerturbe) {
|
|
|
|
|
ImportaUsuarios($connL, $connR, $filasValidas);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Importa<EFBFBD><EFBFBD>o das classifica<EFBFBD><EFBFBD>es.
|
|
|
|
|
*/
|
|
|
|
|
if (!$atvNaoPerturbe) {
|
|
|
|
|
Importaclassificacoes($connL, $connR, $filasValidas);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Importa<EFBFBD><EFBFBD>o dos protocolos.
|
|
|
|
|
*/
|
|
|
|
|
if (!$atvNaoPerturbe) {
|
|
|
|
|
ImportaProtocolos($connL, $connR, $filasValidas);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Importa as chamadas.
|
|
|
|
|
*/
|
|
|
|
|
if (!$atvNaoPerturbe) {
|
|
|
|
|
ImportaChamadas($connL, $connR, $filasValidas);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Importa as chamadas.
|
|
|
|
|
*/
|
|
|
|
|
if (!$atvNaoPerturbe) {
|
|
|
|
|
ImportaPesquisa($connL, $connR, $filasValidas);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Grava a data da ultima atualiza<EFBFBD><EFBFBD>o no cloud;
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
RegistraAtualizacao($connR, $idCliente);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Libera a execu<EFBFBD>a<EFBFBD> para uma nova instancia.
|
|
|
|
|
*/
|
|
|
|
|
@vdsEncerraExec($fileProcess);
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
$log = sprintf("%s\n[%s]\n", __RemoveAcentos__($ex->getMessage()), __RemoveAcentos__(__GetLasterror__()));
|
|
|
|
|
__WriteLog__($log, $pathLog);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Libera a execu<EFBFBD>a<EFBFBD> para uma nova instancia.
|
|
|
|
|
*/
|
|
|
|
|
if ($encerra) {
|
|
|
|
|
@vdsEncerraExec($fileProcess);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GravaPacote($pacote, $nome) {
|
|
|
|
|
global $pathLog;
|
|
|
|
|
$result = CreateDir('/var/log/asterisk/vendas/rejeitados/');
|
|
|
|
|
if ($result) {
|
|
|
|
|
$result = file_put_contents($dir . $nome, $pacote);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!$result) {
|
|
|
|
|
__WriteLog__("Erro ao gravar pacote rejeitado: $nome \n [$pacote]\n", $pathLog);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetIdCliente($conn, $cnpjCliente) {
|
|
|
|
|
$query = sprintf("select emp_id from vds_empresas where emp_cnpj = %s", __QuotedStr__($cnpjCliente));
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
__GeraExcept__("Erro ao consultar o cliente na base remota!");
|
|
|
|
|
}
|
|
|
|
|
if (!pg_num_rows($result)) {
|
|
|
|
|
__GeraExcept__("Cliente n<EFBFBD>o cadastrado na base remota!");
|
|
|
|
|
}
|
|
|
|
|
$dadosR = pg_fetch_row($result);
|
|
|
|
|
return $dadosR[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function VerificaReproc($connR, $connL, $idCliente) {
|
|
|
|
|
global $pathLog;
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "VerificaReproc", date("Y-m-d H:i:s"), "Inicio"), $pathLog);
|
|
|
|
|
$query = sprintf("select '' from vds_empresas where emp_id = %s and emp_reproc = 9", __QuotedStr__($idCliente));
|
|
|
|
|
$result = pg_query($connR, $query);
|
|
|
|
|
|
|
|
|
|
if (!$result) {
|
|
|
|
|
__GeraExcept__("Erro ao consultar reprocessamento remoto na vase remota!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (pg_num_rows($result)) {
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "VerificaReproc", date("Y-m-d H:i:s"), "Exec", "Reprocessamento servidor configurado!!!!"), $pathLog);
|
|
|
|
|
exit(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = sprintf("select '' from vds_empresas where emp_id = %s and emp_reproc = 1", __QuotedStr__($idCliente));
|
|
|
|
|
$result = pg_query($connR, $query);
|
|
|
|
|
|
|
|
|
|
if (!$result) {
|
|
|
|
|
__GeraExcept__("Erro ao consultar reprocessamnto local na base remota!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (pg_num_rows($result)) {
|
|
|
|
|
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "VerificaReproc", date("Y-m-d H:i:s"), "Exec", "Executando o reprocessamento!!!!"), $pathLog);
|
|
|
|
|
try {
|
|
|
|
|
if (!pg_query($connL, 'begin')) {
|
|
|
|
|
__GeraExcept__("Erro ao iniciar o reprocessamento da base local!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = " update pbx_bilhetes set integra_vendas = 0 where integra_vendas = 1;
|
|
|
|
|
update pbx_usuarios set integra_vendas = 0 where integra_vendas = 1;
|
|
|
|
|
update pbx_classifica_reg set integra_vendas = 0 where integra_vendas = 1;
|
|
|
|
|
update pbx_protocolo_reg set integra_vendas = 0 where integra_vendas = 1;";
|
|
|
|
|
|
|
|
|
|
if (!pg_query($connL, $query)) {
|
|
|
|
|
__GeraExcept__("Erro ao reprocessar base local!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = "update vds_empresas set emp_reproc = 2 where emp_id = '{$idCliente}'";
|
|
|
|
|
if (!pg_query($connR, $query)) {
|
|
|
|
|
__GeraExcept__("Erro ao confirmar reprocessamento na base remota!!!!!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!pg_query($connL, 'commit')) {
|
|
|
|
|
__GeraExcept__("Erro ao finalizar o reprocessamento da base local!");
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
$log = sprintf("%s\n[%s]\n", __RemoveAcentos__($ex->getMessage()), __RemoveAcentos__(__GetLasterror__()));
|
|
|
|
|
__WriteLog__($log, $pathLog);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "VerificaReproc", date("Y-m-d H:i:s"), "Fim"), $pathLog);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RegistraAtualizacao($connR, $idCliente, $erro = false) {
|
|
|
|
|
global $pathLog;
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "RegistraAtualizacao", date("Y-m-d H:i:s"), "Inicio"), $pathLog);
|
|
|
|
|
$query = "update vds_empresas set emp_ult_atualizacao = now() where emp_id = '{$idCliente}'";
|
|
|
|
|
@pg_query($connR, $query);
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "RegistraAtualizacao", date("Y-m-d H:i:s"), "Fim"), $pathLog);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ValidaFilas($connL, $filas) {
|
|
|
|
|
if (!$filas) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
$aFilas = preg_split('/[,;|]/', $filas);
|
|
|
|
|
$filasValidas = '';
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Valida a fila individualmente.
|
|
|
|
|
*/
|
|
|
|
|
foreach ($aFilas as $fila) {
|
|
|
|
|
if (!is_numeric($fila)) {
|
|
|
|
|
$query = sprintf("select id from pbx_dacs where nome = %s and status = 'A'", __QuotedStr__($fila));
|
|
|
|
|
} else {
|
|
|
|
|
$query = sprintf("select id from pbx_dacs where id = %s and status = 'A'", __QuotedStr__($fila));
|
|
|
|
|
}
|
|
|
|
|
$result = pg_query($connL, $query);
|
|
|
|
|
if (!pg_num_rows($result)) {
|
|
|
|
|
__GeraExcept__(sprintf("A fila \"%s\" informada <EFBFBD> inv<EFBFBD>lida!", $fila));
|
|
|
|
|
}
|
|
|
|
|
$dados = pg_fetch_row($result);
|
|
|
|
|
$filasValidas .= !$filasValidas ? $dados[0] : ',' . $dados[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $filasValidas;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RegistraVendedor($conn, $matricula) {
|
|
|
|
|
global $idCliente;
|
|
|
|
|
$query = sprintf("select '' from vds_vendedores where emp_id = %s and vdr_matricula = %s", __QuotedStr__($idCliente), __QuotedStr__($matricula));
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
__GeraExcept__("Erro ao consultar o vendedor na base remota!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Registra o vendedor caso ele n<EFBFBD>o exista.
|
|
|
|
|
*/
|
|
|
|
|
if (!pg_num_rows($result)) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Vendeor j<EFBFBD> existe na base remota segue para o pr<EFBFBD>ximo registro.
|
|
|
|
|
*/
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DirDados($dirDados) {
|
|
|
|
|
|
|
|
|
|
if (!file_exists($dirDados)) {
|
|
|
|
|
exec("mkdir -p {$dirDados}");
|
|
|
|
|
exec("chown -R postgres:postgres {$dirDados}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ImportaNaoPerturbe($connL) {
|
|
|
|
|
global $idCliente, $dbServer, $userApi, $senhaApi, $pathLog;
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Log: %s\n", "ImportaNaoPerturbe", date("Y-m-d H:i:s"), "Iniciando Importacao!"), $pathLog);
|
|
|
|
|
$dirDados = "/dados/nao_perturbe/";
|
|
|
|
|
DirDados($dirDados);
|
|
|
|
|
$inTran = 0;
|
|
|
|
|
$arrContextOptions=stream_context_create(array( "ssl"=>array("allow_self_signed"=>true,"verify_peer"=>false, "verify_peer_name"=>false, ),));
|
|
|
|
|
try {
|
|
|
|
|
$url = "https://{$dbServer}/integracao/?method=ListaNaoPerturbe&info=1&id={$idCliente}&login={$userApi}&senha={$senhaApi}&SIPID=&tipoRetorno=JSON/STREAM";
|
|
|
|
|
if (!$dadosLista = json_decode(file_get_contents($url,false,$arrContextOptions), true)) {
|
|
|
|
|
__GeraExcept__("Nao foi possivel acessar a API: [{$url}]");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$Status = $dadosLista["result"] == 'true';
|
|
|
|
|
if ($Status) {
|
|
|
|
|
$npId = $dadosLista["np_id"];
|
|
|
|
|
$npMd5 = $dadosLista["np_md5"];
|
|
|
|
|
$fileName = __DIR__ . "/" . $dadosLista["np_name"];
|
|
|
|
|
$destName = $dirDados . str_replace(".tar.gz", ".npb", basename($fileName));
|
|
|
|
|
|
|
|
|
|
$md5 = '';
|
|
|
|
|
/*
|
|
|
|
|
* Quando $npIdeh maior que zero indica que tem um arquivo a ser baixado.
|
|
|
|
|
*/
|
|
|
|
|
if ($npId && !ConNpbLocal($connL, $npId)) {
|
|
|
|
|
$url = "https://{$dbServer}/integracao/?method=ListaNaoPerturbe&info=0&id={$npId}&login={$userApi}&senha={$senhaApi}&SIPID=&tipoRetorno=JSON/STREAM";
|
|
|
|
|
file_put_contents($fileName, file_get_contents($url,false,$arrContextOptions));
|
|
|
|
|
|
|
|
|
|
if (!file_exists($fileName)) {
|
|
|
|
|
__GeraExcept__("Erro ao baixar o arquivo: [{$dadosLista['np_name']}]");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$md5 = md5_file($fileName);
|
|
|
|
|
|
|
|
|
|
if ($npMd5 !== $md5) {
|
|
|
|
|
__GeraExcept__("O arquivo baixado n<EFBFBD>o esta integro [{$dadosLista['np_name']}]");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
___UnTar___($fileName, dirname($destName));
|
|
|
|
|
unlink($fileName);
|
|
|
|
|
|
|
|
|
|
if (!file_exists($destName)) {
|
|
|
|
|
__GeraExcept__("Erro ao descompactar o arquivo: [{$destName}]");
|
|
|
|
|
}
|
|
|
|
|
if (!pg_query($connL, "begin")) {
|
|
|
|
|
__GeraExcept__("Nao foi possivel iniciar uma transacao com o banco de dados!");
|
|
|
|
|
}
|
|
|
|
|
$inTran = 1;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Apaga a base de dados atual.
|
|
|
|
|
*/
|
|
|
|
|
if (!pg_query($connL, "truncate table pbx_nao_perturbe;")) {
|
|
|
|
|
__GeraExcept__("Nao foi possivel limpara a base nao perturbe!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Apaga a base de dados atual.
|
|
|
|
|
*/
|
|
|
|
|
if (!pg_query($connL, "COPY pbx_nao_perturbe FROM '{$destName}'")) {
|
|
|
|
|
__GeraExcept__("Nao foi possivel importar a base nao perturbe!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Apaga o arquivo descompactado.
|
|
|
|
|
*/
|
|
|
|
|
unlink($destName);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Registra a atualiza<EFBFBD><EFBFBD>o da lista no servidor;
|
|
|
|
|
*/
|
|
|
|
|
if (!RegNpbRemoto($npId)) {
|
|
|
|
|
RegNpbLocal($connL, $npId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!pg_query($connL, "commit")) {
|
|
|
|
|
__GeraExcept__("Nao foi possivel finalizr uma transacao com o banco de dados!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Cria a lista negra;
|
|
|
|
|
*/
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Log: %s\n", "ImportaNaoPerturbe", date("Y-m-d H:i:s"), "Iniciando a atualizacao da Lista Negra!"), $pathLog);
|
|
|
|
|
__ListaNegraNaoPerturbe__($connL);
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Log: %s\n", "ImportaNaoPerturbe", date("Y-m-d H:i:s"), "Finalizada a atualizacao da Lista Negra com sucesso!"), $pathLog);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
if ($inTran) {
|
|
|
|
|
pg_query($connL, "rollback");
|
|
|
|
|
}
|
|
|
|
|
$log = sprintf("%s\n[%s]\n", __RemoveAcentos__($ex->getMessage()), __RemoveAcentos__(__GetLasterror__()));
|
|
|
|
|
__WriteLog__($log, $pathLog);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ConNpbLocal($connL, $npId) {
|
|
|
|
|
global $idCliente;
|
|
|
|
|
/*
|
|
|
|
|
* Em caso de falha ao registrar o arquivo no servidor o mesmo eh registrado localmente.
|
|
|
|
|
*/
|
|
|
|
|
$query = "select '' from pbx_nao_perturbe_cliente where emp_id = '{$idCliente}' and np_id = {$npId} ";
|
|
|
|
|
$result = (($result = pg_query($connL, $query)) && pg_num_rows($result));
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Se o arquivo esta registrado localmente, tenta novamente o registro no servidor antes de retornar.
|
|
|
|
|
*/
|
|
|
|
|
if ($result) {
|
|
|
|
|
RegNpbRemoto($npId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RegNpbLocal($connL, $npId) {
|
|
|
|
|
global $idCliente;
|
|
|
|
|
/*
|
|
|
|
|
* Em caso de falha ao registrar o arquivo no servidor o mesmo eh registrado localmente.
|
|
|
|
|
*/
|
|
|
|
|
$query = sprintf("insert into pbx_nao_perturbe_cliente(np_id, emp_id)values(%s, %s);", __QuotedStr__($npId), __QuotedStr__($idCliente));
|
|
|
|
|
$result = pg_query($connL, $query);
|
|
|
|
|
|
|
|
|
|
return $result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RegNpbRemoto($npId) {
|
|
|
|
|
global $idCliente, $dbServer, $userApi, $senhaApi;
|
|
|
|
|
$arrContextOptions=stream_context_create(array( "ssl"=>array("allow_self_signed"=>true,"verify_peer"=>false, "verify_peer_name"=>false, ),));
|
|
|
|
|
$url = "https://{$dbServer}/integracao?method=RegNaoPerturbe&idCliente={$idCliente}&npId={$npId}&login={$userApi}&senha={$senhaApi}&SIPID=&tipoRetorno=JSON/STREAM";
|
|
|
|
|
return file_get_contents($url,false,$arrContextOptions) == 'OK';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ImportaUsuarios($connL, $connR, $filas = '') {
|
|
|
|
|
global $idCliente, $pathLog;
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaUsuarios", date("Y-m-d H:i:s"), "Inicio"), $pathLog);
|
|
|
|
|
|
|
|
|
|
if ($filas) {
|
|
|
|
|
$query = "select nome, apelido, matricula, email from pbx_usuarios a where apelido not in('admin', 'sinccontasenha') and exists(select '' from pbx_eventos_agentes where matricula = a.matricula and id_dac in($filas));";
|
|
|
|
|
} else {
|
|
|
|
|
$query = "select nome, apelido, matricula, email from pbx_usuarios where apelido not in('admin', 'sinccontasenha');";
|
|
|
|
|
}
|
|
|
|
|
$result = pg_query($connL, $query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel consultar os vendedores!");
|
|
|
|
|
}
|
|
|
|
|
if (!pg_num_rows($result)) {
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "ImportaUsuarios", date("Y-m-d H:i:s"), "Exec", "Nao ha usuarios a exportar!!!!"), $pathLog);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$integrar = array();
|
|
|
|
|
while ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) {
|
|
|
|
|
$nome = $dados['nome'];
|
|
|
|
|
$apelido = $dados['apelido'];
|
|
|
|
|
$matricula = $dados['matricula'];
|
|
|
|
|
$email = $dados['email'];
|
|
|
|
|
if (RegistraVendedor($connR, $matricula)) {
|
|
|
|
|
$cmd = sprintf("insert into vds_vendedores(emp_id, vdr_nome, vdr_apelido, vdr_matricula, vdr_email)values(%s,%s,%s,%s,%s);", __QuotedStr__($idCliente), __QuotedStr__($nome), __QuotedStr__($apelido), __QuotedStr__($matricula), __QuotedStr__($email));
|
|
|
|
|
$cmdResult = pg_query($connR, $cmd);
|
|
|
|
|
if ($cmdResult && pg_affected_rows($cmdResult)) {
|
|
|
|
|
/*
|
|
|
|
|
* Guarda o registro para alterar o status para integrado;
|
|
|
|
|
*/
|
|
|
|
|
$integrar[] = $apelido;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
/*
|
|
|
|
|
* Aplido j<EFBFBD> existe na base porem seu status esta com n<EFBFBD>o importado.
|
|
|
|
|
*/
|
|
|
|
|
$integrar[] = $apelido;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Marca os registros com integrado na base de dados.
|
|
|
|
|
*/
|
|
|
|
|
foreach ($integrar as $apelido) {
|
|
|
|
|
$query = sprintf("update pbx_usuarios set integra_vendas = 1 where apelido = %s;", __QuotedStr__($apelido));
|
|
|
|
|
@pg_query($connL, $query);
|
|
|
|
|
}
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaUsuarios", date("Y-m-d H:i:s"), "Fim"), $pathLog);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function Importaclassificacoes($connL, $connR, $filas = '') {
|
|
|
|
|
global $idCliente, $VDS_LIMIT_EXPORTA, $pathLog;
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "Importaclassificacoes", date("Y-m-d H:i:s"), "Inicio"), $pathLog);
|
|
|
|
|
|
|
|
|
|
$setFilas = $filas ? "and d.id in($filas)" : "";
|
|
|
|
|
$query = "select a.id_bilhetes, a.matricula, b.clas_descricao, c.clit_descricao, a.data_reg, d.nome as id_dac, a.clas_id,a. clit_id
|
|
|
|
|
from pbx_classifica_reg a, pbx_classifica_atendimento b, pbx_classifica_item c, pbx_dacs d
|
|
|
|
|
where b.clas_id = a.clas_id
|
|
|
|
|
and c.clit_id = a.clit_id
|
|
|
|
|
and d.id = a.id_dac
|
|
|
|
|
and integra_vendas = 0 $setFilas limit {$VDS_LIMIT_EXPORTA};";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Vai integrando 100 registros por vez at<EFBFBD> terminar;
|
|
|
|
|
*/
|
|
|
|
|
$limit = 0;
|
|
|
|
|
while (true) {
|
|
|
|
|
$result = pg_query($connL, $query);
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "ImportaClassificacoes", date("Y-m-d H:i:s"), "Exec", ("Ciclo: " . ( ++$limit))), $pathLog);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel consultar as classifica<EFBFBD><EFBFBD>es![Importaclassificacoes]");
|
|
|
|
|
}
|
|
|
|
|
if (!pg_num_rows($result)) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$linhasInsertR = '';
|
|
|
|
|
$insertR = "insert into vds_classificacoes(emp_id, uid, clas_matricula, clas_descricao, clas_descricao_item, clas_reg, clas_dac)values(%s,%s,%s,%s,%s,%s,%s);\n";
|
|
|
|
|
$linhasUpdateL = '';
|
|
|
|
|
$updateL = "update pbx_classifica_reg set integra_vendas = 1 where id_bilhetes = %s and clas_id = %s and clit_id = %s;\n";
|
|
|
|
|
while ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) {
|
|
|
|
|
$uid = $dados['id_bilhetes'];
|
|
|
|
|
$matricula = $dados['matricula'];
|
|
|
|
|
$clas_descricao = $dados['clas_descricao'];
|
|
|
|
|
$clit_descricao = $dados['clit_descricao'];
|
|
|
|
|
$data_reg = $dados['data_reg'];
|
|
|
|
|
$id_dac = $dados['id_dac'];
|
|
|
|
|
$clas_id = $dados['clas_id'];
|
|
|
|
|
$clit_id = $dados['clit_id'];
|
|
|
|
|
/*
|
|
|
|
|
* Monta o pacore de registro para inserir no servidor remoto.
|
|
|
|
|
*/
|
|
|
|
|
$linhasInsertR .= sprintf($insertR, __QuotedStr__($idCliente), __QuotedStr__($uid), __QuotedStr__($matricula), __QuotedStr__($clas_descricao), __QuotedStr__($clit_descricao), __QuotedStr__($data_reg), __QuotedStr__($id_dac));
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Monta o pacote para marcar os registros locais como atualizado.
|
|
|
|
|
*/
|
|
|
|
|
$linhasUpdateL .= sprintf($updateL, __QuotedStr__($uid), __QuotedStr__($clas_id), __QuotedStr__($clit_id));
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
* Inicia uma transa<EFBFBD><EFBFBD>o com o servidor remoto.
|
|
|
|
|
*/
|
|
|
|
|
$resultR = pg_query($connR, 'begin');
|
|
|
|
|
if (!$resultR) {
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel iniciar uma transa<EFBFBD><EFBFBD>o com o servidor remoto![Importaclassificacoes]");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Executa o pacote de dados;
|
|
|
|
|
*/
|
|
|
|
|
$resultR = pg_query($connR, $linhasInsertR);
|
|
|
|
|
if (!$resultR) {
|
|
|
|
|
@pg_query($connR, 'rollback');
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel inserir dados no servidor remoto![Importaclassificacoes]");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Atualiza o pacote de dados local.
|
|
|
|
|
*/
|
|
|
|
|
$result = pg_query($connL, $linhasUpdateL);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
@pg_query($connR, 'rollback');
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel atualizar os registros no servidor local![Importaclassificacoes]");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$resultR = pg_query($connR, 'commit');
|
|
|
|
|
if (!$resultR) {
|
|
|
|
|
$pct = sprintf("%s%s.pct", "dadosClassificacao", date("Y-m-d-His"));
|
|
|
|
|
GravaPacote($linhasInsertR, $pct);
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel iniciar uma transa<EFBFBD><EFBFBD>o com o servidor remoto![Importaclassificacoes]");
|
|
|
|
|
}
|
|
|
|
|
usleep(30);
|
|
|
|
|
}
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "Importaclassificacoes", date("Y-m-d H:i:s"), "Fim"), $pathLog);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ImportaProtocolos($connL, $connR, $filas = '') {
|
|
|
|
|
global $idCliente, $VDS_LIMIT_EXPORTA, $pathLog;
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaProtocolos", date("Y-m-d H:i:s"), "Inicio"), $pathLog);
|
|
|
|
|
if ($filas) {
|
|
|
|
|
$query = "select uniqueid, ano, numproto, protocolo, protoparceiro, \"dataReg\" as data_reg from pbx_protocolo_reg a where integra_vendas = 0 and exists(select '' from pbx_eventos_dacs b, pbx_dacs c, pbx_classifica_reg y where c.nome = b.fila and b.uid2 = a.uniqueid and y.id_bilhetes = b.uid2 and c.id in($filas)) limit {$VDS_LIMIT_EXPORTA};";
|
|
|
|
|
} else {
|
|
|
|
|
$query = "select uniqueid, ano, numproto, protocolo, protoparceiro, \"dataReg\" as data_reg from pbx_protocolo_reg where integra_vendas = 0 and exists(select '' from pbx_bilhetes x, pbx_classifica_reg y where y.id_bilhetes = x.uniqueid and x.uniqueid = pbx_protocolo_reg.uniqueid) limit {$VDS_LIMIT_EXPORTA};";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Vai integrando 100 registros por vez at<EFBFBD> terminar;
|
|
|
|
|
*/
|
|
|
|
|
$limit = 0;
|
|
|
|
|
while (true) {
|
|
|
|
|
$result = pg_query($connL, $query);
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "ImportaProtocolos", date("Y-m-d H:i:s"), "Exec", ("Ciclo: " . ( ++$limit))), $pathLog);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel consultar protocolos![ImportaProtocolos]");
|
|
|
|
|
}
|
|
|
|
|
if (!pg_num_rows($result)) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$linhasInsertR = '';
|
|
|
|
|
$insertR = "insert into vds_protcolos( emp_id, uid, prt_ano, prt_numproto, prt_protocolo, prt_proto_parceiro, data_protocolo)values(%s,%s,%s,%s,%s,%s,%s);\n";
|
|
|
|
|
$linhasUpdateL = '';
|
|
|
|
|
$updateL = "update pbx_protocolo_reg set integra_vendas = 1 where protocolo = %s;\n";
|
|
|
|
|
while ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) {
|
|
|
|
|
$uid = $dados['uniqueid'];
|
|
|
|
|
$ano = $dados['ano'];
|
|
|
|
|
$numproto = $dados['numproto'];
|
|
|
|
|
$protocolo = $dados['protocolo'];
|
|
|
|
|
$protoparceiro = $dados['protoparceiro'];
|
|
|
|
|
$dataReg = $dados['data_reg'];
|
|
|
|
|
/*
|
|
|
|
|
* Monta o pacore de registro para inserir no servidor remoto.
|
|
|
|
|
*/
|
|
|
|
|
$linhasInsertR .= sprintf($insertR, __QuotedStr__($idCliente), __QuotedStr__($uid), __QuotedStr__($ano), __QuotedStr__($numproto), __QuotedStr__($protocolo), __QuotedStr__($protoparceiro), __QuotedStr__($dataReg));
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Monta o pacote para marcar os registros locais como atualizado.
|
|
|
|
|
*/
|
|
|
|
|
$linhasUpdateL .= sprintf($updateL, __QuotedStr__($protocolo));
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
* Inicia uma transa<EFBFBD><EFBFBD>o com o servidor remoto.
|
|
|
|
|
*/
|
|
|
|
|
$resultR = pg_query($connR, 'begin');
|
|
|
|
|
if (!$resultR) {
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel iniciar uma transa<EFBFBD><EFBFBD>o com o servidor remoto![ImportaProtocolos]");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Executa o pacote de dados;
|
|
|
|
|
*/
|
|
|
|
|
$resultR = pg_query($connR, $linhasInsertR);
|
|
|
|
|
if (!$resultR) {
|
|
|
|
|
@pg_query($connR, 'rollback');
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel inserir dados no servidor remoto![ImportaProtocolos]");
|
|
|
|
|
}
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "ImportaProtocolos", date("Y-m-d H:i:s"), "Exec", ("Insert remoto concluido Ciclo: " . ($limit))), $pathLog);
|
|
|
|
|
/*
|
|
|
|
|
* Atualiza o pacote de dados local.
|
|
|
|
|
*/
|
|
|
|
|
$result = pg_query($connL, $linhasUpdateL);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
@pg_query($connR, 'rollback');
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel atualizar os registros no servidor local![ImportaProtocolos]");
|
|
|
|
|
}
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "ImportaProtocolos", date("Y-m-d H:i:s"), "Exec", ("Update local concluido Ciclo: " . ($limit))), $pathLog);
|
|
|
|
|
|
|
|
|
|
$resultR = pg_query($connR, 'commit');
|
|
|
|
|
if (!$resultR) {
|
|
|
|
|
$pct = sprintf("%s%s.pct", "dadosProtocolo", date("Y-m-d-His"));
|
|
|
|
|
GravaPacote($linhasInsertR, $pct);
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel iniciar uma transa<EFBFBD><EFBFBD>o com o servidor remoto![ImportaProtocolos]");
|
|
|
|
|
}
|
|
|
|
|
usleep(30);
|
|
|
|
|
}
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaProtocolos", date("Y-m-d H:i:s"), "Fim"), $pathLog);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ImportaChamadas($connL, $connR, $filas = '') {
|
|
|
|
|
global $idCliente, $VDS_LIMIT_EXPORTA, $pathLog;
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaChamadas", date("Y-m-d H:i:s"), "Inicio"), $pathLog);
|
|
|
|
|
$setFila = $filas ? "and exists(select '' from pbx_dacs where nome = b.fila and id in($filas))" : "";
|
|
|
|
|
|
|
|
|
|
$query = "select max(a.id_bilhetes) as id_bilhetes from pbx_bilhetes a, pbx_eventos_dacs b where b.uid2 = a.uniqueid and a.lastapp <> 'Transferred Call' and a.integra_vendas = 0 $setFila;";
|
|
|
|
|
$result = pg_query($connL, $query);
|
|
|
|
|
$dados = pg_fetch_row($result);
|
|
|
|
|
$maxId = $dados[0];
|
|
|
|
|
|
|
|
|
|
if (!$maxId) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = " drop table if exists pbx_bilhetes_exporta;
|
|
|
|
|
create temporary table pbx_bilhetes_exporta(id_bilhetes bigint, uniqueid varchar(32), data_bilhete date, calldate timestamp, src varchar(80), dst varchar(80), duration int, billsec int, userfield varchar(200));
|
|
|
|
|
insert into pbx_bilhetes_exporta
|
|
|
|
|
select distinct a.id_bilhetes, a.uniqueid, a.data_bilhete,a.calldate, a.src, a.dst, a.duration, a.billsec, a.userfield
|
|
|
|
|
from pbx_bilhetes a, pbx_eventos_dacs b
|
|
|
|
|
where b.uid2 = a.uniqueid
|
|
|
|
|
and a.lastapp <> 'Transferred Call'
|
|
|
|
|
and a.integra_vendas = 0
|
|
|
|
|
$setFila
|
|
|
|
|
order by id_bilhetes limit {$VDS_LIMIT_EXPORTA};
|
|
|
|
|
|
|
|
|
|
select a.id_bilhetes, a.uniqueid, a.data_bilhete,a.calldate, a.src, a.dst, a.duration
|
|
|
|
|
, case b.evento when 'COMPLETAAGENT' then billsec
|
|
|
|
|
when 'COMPLETACALLER' then a.billsec
|
|
|
|
|
when 'COMPLETEAGENT' then strtoint(b.param2)
|
|
|
|
|
when 'COMPLETECALLER' then strtoint(b.param2)
|
|
|
|
|
when 'TRANSFER' then a.billsec
|
|
|
|
|
when 'NOANSWERS' then 0 else a.billsec end as billsec , a.userfield, b.fila, sonumero(b.agente) as matricula, b.evento
|
|
|
|
|
from pbx_bilhetes_exporta a, pbx_eventos_dacs b
|
|
|
|
|
where b.uid2 = a.uniqueid
|
|
|
|
|
and b.evento in ('COMPLETEAGENT','COMPLETECALLER','COMPLETAAGENT','COMPLETACALLER', 'TRANSFER', 'TRANSFERORIG', 'NOANSWERS','COMPLETECALLERRAMAL', 'COMPLETACALLERRAMAL', 'COMPLETEAGENTRAMAL')
|
|
|
|
|
order by id_bilhetes;";
|
|
|
|
|
|
|
|
|
|
$linhasUpdateL = 'update pbx_bilhetes set integra_vendas = 1 where id_bilhetes in(select id_bilhetes from pbx_bilhetes_exporta);';
|
|
|
|
|
/*
|
|
|
|
|
* Vai integrando 100 registros por vez at<EFBFBD> terminar;
|
|
|
|
|
*/
|
|
|
|
|
$limit = 0;
|
|
|
|
|
$ciclos = 0;
|
|
|
|
|
while ($id_bilhetes < $maxId) {
|
|
|
|
|
$result = pg_query($connL, $query);
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "ImportaChamadas", date("Y-m-d H:i:s"), "Exec", ("Ciclo: " . ( ++$limit))), $pathLog);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel consultar protocolos![ImportaChamadas]");
|
|
|
|
|
}
|
|
|
|
|
if (!pg_num_rows($result)) {
|
|
|
|
|
if (!pg_query($connL, $linhasUpdateL)) {
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel atualizar os registros no servidor local![ImportaChamadas]");
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$linhasInsertR = '';
|
|
|
|
|
$insertR = "insert into vds_chamadas(emp_id, uid, chm_data_bilhete, chm_calldate, chm_src, chm_dst, chm_duration, chm_billsec, chm_userfield, chm_fila, chm_matricula, chm_evento)values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);\n";
|
|
|
|
|
|
|
|
|
|
//$updateL = "update pbx_bilhetes set integra_vendas = 1 where id_bilhetes = %s;\n";
|
|
|
|
|
while ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) {
|
|
|
|
|
$uid = $dados['uniqueid'];
|
|
|
|
|
$id_bilhetes = $dados['id_bilhetes'];
|
|
|
|
|
$data_bilhete = $dados['data_bilhete'];
|
|
|
|
|
$calldate = $dados['calldate'];
|
|
|
|
|
$src = $dados['src'];
|
|
|
|
|
$dst = $dados['dst'];
|
|
|
|
|
$duration = $dados['duration'];
|
|
|
|
|
$billsec = $dados['billsec'];
|
|
|
|
|
$userfield = $dados['userfield'];
|
|
|
|
|
$fila = $dados['fila'];
|
|
|
|
|
$matricula = $dados['matricula'];
|
|
|
|
|
$evento = $dados['evento'];
|
|
|
|
|
/*
|
|
|
|
|
* Monta o pacore de registro para inserir no servidor remoto.
|
|
|
|
|
*/
|
|
|
|
|
$linhasInsertR .= sprintf($insertR, __QuotedStr__($idCliente), __QuotedStr__($uid), __QuotedStr__($data_bilhete), __QuotedStr__($calldate), __QuotedStr__($src), __QuotedStr__($dst), __QuotedStr__($duration), __QuotedStr__($billsec), __QuotedStr__($userfield), __QuotedStr__($fila), __QuotedStr__($matricula), __QuotedStr__($evento));
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Monta o pacote para marcar os registros locais como atualizado.
|
|
|
|
|
*/
|
|
|
|
|
// $linhasUpdateL .= sprintf($updateL, __QuotedStr__($id_bilhetes));
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
* Inicia uma transa<EFBFBD><EFBFBD>o com o servidor remoto.
|
|
|
|
|
*/
|
|
|
|
|
$resultR = pg_query($connR, 'begin');
|
|
|
|
|
if (!$resultR) {
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel iniciar uma transa<EFBFBD><EFBFBD>o com o servidor remoto![ImportaChamadas]");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Executa o pacote de dados;
|
|
|
|
|
*/
|
|
|
|
|
$resultR = pg_query($connR, $linhasInsertR);
|
|
|
|
|
if (!$resultR) {
|
|
|
|
|
@pg_query($connR, 'rollback');
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel inserir dados no servidor remoto![ImportaChamadas]");
|
|
|
|
|
}
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "ImportaChamadas", date("Y-m-d H:i:s"), "Exec", ("Inserto remoto Ciclo: " . ($limit))), $pathLog);
|
|
|
|
|
/*
|
|
|
|
|
* Atualiza o pacote de dados local.
|
|
|
|
|
*/
|
|
|
|
|
$result = pg_query($connL, $linhasUpdateL);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
@pg_query($connR, 'rollback');
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel atualizar os registros no servidor local![ImportaChamadas]");
|
|
|
|
|
}
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s Log: %s\n", "ImportaChamadas", date("Y-m-d H:i:s"), "Update Local Exec", ("Ciclo: " . ($limit))), $pathLog);
|
|
|
|
|
$resultR = pg_query($connR, 'commit');
|
|
|
|
|
if (!$resultR) {
|
|
|
|
|
$pct = sprintf("%s%s.pct", "dadosChamadas", date("Y-m-d-His"));
|
|
|
|
|
GravaPacote($linhasInsertR, $pct);
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel iniciar uma transa<EFBFBD><EFBFBD>o com o servidor remoto![ImportaChamadas]");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($ciclos >= ($VDS_LIMIT_EXPORTA * 50)) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
// usleep(30);
|
|
|
|
|
}
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaChamadas", date("Y-m-d H:i:s"), "Fim"), $pathLog);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ImportaPesquisa($connL, $connR, $filasValidas) {
|
|
|
|
|
global $idCliente, $pathLog;
|
|
|
|
|
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaPesquisa", date("Y-m-d H:i:s"), "Inicio"), $pathLog);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$query = "select a.pm_id, a.uniqueid, a.pm_data, a.user_reg, a.data_reg, a.id_dac
|
|
|
|
|
, a.pl_id, b.pl_descricao, b.pl_data_inicio, b.pl_data_fim, b.pl_ativa
|
|
|
|
|
, a.pp_id, c.pp_nome, c.pp_status
|
|
|
|
|
, a.pq_id, d.pq_display, d.pq_questao, d.pq_audio, d.pq_status
|
|
|
|
|
, a.po_id, e.po_display, e.po_opcao, e.po_status, e.po_tecla
|
|
|
|
|
, f.nome as fila
|
|
|
|
|
from pbx_pesquisa_movimento a
|
|
|
|
|
inner join pbx_pesquisa_liberacao b on b.pl_id = a.pl_id
|
|
|
|
|
inner join pbx_pesquisa c on c.pp_id = a.pp_id
|
|
|
|
|
inner join pbx_pesquisa_questoes d on d.pq_id = a.pq_id
|
|
|
|
|
inner join pbx_pesquisa_opcoes e on e.po_id = a.po_id
|
|
|
|
|
inner join pbx_dacs f on f.id = a.id_dac
|
|
|
|
|
where a.integra_vendas = 0
|
|
|
|
|
and c.pp_nome ilike '%ALGAR_%' ";
|
|
|
|
|
$query .= $filasValidas ? " and f.id in ($filasValidas) " : '';
|
|
|
|
|
$query .= " order by a.pm_id";
|
|
|
|
|
|
|
|
|
|
$result = pg_query($connL, $query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel consultar os dados da pesquisa movimento!");
|
|
|
|
|
} else if (pg_num_rows($result)) {
|
|
|
|
|
|
|
|
|
|
$integrar = array();
|
|
|
|
|
while ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) {
|
|
|
|
|
$pm_id = $dados["pm_id"];
|
|
|
|
|
$uniqueid = $dados["uniqueid"];
|
|
|
|
|
$pm_data = $dados["pm_data"];
|
|
|
|
|
$user_reg = $dados["user_reg"];
|
|
|
|
|
$data_reg = $dados["data_reg"];
|
|
|
|
|
$id_dac = $dados["id_dac"];
|
|
|
|
|
$pl_id = $dados["pl_id"];
|
|
|
|
|
$pl_descricao = __RemoveAcentos__($dados["pl_descricao"]);
|
|
|
|
|
$pl_data_inicio = $dados["pl_data_inicio"];
|
|
|
|
|
$pl_data_fim = $dados["pl_data_fim"];
|
|
|
|
|
$pl_ativa = $dados["pl_ativa"];
|
|
|
|
|
$pp_id = $dados["pp_id"];
|
|
|
|
|
$pp_nome = __RemoveAcentos__($dados["pp_nome"]);
|
|
|
|
|
$pp_status = $dados["pp_status"];
|
|
|
|
|
$pq_id = $dados["pq_id"];
|
|
|
|
|
$pq_display = __RemoveAcentos__($dados["pq_display"]);
|
|
|
|
|
$pq_questao = __RemoveAcentos__($dados["pq_questao"]);
|
|
|
|
|
$pq_audio = __RemoveAcentos__($dados["pq_audio"]);
|
|
|
|
|
$pq_status = $dados["pq_status"];
|
|
|
|
|
$po_id = $dados["po_id"];
|
|
|
|
|
$po_display = __RemoveAcentos__($dados["po_display"]);
|
|
|
|
|
$po_opcao = $dados["po_opcao"];
|
|
|
|
|
$po_status = $dados["po_status"];
|
|
|
|
|
$po_tecla = $dados["po_tecla"];
|
|
|
|
|
$fila = $dados["fila"];
|
|
|
|
|
|
|
|
|
|
// $cmd = sprintf("insert into vds_pesquisa(pm_id, emp_id, uniqueid, pm_data, user_reg, data_reg, id_dac, pl_id, pl_descricao, pl_data_inicio, pl_data_fim, pl_ativa, pp_id, pp_nome, pp_status, pq_id, pq_display, pq_questao, pq_audio, pq_status, po_id, po_display, po_opcao, po_status, po_tecla)values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);", __QuotedStr__($pm_id), __QuotedStr__($idCliente), __QuotedStr__($uniqueid), __QuotedStr__($pm_data), __QuotedStr__($user_reg), __QuotedStr__($data_reg), __QuotedStr__($id_dac), __QuotedStr__($pl_id), __QuotedStr__($pl_descricao), __QuotedStr__($pl_data_inicio), __QuotedStr__($pl_data_fim), __QuotedStr__($pl_ativa), __QuotedStr__($pp_id), __QuotedStr__($pp_nome), __QuotedStr__($pp_status), __QuotedStr__($pq_id), __QuotedStr__($pq_display), __QuotedStr__($pq_questao), __QuotedStr__($pq_audio), __QuotedStr__($pq_status), __QuotedStr__($po_id), __QuotedStr__($po_display), __QuotedStr__($po_opcao), __QuotedStr__($po_status), __QuotedStr__($po_tecla));
|
|
|
|
|
$cmd = sprintf(
|
|
|
|
|
"insert into vds_pesquisa(pm_id, emp_id, uniqueid, pm_data, user_reg, data_reg, id_dac, pl_id, pl_descricao, pl_data_inicio, pl_data_fim, pl_ativa, pp_id, pp_nome, pp_status, pq_id, pq_display, pq_questao, pq_audio, pq_status, po_id, po_display, po_opcao, po_status, po_tecla, fila)"
|
|
|
|
|
. "select %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s where not exists(select '' from vds_pesquisa where pm_id = %s and emp_id = %s);", __QuotedStr__($pm_id), __QuotedStr__($idCliente), __QuotedStr__($uniqueid), __QuotedStr__($pm_data), __QuotedStr__($user_reg), __QuotedStr__($data_reg), __QuotedStr__($id_dac), __QuotedStr__($pl_id), __QuotedStr__($pl_descricao), __QuotedStr__($pl_data_inicio), __QuotedStr__($pl_data_fim), __QuotedStr__($pl_ativa), __QuotedStr__($pp_id), __QuotedStr__($pp_nome), __QuotedStr__($pp_status), __QuotedStr__($pq_id), __QuotedStr__($pq_display), __QuotedStr__($pq_questao), __QuotedStr__($pq_audio), __QuotedStr__($pq_status), __QuotedStr__($po_id), __QuotedStr__($po_display), __QuotedStr__($po_opcao), __QuotedStr__($po_status), __QuotedStr__($po_tecla), __QuotedStr__($fila), __QuotedStr__($pm_id), __QuotedStr__($idCliente));
|
|
|
|
|
|
|
|
|
|
if (!$cmdResult = pg_query($connR, $cmd)) {
|
|
|
|
|
__WriteLog__(sprintf("Cmd: %s \n", $cmd), $pathLog);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($cmdResult && pg_affected_rows($cmdResult)) {
|
|
|
|
|
/*
|
|
|
|
|
* Guarda o registro para alterar o status para integrado;
|
|
|
|
|
*/
|
|
|
|
|
$integrar[] = $pm_id;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Marca os registros com integrado na base de dados.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
foreach ($integrar as $pmId) {
|
|
|
|
|
$query = sprintf("update pbx_pesquisa_movimento set integra_vendas = 1 where pm_id = %s;", __QuotedStr__($pmId));
|
|
|
|
|
if (!pg_query($connL, $query)) {
|
|
|
|
|
__WriteLog__(sprintf("Cmd: %s \n", $query), $pathLog);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaPesquisa", date("Y-m-d H:i:s"), "Concluida as importacao dos registros de movimento da pesquisa."), $pathLog);
|
|
|
|
|
/*
|
|
|
|
|
* Importa a tabela de log.
|
|
|
|
|
*/
|
|
|
|
|
$query = "select plog_id, plog_data, uniqueid, matricula, plog_log, data_reg, id_dac, fila, pl_id from pbx_pesquisa_log a, pbx_dacs b where b.nome = a.fila and integra_vendas = 0";
|
|
|
|
|
$query .= $filasValidas ? " and b.id in($filasValidas) " : '';
|
|
|
|
|
|
|
|
|
|
$result = pg_query($connL, $query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel consultar a tabela de log da pequisa!");
|
|
|
|
|
} else if (pg_num_rows($result)) {
|
|
|
|
|
/*
|
|
|
|
|
* Faz a insercao do dados na base remota.
|
|
|
|
|
*/
|
|
|
|
|
while ($dadosLog = pg_fetch_array($result, null, PGSQL_ASSOC)) {
|
|
|
|
|
$plog_id = $dadosLog['plog_id'];
|
|
|
|
|
$plog_data = $dadosLog['plog_data'];
|
|
|
|
|
$uniqueid = $dadosLog['uniqueid'];
|
|
|
|
|
$matricula = $dadosLog['matricula'];
|
|
|
|
|
$plog_log = $dadosLog['plog_log'];
|
|
|
|
|
$data_reg = $dadosLog['data_reg'];
|
|
|
|
|
$id_dac = $dadosLog['id_dac'];
|
|
|
|
|
$fila = $dadosLog['fila'];
|
|
|
|
|
$pl_id = $dadosLog['pl_id'];
|
|
|
|
|
|
|
|
|
|
$cmd = sprintf("insert into vds_pesquisa_log(emp_id,plog_data,uniqueid,matricula,plog_log,data_reg,id_dac,fila, pl_id)values(%s,%s,%s,%s,%s,%s,%s,%s,%s)", __QuotedStr__($idCliente), __QuotedStr__($plog_data), __QuotedStr__($uniqueid), __QuotedStr__($matricula), __QuotedStr__($plog_log), __QuotedStr__($data_reg), __QuotedStr__($id_dac), __QuotedStr__($fila), __QuotedStr__($pl_id));
|
|
|
|
|
|
|
|
|
|
if (!$cmdResult = pg_query($connR, $cmd)) {
|
|
|
|
|
__WriteLog__(sprintf("Cmd: %s \n", $cmd), $pathLog);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($cmdResult && pg_affected_rows($cmdResult)) {
|
|
|
|
|
/*
|
|
|
|
|
* Guarda o registro para alterar o status para integrado;
|
|
|
|
|
*/
|
|
|
|
|
$integrar[] = $plog_id;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Marca os registros na tabela de log como exportados.
|
|
|
|
|
*/
|
|
|
|
|
foreach ($integrar as $plogId) {
|
|
|
|
|
$query = sprintf("update pbx_pesquisa_log set integra_vendas = 1 where plog_id = %s;", __QuotedStr__($plogId));
|
|
|
|
|
if (!pg_query($connL, $query)) {
|
|
|
|
|
__WriteLog__(sprintf("Cmd: %s \n", $query), $pathLog);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaPesquisa", date("Y-m-d H:i:s"), "Concluida as importacao dos logs da pesquisa."), $pathLog);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Importacao dos registro de redirecao da pesquisa.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
$query = "SELECT uniqueid, id_dac, matricula, data_reg, data_fim
|
|
|
|
|
FROM pbx_pesquisa_regitra a
|
|
|
|
|
INNER JOIN pbx_dacs b ON a.id_dac = b.id
|
|
|
|
|
WHERE integra_vendas = 0 ";
|
|
|
|
|
$query .= $filasValidas ? " AND b.id in ($filasValidas) " : '';
|
|
|
|
|
$result = pg_query($connL, $query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel consultar a tabela de log da pequisa!");
|
|
|
|
|
} else if (pg_num_rows($result)) {
|
|
|
|
|
/*
|
|
|
|
|
* Faz a insercao do dados na base remota.
|
|
|
|
|
*/
|
|
|
|
|
while ($dadosLog = pg_fetch_array($result, null, PGSQL_ASSOC)) {
|
|
|
|
|
$uniqueid = $dadosLog['uniqueid'];
|
|
|
|
|
$id_dac = $dadosLog['id_dac'];
|
|
|
|
|
$matricula = $dadosLog['matricula'];
|
|
|
|
|
$data_reg = $dadosLog['data_reg'];
|
|
|
|
|
$data_fim = $dadosLog['data_fim'];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$cmd = sprintf("insert into vds_pesquisa_regitra(emp_codigo,uniqueid, id_dac, matricula, data_reg, data_fim)values(%s,%s,%s,%s,%s,%s)",
|
|
|
|
|
__QuotedStr__($idCliente), __QuotedStr__($uniqueid), __QuotedStr__($id_dac), __QuotedStr__($matricula), __QuotedStr__($data_reg), (!$data_fim ? 'null' : __QuotedStr__($data_fim))
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (!$cmdResult = pg_query($connR, $cmd)) {
|
|
|
|
|
__WriteLog__(sprintf("Cmd: %s \n", $cmd), $pathLog);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($cmdResult && pg_affected_rows($cmdResult)) {
|
|
|
|
|
/*
|
|
|
|
|
* Guarda o registro para alterar o status para integrado;
|
|
|
|
|
*/
|
|
|
|
|
$integrar[] = $uniqueid;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Marca os registros na tabela de log como exportados.
|
|
|
|
|
*/
|
|
|
|
|
foreach ($integrar as $uid) {
|
|
|
|
|
$query = sprintf("update pbx_pesquisa_regitra set integra_vendas = 1 where uniqueid = %s;", __QuotedStr__($uid));
|
|
|
|
|
if (!pg_query($connL, $query)) {
|
|
|
|
|
__WriteLog__(sprintf("Cmd: %s \n", $query), $pathLog);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaPesquisa", date("Y-m-d H:i:s"), "Concluida as importacao registro de direcionamento para pesquisa."), $pathLog);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
__WriteLog__(sprintf("Modulo: %s Data: %s Estagio: %s\n", "ImportaPesquisa", date("Y-m-d H:i:s"), "Fim"), $pathLog);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function vdsGetConnectionL() {
|
|
|
|
|
global $dbServer, $dbBase, $dbPorta, $userDb, $dbPass;
|
|
|
|
|
include "configBd.php";
|
|
|
|
|
|
|
|
|
|
$connStr = sprintf("host='%s' port='%s' dbname='%s' user='%s' password='%s'", ($dbServer ? $dbServer : $dbHost), ($dbPorta ? $dbPorta : $dbPort), ($dbBase ? $dbBase : $dbName), ($userDb ? $userDb : $dbUser), ($dbPass ? $dbPass : $dbPassword));
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Esta fun<EFBFBD><EFBFBD>o retorna informa<EFBFBD><EFBFBD>es default para parametros omitidos.
|
|
|
|
|
*/
|
|
|
|
|
$conn = pg_connect($connStr);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Verifica se a conex<EFBFBD>o foi realizada.
|
|
|
|
|
*/
|
|
|
|
|
if (!$conn) {
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel estabelecer uma conex<EFBFBD>o com o banco de dados!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $conn;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function vdsGetConnectionR() {
|
|
|
|
|
global $dbServer, $dbBase, $dbPorta, $userDb, $dbPass;
|
|
|
|
|
/*
|
|
|
|
|
* Esta fun<EFBFBD><EFBFBD>o retorna informa<EFBFBD><EFBFBD>es default para parametros omitidos.
|
|
|
|
|
*/
|
|
|
|
|
$conn = __GetAlernativeDB__($dbServer, $dbPorta, $dbBase, $userDb, $dbPass);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Verifica se a conex<EFBFBD>o foi realizada.
|
|
|
|
|
*/
|
|
|
|
|
if (!$conn) {
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel estabelecer uma conex<EFBFBD>o com o banco de dados!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $conn;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function vdsIniciaExec($filename) {
|
|
|
|
|
@file_put_contents($filename, "xxxxxxx\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function vdsEmExecucao($filename) {
|
|
|
|
|
return file_exists($filename);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function vdsEncerraExec($filename) {
|
|
|
|
|
@unlink($filename);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function __GeraExcept__($msg) {
|
|
|
|
|
throw new Exception($msg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function __RaiseExcept__($msg, $dbError = false) {
|
|
|
|
|
if ($dbError) {
|
|
|
|
|
$msg .= " DB: " . pg_last_error();
|
|
|
|
|
}
|
|
|
|
|
__GeraExcept__($msg . "\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function __WriteLog__($log, $path = '') {
|
|
|
|
|
if (!$path) {
|
|
|
|
|
$path = '/var/log/asterisk/log_geral.log';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$arq = fopen($path, 'a');
|
|
|
|
|
fwrite($arq, $log);
|
|
|
|
|
fclose($arq);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function __GetAlernativeDB__($hostDb = '', $portDb = '', $nameDb = '', $userDb = '', $passDb = '') {
|
|
|
|
|
include "configBd.php";
|
|
|
|
|
$portDb = $portDb ? $dbPort : $dbPort;
|
|
|
|
|
$hostDb = $hostDb ? $hostDb : $dbHost;
|
|
|
|
|
$nameDb = $nameDb ? $nameDb : $dbName;
|
|
|
|
|
$userDb = $userDb ? $userDb : $dbUser;
|
|
|
|
|
$passDb = $passDb ? $passDb : $dbPassword;
|
|
|
|
|
|
|
|
|
|
$str = "host='$hostDb' port='$portDb' dbname='$nameDb' user='$userDb' password='$passDb'";
|
|
|
|
|
|
|
|
|
|
return @pg_connect($str, PGSQL_CONNECT_FORCE_NEW);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function __QuotedStr__($str) {
|
|
|
|
|
return sprintf("'%s'", pg_escape_string(trim($str)));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function __RemoveAcentos__($str, $upper = False) {
|
|
|
|
|
$text = array('<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>', '<EFBFBD>');
|
|
|
|
|
$subs = array('A', 'A', 'A', 'A', 'A', 'A', 'A', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'U', 'P', 'B', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'o', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y');
|
|
|
|
|
for ($i = 0; $i < strlen($str); $i++) {
|
|
|
|
|
$j = array_search($str[$i], $text);
|
|
|
|
|
if ($j)
|
|
|
|
|
$str[$i] = $subs[$j];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($upper)
|
|
|
|
|
$str = strtoupper($str);
|
|
|
|
|
return($str);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function __GetLasterror__() {
|
|
|
|
|
$erro = error_get_last();
|
|
|
|
|
return trim($erro['message']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ___UnTar___($origem, $destino, $type = "gz") {
|
|
|
|
|
switch ($type) {
|
|
|
|
|
case "gz" : $cmd = "xzvf";
|
|
|
|
|
break;
|
|
|
|
|
case "bz2": $cmd = "xjvf";
|
|
|
|
|
break;
|
|
|
|
|
default: $cmd = "xvf";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
$result = true;
|
|
|
|
|
$cmd = sprintf("tar -%s %s -C %s 2>/dev/null", $cmd, $origem, $destino);
|
|
|
|
|
|
|
|
|
|
system($cmd);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Certifica que o arquivo foi criado com sucesso.
|
|
|
|
|
*/
|
|
|
|
|
return file_exists($destino);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function __ListaNegraNaoPerturbe__($conn) {
|
|
|
|
|
|
|
|
|
|
$query = "select '' from pbx_listanegra where nome = 'NAO PERTURBE'";
|
|
|
|
|
if (!$result = pg_query($conn, $query)) {
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o poss<EFBFBD>vel consultar se a Lista Negra N<EFBFBD>o Perturpe j<EFBFBD> existe!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!pg_num_rows($result)) {
|
|
|
|
|
$query = "INSERT INTO pbx_listanegra (nome,numero,entrada,saida,opcao,acao)
|
|
|
|
|
VALUES ('NAO PERTURBE','0','0','0','','')";
|
|
|
|
|
if (!pg_query($conn, $query)) {
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel inserir a Lista Negra N<EFBFBD>o Perturpe!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = "select id from pbx_listanegra where nome = 'NAO PERTURBE'";
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
$dados = pg_fetch_row($result);
|
|
|
|
|
if (!$idPai = $dados[0]) {
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o poss<EFBFBD>vel recuperar o id da Lista Negra N<EFBFBD>o Perturpe!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = "delete from pbx_listanegra where id_pai = '$idPai' and opcao <> 'NPA' ";
|
|
|
|
|
if (!$result = pg_query($conn, $query)) {
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o poss<EFBFBD>vel apagar a Lista Negra N<EFBFBD>o Perturpe antiga!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = "insert into pbx_listanegra(numero, id_pai) select numero, '$idPai' as id_pai from pbx_nao_perturbe";
|
|
|
|
|
if (!pg_query($conn, $query)) {
|
|
|
|
|
__GeraExcept__("N<EFBFBD>o foi poss<EFBFBD>vel inserir n<EFBFBD>mero a nova Lista Negra N<EFBFBD>o Perturpe!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function __GetParams($params) {
|
|
|
|
|
foreach ($params as $key => $value) {
|
|
|
|
|
$GLOBALS[$key] = $value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function __VerificaDefault() {
|
|
|
|
|
global $paramRemoteConn, $paramLocalConn;
|
|
|
|
|
|
|
|
|
|
if (!isset($paramRemoteConn)) {
|
|
|
|
|
array('dbServer' => 'algar.simplesip.com.br', 'dbBase' => '', 'dbPorta' => '', 'userDb' => '', 'dbPass' => '');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!isset($paramLocalConn)) {
|
|
|
|
|
$paramLocalConn = array('dbServer' => '', 'dbBase' => '', 'dbPorta' => '', 'userDb' => '', 'dbPass' => '');
|
|
|
|
|
}
|
|
|
|
|
}
|