Exemplo n.º 1
0
 public function reportAction()
 {
     $db = Zend_Registry::get('db');
     $config = Zend_Registry::get('config');
     $format = new Formata();
     // View labels
     $this->view->seq = $this->view->translate("SEQ");
     $this->view->calldate = $this->view->translate("Call's date");
     $this->view->origin = $this->view->translate("Source");
     $this->view->destination = $this->view->translate("Destination");
     $this->view->callstatus = $this->view->translate("Status");
     $this->view->duration = $this->view->translate("Duration");
     $this->view->conversation = $this->view->translate("Conversation");
     $this->view->cost_center = $this->view->translate("Cost Center");
     $this->view->city = $this->view->translate("City");
     $this->view->state = $this->view->translate("State");
     $this->view->filter = $this->view->translate("Filter");
     $this->view->calls = $this->view->translate("Calls");
     $this->view->totals_sub = $this->view->translate("Totals");
     $this->view->times = $this->view->translate("Times");
     $this->view->tot_tariffed = $this->view->translate("Total tariffed");
     $this->view->answered = $this->view->translate("Answered");
     $this->view->nanswered = $this->view->translate("Not Answered");
     $this->view->busy = $this->view->translate("Busy");
     $this->view->failure = $this->view->translate("Failed");
     $this->view->other = $this->view->translate("Other");
     $this->view->tarrifation = $this->view->translate("Charging");
     $this->view->wait = $this->view->translate("Waiting");
     $this->view->sub_total = $this->view->translate("Subtotal");
     $this->view->gravation = $this->view->translate("Records");
     $this->view->back = $this->view->translate("Back");
     $defaultNS = new Zend_Session_Namespace('call_sql');
     $this->view->breadcrumb = Snep_Breadcrumb::renderPath(array($this->view->translate("Reports"), $this->view->translate("Calls"), $defaultNS->sub_title));
     $this->view->totals = $defaultNS->totais;
     $this->view->tariffed = $defaultNS->view_tarif;
     $this->view->files = $defaultNS->view_files;
     $this->view->status = $defaultNS->status;
     $this->view->compress_files = $this->view->translate("Compress selected files");
     $this->view->duration_call = $format->fmt_segundos(array("a" => $defaultNS->totais['duration'], "b" => 'hms'));
     $this->view->bill_sec = $format->fmt_segundos(array("a" => $defaultNS->totais['billsec'], "b" => 'hms'));
     $this->view->wait_call = $format->fmt_segundos(array("a" => $defaultNS->totais['espera'], "b" => 'hms'));
     $row = $defaultNS->row;
     if ($defaultNS->report_type == 'synth') {
         // Cost center treatment
         $cc = $defaultNS->contas;
         if ($cc != '') {
             $valores = '';
             $sqlcc = "select nome from ccustos where codigo IN (" . $cc . ")";
             $ccs = $db->query($sqlcc)->fetchAll(PDO::FETCH_ASSOC);
             $ccusto_sintetic = '';
             foreach ($ccs as $id => $value) {
                 $ccusto_sintetic .= $ccs[$id]['nome'] . ", ";
             }
         } else {
             $ccusto_sintetic = $this->view->translate("Any");
         }
         $this->view->cost_center_res = $ccusto_sintetic;
         // Groups treatment
         $sint_destino = $defaultNS->dst;
         $sint_groupdst = $defaultNS->groupdst;
         if ($sint_destino != '' && $sint_groupdst == '') {
             $sint_dest = $sint_destino;
         }
         if ($sint_groupdst != '' && $sint_destino == '') {
             $sqldst = "select name from peers where peers.group = '{$sint_groupdst}' ";
             $sint_dst = $db->query($sqldst)->fetchAll(PDO::FETCH_ASSOC);
             $sint_dest = '';
             foreach ($sint_dst as $id => $value) {
                 $sint_dest .= $sint_dst[$id]['name'] . ", ";
             }
         }
         if (!empty($sint_dest)) {
             $this->view->sinteticdst = $sint_dest;
         }
         $sint_origem = $defaultNS->src;
         $sint_groupsrc = $defaultNS->groupsrc;
         if ($sint_origem != '' && $sint_groupsrc == '') {
             $src_sintetic = trim($sint_origem);
         }
         if ($sint_groupsrc != '' && $sint_origem == '') {
             $sqlsrc = "select name from peers where peers.group = '{$sint_groupsrc}' ";
             $sint_src = $db->query($sqlsrc)->fetchAll(PDO::FETCH_ASSOC);
             $src_sintetic = '';
             foreach ($sint_src as $id => $value) {
                 $src_sintetic .= $sint_src[$id]['name'] . ", ";
             }
         }
         if (!empty($sint_dest)) {
             $this->view->sinteticsrc = $src_sintetic;
         }
         $this->renderScript('calls-report/synthetic-report.phtml');
     } else {
         // Analytical Report
         $paginatorAdapter = new Zend_Paginator_Adapter_Array($row);
         $paginator = new Zend_Paginator($paginatorAdapter);
         $paginator->setCurrentPageNumber($this->_request->page);
         $paginator->setItemCountPerPage(Zend_Registry::get('config')->ambiente->linelimit);
         $items = $paginator->getCurrentItems();
         $this->view->pages = $paginator->getPages();
         $this->view->PAGE_URL = "/snep/index.php/calls-report/report/";
         $listItems = array();
         foreach ($items as $item) {
             // Status
             switch ($item['disposition']) {
                 case 'ANSWERED':
                     $item['disposition'] = $this->view->translate('Answered');
                     break;
                 case 'NO ANSWER':
                     $item['disposition'] = $this->view->translate('Not Answered');
                     break;
                 case 'FAILED':
                     $item['disposition'] = $this->view->translate('Failed');
                     break;
                 case 'BUSY':
                     $item['disposition'] = $this->view->translate('Busy');
                     break;
                 case 'OTHER':
                     $item['disposition'] = $this->view->translate('Others');
                     break;
             }
             // Search for a city or format the telephone type
             if (strlen($item['src']) > 7 && strlen($item['dst']) < 5) {
                 $item['city'] = $this->telType($item['src']);
             } else {
                 $item['city'] = $this->telType($item['dst']);
             }
             $item['nome'] = $item['tipo'] . " : " . $item['codigo'] . " - " . $item['nome'];
             if ($defaultNS->view_tarif) {
                 $item['rate'] = $format->fmt_tarifa(array("a" => $item['dst'], "b" => $item['billsec'], "c" => $item['accountcode'], "d" => $item['calldate'], "e" => $item['tipo']));
             }
             $item['src'] = $format->fmt_telefone(array("a" => $item['src']));
             $item['dst'] = $format->fmt_telefone(array("a" => $item['dst']));
             // Tarrifation
             $item['billsec'] = $format->fmt_segundos(array("a" => $item['billsec'], "b" => 'hms'));
             $item['duration'] = $format->fmt_segundos(array("a" => $item['duration'], "b" => 'hms'));
             if ($defaultNS->view_files) {
                 $filePath = Snep_Manutencao::arquivoExiste($item['calldate'], $item['userfield']);
                 $item['file_name'] = $item['userfield'] . ".wav";
                 if ($filePath) {
                     $item['file_path'] = $filePath;
                 } else {
                     $item['file_path'] = 'N.D.';
                 }
             }
             array_push($listItems, $item);
         }
         $this->view->call_list = $listItems;
         $this->view->compact_success = $this->view->translate("The files were compressed successfully! Wait for the download start.");
         $this->renderScript('calls-report/analytical-report.phtml');
     }
     return;
 }
