private UnloadViewModel RecuperarItemsUnload(int id) { var capsuleDB = Database.Capsules.SingleOrDefault(p => p.CapsuleId == id && p.UserId == Username); if (capsuleDB == null) { return(null); } UnloadViewModel model = new UnloadViewModel(); LoadCapsule(capsuleDB, model); model.Items = capsuleDB.CapsulesItems.Select(p => new ItemUnloadViewModel { CurrentItem = ItemBase.Create(ItemsXml, p.ItemId), CapsuleQuantity = p.Quantity, UnloadQuantity = 0 }).OrderBy(x => x.CurrentItem.Order).ToList(); return(model); }
public ActionResult Unload(UnloadViewModel capsule) { if (!ModelState.IsValid) { var model = RecuperarItemsUnload(capsule.CapsuleId); if (model == null) { return(new HttpNotFoundResult()); } return(View(model)); } var capsuleDB = Database.Capsules.SingleOrDefault(p => p.CapsuleId == capsule.CapsuleId && p.UserId == Username); if (capsuleDB == null) { return(new HttpNotFoundResult()); } if (capsule.Items != null) { foreach (var item in capsule.Items.Where(p => p.UnloadQuantity > 0)) { CapsulesItems capsuleItem = Database.CapsulesItems.SingleOrDefault(p => p.CapsuleId == capsule.CapsuleId && p.ItemId == item.CurrentItem.ItemId); if (capsuleItem != null) { if (capsuleItem.Quantity == item.UnloadQuantity) { Database.CapsulesItems.Remove(capsuleItem); } else { capsuleItem.Quantity -= item.UnloadQuantity; } InventoriesItems invItem = Database.InventoriesItems.SingleOrDefault(p => p.Inventories.UserId == Username && p.ItemId == item.CurrentItem.ItemId); if (invItem != null) { invItem.Quantity += item.UnloadQuantity; } else { Inventories inv = Database.Inventories.SingleOrDefault(p => p.UserId == Username); if (inv == null) { inv = new Inventories { UserId = Username }; Database.Inventories.Add(inv); } Database.InventoriesItems.Add(new InventoriesItems { Inventories = inv, ItemId = item.CurrentItem.ItemId, Quantity = item.UnloadQuantity }); } } } Database.SaveChanges(); } return(RedirectToAction("List", new { id = capsule.CapsuleId })); }