Exemple #1
0
        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);
        }