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.
246 lines
7.3 KiB
246 lines
7.3 KiB
<?php |
|
|
|
/* |
|
* Definem o metodo utilizado na exportação |
|
*/ |
|
define("INTEGRA_SOCKET", 1); |
|
define("INTEGRA_FILE", 2); |
|
define("INTEGRA_FTP", 3); |
|
define("INTEGRA_SERIAL", 4); |
|
|
|
//$conStr = sprintf("host='%s' port='%s' dbname='%s' user='%s' password='%s'", '192.168.80.14', '5432', 'sefaz', 'contacte', 'ctepgSQL'); //Homologacao simples |
|
//$conStr = sprintf("host='%s' port='%s' dbname='%s' user='%s' password='%s'", '192.168.80.13', '5432', 'pbx', 'contacte', 'ctepgSQL'); //Homologacao simples |
|
$conStr = sprintf("host='%s' port='%s' dbname='%s' user='%s' password='%s'", '127.0.0.1', '5432', 'pbx', 'contacte', 'ctepgSQL'); //Homologacao simples |
|
//$conStr = sprintf("host='%s' port='%s' dbname='%s' user='%s' password='%s'", '192.168.80.13', '5432', 'pbx', 'contacte', 'ctepgSQL'); //Homologacao simples |
|
|
|
$conn = pg_connect($conStr); |
|
|
|
function GetRecurso($metodo, $data = "") { |
|
if ($metodo == INTEGRA_SOCKET) |
|
return ConectSck(); |
|
else if ($metodo == INTEGRA_FILE) { |
|
$path = GetPathFile($data); |
|
return fopen($path, 'a'); |
|
} else if ($metodo == INTEGRA_SERIAL) { |
|
$device = GetPathFile('', INTEGRA_SERIAL); |
|
$serial = new phpSerial (); |
|
$serial->deviceSet($device); |
|
return $serial; |
|
} else |
|
return false; |
|
} |
|
|
|
function GetPathFile($data, $type = INTEGRA_FILE, $path = '') { |
|
if ($type == INTEGRA_SERIAL) { |
|
$port = empty($path) ? '/dev/ttyS0' : $path; |
|
return $port; |
|
} |
|
return '/var/lib/asterisk/scripts/tarifador/bilhetes/bilhetes01'; |
|
return sprintf('/var/lib/asterisk/scripts/tarifador/bilhetes/_%s_bilhetes.txt', $data); |
|
return '/troca/bilhetes01'; |
|
} |
|
|
|
function ConectSck() { |
|
$conn = $GLOBALS["conn"]; |
|
$query = "select prm_tarifador_host, prm_tarifador_port from pbx_parametros where id = 1"; |
|
$result = pg_query($conn, $query); |
|
|
|
if ($result) { |
|
$row = pg_fetch_array($result); |
|
$host = $row["prm_tarifador_host"]; |
|
$port = $row["prm_tarifador_port"]; |
|
return fsockopen($host, $port); |
|
} |
|
|
|
return false; |
|
} |
|
|
|
function GravaLogBil($log) { |
|
$path = "/var/log/tarifador.log"; |
|
$arq = fopen($path, 'a'); |
|
fwrite($arq, $log); |
|
fclose($arq); |
|
} |
|
|
|
function LogTrf($metodo, $descricao, $msg, $adc = '') { |
|
|
|
$data = date("Y-m-d H:i:s"); |
|
$adc = trim($adc) == '' ? '' : sprintf("\nInformacao adicional: %s\n", $adc); |
|
/* |
|
* Captura informacoes sobre erros no sistema |
|
*/ |
|
$str = sprintf("Funcao: [%s] Data: [%s] \nDescricao: %s\n%sMsg: %s\n\n", $metodo, $data, $descricao, $adc, $msg); |
|
|
|
GravaLogBil($str); |
|
} |
|
|
|
function Integrar($conn, $data) { |
|
$query = "select trf_data, trf_num_reg, trf_file, trf_exportado from pbx_tarifador_log where trf_data = '$data'"; |
|
$result = pg_query($conn, $query); |
|
|
|
if (!$result) { |
|
return false; |
|
} else { |
|
$row = pg_fetch_array($result); |
|
return $row["trf_exportado"] == 0; |
|
} |
|
return false; |
|
} |
|
|
|
function GetDatasExportar() { |
|
$conn = $GLOBALS["conn"]; |
|
$query = "select trf_data from pbx_tarifador_log where trf_exportado = 0"; |
|
$result = pg_query($conn, $query); |
|
|
|
if (!$result) { |
|
return false; |
|
} else { |
|
$datas = array(); |
|
while ($row = pg_fetch_array($result)) { |
|
$datas[] = $row["trf_data"]; |
|
} |
|
return $datas; |
|
} |
|
} |
|
|
|
function AtulizaInfo($conn, $numReg, $arquivo, $data, $type = INTEGRA_SOCKET) { |
|
|
|
if ($type == INTEGRA_SERIAL) { |
|
foreach ($arquivo as $key => $value) { |
|
$query = "insert into pbx_bilhetes_online(id_bilhetes, data)values('$key', '$value');"; |
|
$result = pg_query($conn, $query); |
|
} |
|
} else { |
|
$tentativa = 0; |
|
while (true) { |
|
$arquivo = QuotedStr($arquivo); |
|
$query = "update pbx_tarifador_log set trf_num_reg = '$numReg', trf_file = $arquivo, trf_exportado = '1' where trf_data = '$data'"; |
|
$result = pg_query($conn, $query); |
|
if ($result || ($tentativa > 10)) { |
|
return true; |
|
} |
|
sleep(1); |
|
$conStr = $GLOBALS["conStr"]; |
|
@cdpg_close(); |
|
$conn = pg_connect($conStr); |
|
$tentativa++; |
|
} |
|
return false; |
|
} |
|
} |
|
|
|
function InsereInfo($conn, $data) { |
|
$query = "insert into pbx_tarifador_log(trf_data)values('$data')"; |
|
return pg_query($conn, $query); |
|
} |
|
|
|
function GetDataIntegra($conn) { |
|
$query = "select now()::date -1 as data"; |
|
$result = pg_query($conn, $query); |
|
$row = pg_fetch_array($result); |
|
return $row["data"]; |
|
} |
|
|
|
function GravaDiasImportar($conn, $type = 0) { |
|
/* |
|
* Caso o servidor tenha ficado inativo por um periodo |
|
* esta funcao inclui os dias que devem ser importados |
|
* na tabela pbx_tarifador_log |
|
*/ |
|
|
|
if ($type == INTEGRA_SERIAL) |
|
return true; |
|
|
|
$data = GetDataIntegra($conn); |
|
$query = "select '$data' - max(trf_data) as dias_importar, max(trf_data) as ult_importacao from pbx_tarifador_log"; |
|
$result = pg_query($conn, $query); |
|
|
|
if (!$result) |
|
return false; |
|
|
|
$row = pg_fetch_array($result); |
|
$diasImportar = $row["dias_importar"]; |
|
$ultImportacao = $row["ult_importacao"]; |
|
|
|
if ($diasImportar > 0) { |
|
$query = "begin"; |
|
$result = pg_query($conn, $query); |
|
$cont = 0; |
|
while ($cont < $diasImportar) { |
|
$cont++; |
|
$query = "select cast('$ultImportacao' as date) + $cont as data"; |
|
$result = pg_query($conn, $query); |
|
|
|
if (!$result) { |
|
break; |
|
} |
|
$row = pg_fetch_array($result); |
|
$result = InsereInfo($conn, $row['data']); |
|
|
|
if (!$result) { |
|
break; |
|
} |
|
} |
|
|
|
if ($result) { |
|
$query = "commit"; |
|
$result = pg_query($conn, $query); |
|
return $result; |
|
} else { |
|
$query = "rollback"; |
|
@pg_query($conn, $query); |
|
LogTrf("GravaDiasImportar", "Inclui periodo de importacao", "Erro: " . pg_last_error($conn)); |
|
return false; |
|
} |
|
} |
|
} |
|
|
|
function SecondToStrTime($sec) { |
|
$seconds = $sec; |
|
$hours = floor($seconds / 3600); |
|
$seconds -= $hours * 3600; |
|
$minutes = floor($seconds / 60); |
|
$seconds -= $minutes * 60; |
|
|
|
$hours = strlen($hours) == 1 ? "0" . $hours : $hours; |
|
$minutes = strlen($minutes) == 1 ? "0" . $minutes : $minutes; |
|
$seconds = strlen($seconds) == 1 ? "0" . $seconds : $seconds; |
|
|
|
return "$hours:$minutes:$seconds"; |
|
} |
|
|
|
function EmExecucao() { |
|
$path = trim(GetPathFileExec()); |
|
if (file_exists($path)) { |
|
@LogTrf("EmExecucao", "Verifica se o arquivo esta executando", "O script ja esta em execucao! Path: " . $path); |
|
return true; |
|
} |
|
|
|
$result = fopen(GetPathFileExec(), 'a'); |
|
if (!$result) { |
|
@LogTrf("EmExecucao", "Verifica se foi possivel criar aquivo de controle de execucao", "Erro ao Criar Arquivo!"); |
|
} |
|
return !$result; |
|
} |
|
|
|
function LimpaExecucao() { |
|
if (file_exists(GetPathFileExec())) { |
|
unlink(GetPathFileExec()); |
|
} |
|
} |
|
|
|
function GetPathFileExec() { |
|
/* |
|
* Arquivo de controle de execucao simultanea |
|
*/ |
|
return sprintf('/tmp/tarifador_%s.txt', date('Y-m-d')); |
|
} |
|
|
|
function AjustaTronco($tronco) { |
|
/* |
|
* Remove copia ate encontrar um -(hifem) se existir |
|
*/ |
|
return strpos($tronco, '-') !== false ? substr($tronco, 0, strpos($tronco, '-')) : $tronco; |
|
} |
|
|
|
?>
|
|
|