/** * 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)); }
/** * [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)); }