public HttpResponseMessage Combos(Filtro objFiltro)
        {
            string nombreDimension = @"";

            switch (objFiltro.Dimension)
            {
            case "1":     // Clientes
                nombreDimension = @"{ [Dim Cliente].[Dim Cliente Nombre].CHILDREN } ";
                break;

            case "2":     // Productos
                nombreDimension = @"{ [Dim Producto].[Dim Producto Nombre].CHILDREN } ";
                break;

            case "3":     // Categorías
                nombreDimension = @"{ [Dim Producto].[Dim Producto Categoria].CHILDREN } ";
                break;

            case "4":     // Empleados
                nombreDimension = @"{ [Dim Empleado].[Dim Empleado Nombre].CHILDREN } ";
                break;
            }

            string COLUMNS = @"NON EMPTY
                {
	                [Measures].[Fact Ventas Netas]
                }
                ON COLUMNS,";

            string ROWS = @"NON EMPTY
                {
                    STRTOSET(@Dimension)
                }


                ON ROWS";

            string CUBO_NAME = @"[DWH Northwind]";

            string MDXQuery = @"SELECT " +
                              COLUMNS +
                              ROWS +
                              " FROM " + CUBO_NAME;

            Dictionary <int, string> structure = new Dictionary <int, string>();
            List <int>    consecutivo          = new List <int>();
            List <string> valor    = new List <string>();
            var           contador = 1;

            dynamic data;

            using (AdomdConnection cnn = new AdomdConnection(ConfigurationManager.ConnectionStrings["CuboNorthwind"].ConnectionString))
            {
                cnn.Open();
                using (AdomdCommand cmd = new AdomdCommand(MDXQuery, cnn))
                {
                    cmd.Parameters.Add(new AdomdParameter("Dimension", nombreDimension));
                    using (AdomdDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
                    {
                        while (dr.Read())
                        {
                            structure.Add(contador, dr.GetString(0));
                            consecutivo.Add(contador);
                            valor.Add(dr.GetString(0));

                            contador += 1;
                        }
                        dr.Close();
                    }
                }
                //data = new { id = consecutivo, itemName = valor };
            }

            //return Request.CreateResponse(HttpStatusCode.OK, (object)data);
            return(Request.CreateResponse(HttpStatusCode.OK, structure));
        }
        public HttpResponseMessage TablaComparativa(Filtro objFiltro)
        {
            string nombreDimension = @"";

            switch (objFiltro.Dimension)
            {
            case "1":     // Clientes
                nombreDimension = @"{ [Dim Cliente].[Dim Cliente Nombre].&[" + objFiltro.Item + "] } ";
                break;

            case "2":     // Productos
                nombreDimension = @"{ [Dim Producto].[Dim Producto Nombre].&[" + objFiltro.Item + "] } ";
                break;

            case "3":     // Categorías
                nombreDimension = @"{ [Dim Producto].[Dim Producto Categoria].&[" + objFiltro.Item + "] } ";
                break;

            case "4":     // Empleados
                nombreDimension = @"{ [Dim Empleado].[Dim Empleado Nombre].&[" + objFiltro.Item + "] } ";
                break;
            }

            string WITH = @"WITH
	            SET [TopVentas] AS
	            NONEMPTY(
		            ORDER(
			            STRTOSET(@Dimension),
			            [Measures].[Fact Ventas Netas], BDESC
		            )
	            )"    ;

            string COLUMNS = @"NON EMPTY
                {
	                [Measures].[Fact Ventas Netas]
                }
                ON COLUMNS,";

            string ROWS = @"NON EMPTY
                {
                    (
		                    [Dim Tiempo].[Dim Tiempo Mes Siglas].CHILDREN,
		                    [Dim Tiempo].[Dim Tiempo Año].CHILDREN
	                )
                }
                *
                {
                HEAD([TopVentas],1000)
                }
                ON ROWS";

            string CUBO_NAME = @"[DWH Northwind]";



            string MDXQuery = WITH +
                              @"SELECT " +
                              COLUMNS +
                              ROWS +
                              " FROM " + CUBO_NAME;

            List <string>  fecha = new List <string>();
            List <decimal> valor = new List <decimal>();

            dynamic data;

            using (AdomdConnection cnn = new AdomdConnection(ConfigurationManager.ConnectionStrings["CuboNorthwind"].ConnectionString))
            {
                cnn.Open();
                using (AdomdCommand cmd = new AdomdCommand(MDXQuery, cnn))
                {
                    cmd.Parameters.Add(new AdomdParameter("Dimension", nombreDimension));
                    using (AdomdDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
                    {
                        while (dr.Read())
                        {
                            fecha.Add(dr.GetString(0) + "-" + dr.GetString(1));
                            valor.Add(Math.Round(dr.GetDecimal(3)));
                        }
                        dr.Close();
                    }
                }
                data = new { fecha = fecha, valor = valor };
            }

            return(Request.CreateResponse(HttpStatusCode.OK, (object)data));
        }
        public HttpResponseMessage SerieHistoricaPost(Filtro objFiltro)
        {
            //Debug.Write(objFiltro);
            //return Request.CreateResponse(HttpStatusCode.OK, objFiltro);

            //Se puso en filtro 0 para no tomarlo en cuenta y traer todas las de la categoría, sin embargo en el MDX no funciona, se trae todas las ventas
            string nombreDimension = @"";

            if (objFiltro.Item == "0")
            {
                switch (objFiltro.Dimension)
                {
                case "1":     // Clientes
                    nombreDimension = @"{ [Dim Cliente].[Dim Cliente Nombre].&[QUICK-Stop], [Dim Cliente].[Dim Cliente Nombre].&[Ernst Handel], [Dim Cliente].[Dim Cliente Nombre].&[Save-a-lot Markets], [Dim Cliente].[Dim Cliente Nombre].&[Rattlesnake Canyon Grocery], [Dim Cliente].[Dim Cliente Nombre].&[Hungry Owl All-Night Grocers] } ";
                    break;

                case "2":     // Productos
                    nombreDimension = @"{ [Dim Producto].[Dim Producto Nombre].&[Côte de Blaye], [Dim Producto].[Dim Producto Nombre].&[Thüringer Rostbratwurst], [Dim Producto].[Dim Producto Nombre].&[Raclette Courdavault], [Dim Producto].[Dim Producto Nombre].&[Tarte au sucre], [Dim Producto].[Dim Producto Nombre].&[Camembert Pierrot] } ";
                    break;

                case "3":     // Categorías
                    nombreDimension = @"{ [Dim Producto].[Dim Producto Categoria].&[Beverages], [Dim Producto].[Dim Producto Categoria].&[Dairy Products], [Dim Producto].[Dim Producto Categoria].&[Confections], [Dim Producto].[Dim Producto Categoria].&[Meat/Poultry], [Dim Producto].[Dim Producto Categoria].&[Seafood] } ";
                    break;

                case "4":     // Empleados
                    nombreDimension = @"{ [Dim Empleado].[Dim Empleado Nombre].&[Margaret Peacock], [Dim Empleado].[Dim Empleado Nombre].&[Janet Leverling], [Dim Empleado].[Dim Empleado Nombre].&[Nancy Davolio], [Dim Empleado].[Dim Empleado Nombre].&[Andrew Fuller],  [Dim Empleado].[Dim Empleado Nombre].&[Laura Callahan] } ";
                    break;

                default:     //Dimension por Default
                    nombreDimension = @"{ [Dim Cliente].[Dim Cliente Nombre].&[QUICK-Stop], [Dim Cliente].[Dim Cliente Nombre].&[Ernst Handel], [Dim Cliente].[Dim Cliente Nombre].&[Save-a-lot Markets], [Dim Cliente].[Dim Cliente Nombre].&[Rattlesnake Canyon Grocery], [Dim Cliente].[Dim Cliente Nombre].&[Hungry Owl All-Night Grocers] } ";
                    break;
                }
            }
            else
            {
                if (objFiltro.Item == "Meat")
                {
                    objFiltro.Item = "Meat/Poultry";
                }
                switch (objFiltro.Dimension)
                {
                case "1":     // Clientes
                    nombreDimension = @"{ [Dim Cliente].[Dim Cliente Nombre].&[" + objFiltro.Item + "] } ";
                    break;

                case "2":     // Productos
                    nombreDimension = @"{ [Dim Producto].[Dim Producto Nombre].&[" + objFiltro.Item + "] } ";
                    break;

                case "3":     // Categorías
                    nombreDimension = @"{ [Dim Producto].[Dim Producto Categoria].&[" + objFiltro.Item + "] } ";
                    break;

                case "4":     // Empleados
                    nombreDimension = @"{ [Dim Empleado].[Dim Empleado Nombre].&[" + objFiltro.Item + "] } ";
                    break;

                default:     //Dimension por Default
                    nombreDimension = @"{ [Dim Cliente].[Dim Cliente Nombre].&[" + objFiltro.Item + "] } ";
                    break;
                }
            }



            string COLUMNS = @"NON EMPTY
                {
	                [Measures].[Fact Ventas Netas]
                }
                ON COLUMNS,";

            string ROWS = @"NON EMPTY
                {
	                [Dim Tiempo].[Dim Tiempo Año].CHILDREN
                }
                *
                {
	                [Dim Tiempo].[Dim Tiempo Mes Siglas].CHILDREN
                }
                *
                {
                    STRTOSET(@Dimension)
                }


                ON ROWS";

            string CUBO_NAME = @"[DWH Northwind]";

            string MDXQuery = @"SELECT " +
                              COLUMNS +
                              ROWS +
                              " FROM " + CUBO_NAME;

            Dictionary <string, decimal> structure = new Dictionary <string, decimal>();
            List <string>  year   = new List <string>();
            List <string>  month  = new List <string>();
            List <decimal> value  = new List <decimal>();
            List <string>  filter = new List <string>();

            dynamic data;

            using (AdomdConnection cnn = new AdomdConnection(ConfigurationManager.ConnectionStrings["CuboNorthwind"].ConnectionString))
            {
                cnn.Open();
                using (AdomdCommand cmd = new AdomdCommand(MDXQuery, cnn))
                {
                    cmd.Parameters.Add(new AdomdParameter("Dimension", nombreDimension));
                    using (AdomdDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
                    {
                        while (dr.Read())
                        {
                            year.Add(dr.GetString(0));
                            month.Add(dr.GetString(1));
                            filter.Add(dr.GetString(2));
                            value.Add(Math.Round(dr.GetDecimal(3)));
                        }
                        dr.Close();
                    }
                }
                data = new { years = year, months = month, filters = filter, values = value };
            }

            return(Request.CreateResponse(HttpStatusCode.OK, (object)data));
        }