Пример #1
0
        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));
            }
        }
Пример #2
0
        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));
            }
        }