Commit 8bbbbeab12c25b3376c7b488be620a3fd539d6d4

Authored by Bruno Noronha
1 parent 5ab7249e
Exists in master

Relatório de úsuário logado

src/Cacic/RelatorioBundle/Controller/FaturamentoController.php
... ... @@ -417,4 +417,117 @@
417 417 )
418 418 );
419 419 }
  420 +
  421 + /*
  422 + * Página inicial do Relatório de usuário logado
  423 + */
  424 + public function usuarioAction(Request $request) {
  425 +
  426 + $locale = $request->getLocale();
  427 +
  428 + $form = $this->createForm( new LogPesquisaType() );
  429 + return $this->render( 'CacicRelatorioBundle:Faturamento:usuario.html.twig',
  430 + array(
  431 + 'locale'=> $locale,
  432 + 'form' => $form->createView()
  433 + )
  434 + );
  435 + }
  436 +
  437 + /*
  438 + * Página que exibe o resultado da consulta de usuário logado
  439 + */
  440 + public function usuarioDetalharAction( Request $request) {
  441 +
  442 + $locale = $request->getLocale();
  443 + $form = $this->createForm( new LogPesquisaType() );
  444 +
  445 + if ( $request->isMethod('POST') )
  446 + {
  447 + $form->bind( $request );
  448 + $data = $form->getData();
  449 +
  450 + $filtroLocais = array(); // Inicializa array com locais a pesquisar
  451 + foreach ( $data['idLocal'] as $locais ) {
  452 + array_push( $filtroLocais, $locais->getIdLocal() );
  453 + }
  454 +
  455 + $dataInicio = $data['dtAcaoInicio'];
  456 + $dataFim = $data['dtAcaoFim'];
  457 + $usuario = $data['usuario'];
  458 +
  459 + $dados = $this->getDoctrine()
  460 + ->getRepository('CacicCommonBundle:LogAcesso')
  461 + ->gerarRelatorioUsuario($filtros = array(),$filtroLocais, $dataInicio, $dataFim, $usuario);
  462 +
  463 + }
  464 +
  465 + return $this->render(
  466 + 'CacicRelatorioBundle:Faturamento:usuarioDetalhar.html.twig',
  467 + array(
  468 + 'idioma' => $locale,
  469 + 'dados' => ( isset( $dados ) ? $dados : null ),
  470 + 'idRede' => $filtroLocais,
  471 + 'dtAcaoInicio' => $dataInicio,
  472 + 'dtAcaoFim' => $dataFim,
  473 + 'usuario' => $usuario
  474 +
  475 + )
  476 + );
  477 + }
  478 +
  479 + /*
  480 + * Gera o CSV do relatório de usuário logado
  481 + */
  482 + public function usuarioCsvAction( Request $request) {
  483 +
  484 + $locale = $request->getLocale();
  485 + $form = $this->createForm( new LogPesquisaType() );
  486 +
  487 + if ( $request->isMethod('POST') )
  488 + {
  489 + $form->bind( $request );
  490 + $data = $form->getData();
  491 +
  492 + $filtroLocais = array(); // Inicializa array com locais a pesquisar
  493 + foreach ( $data['idLocal'] as $locais ) {
  494 + array_push( $filtroLocais, $locais->getIdLocal() );
  495 + }
  496 +
  497 + $dataInicio = $data['dtAcaoInicio'];
  498 + $dataFim = $data['dtAcaoFim'];
  499 + $usuario = $data['usuario'];
  500 +
  501 + $dados = $this->getDoctrine()
  502 + ->getRepository('CacicCommonBundle:LogAcesso')
  503 + ->gerarRelatorioUsuario($filtros = array(),$filtroLocais, $dataInicio, $dataFim, $usuario);
  504 +
  505 + }
  506 +
  507 + // Gera CSV
  508 + $reader = new ArrayReader($dados);
  509 +
  510 + // Create the workflow from the reader
  511 + $workflow = new Workflow($reader);
  512 +
  513 + $workflow->addValueConverter("reader",new CharsetValueConverter('UTF-8',$reader));
  514 +
  515 + // Add the writer to the workflow
  516 + $tmpfile = tempnam(sys_get_temp_dir(), 'Máquinas sem Coletas');
  517 + $file = new \SplFileObject($tmpfile, 'w');
  518 + $writer = new CsvWriter($file);
  519 + $writer->writeItem(array('Local', 'Subrede','Endereço IP','Estações'));
  520 + $workflow->addWriter($writer);
  521 +
  522 + // Process the workflow
  523 + $workflow->process();
  524 +
  525 + // Retorna o arquivo
  526 + $response = new BinaryFileResponse($tmpfile);
  527 + $response->headers->set('Content-Type', 'text/csv');
  528 + $response->headers->set('Content-Disposition', 'attachment; filename="Não_Coletadas.csv"');
  529 + $response->headers->set('Content-Transfer-Encoding', 'binary');
  530 +
  531 + return $response;
  532 + }
420 533 }
421 534 \ No newline at end of file
... ...