/**
  * Gera relatório com histórico de coletas para o computador/classe escolhidos
  *
  * @param Request $request
  * @param $idComputador
  * @param $classe
  * @return Response
  */
 public function historicoAction(Request $request, $idComputador, $classe)
 {
     $em = $this->getDoctrine()->getManager();
     $locale = $request->getLocale();
     $logger = $this->get('logger');
     $historico = $em->getRepository('CacicCommonBundle:ComputadorColetaHistorico')->listar($limit = 100, $idComputador, $classe);
     $saida = array();
     foreach ($historico as $coletas) {
         #$logger->debug("333333333333333333333333333333 ".$coletas['nmPropertyName']. " ".$coletas['teClassPropertyValue']);
         $saida[$coletas['dtHrInclusao']->format('d-m-Y')][$coletas['nmPropertyName']] = TagValueHelper::getTableValues($coletas['teClassPropertyValue']);
     }
     return $this->render('CacicRelatorioBundle:Computador:historico.html.twig', array('saida' => $saida, 'classe' => $classe, 'idioma' => $locale));
 }
Example #2
0
 /**
  * [MODAL] Exibe dados do computador e informações sobre coleta
  */
 public function detalharAction($idComputador, Request $request)
 {
     $logger = $this->container->get('logger');
     //if ( ! $request->isXmlHttpRequest() ) // Verifica se é uma requisição AJAX
     //	throw $this->createNotFoundException( 'Página não encontrada!' );
     $d = $this->getDoctrine();
     $computador = $d->getRepository('CacicCommonBundle:Computador')->find((int) $idComputador);
     $ultimo_acesso = $d->getRepository('CacicCommonBundle:LogAcesso')->ultimoUserName($idComputador);
     if (!$computador) {
         throw $this->createNotFoundException('Página não encontrada!');
     }
     $usuario = $this->getUser()->getIdUsuario();
     $nivel = $this->getDoctrine()->getRepository('CacicCommonBundle:Usuario')->nivel($usuario);
     if ($request->get('ativar')) {
         if (!$this->get('security.context')->isGranted('ROLE_ADMIN')) {
             throw $this->createAccessDeniedException('Operação disponível somente para administradores');
         }
         $computador->setAtivo(true);
         $computador->setIdUsuarioExclusao(null);
         $computador->setDtHrExclusao(null);
         $d->getManager()->persist($computador);
         $d->getManager()->flush();
         $this->get('session')->getFlashBag()->add('success', 'Computador ativado com sucesso!');
         return $this->redirect($this->generateUrl($request->get('_route'), $request->get('_route_params')));
     }
     if ($request->get('desativar')) {
         if (!$this->get('security.context')->isGranted('ROLE_ADMIN')) {
             throw $this->createAccessDeniedException('Operação disponível somente para administradores');
         }
         $computador->setAtivo(false);
         $computador->setIdUsuarioExclusao($this->getUser());
         $computador->setDtHrExclusao(new \DateTime());
         $d->getManager()->persist($computador);
         $d->getManager()->flush();
         $this->get('session')->getFlashBag()->add('success', 'Computador ativado com sucesso!');
         return $this->redirect($this->generateUrl($request->get('_route'), $request->get('_route_params')));
     }
     if ($request->get('forcarColeta')) {
         if (!$this->get('security.context')->isGranted('ROLE_ADMIN')) {
             throw $this->createAccessDeniedException('Operação disponível somente para administradores');
         }
         $computador->setAtivo(true);
         $computador->setForcaColeta('true');
         $d->getManager()->persist($computador);
         $d->getManager()->flush();
         $this->get('session')->getFlashBag()->add('success', 'Coleta forçada com sucesso!');
         return $this->redirect($this->generateUrl($request->get('_route'), $request->get('_route_params')));
     }
     $coleta = $d->getRepository('CacicCommonBundle:ComputadorColeta')->getDadosColetaComputador($computador);
     $isNotebook = $computador->getIsNotebook();
     //$logger->debug("isNotebook%%%%%%%%%%% $isNotebook");
     $dadosColeta = array();
     // Inicializa o array que agrupa os dados de coleta por Classe
     $software = array();
     // Coloca a coleta de software num array separado
     $listaClasses = array();
     $listaSoftwares = array();
     foreach ($coleta as $v) {
         //$idClass = $v->getClassProperty()->getIdClass()->getIdClass();
         // Vamos tratar primeiro a exceção, para o caso da classe ser software
         $propriedade = $v[0]->getClassProperty();
         $classe = $propriedade->getIdClass()->getNmClassName();
         $nome_propriedade = $propriedade->getNmPropertyName();
         if ($classe == 'SoftwareList') {
             // O identificador do software está armazenado na propriedade
             // Coleta de Software
             $software[$nome_propriedade]['displayName'] = $v['displayName'];
             if (empty($v['displayName'])) {
                 // Alguns softwares não têm nome. É absurdo mas acontece
                 $software[$nome_propriedade]['displayName'] = $nome_propriedade;
             }
             $software[$nome_propriedade]['displayVersion'] = $v['displayVersion'];
             $software[$nome_propriedade]['URLInfoAbout'] = $v['URLInfoAbout'];
             $software[$nome_propriedade]['publisher'] = $v['publisher'];
         } else {
             // Outras coletas
             $dadosColeta[$classe][$nome_propriedade]['nmPropertyName'] = $propriedade->getNmPropertyName();
             $dadosColeta[$classe][$nome_propriedade]['tePropertyDescription'] = $propriedade->getTePropertyDescription();
             // Trata o valor antes de enviar
             $valor = TagValueHelper::getTableValues($v[0]->getTeClassPropertyValue());
             $dadosColeta[$classe][$nome_propriedade]['teClassPropertyValue'] = $valor;
         }
         //if ( array_key_exists( $idClass, $dadosColeta ) )
         //    $dadosColeta[ $idClass ] = array();
         //$dadosColeta[ $idClass ][] = $v;
     }
     // Única maneira de verificar se é ativo. Bug bizarro do PHP
     $sql = "SELECT (\n            CASE WHEN ativo = 'f' THEN 'falso'\n             ELSE 'verdadeiro'\n             END) as show_ativo FROM computador WHERE id_computador = {$idComputador}\n        ";
     $stmt = $d->getManager()->getConnection()->prepare($sql);
     $stmt->execute();
     $ativo = $stmt->fetchAll();
     $ativo = $ativo[0]['show_ativo'];
     return $this->render('CacicCommonBundle:Computador:detalhar.html.twig', array('computador' => $computador, 'ultimoAcesso' => $ultimo_acesso, 'dadosColeta' => $dadosColeta, 'software' => $software, 'ativo' => $ativo, 'nivel' => $nivel));
 }