public ActionResult Load(LoadViewModel capsule) { if (!ModelState.IsValid) { return(View(capsule)); } var capsuleDB = Database.Capsules.SingleOrDefault(p => p.CapsuleId == capsule.CapsuleId && p.UserId == Username); if (capsuleDB == null) { return(new HttpNotFoundResult()); } if (capsule.Items != null) { if (capsule.Items.Any(p => p.LoadQuantity > p.ItemQuantity)) { return(View(capsule)); } foreach (var item in capsule.Items.Where(p => p.LoadQuantity > 0)) { CapsulesItems capsuleItem = Database.CapsulesItems.SingleOrDefault(p => p.CapsuleId == capsule.CapsuleId && p.ItemId == item.CurrentItem.ItemId); if (capsuleItem != null) { capsuleItem.Quantity += item.LoadQuantity; } else { Database.CapsulesItems.Add(new CapsulesItems { CapsuleId = capsule.CapsuleId, ItemId = item.CurrentItem.ItemId, Quantity = item.LoadQuantity }); } InventoriesItems invItem = Database.InventoriesItems.SingleOrDefault(p => p.Inventories.UserId == Username && p.ItemId == item.CurrentItem.ItemId); if (invItem != null) { if (invItem.Quantity == item.LoadQuantity) { Database.InventoriesItems.Remove(invItem); } else { invItem.Quantity -= item.LoadQuantity; } } } Database.SaveChanges(); } return(RedirectToAction("List", new { id = capsule.CapsuleId })); }
public ActionResult LogInterests(ManageViewModel capsule) { var capsuleDB = Database.Capsules.SingleOrDefault(p => p.CapsuleId == capsule.CapsuleId && p.UserId == Username); if (capsuleDB == null) { return(new HttpNotFoundResult()); } var spawnables = ItemsCapsule.Where(p => p.PaysInterests).Select(s => s.ItemId); if (!spawnables.Contains(capsuleDB.ItemId)) { return(RedirectToAction("List", new { id = capsule.CapsuleId })); } if (!capsuleDB.CapsulesItems.Any()) { return(RedirectToAction("List", new { id = capsule.CapsuleId })); } if (capsule.Items == null) { return(RedirectToAction("List", new { id = capsule.CapsuleId })); } if (capsule.Items.Sum(p => p.Quantity) > 100) { ModelState.AddModelError("Masde100", "Total Quantity on capsule exceeds 100."); return(LogInterests(capsule.CapsuleId)); } Dictionary <string, int> nuevos = new Dictionary <string, int>(); foreach (ItemCapsuleViewModel item in capsule.Items) { CapsulesItems capsuleItem = Database.CapsulesItems.SingleOrDefault(p => p.CapsuleId == capsule.CapsuleId && p.ItemId == item.CurrentItem.ItemId); if (capsuleItem != null) { if (capsuleItem.Quantity > item.Quantity) { ModelState.AddModelError("Masde100", "Quantity must be equal or greater than quantity on capsule."); return(LogInterests(capsule.CapsuleId)); } else if (capsuleItem.Quantity < item.Quantity) { nuevos.Add(item.CurrentItem.ItemId, item.Quantity - capsuleItem.Quantity); capsuleItem.Quantity = item.Quantity; } } else { break; } } if (nuevos.Count > 0) { DateTime currentLapse = DateTime.Now.AddHours(-1); Spawns current = Database.Spawns.SingleOrDefault(p => p.UserId == Username && p.Date >= currentLapse); if (current == null) { current = Database.Spawns.Add(new Spawns { UserId = Username, Date = DateTime.Now }); Database.Spawns.Add(current); } SpawnsCapsules capsuleSpawn = current.SpawnsCapsules.SingleOrDefault(p => p.CapsuleCode == capsuleDB.Code); if (capsuleSpawn == null) { capsuleSpawn = Database.SpawnsCapsules.Add(new SpawnsCapsules { Spawns = current, CapsuleCode = capsuleDB.Code }); Database.SpawnsCapsules.Add(capsuleSpawn); } foreach (var kv in nuevos) { SpawnsCapsulesItems capsuleSpawnItem = capsuleSpawn.SpawnsCapsulesItems.SingleOrDefault(p => p.ItemId == kv.Key); if (capsuleSpawnItem != null) { capsuleSpawnItem.Quantity += kv.Value; } else { capsuleSpawn.SpawnsCapsulesItems.Add(new SpawnsCapsulesItems { SpawnsCapsules = capsuleSpawn, ItemId = kv.Key, Quantity = kv.Value }); } } Database.SaveChanges(); return(RedirectToAction("List", new { id = capsule.CapsuleId })); } return(RedirectToAction("LogInterests", new { id = capsule.CapsuleId })); }
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 })); }