Пример #1
0
        public JsonResult GerarDadosGraficoMetricas(MetricChartParameterViewModel paramsMetricChart)
        {
            string sql = @"select c.Name as NomePais, AVG(e.Value) as media, STDEVP(e.Value) as DesvioPadrao,  MIN(e.Value) as Minimo, MAX(e.Value) as Maximo
                            from EnergyUsageDatas e
                            join countries c on c.CountryId = e.CountryId
                            where e.Year >= @IdAnoInicio and e.Year <= @IdAnoFim
                            and c.CountryId in @listaIdPaises
                            and e.Value > 0
                            group by c.Name
                            order by c.Name";

            using (db)
            {
                var relatorioMetricas = db.Database.Connection.Query <RelatorioMetricasViewModels>(sql,
                                                                                                   param: new
                {
                    IdAnoInicio   = paramsMetricChart.AnoInicial,
                    IdAnoFim      = paramsMetricChart.AnoFinal,
                    listaIdPaises = paramsMetricChart.ListaIdPaises
                }
                                                                                                   );

                return(Json(relatorioMetricas));
            }
        }
Пример #2
0
        /// <summary>
        /// Gerar gráfico de metricas com Média, Desvio Padrão, Mínimo e Máximo de 4 países aleatórios.
        /// Após carregar o gráfico com os países aleatórios o usuários pode configurar os filtros e período como preferir.
        /// </summary>
        /// <returns>Retorna a view com o gráfico com os países selecionados aleatóriamente.</returns>
        public ActionResult GerarGraficoMetricas()
        {
            MetricChartParameterViewModel metricChartData = new MetricChartParameterViewModel();

            metricChartData.AnoInicial = 1990;
            metricChartData.AnoFinal   = 2005;

            using (db)
            {
                var paises = db.Countries.ToList();

                metricChartData.ListaPaises = paises.OrderBy(o => o.Name).Select(x =>
                                                                                 new SelectListItem()
                {
                    Value = x.CountryId.ToString(),
                    Text  = x.Name
                });

                string sql = @"select TOP(4)
                            c.Name as NomePais, AVG(e.Value) as media, STDEVP(e.Value) as DesvioPadrao,  MIN(e.Value) as Minimo, MAX(e.Value) as Maximo
                            from EnergyUsageDatas e
                            join countries c on c.CountryId = e.CountryId
                            where e.Year >= @IdAnoInicio and e.Year <= @IdAnoFim
                            and c.CountryId in @listaIdPaises
                            and e.Value > 0
                            group by c.Name
                            order by NEWID()";

                ViewBag.StartChart = db.Database.Connection.Query <RelatorioMetricasViewModels>(sql,
                                                                                                param: new
                {
                    IdAnoInicio   = metricChartData.AnoInicial,
                    IdAnoFim      = metricChartData.AnoFinal,
                    listaIdPaises = paises.Select(s => s.CountryId).ToArray()
                }
                                                                                                );

                return(View(metricChartData));
            }
        }