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); }
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); }
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); }