Commit f8c765a442a325204b9e159d956a39436e0f26a1

Authored by Bruno Noronha
1 parent 2aa4d924
Exists in master

relatório de usuário logado

src/Cacic/CommonBundle/Entity/LogAcessoRepository.php
... ... @@ -160,10 +160,99 @@ GROUP BY c0_.te_node_address,
160 160 return $query->execute();
161 161 }
162 162  
  163 + /*
  164 + * Consulta para relatório de contendo ultimo usuário logado
  165 + */
  166 + public function gerarRelatorioUsuario( $filtros, $filtroLocais, $dataInicio, $dataFim, $usuario )
  167 + {
  168 + $rsm = new ResultSetMapping();
  169 + $rsm->addScalarResult('te_node_address', 'teNodeAddress');
  170 + $rsm->addScalarResult('id_computador', 'idComputador');
  171 + $rsm->addScalarResult('te_ip_computador', 'teIpComputador');
  172 + $rsm->addScalarResult('nm_computador', 'nmComputador');
  173 + $rsm->addScalarResult('id_so', 'idSo');
  174 + $rsm->addScalarResult('sg_so', 'sgSo');
  175 + $rsm->addScalarResult('id_rede', 'idRede');
  176 + $rsm->addScalarResult('nm_rede', 'nmRede');
  177 + $rsm->addScalarResult('te_ip_rede', 'teIpRede');
  178 + $rsm->addScalarResult('max_data', 'data');
  179 + $rsm->addScalarResult('nm_local', 'nmLocal');
  180 + $rsm->addScalarResult('id_local', 'idLocal');
  181 + $rsm->addScalarResult('usuario', 'usuario');
  182 +
  183 + $sql = "
  184 +SELECT c0_.te_node_address AS te_node_address,
  185 + string_agg(DISTINCT CAST(c0_.id_computador AS text), ', ') as id_computador,
  186 + string_agg(DISTINCT c0_.te_ip_computador, ', ') as te_ip_computador,
  187 + string_agg(DISTINCT c0_.nm_computador, ', ') AS nm_computador,
  188 + string_agg(DISTINCT CAST(s2_.id_so AS text), ', ') AS id_so,
  189 + string_agg(DISTINCT s2_.sg_so, ', ') AS sg_so,
  190 + string_agg(DISTINCT CAST(r3_.id_rede AS text), ', ') AS id_rede,
  191 + string_agg(DISTINCT r3_.nm_rede, ', ') AS nm_rede,
  192 + string_agg(DISTINCT r3_.te_ip_rede, ', ') AS te_ip_rede,
  193 + string_agg(DISTINCT la5_.usuario, ', ') AS usuario,
  194 + max(l1_.data) AS max_data,
  195 + l4_.nm_local AS nm_local,
  196 + l4_.id_local AS id_local
  197 +FROM log_acesso l1_
  198 +INNER JOIN computador c0_ ON l1_.id_computador = c0_.id_computador
  199 +INNER JOIN so s2_ ON c0_.id_so = s2_.id_so
  200 +INNER JOIN rede r3_ ON c0_.id_rede = r3_.id_rede
  201 +INNER JOIN local l4_ ON r3_.id_local = l4_.id_local
  202 +INNER JOIN log_acesso la5_ ON c0_.id_computador = la5_.id_computador
  203 +WHERE 1 = 1
  204 +";
  205 +
  206 + /**
  207 + * Verifica os filtros que foram parametrizados
  208 + */
  209 + if ( $dataInicio ) {
  210 + $sql .= " AND l1_.data >= ? ";
  211 + }
  212 +
  213 + if ( $dataFim ) {
  214 + $sql .= " AND l1_.data <= ?";
  215 + }
  216 +
  217 + if ( $usuario ) {
  218 + $sql .= " AND lower(l1_.usuario) LIKE lower(?)";
  219 + }
  220 +
  221 + if ( $filtroLocais ) {
  222 + $sql .= " AND r3_.id_local IN (?)";
  223 + }
  224 +
  225 + $sql .= "
  226 +GROUP BY c0_.te_node_address,
  227 + l4_.nm_local,
  228 + l4_.id_local
  229 + ";
  230 +
  231 + $query = $this->getEntityManager()->createNativeQuery($sql, $rsm);
  232 +
  233 + /**
  234 + * Verifica os filtros que foram parametrizados
  235 + */
  236 + if ( $dataInicio ) {
  237 + $query->setParameter(1, ( $dataInicio.' 00:00:00' ));
  238 + }
  239 +
  240 +
  241 + if ( $dataFim )
  242 + $query->setParameter(2, ( $dataFim.' 23:59:59' ));
  243 +
  244 + if ( $usuario )
  245 + $query->setParameter(3, "%$usuario%" );
  246 +
  247 + if ( $filtroLocais )
  248 + $query->setParameter(4, $filtroLocais);
  249 +
  250 +
  251 + return $query->execute();
  252 + }
  253 +
163 254 /**
164   - *
165 255 * Total de computadores monitorados nos últimos 30 dias
166   - *
167 256 */
168 257  
169 258 public function countPorComputador() {
... ...