public ReportDto RelatorioIndicadores([FromBody] RelatorioFiltro filtro) { //System.Diagnostics.Debugger.Launch(); var resultados = indicadorLancamentosService.GerarResultadosParaRelatorio(filtro); var relatorio = new IndicadoresReport(resultados); var result = relatorio.GetPdf(); return(result); }
public IList <RelatorioFiltroResultado> ObterLancamentosParaRelatorio(RelatorioFiltro filtro) { var builder = new System.Text.StringBuilder(); builder.AppendLine("select e.*, f.Nome, g.Nome, h.Nome from ( "); builder.AppendLine("select a.IdIndicador, a.IdSuperior, a.IdProjeto, b.Ano, b.Mes, c.Nome, c.Identificador, d.Sigla, c.ValorPercentualCriterio, c.ValorPercentualPeso, "); builder.AppendLine("b.ValorMeta, b.ValorRealizado, "); builder.AppendLine("(select IdUsuario from ProjetoEstruturaOrganizacional where Id = a.IdSuperior) Usuario, "); builder.AppendLine("(select IdNivelOrganizacional from ProjetoEstruturaOrganizacional where Id = (select IdSuperior from ProjetoEstruturaOrganizacional where Id = a.IdSuperior)) Cargo "); builder.AppendLine("from ProjetoEstruturaOrganizacional a "); builder.AppendLine("inner join IndicadorLancamento b on (a.IdIndicador = b.IdIndicador and a.IdProjeto = b.IdProjeto) "); builder.AppendLine("inner join Indicador c on (a.IdIndicador = c.Id) "); builder.AppendLine("inner join UnidadeMedida d on (c.IdUnidadeMedida = d.Id) "); builder.AppendLine("where a.Tipo = 7 "); builder.AppendLine($"and b.Ano >= {filtro.AnoInicial} and b.Ano <= {filtro.AnoFinal} "); builder.AppendLine($"and b.Mes >= {filtro.MesInicial} and b.Mes <= {filtro.MesFinal}) e "); builder.AppendLine("inner join Usuario f on (e.Usuario = f.Id) "); builder.AppendLine("inner join NivelOrganizacional g on (e.Cargo = g.Id) "); builder.AppendLine("inner join Projeto h on (e.IdProjeto = h.Id) "); builder.AppendLine("where 1 = 1 "); if (filtro.IdProjeto.HasValue) { builder.AppendLine($"and e.IdProjeto = {filtro.IdProjeto.Value} "); } if (filtro.IdIndicador.HasValue) { builder.AppendLine($"and e.IdIndicador = {filtro.IdIndicador.Value} "); } if (filtro.IdUsuario.HasValue) { builder.AppendLine($"and e.Usuario = {filtro.IdUsuario.Value} "); } if (filtro.IdCargo.HasValue) { builder.AppendLine($"and e.Cargo = {filtro.IdCargo.Value} "); } using var context = new Microsoft.Data.SqlClient.SqlConnection(databaseContext.Database.GetDbConnection().ConnectionString); context.Open(); using var command = new Microsoft.Data.SqlClient.SqlCommand(builder.ToString(), context); using var reader = command.ExecuteReader(); var result = new List <RelatorioFiltroResultado>(); while (reader.Read()) { result.Add(new RelatorioFiltroResultado { IdIndicador = reader.GetInt64(0), IdSuperior = reader.GetInt64(1), IdProjeto = reader.GetInt64(2), Ano = reader.GetInt32(3), Mes = reader.GetInt32(4), NomeIndicador = reader.GetString(5), Identificador = reader.GetString(6), UnidadeMedida = reader.GetString(7), ValorPercentualCriterio = reader.GetDecimal(8), ValorPercentualPeso = reader.GetDecimal(9), ValorMeta = reader.GetDecimal(10), ValorRealizado = reader.GetDecimal(11), IdUsuario = reader.GetInt64(12), IdCargo = reader.GetInt64(13), NomeUsuario = reader.GetString(14), NomeCargo = reader.GetString(15), NomeProjeto = reader.GetString(16) }); } try { context.Close(); } catch { } return(result); }