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.
140 lines
5.1 KiB
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; |
|
} |
|
} |
|
?>
|