PABX da Simples IP
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

<?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;
}
?>