Exemplo n.º 1
0
        public dynamic Lista([FromUri] FiltroDenunciaDTO filtro)
        {
            var identity = (ClaimsIdentity)User.Identity;
            var userId   = identity.FindFirst("UserId").Value;

            return(_dao.Consultar(filtro, userId));
        }
Exemplo n.º 2
0
        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
                    });
                }
            }
        }