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

#!/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<EFBFBD>o com formato UTF8
*/
header("Content-type: text/html; charset=UTF8");
/**
* Caminho relativo do local tempor<EFBFBD>rio do relat<EFBFBD>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<EFBFBD>o foi poss<EFBFBD>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<EFBFBD><EFBFBD>o da extra<EFBFBD><EFBFBD>o do relat<EFBFBD>rio. **/
Query($dataRel);
$rename = RenameFile($dataRel);
if (!$sftp->put($rename, $rename, SFTP::SOURCE_LOCAL_FILE)) {
throw new Exception('N<EFBFBD>o foi poss<EFBFBD>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<EFBFBD><EFBFBD>o do relat<EFBFBD>rio de acordo com a data prevista na
* entrada dados informa<EFBFBD><EFBFBD>es no momento de execu<EFBFBD><EFBFBD>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<EFBFBD>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;
}
}
?>