public dynamic Lista([FromUri] FiltroDenunciaDTO filtro) { var identity = (ClaimsIdentity)User.Identity; var userId = identity.FindFirst("UserId").Value; return(_dao.Consultar(filtro, userId)); }
public dynamic Consultar(FiltroDenunciaDTO filtro, string userId) { using (var banco = new Banco()) { var strSql = new StringBuilder(); strSql.AppendLine(@" SELECT SQL_CALC_FOUND_ROWS d.id as id_denuncia, d.codigo, f.cnpj_cpf, f.nome as nome_fornecedor, ud.FullName as nome_usuario_denuncia, d.data_denuncia, case d.situacao when 'A' then 'Aguardando Revisão' when 'I' then 'Pendente Informação' when 'P' then 'Caso Duvidoso' when 'D' then 'Caso Dossiê' when 'R' then 'Caso Repetido' when 'N' then 'Não Procede' end as situacao, d.data_auditoria, ua.FullName as nome_usuario_auditoria FROM denuncia d inner join fornecedor f on f.id = d.id_fornecedor inner join users ud on ud.id = d.id_user_denuncia inner join users ua on ua.id = d.id_user_auditoria WHERE (1=1) " ); using (var repository = new AuthRepository()) { var bRevisor = repository.IsInRoleAsync(userId, "Revisor"); if (!bRevisor.Result) { banco.AddParameter("id_user_denuncia", userId); strSql.AppendFormat(" AND d.id_user_denuncia like @id_user_denuncia "); } } var lstSituacoes = new List <string>(); if (filtro.AguardandoRevisao) { lstSituacoes.Add("'A'"); } if (filtro.PendenteInformacao) { lstSituacoes.Add("'I'"); } if (filtro.Duvidoso) { lstSituacoes.Add("'P'"); } if (filtro.Dossie) { lstSituacoes.Add("'D'"); } if (filtro.Repetido) { lstSituacoes.Add("'R'"); } if (filtro.NaoProcede) { lstSituacoes.Add("'N'"); } if (lstSituacoes.Count > 0) { strSql.AppendFormat(" AND d.situacao in({0}) ", string.Join(",", lstSituacoes)); } strSql.AppendFormat("ORDER BY {0} ", string.IsNullOrEmpty(filtro.sorting) ? "id_denuncia ASC" : Utils.MySqlEscape(filtro.sorting)); strSql.AppendFormat("LIMIT {0},{1}; ", (filtro.page - 1) * filtro.count, filtro.count); strSql.AppendLine("SELECT FOUND_ROWS(); "); var lstRetorno = new List <dynamic>(); using (var reader = banco.ExecuteReader(strSql.ToString())) { while (reader.Read()) { lstRetorno.Add(new { id_denuncia = reader["id_denuncia"], codigo = reader["codigo"], cnpj_cpf = reader["cnpj_cpf"].ToString(), nome_fornecedor = reader["nome_fornecedor"].ToString(), nome_usuario_denuncia = reader["nome_usuario_denuncia"].ToString(), data_denuncia = Utils.FormataDataHora(reader["data_denuncia"]), situacao = reader["situacao"].ToString(), data_auditoria = Utils.FormataDataHora(reader["data_auditoria"]), nome_usuario_auditoria = reader["nome_usuario_auditoria"].ToString() }); } reader.NextResult(); reader.Read(); return(new { total_count = reader[0], results = lstRetorno }); } } }