public ActionResult Edit(string id) { if (string.IsNullOrWhiteSpace(id)) { return(new HttpNotFoundResult()); } if (!GroupsXml.Any(p => p.GroupID == id)) { return(new HttpNotFoundResult()); } using (InventarioEntities db = new InventarioEntities()) { string user = User.Identity.GetUserName(); var enCapsulas = db.CapsulasItems .Where(s => s.Capsulas.IdUsuario == user) .GroupBy(t => t.ItemID) .Select(u => new { ItemID = u.Key, CantidadCapsula = u.Sum(v => v.Cantidad) }).ToList(); var inventario = db.Inventarios .Where(s => s.IdUsuario == user) .Select(u => new { ItemID = u.ItemID, Cantidad = u.Cantidad }).ToList(); var grupo = GroupsXml.Where(z => z.GroupID == id) .Select(p => new { GroupID = p.GroupID, Items = p.Types.SelectMany(z => z.Items).Select(r => new ItemEditViewModel { CurrentItem = r, Cantidad = inventario.SingleOrDefault(s => s.ItemID == r.ItemID) == null ? 0 : inventario.Single(s => s.ItemID == r.ItemID).Cantidad, CantidadCapsulas = enCapsulas.SingleOrDefault(s => s.ItemID == r.ItemID) == null ? 0 : enCapsulas.Single(s => s.ItemID == r.ItemID).CantidadCapsula }) }).Single(); GrupoEditViewModel model = new GrupoEditViewModel(); model.GroupID = grupo.GroupID; model.Items = grupo.Items.ToList(); model.Total = model.Items.Sum(r => r.Cantidad); model.TotalCapsulas = model.Items.Sum(r => r.CantidadCapsulas); return(View(model)); } }
public ActionResult Edit(GrupoEditViewModel grupo) { using (InventarioEntities db = new InventarioEntities()) { string user = User.Identity.GetUserName(); if (ModelState.IsValid) { foreach (ItemEditViewModel item in grupo.Items) { string itemID = item.CurrentItem.ItemID; Inventarios inv = db.Inventarios.SingleOrDefault(p => p.IdUsuario == user && p.ItemID == itemID); if (inv != null) { if (item.Cantidad == 0) { db.Inventarios.Remove(inv); } else { inv.Cantidad = item.Cantidad; } } else { if (item.Cantidad > 0) { db.Inventarios.Add(new Inventarios { IdUsuario = user, ItemID = itemID, Cantidad = item.Cantidad }); } } } db.SaveChanges(); return(RedirectToAction("Index")); } return(View(grupo)); } }