Beispiel #1
0
        //---------------------------------------------------------------------------------------------------------------------------------------
        /// <summary> Obtiene una lista de coches de acuerdo a los firtros definidos en 'datos' (Marca, Modelo o Motor) </summary>
        public List <CocheDescFull> FullDesc(string datos)
        {
            var Items = new List <CocheDescFull>();

            var parms = new ItemsFilters(datos, HttpCtx);

            if (parms.Marca.Id < 0 || parms.Modelo.Id < 0 || parms.Motor.Id < 0)
            {
                return(Items);
            }

            var pass1 = DbCtx.Coches;
            var pass2 = parms.Marca.Id > 0? pass1.Where(c => c.Marca == parms.Marca.Id) : pass1;
            var pass3 = parms.Modelo.Id > 0? pass2.Where(c => c.Modelo == parms.Modelo.Id) : pass2;
            var pass4 = parms.Motor.Id > 0? pass3.Where(c => c.Motor == parms.Motor.Id) : pass3;

            var coches = pass4.Include(c => c.MarcaNavigation).Include(c => c.ModeloNavigation).Include(c => c.MotorNavigation);

            foreach (var coche in coches)
            {
                Items.Add(new CocheDescFull(coche));
            }

            return(Items);
        }
Beispiel #2
0
        //---------------------------------------------------------------------------------------------------------------------------------------
        /// <summary> Obtiene la lista de Items que satiface los parametros especificados </summary>
        public Recambios FindByDatos(string datos)
        {
            Filters = new ItemsFilters(datos, HttpCtx);

            if (!ValidateFilters())
            {
                return(this);                            // Si hay algún filtro no valido, no retorna ningún registro
            }
            string sSelect = $"SELECT DISTINCT I.Id, I.Fabricante, I.Categoria, I.Nombre, I.Codigo, I.Foto, I.Precio, I.Descripcion";

            var hasCoche = Filters.Marca.Id > 0 || Filters.Modelo.Id > 0 || Filters.Motor.Id > 0; // Si hay que tener en cuenta el coche
            var sTable   = hasCoche? "Item AS I INNER JOIN ItemCoche AS IC ON I.Id = IC.IdItem INNER JOIN Coche AS C ON IC.IdCoche = C.Id" : "Item AS I";

            StringBuilder sWhere = new StringBuilder("");

            if (hasCoche || Filters.Categoria.Id > 0 || Filters.Fabricante.Id > 0)          // Si hay algun tipo de filtro
            {
                var sep = "";

                sWhere.Append("WHERE ");

                if (Filters.Marca.Id > 0)
                {
                    sWhere.Append($"C.Marca  = {Filters.Marca.Id}"); sep = " AND ";
                }                                                                                                               // Filtra por la marca de coche
                if (Filters.Modelo.Id > 0)
                {
                    sWhere.Append($"{sep}C.Modelo = {Filters.Modelo.Id}"); sep = " AND ";
                }                                                                                                               // Filtra por el modelo del coche
                if (Filters.Motor.Id > 0)
                {
                    sWhere.Append($"{sep}C.Motor  = {Filters.Motor.Id}"); sep = " AND ";
                }                                                                                                               // Filtra por el motor del coche

                if (Filters.Categoria.Id > 0)
                {
                    sWhere.Append($"{sep}I.Categoria  = {Filters.Categoria.Id}"); sep = " AND ";
                }                                                                                                               // Filtra por la categoria de la pieza
                if (Filters.Fabricante.Id > 0)
                {
                    sWhere.Append($"{sep}I.Fabricante = {Filters.Fabricante.Id}");
                }                                                                                                               // Filtra por el fabricante de la pieza
            }

            string sOrder = $"ORDER BY {getOrderField()} OFFSET {Filters.RegFirst} ROWS FETCH NEXT {Filters.RegCount} ROWS ONLY"; // Ordena y limita los recambios devueltos

            Items = DbCtx.Items.FromSqlRaw($"{sSelect} FROM {sTable} {sWhere} {sOrder}").ToList();                                // Ejecuta la secuencia SQL

            if (Filters.RegFirst == 0)                                                                                            // Si la primera página
            {
                Count = DbCtx.Items.FromSqlRaw($"{sSelect} FROM {sTable} {sWhere}").Count();                                      // Calcula la cantidad de registros
            }
            return(this);
        }
Beispiel #3
0
        //---------------------------------------------------------------------------------------------------------------------------------------
        /// <summary> Obtiene la lista de Items que contengan la cadena 'name' dentro de su nombre </summary>
        internal Recambios FindByName(string name, string datos)
        {
            Filters = new ItemsFilters(datos, HttpCtx);

            string sSelect = $"SELECT DISTINCT * FROM Item WHERE (CHARINDEX('{name}', Nombre) > 0) ";

            string sOrder = $"ORDER BY {getOrderField()} OFFSET {Filters.RegFirst} ROWS FETCH NEXT {Filters.RegCount} ROWS ONLY"; // Ordena y limita los recambios devueltos

            Items = DbCtx.Items.FromSqlRaw(sSelect + sOrder).ToList();                                                            // Ejecuta la secuencia SQL

            if (Filters.RegFirst == 0)                                                                                            // Si la primera página
            {
                Count = DbCtx.Items.FromSqlRaw(sSelect).Count();                                                                  // Calcula la cantidad de registros
            }
            return(this);
        }