コード例 #1
0
        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));
        }
コード例 #2
0
        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);
            }
        }