Commit f8c765a442a325204b9e159d956a39436e0f26a1
1 parent
2aa4d924
Exists in
master
relatório de usuário logado
Showing
1 changed file
with
91 additions
and
2 deletions
Show diff stats
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() { | ... | ... |