#!/usr/bin/php -q login(SFTP_USER, SFTP_PASSWD)) { $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, NET_SFTP_LOCAL_FILE)) { throw new Exception('Não foi possível enviar o arquivo para o servidor de SFTP.'); } unlink($rename); if ($data_manual) { $data_manual = date("Y-m-d", strtotime($data_manual . ' +1 day')); } else { break; } } } catch (Exception $ex) { unlink($rename); $backup->log()->error($ex->getMessage()); } /** * 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; } } ?>