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; }
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; }