コード例 #1
0
        public static List <Categoria> buscarCategoriasPorTienda(TiendaOnlineContext _db, IEnumerable <Producto> productosTienda, IEnumerable <Servicio> serviciosTienda, bool esProducto)
        {
            List <Categoria> categorias = new List <Categoria>();

            foreach (Categoria cat in _db.Categorias.ToList())
            {
                if (esProducto)
                {
                    foreach (var prod in productosTienda)
                    {
                        if (prod.CategoriaId == cat.Id)
                        {
                            if (categorias.Contains(cat) == false)
                            {
                                categorias.Add(cat);
                            }
                        }
                    }
                }
                else
                {
                    foreach (var serv in serviciosTienda)
                    {
                        if (serv.CategoriaId == cat.Id)
                        {
                            if (categorias.Contains(cat) == false)
                            {
                                categorias.Add(cat);
                            }
                        }
                    }
                }
            }

            return(categorias);
        }
コード例 #2
0
        public static Tuple <List <Producto>, List <Servicio>, List <Tienda>, Boolean, BusquedaTipo, string> BuscarProductosPorCategoriaConModeloMarcaYear(TiendaOnlineContext _db, int id, string busqueda, string modelo, string marca, int?year, string seccion, bool desdeTienda, Tienda tienda)
        {
            //Inicializacion de variables
            bool agregado       = false;
            bool agregadoExacto = false;
            bool esTienda       = false; //Será true solo en el caso de que no se encuentren productos o servicios.

            Producto productoExacto = null;
            Servicio servicioExacto = null;
            Tienda   tiendaExacto   = null;

            List <Producto> productosFiltrados = new List <Producto>();
            List <Servicio> serviciosFiltrados = new List <Servicio>();
            List <Tienda>   TiendasFiltrados   = new List <Tienda>();

            List <Producto> productos = new List <Producto>();
            List <Servicio> servicios = new List <Servicio>();
            List <Tienda>   tiendas   = new List <Tienda>();

            //------------------------------


            if (desdeTienda)
            {
                //Realiza busqueda de productos/servicios solamente desde una tienda.
                productos = tienda.Productos.ToList();
                servicios = tienda.Servicios.ToList();
            }
            else
            {
                //Realiza busqueda de todos los productos/servicios.
                productos = _db.Productos.ToList();
                servicios = _db.Servicios.ToList();
                tiendas   = _db.Tienda.ToList();
            }

            //Si recibo una categoría, solo filtro productos/servicios pertenecientes a esa categoría.
            Categoria categoria = null;

            if (id != -1)
            {
                categoria = _db.Categorias.Find(id);
                if (categoria.TipoCategoria == Categoria.CategoriaTipo.Producto)
                {
                    productos = categoria.Productos;
                }
                else if (categoria.TipoCategoria == Categoria.CategoriaTipo.Servicio)
                {
                    servicios = categoria.Servicios;
                }
            }

            if (busqueda == null || busqueda.Equals(""))
            {
                return(Tuple.Create(productos, servicios, tiendas, false, BusquedaTipo.Producto, busqueda));
            }

            //Busqueda de producto o servicio seleccionado categoria
            if (categoria != null && categoria.TipoCategoria == Categoria.CategoriaTipo.Producto)
            {
                Tuple <List <Producto>, List <Servicio>, List <Tienda>, Boolean, BusquedaTipo, string> productosTuple = BuscarProductosConModeloMarcaYear(productos, productoExacto, busqueda, marca, modelo, year, agregadoExacto, productosFiltrados, agregado);
                if (VerificacionTienda(productosTuple.Item1, productosTuple.Item2) == true)
                {
                    esTienda = true;
                }

                return(productosTuple);
            }
            else if (categoria != null && categoria.TipoCategoria == Categoria.CategoriaTipo.Servicio)
            {
                Tuple <List <Producto>, List <Servicio>, List <Tienda>, Boolean, BusquedaTipo, string> serviciosTuple = BuscarServicios(servicios, servicioExacto, busqueda, agregadoExacto, serviciosFiltrados, agregado);
                if (VerificacionTienda(serviciosTuple.Item1, serviciosTuple.Item2) == true)
                {
                    esTienda = true;
                }

                return(serviciosTuple);
            }
            else if (categoria == null)
            {
                Tuple <List <Producto>, List <Servicio>, List <Tienda>, Boolean, BusquedaTipo, string> productosTuple = BuscarProductosConModeloMarcaYear(productos, productoExacto, busqueda, marca, modelo, year, agregadoExacto, productosFiltrados, agregado);
                Tuple <List <Producto>, List <Servicio>, List <Tienda>, Boolean, BusquedaTipo, string> serviciosTuple = BuscarServicios(servicios, servicioExacto, busqueda, agregadoExacto, serviciosFiltrados, agregado);
                Tuple <List <Producto>, List <Servicio>, List <Tienda>, Boolean, BusquedaTipo, string> tiendasTuple   = BuscarTiendas(tiendas, tiendaExacto, busqueda, agregadoExacto, TiendasFiltrados, agregado);

                return(Tuple.Create(productosTuple.Item1, serviciosTuple.Item2, tiendasTuple.Item3, false, BusquedaTipo.Producto, busqueda));
            }

            return(null);
        }