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.
 
 
 
 
 
 

140 lines
5.1 KiB

#!/usr/bin/php -q
<?php
/**
* RELATORIO DE PESQUISA
*
* Este relatório busca as informações conforme as pesquisas e repostas dos clientes
* das filias Algar, para ser encaminha em um Servico de armazenamento da AWS S3Bucket
*
* # Os recursos utilizados sao os SDK AWS PHP para fazer a comunicao.
*
* DOCs:
* https://docs.aws.amazon.com/code-samples/latest/catalog/php-s3-PutObject.php.html
* https://gist.github.com/keithweaver/70eb06d98b008113ce97f6148fbea83d
*/
require 'vendor/autoload.php';
require 'util/Logger.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
define('PATH_FILE_PSQAWS', '/tmp/RELATORIO_PESQUISA_AWS.csv');
header("Content-type: text/html; charset=UTF8");
$log = new Logger('relpesquisaaws', true);
$bucketName = 'algartelecom-datalake-digital';
$IAM_KEY = 'AKIAYVQKUW52THP55R6O';
$IAM_SECRET = '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';
$data_manual = isset($argv[1]) ? $argv[1] : null;
$data_manual1 = isset($argv[2]) ? $argv[2] : $data_manual;
while (comparaData($data_manual, $data_manual1)) {
$dataRel = $data_manual;
$log->debug('PREPARANDO ARQUIVO PARA ENVIO '. $data_manual);
if (!$data_manual) {
$dataRel = date('Y-m-d', strtotime(date('Y-m-d') . '-1 days'));
}
getQuery($data_manual, $log);
$rename = RenameFile($dataRel);
try {
$s3 = S3Client::factory(
array(
'credentials' => array(
'key' => $IAM_KEY,
'secret' => $IAM_SECRET
),
'version' => 'latest',
'region' => 'us-east-1'
)
);
} catch (Exception $e) {
$log->error($e->getMessage());
}
$keyName = 'simplesIp/simplesIp_data_arrive/' . basename($rename);
try {
$file = $rename;
$return = $s3->putObject(
array(
'Bucket' => $bucketName,
'Key' => $keyName,
'SourceFile' => $file,
'StorageClass' => 'REDUCED_REDUNDANCY'
)
);
$log->debug('STATUS ENVIO '. print_r((array)$return, true));
} catch (S3Exception $e) {
$log->error($e->getMessage());
} catch (Exception $e) {
$log->error($e->getMessage());
}
unlink($rename);
if ($data_manual) {
$data_manual = date("Y-m-d", strtotime($data_manual . ' +1 day'));
} else {
break;
}
}
function getQuery($data_manual, $log) {
ConnectAlgar();
try {
$query = sprintf("COPY(
SELECT a.uid,chm_calldate, emp_nome_fantasia,chm_fila,chm_dst,prt_proto_parceiro,pl_descricao,
(SELECT array_to_string(array_agg(pq_questao || ' | ' || po_opcao), ' || ') FROM vds_pesquisa WHERE uniqueid = a.uid) as pesquisa
FROM vds_chamadas a
INNER JOIN vds_protcolos b ON b.emp_id = a.emp_id AND b.uid = a.uid
INNER JOIN vds_empresas c ON c.emp_id = a.emp_id
INNER JOIN vds_pesquisa_log d ON d.uniqueid = a.uid AND d.emp_id = a.emp_id
LEFT JOIN vds_pesquisa e ON e.emp_id = a.emp_id AND e.uniqueid = a.uid
LEFT JOIN vds_pesquisa_regitra f ON f.uniqueid = e.uniqueid
WHERE a.chm_evento IN ('COMPLETEAGENT','COMPLETECALLER','COMPLETAAGENT','COMPLETACALLER', 'TRANSFER')
AND chm_data_bilhete = '%s'
GROUP BY a.uid,emp_nome_fantasia, chm_fila, chm_calldate, chm_src, chm_dst, prt_proto_parceiro, pl_descricao
ORDER BY emp_nome_fantasia DESC )
TO '%s' DELIMITER ';'", $data_manual, PATH_FILE_PSQAWS);
return pg_query($query);
} catch (Exception $ex) {
$log->error($ex->getMessage());
}
}
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;
}
/**
* Renoveia o arquivo para o formato previsto pela ALGAR
* Ex: YYYY_MM_DD.csv
* @return boolean
*/
function RenameFile($dataFim) {
if (file_exists(PATH_FILE_PSQAWS)) {
$rename = str_replace("-", "_", $dataFim) . '.csv';
copy(PATH_FILE_PSQAWS, $rename);
unlink(PATH_FILE_PSQAWS);
return $rename;
}
throw new Exception("Nao foi possivel renomeiar o Relatorio Gerado!");
}
function comparaData($data1, $data2) {
if ($data1) {
return strtotime($data1) - strtotime($data2) <= 0;
} else {
return true;
}
}
?>