Exemplo n.º 2
0
function monta_csv($arr_titulo, $arr_dados)
{
    /* Recebe os indices que foram declarados no array $titulo  */
    $indices = array_keys($arr_titulo);
    /* Monta o cabeçalho conforme o value declarado no array  */
    $titulos = implode(";", $arr_titulo);
    $dados_csv = '';
    $dad_csv = '';
    $formatter = new Formata();
    foreach ($arr_dados as $chave => $dados_ori) {
        /* Foreach que percorre o array principal ( $row )
         * e formata cada campo presente dele.
         */
        $dados = $dados_ori;
        if (isset($dados['duration'])) {
            $dados['duration'] = $formatter->fmt_segundos(array("a" => $dados_ori['duration'], "b" => 'hms', "A"));
        }
        if (isset($dados['billsec'])) {
            $dados['billsec'] = $formatter->fmt_segundos(array("a" => $dados_ori['billsec'], "b" => 'hms', "A"));
        }
        if (isset($dados['src'])) {
            $dados['src'] = $formatter->fmt_telefone(array("a" => $dados_ori['src']));
        }
        if (isset($dados['dst'])) {
            $dados['dst'] = $formatter->fmt_telefone(array("a" => $dados_ori['dst']));
        }
        if (isset($dados['par2'])) {
            $dados['dst'] = $formatter->fmt_telefone(array("a" => $dados_ori['dst']));
        }
        if (array_key_exists("tarifacao", $arr_titulo)) {
            if ($dados_ori['disposition'] == "ANSWERED") {
                $dados['tarifacao'] = $formatter->fmt_tarifa(array("a" => $dados_ori['dst'], "b" => $dados_ori['billsec'], "c" => $dados_ori['accountcode'], "d" => $dados_ori['calldate'], "e" => $dados_ori['tipo']));
            } else {
                $dados['tarifacao'] = "0,00";
            }
        }
        if ($dados['disposition']) {
            if ($dados['disposition'] == "ANSWERED") {
                $dados['disposition'] = "Atendida";
            }
            if ($dados['disposition'] == 'NO ANSWER') {
                $dados['disposition'] = "Não Atendida";
            }
            if ($dados['disposition'] == 'BUSY') {
                $dados['disposition'] = "Ocupada";
            }
        }
        if (isset($dados['dst'])) {
            $dados['origem'] = $formatter->fmt_cidade(array("a" => $dados_ori['dst']));
        }
        /* Tratamento das Estatísticas do Operador */
        if (isset($dados['otp_cha'])) {
            $dados['otp_cha'] = $formatter->fmt_segundos(array("a" => $dados_ori['otp_cha'], "b" => 'hms', "A"));
        }
        if (isset($dados['otp_ate'])) {
            $dados['otp_ate'] = $formatter->fmt_segundos(array("a" => $dados_ori['otp_ate'], "b" => 'hms', "A"));
        }
        if (isset($dados['otp_esp'])) {
            $dados['otp_esp'] = $formatter->fmt_segundos(array("a" => $dados_ori['otp_esp'], "b" => 'hms', "A"));
        }
        if (isset($dados['omd_cha'])) {
            $dados['omd_cha'] = $formatter->fmt_segundos(array("a" => $dados_ori['omd_cha'], "b" => 'hms', "A"));
        }
        if (isset($dados['omd_ate'])) {
            $dados['omd_ate'] = $formatter->fmt_segundos(array("a" => $dados_ori['omd_ate'], "b" => 'hms', "A"));
        }
        if (isset($dados['omd_esp'])) {
            $dados['omd_esp'] = $formatter->fmt_segundos(array("a" => $dados_ori['omd_esp'], "b" => 'hms', "A"));
        }
        if (isset($dados['rtp_cha'])) {
            $dados['rtp_cha'] = $formatter->fmt_segundos(array("a" => $dados_ori['rtp_cha'], "b" => 'hms', "A"));
        }
        if (isset($dados['rtp_ate'])) {
            $dados['rtp_ate'] = $formatter->fmt_segundos(array("a" => $dados_ori['rtp_ate'], "b" => 'hms', "A"));
        }
        if (isset($dados['rtp_esp'])) {
            $dados['rtp_esp'] = $formatter->fmt_segundos(array("a" => $dados_ori['rtp_esp'], "b" => 'hms', "A"));
        }
        if (isset($dados['rmd_cha'])) {
            $dados['rmd_cha'] = $formatter->fmt_segundos(array("a" => $dados_ori['rmd_cha'], "b" => 'hms', "A"));
        }
        if (isset($dados['rmd_ate'])) {
            $dados['rmd_ate'] = $formatter->fmt_segundos(array("a" => $dados_ori['rmd_ate'], "b" => 'hms', "A"));
        }
        if (isset($dados['rmd_esp'])) {
            $dados['rmd_esp'] = $formatter->fmt_segundos(array("a" => $dados_ori['rmd_esp'], "b" => 'hms', "A"));
        }
        if (isset($dados['tml'])) {
            $dados['tml'] = $formatter->fmt_segundos(array("a" => $dados_ori['tml'], "b" => 'hms', "A"));
        }
        if (isset($dados['tma'])) {
            $dados['tma'] = $formatter->fmt_segundos(array("a" => $dados_ori['tma'], "b" => 'hms', "A"));
        }
        if (isset($dados['tmef'])) {
            $dados['tmef'] = $formatter->fmt_segundos(array("a" => $dados_ori['tmef'], "b" => 'hms', "A"));
        }
        if (isset($dados['TA'])) {
            $dados['TA'] = $formatter->fmt_segundos(array("a" => $dados_ori['TA'], "b" => 'hms', "A"));
        }
        if (isset($dados['TN'])) {
            $dados['TN'] = $formatter->fmt_segundos(array("a" => $dados_ori['TN'], "b" => 'hms', "A"));
        }
        /* Este foreach percorre cada um dos arrays internos de $row e guarda o que
         * foi setado para ser exibido no array de criação.
         */
        foreach ($indices as $key => $ind) {
            $dad_csv .= $dados[$ind] . ";";
        }
        /* Adiciona quebra de linha */
        $dad_csv .= "\n";
        $dados_csv = $dad_csv;
    }
    /* Concatena Titulo e Dados em uma string */
    $titulo = $titulos . "\n";
    $titulo .= $dados_csv;
    /* Gera arquivo */
    $dataarq = date("d-m-Y_hm");
    $arquivo_csv = "../templates_c/csv{$dataarq}.csv";
    $fp = fopen($arquivo_csv, "w+");
    fputs($fp, $titulo);
    fclose($fp);
    return $arquivo_csv;
}