public ActionResult cambioCategoria(int idCategoria, int idLocal = -1, int ordenar = 2) { ChanguitoCompleta completo = new ChanguitoCompleta(); crearChango(completo, idCategoria, idLocal, ordenar); DateTime ProximaEntrea = ApiProductosController.GetNextWeekday(); completo.proxFecha = ProximaEntrea.ToString("dd/MM/yyyy"); return(Json(new { lista = completo.changuito })); }
public ActionResult Carrito(int idCategoria = -1, int idLocal = -1) { ChanguitoCompleta completo = new ChanguitoCompleta(); crearChango(completo, idCategoria, idLocal); DateTime ProximaEntrea = ApiProductosController.GetNextWeekday(); completo.proxFecha = ProximaEntrea.ToString("dd/MM/yyyy"); return(View(completo)); }
public ChanguitoCompleta crearChango(ChanguitoCompleta completo, int idCategoria = -1, int idLocal = -1, int ordenar = 2) { TanoNEEntities ctx = new TanoNEEntities(); Tandas ultima = ctx.Tandas.ToList().LastOrDefault(); if (ultima != null && ultima.fechaCerrado == null) { completo.locales = ultima.Circuitos.Locales.Where(a => a.activo).OrderBy(a => a.comuna).ToList(); } completo.categorias = ctx.Categorias.Where(a => a.Productos.Any(b => b.activo)).Select(a => new Cat { idCategoria = a.idCategoria, nombre = a.nombre }).OrderBy(a => a.nombre).ToList(); if (User.Identity.IsAuthenticated && ultima != null) { EstadosCompra EstadoEntregado = ctx.EstadosCompra.FirstOrDefault(a => a.codigo == 1); Vecinos actual = ctx.Vecinos.FirstOrDefault(a => a.correo == User.Identity.Name); completo.totalCompraTandaUsuario = ctx.Compras.Where(a => a.vecinoId == actual.idVecino && a.tandaId == ultima.idTanda && a.estadoId == EstadoEntregado.idEstadoCompra).Count(); } Categorias cat = ctx.Categorias.FirstOrDefault(a => a.nombre == "Bolsones"); if (idCategoria != -1) { cat = ctx.Categorias.FirstOrDefault(a => a.idCategoria == idCategoria); if (!cat.Productos.Any(a => a.activo)) { int cate = completo.categorias.ToArray()[0].idCategoria; cat = ctx.Categorias.FirstOrDefault(a => a.idCategoria == cate); } } ViewBag.categoria = idCategoria == -1 ? idCategoria : cat.idCategoria; ViewBag.ordenar = ordenar; if (idLocal == -1) { completo.changuito = ctx.Productos.Where(a => (idCategoria <0 ? a.categoriaId> idCategoria: a.categoriaId == cat.idCategoria) && a.activo).OrderBy(a => a.producto).ToList().Select(a => new Changuito() { idProducto = a.idProducto, stock = a.stock, nombre = a.producto + " - " + a.presentacion + (a.marca != null ? "\n" + a.marca : ""), descripcion = a.descripcion == null ? "" : a.descripcion,//.Replace("\n", "<br/>"), precio = a.Precios.LastOrDefault().precio, comentarios = a.ComentariosProducto.Where(comentarios => comentarios.visible).Count(), vendidos = a.CompraProducto.GroupBy(b => b.productoId).Select(c => new { Id = c.Key, Cantidad = c.Count() }).Sum(d => d.Cantidad), rating = a.ComentariosProducto.Where(comentarios => comentarios.visible).Count() == 0 ? 0 : a.ComentariosProducto.Where(comentarios => comentarios.visible).Average(b => b.estrellas) }); } else { completo.changuito = ctx.Productos.Where(a => (idCategoria <0 ? a.categoriaId> idCategoria: a.categoriaId == cat.idCategoria) && a.ProductosLocales.Any(b => b.localId == idLocal) && a.activo).OrderBy(a => a.producto).ToList().Select(a => new Changuito() { idProducto = a.idProducto, stock = a.stock, nombre = a.producto + " - " + a.presentacion + (a.marca != null ? "\n" + a.marca : ""), descripcion = a.descripcion == null ? "" : a.descripcion,//.Replace("\n", "<br/>"), precio = a.Precios.LastOrDefault().precio, comentarios = a.ComentariosProducto.Where(comentarios => comentarios.visible).Count(), vendidos = a.CompraProducto.GroupBy(b => b.productoId).Select(c => new { Id = c.Key, Cantidad = c.Count() }).Sum(d => d.Cantidad), rating = a.ComentariosProducto.Where(comentarios => comentarios.visible).Count() == 0 ? 0 : a.ComentariosProducto.Where(comentarios => comentarios.visible).Average(b => b.estrellas) }); } switch (ordenar) { case 1: completo.changuito = completo.changuito.OrderBy(a => a.nombre); break; case 2: completo.changuito = completo.changuito.OrderByDescending(a => a.vendidos).ThenByDescending(a => a.precio); break; case 3: completo.changuito = completo.changuito.OrderByDescending(a => a.rating).ThenByDescending(a => a.precio); break; } return(completo); }