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.
148 lines
4.9 KiB
148 lines
4.9 KiB
#!/usr/bin/php -q |
|
<?php |
|
|
|
include "vendor/autoload.php"; |
|
include 'util/Logger.php'; |
|
|
|
use phpseclib3\Net\SFTP; |
|
|
|
$logger = new Logger('backupfiles'); |
|
|
|
$data_manual = isset($argv[1]) ? $argv[1] : null; |
|
$data_manual1 = isset($argv[2]) ? $argv[2] : $data_manual; |
|
|
|
/** |
|
* Impressão com formato UTF8 |
|
*/ |
|
header("Content-type: text/html; charset=UTF8"); |
|
|
|
/** |
|
* Caminho relativo do local temporário do relatório; |
|
*/ |
|
define('REL_FILE', '/tmp/RETORNO_DISCADOR.txt'); |
|
|
|
/** |
|
* CONEXAO COM FTP QUINTINO |
|
*/ |
|
define('SFTP_HOST', 'sftp-ctbc.marketdata.com.br'); |
|
define('SFTP_PORT', '22'); |
|
define('SFTP_USER', 'algar-quint-ext-01'); |
|
define('SFTP_PASSWD', 'guardiao@50QTN'); |
|
define('SFTP_FOLDER', 'Descentralizado'); |
|
|
|
try { |
|
$sftp = new SFTP(SFTP_HOST); |
|
$login = $sftp->login(SFTP_USER, SFTP_PASSWD); |
|
if ($login) { |
|
$sftp->chdir(SFTP_FOLDER); |
|
} else { |
|
throw new Exception('Não foi possível conectar ao servidor de SFTP.'); |
|
} |
|
|
|
while (comparaData($data_manual, $data_manual1)) { |
|
$dataRel = $data_manual; |
|
if (!$data_manual) { |
|
$dataRel = date('Y-m-d', strtotime(date('Y-m-d') . '-1 days')); |
|
} |
|
|
|
/** Execução da extração do relatório. **/ |
|
Query($dataRel); |
|
$rename = RenameFile($dataRel); |
|
|
|
if (!$sftp->put($rename, $rename, SFTP::SOURCE_LOCAL_FILE)) { |
|
throw new Exception('Não foi possível enviar o arquivo para o servidor de SFTP.'); |
|
} |
|
|
|
$logger->success("File Sended $rename - $dataRel"); |
|
unlink($rename); |
|
|
|
if ($data_manual) { |
|
$data_manual = date("Y-m-d", strtotime($data_manual . ' +1 day')); |
|
} else { |
|
break; |
|
} |
|
} |
|
} catch (Exception $ex) { |
|
$logger->error($ex->getMessage()); |
|
unlink($rename); |
|
} |
|
|
|
/** |
|
* Renoveia o arquivo para o formato previsto pela ALGAR |
|
* Ex: AAAAMMDD_RETORNO_DISCADOR.txt |
|
* @return boolean |
|
*/ |
|
function RenameFile($dataFim) { |
|
if (file_exists(REL_FILE)) { |
|
$rename = str_replace("-", "", $dataFim) . '_RETORNO_DISCADOR.txt'; |
|
copy(REL_FILE, $rename); |
|
unlink(REL_FILE); |
|
return $rename; |
|
} |
|
throw new Exception("Nao foi possivel renomeiar o Relatorio Gerado!"); |
|
} |
|
|
|
/** |
|
* Query para a extração do relatório de acordo com a data prevista na |
|
* entrada dados informações no momento de execução do script; |
|
* |
|
* @param date $dataIni |
|
* @param date $dataFim |
|
*/ |
|
function Query($dataRel) { |
|
ConnectAlgar(); |
|
$query = sprintf("COPY( |
|
SELECT |
|
'' AS cod_campanha, |
|
'' AS cod_cliente, |
|
'' AS num_cpf_cnpj, |
|
'' AS nome_cliente, |
|
CASE WHEN (length(b.chm_dst) <= 9) THEN a.emp_ddd || b.chm_dst |
|
WHEN (length(b.chm_dst) >= 12) THEN SUBSTRING(b.chm_dst,2,12) |
|
ELSE b.chm_dst END AS telefone_tentativa_contato, |
|
CASE WHEN (b.chm_evento = 'NOANSWERS')THEN 'SEM SUCESSO' ELSE 'SUCESSO' END AS des_motivo_finalizacao, |
|
clas_descricao_item AS des_sub_motivo_finalizacao, |
|
'' AS elegivel, |
|
chm_calldate AS dt_contato, |
|
'' AS des_campanha, |
|
prt_proto_parceiro AS oportunity_key, |
|
emp_nome_fantasia AS nome_parceiro, |
|
emp_cnpj AS cnpj_parceiro |
|
FROM vds_empresas a |
|
INNER JOIN vds_chamadas b ON a.emp_id = b.emp_id |
|
INNER JOIN vds_classificacoes c ON b.uid = c.uid |
|
INNER JOIN vds_protcolos d ON b.uid = d.uid |
|
WHERE b.chm_evento IN ('COMPLETAAGENT','COMPLETACALLER','COMPLETACALLERRAMAL','COMPLETACALLERRAMAL','NOANSWERS') |
|
AND length(b.chm_dst) > 6 |
|
AND b.chm_data_bilhete::DATE = '%s' |
|
AND bloqueio_anatel is null |
|
ORDER BY emp_nome_fantasia ) |
|
TO '%s' |
|
(DELIMITER '|', FORMAT CSV)", $dataRel, REL_FILE); |
|
|
|
pg_query($query); |
|
} |
|
|
|
/** |
|
* Conexão com o banco de dados da ALGAR. |
|
* |
|
* @return Object |
|
*/ |
|
function ConnectAlgar() { |
|
$dbhost = "127.0.0.1"; |
|
$dbport = "5432"; |
|
$dbname = "pbx"; |
|
$user = "contacte"; |
|
$passwd = "ctepgSQL"; |
|
$conn = pg_connect("host=$dbhost port=$dbport dbname=$dbname user=$user password=$passwd"); |
|
return $conn; |
|
} |
|
|
|
function comparaData($data1, $data2) { |
|
if ($data1) { |
|
return strtotime($data1) - strtotime($data2) <= 0; |
|
} else { |
|
return true; |
|
} |
|
} |
|
?>
|