public ActionResult ObterLogsAcesso(JQueryDataTablesParamViewModel Params, AuditoriaAcessoFiltro filtro) { var logs = _auditoriaRepositorio .ObterLogsAcesso(Params.Pagina, Params.iDisplayLength, filtro, Params.OrderBy, out int totalFiltro) .Select(c => new { DataHora = c.DataHora.DataHoraFormatada(), c.Login, c.Externo, c.IP, c.Sucesso, c.Mensagem }); var totalRegistros = _auditoriaRepositorio.ObterTotalLogsAcessos(); var resultado = new { Params.sEcho, iTotalRecords = totalRegistros, iTotalDisplayRecords = totalFiltro, aaData = logs }; return(Json(resultado, JsonRequestBehavior.AllowGet)); }
public IEnumerable <AuditoriaAcessosDTO> ObterLogsAcesso(int pagina, int registrosPorPagina, AuditoriaAcessoFiltro filtro, string orderBy, out int totalFiltro) { using (OracleConnection con = new OracleConnection(Config.StringConexao())) { var filtroSQL = new StringBuilder(); var parametros = new DynamicParameters(); if (!string.IsNullOrEmpty(filtro.Login)) { parametros.Add(name: "Login", value: "%" + filtro.Login.ToLower() + "%", direction: ParameterDirection.Input); filtroSQL.Append(" AND LOWER(B.Login) LIKE :Login"); } if (!string.IsNullOrEmpty(filtro.IP)) { parametros.Add(name: "IP", value: filtro.IP, direction: ParameterDirection.Input); filtroSQL.Append(" AND A.IP = :IP "); } if (DateTimeHelpers.IsDate(filtro.De)) { var dataInicio = Convert.ToDateTime(filtro.De); parametros.Add(name: "De", value: new DateTime(dataInicio.Year, dataInicio.Month, dataInicio.Day, 0, 0, 0), direction: ParameterDirection.Input); filtroSQL.Append(" AND A.DataHora >= :De"); } if (DateTimeHelpers.IsDate(filtro.Ate)) { var dataTermino = Convert.ToDateTime(filtro.Ate); parametros.Add(name: "Ate", value: new DateTime(dataTermino.Year, dataTermino.Month, dataTermino.Day, 23, 59, 59), direction: ParameterDirection.Input); filtroSQL.Append(" AND A.DataHora <= :Ate"); } if (filtro.Externo.HasValue) { if (filtro.Externo.Value != 2) { parametros.Add(name: "Externo", value: filtro.Externo, direction: ParameterDirection.Input); filtroSQL.Append(" AND A.Externo = :Externo "); } } if (filtro.Sucesso.HasValue) { if (filtro.Sucesso.Value != 2) { parametros.Add(name: "Sucesso", value: filtro.Sucesso, direction: ParameterDirection.Input); filtroSQL.Append(" AND A.Sucesso = :Sucesso "); } } var sql = $@" SELECT * FROM ( SELECT LogsAcesso.*, ROWNUM row_num FROM ( SELECT DISTINCT A.Id, DECODE(B.Externo, 1, B.LoginExterno, B.Login) Login, A.IP, A.DataHora, A.Externo, A.Sucesso, A.Mensagem, count(*) over() TotalLinhas FROM TB_CRM_LOG_ACESSO A INNER JOIN TB_CRM_USUARIOS B ON A.UsuarioId = B.Id WHERE A.Id > 0 {filtroSQL.ToString()} {orderBy}) LogsAcesso WHERE ROWNUM < (({pagina} * {registrosPorPagina}) + 1)) WHERE row_num >= ((({pagina} - 1) * {registrosPorPagina}) + 1)"; var query = con.Query <AuditoriaAcessosDTO>(sql, parametros); totalFiltro = query.Select(c => c.TotalLinhas).FirstOrDefault(); return(query); } }