Ejemplo n.º 1
0
        private SalesReportDataViewModel CalculateTotals(SalesReportDataViewModel model, List <AdomdParameter> daxParameters)
        {
            string daxQuery = @"
                EVALUATE
                CALCULATETABLE(
                    ROW(
                        ""Unidades Vendidas"",[Unidades Vendidas],
                        ""Importe"", [Importe],
                        ""% Beneficiario"", [% Beneficio]
                    ),
                    Calendario[Año] = @Y
                )";

            using (var reader = _dax.GetDaxResult(daxQuery, daxParameters))
            {
                if (reader.Read())
                {
                    model.UnidadesVendidas = reader.GetInt64(0);
                    model.Importe          = reader.GetDecimal(1);
                    model.Beneficio        = reader.GetDecimal(2);
                }
                reader.Close();
            }
            return(model);
        }
Ejemplo n.º 2
0
        private SalesReportDataViewModel CalculateValuesPerMonth(SalesReportDataViewModel model, List <AdomdParameter> daxParameters)
        {
            string daxQuery = @"
                EVALUATE
                SUMMARIZECOLUMNS(
                    Calendario[Mes],
                    FILTER( Calendario, Calendario[Año]  = @Y),
                    ""Unidades Vendidas"", [Unidades Vendidas],
                    ""Importe"", [Importe],
                    ""% Beneficio"", [% Beneficio]
                )";

            var unidades   = new List <Tuple <string, long> >();
            var importes   = new List <Tuple <string, decimal> >();
            var beneficios = new List <Tuple <string, decimal> >();

            using (var reader = _dax.GetDaxResult(daxQuery, daxParameters))
            {
                while (reader.Read())
                {
                    unidades.Add(new Tuple <string, long>(reader.GetString(0), reader.GetInt64(1)));
                    importes.Add(new Tuple <string, decimal>(reader.GetString(0), reader.GetDecimal(2)));
                    beneficios.Add(new Tuple <string, decimal>(reader.GetString(0), reader.GetDecimal(3)));
                }
                reader.Close();
            }

            model.UnidadesPorMes  = unidades;
            model.ImportePorMes   = importes;
            model.BeneficioPorMes = beneficios;

            return(model);
        }
Ejemplo n.º 3
0
        private SalesReportDataViewModel BuildDataModel(int year)
        {
            var model = new SalesReportDataViewModel();

            var daxParameters = new List <AdomdParameter> {
                new AdomdParameter("Y", year)
            };

            _dax.OpenConnection();

            model = CalculateTotals(model, daxParameters);
            model = CalculateValuesPerCategory(model, daxParameters);
            model = CalculateValuesPerMonth(model, daxParameters);

            _dax.CloseConnection();

            return(model);
        }