#!/usr/bin/php -q 'Transferred Call' and a.dst in(%s);\n"; $baseQuery = << 'Transferred Call' and a.dst in(%s) and a.id_bilhetes = (select max(id_bilhetes) from pbx_bilhetes where calldate::date = a.calldate::date and dst in(%s)); select id_bilhetes, calldate::date, call_start, src, dst, duration, billsec, uniqueid, userfield, evento, fila, agente from tmp_pesquisa_campo union all select b.id_bilhetes, b.calldate::date, b.calldate::time as call_start, b.src, b.dst, b.duration, strtoint(c.param2) as billsec, b.uniqueid, b.userfield, c.evento, c.fila, c.agente from tmp_pesquisa_campo a, pbx_bilhetes b, pbx_eventos_dacs c where b.calldate::date = a.calldate and b.dst = a.dst and b.src = a.src and b.id_bilhetes <> a.id_bilhetes and c.uid2 = b.uniqueid and c.fila = 'KAMPO_GM' and c.evento in('COMPLETAAGENT','COMPLETACALLER', 'TRANSFER') and b.lastapp <> 'Transferred Call' order by 1; KMPold; $baseQuery = <<= '%s' and b.fila = 'KAMPO_GM' and b.evento in('COMPLETAAGENT','COMPLETACALLER', 'TRANSFER') and a.lastapp <> 'Transferred Call' and a.dst in(%s) order by calldate; KMP; $baseQuery = <<= '%s' and a.lastapp <> 'Transferred Call' and a.dst in(%s) order by calldate; KMP; $baseQuery = <<= '%s' and a.lastapp <> 'Transferred Call' and a.dst in(%s) and not exists(select '' from pbx_eventos_dacs where uid2 = a.uniqueid) union all select a.id_bilhetes, a.calldate::date, a.calldate::time as call_start, a.src, a.dst, a.duration, strtoint(b.param2) as billsec, a.uniqueid, a.userfield, b.evento, b.fila, b.agente from pbx_bilhetes a, pbx_eventos_dacs b where b.uid2 = a.uniqueid and a.calldate::date = '%s' and strtoint(b.param2) >= '%s' and b.fila = 'KAMPO_GM' and b.evento in('COMPLETAAGENT','COMPLETACALLER', 'TRANSFER') and a.lastapp <> 'Transferred Call' and a.dst in(%s) ) as kampo order by calldate, call_start KMP; foreach (glob($dirOrigemArquivo . "*.csv") as $fileName) { $start = 0; $arEncontrado = array(); $arNaoEncontrado = array(); $handle = fopen($fileName, 'r'); while (!feof($handle)) { $line = fgets($handle); if ($start++) { $noDvr = stripos($fileName, "noDVR") !== false; $values = explode(";", $line); /* * Array arquivo pesquisa (Pesquisa Original): [Case ID] => 1012030196 [Dial #] => 1 [Study Code] => gmbrp [Date] => 20210201 [Start] => 12:16 [End] => 12:20 [Intvr ID] => kb76 [Phone Number] => 27999431855 [Phone Number 2] => 2799431855 [QAS6C/QSS6C Phone Number] => [Phone Number Dialed] => 27999431855 [Centre/Dialer] => KB/?? [Status] => Recieved/Verified [Filename] => 1012030196.mp3 [Suspend Flag] => Arquivo nao encontrados(noDvr): [Case ID] => 1046002037 [Date] => 20210311 [Phone Number] => 48999597144 [Phone Number 2] => 4834433326 [QAS6C/QSS6C Phone Number] => 4834433326 [Phone Number Dialed] => 48999597144 */ if ($noDvr) { list($caseId, $date, $start, $end, $fone, $fone1, $fone2, $fone3) = array($values[0], $values[1], date("H:i"), date("H:i"), KremoveCode($values[2]), KremoveCode($values[3]), KremoveCode($values[4]), $values[5]); } else { list($caseId, $date, $start, $end, $fone, $fone1, $fone2, $fone3) = array($values[0], $values[3], $values[4], $values[5], KremoveCode($values[7]), KremoveCode($values[8]), KremoveCode($values[9]), $values[10]); } $dateDb = substr($date, 0, 4) . '-' . substr($date, 4, 2) . '-' . substr($date, 6, 2); $arErro = array('Case ID' => $caseId, 'Date' => $date, 'Phone Number' => $fone, 'Phone Number 2' => $fone1, 'QAS6C/QSS6C Phone Number' => $fone2, 'Phone Number Dialed' => $fone3); $fonesConsulta = KgetFoneConsulta(KcompletaCelular(array($fone, $fone1, $fone2))); $query = sprintf($baseQuery, $dateDb, KAMPO_TEMPO_ARQUIVO, $fonesConsulta, $dateDb, KAMPO_TEMPO_ARQUIVO, $fonesConsulta); $result = pg_query($query); if ($result && pg_numrows($result)) { /* * Valores trazidos do banco */ while ($row = pg_fetch_array($result, null, PGSQL_ASSOC)) { $dst = $row["dst"]; $data = $row["calldate"]; $linha = $row["src"]; $callStart = $row["call_start"]; $filePesquisa = sprintf("%s%s", $baseAudio, $row["userfield"]); if (file_exists($filePesquisa)) { //$arqDestino = sprintf('%s%s-%s-%s.mp3', KChecaDir($dirDestino . 'DVR-' . date("Ymd") . '/'), soNumero($data), soNumero($callStart), ($caseId)); $arqDestino = sprintf('%s%s-%s-%s.mp3', KChecaDir($dirDestino), soNumero($data), soNumero($callStart), ($caseId)); if (KRenFile($caseId, $calldate, $start, $filePesquisa, $arqDestino)) { $arEncontrado[] = array("Case Id" => $caseId, "Numero Discado" => $dst, "Linha" => $linha, "Data" => $data, "Hora" => $callStart, "Arquivo" => basename($arqDestino)); } else { $arNaoEncontrado[] = $arErro; } } else { $arNaoEncontrado[] = $arErro; } } } else if ($caseId) { $arNaoEncontrado[] = $arErro; } } } /* * Move os arquivos processados para o diretorio configurado na variavel "$dirProcessados". */ rename($fileName, KChecaDir($dirProcessados) . basename($fileName)); /* * Cria o relatorio para os telefones enontrados na base de dados. */ KReport($arEncontrado, $dirReport, 1); /* * Cria o relatorio para os telefones nao enontrados na base de dados. */ KReport($arNaoEncontrado, $dirReport, 0); fclose($handle); } $pid->PidRemove(); function KRenFile($caseId, $date, $hora, $fileOrigem, $fileDestino) { exec(sprintf('ffmpeg -y -loglevel quiet -i %s -acodec libmp3lame "%s"', $fileOrigem, $fileDestino)); return file_exists($fileDestino) ? true : false; } function KgetFoneConsulta($arFones) { $strFones = ''; foreach ($arFones as $fone) { $fone = soNumero($fone); if ($fone) { $strFones .= $strFones ? ",'{$fone}'" : "'$fone'"; } } return $strFones; } function KChecaDir($dir) { if (!file_exists($dir)) { exec('mkdir -p ' . $dir); } return $dir; } function KReport($ar, $dirReport, $arqExiste) { if (!count($ar)) { return false; } $dirBase = $arqExiste ? KChecaDir($dirReport . "DVR-" . date("Ymd") . "/DVR/") : KChecaDir($dirReport . "DVR-" . date("Ymd") . "/NODVR/"); $fileReport = $arqExiste ? sprintf('%sDVR-%s-%s.csv', $dirBase, date("Ymd"), date("His")) : sprintf('%snoDVR-%s-%s.csv', $dirBase, date("Ymd"), date("His")); $handle = fopen($fileReport, 'w'); $line = implode(";", array_keys($ar[0])) . PHP_EOL; fwrite($handle, $line); foreach ($ar as $arline) { $line = implode(";", $arline) . PHP_EOL; fwrite($handle, $line); } fclose($handle); return true; } function KcompletaCelular($numeros) { $arReproc = array(); foreach ($numeros as $numero) { $len = strlen($numero); if ($len >= 11) { $arReproc[] = $numero; } else if (($len == 10) && ( ((int) substr($numero, 2, 1) >= 6) && ((int) substr($numero, 2, 1) <= 9) )) { $arReproc[] = substr($numero, 0, 2) . '9' . substr($numero, 2); } else { $arReproc[] = $numero; } } return $arReproc; } /** * REMOVE O CODIGO DO PAIS */ function KremoveCode($fone){ if ($fone && (strlen($fone) == 12 || strlen($fone) == 13) && (substr($fone, 0,2 ) == '55')) { $fone = substr($fone, 2); } return $fone; }