public ActionResult AddItem(AddItemViewModel addedItem) { var capsuleDB = Database.Capsules.SingleOrDefault(p => p.CapsuleId == addedItem.CapsuleId && p.UserId == Username); if (capsuleDB == null) { return(new HttpNotFoundResult()); } if (ModelState.IsValid) { Database.CapsulesItems.Add(new CapsulesItems { CapsuleId = addedItem.CapsuleId, ItemId = addedItem.ItemId, Quantity = addedItem.Quantity }); Database.SaveChanges(); return(RedirectToAction("List", new { id = addedItem.CapsuleId })); } else { LoadCapsule(capsuleDB, addedItem); var itemsCargados = capsuleDB.CapsulesItems.Select(p => p.ItemId).ToList(); var isKey = ItemsXml.Where(p => p.IsKey).Select(s => s.ItemId); addedItem.AddeableItems = ItemsXml.Where(q => !ItemsCapsule.Contains(q) && !itemsCargados.Contains(q.ItemId) && (!addedItem.Properties.IsKeyLocker || isKey.Contains(q.ItemId))) .Select(q => new Models.ItemViewModel { CurrentItem = q, }).ToList(); return(View(addedItem)); } }
public ActionResult SaveNewQty(IList <ItemQuantity> items) { if (items == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "There are no items.")); } if (items.Any(p => p.Quantity > 2000 || p.Quantity < 0)) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "The item quantity must be a value between 0 and 2000")); } var itemsCapsule = ItemsXml.Where(p => p is ItemCapsule).Cast <ItemCapsule>(); foreach (ItemQuantity item in items) { if (itemsCapsule.Any(p => p.ItemId == item.ItemId && !string.IsNullOrEmpty(p.UniqueId))) { item.Quantity = 1; } string itemId = item.ItemId; InventoriesItems invItem = Database.InventoriesItems.SingleOrDefault(p => p.Inventories.UserId == Username && p.ItemId == itemId); if (invItem != null) { if (item.Quantity == 0) { Database.InventoriesItems.Remove(invItem); } else { invItem.Quantity = item.Quantity; } } else { if (item.Quantity > 0) { 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 = itemId, Quantity = item.Quantity }); } } } Database.SaveChanges(); return(Json("Successfully saved!")); }
private ActionResult GetItems(string groupId, bool ignoreZeroQuantity) { bool allGroups = groupId == GroupIdAll; if (!allGroups && !GroupsXml.Any(p => p.GroupId == groupId)) { return(new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest, "GroupId does not exists")); } DateTime inicio = DateTime.Now; var enCapsules = Database.CapsulesItems .Where(s => s.Capsules.UserId == Username) .GroupBy(t => t.ItemId) .Select(u => new { ItemId = u.Key, CapsulesQuantity = u.Sum(v => v.Quantity) }).ToList(); var inventario = Database.InventoriesItems .Where(s => s.Inventories.UserId == Username) .Select(u => new { ItemId = u.ItemId, Quantity = u.Quantity }).ToList(); double elapsed = (DateTime.Now - inicio).TotalMilliseconds; var itemsGroups = ItemsXml .Where(z => (allGroups || z.GroupId == groupId) && (ignoreZeroQuantity || (inventario.Any(y => y.ItemId == z.ItemId) || enCapsules.Any(y => y.ItemId == z.ItemId)))) .Select(y => new { GroupId = y.GroupId, Item = ItemBase.Create(y), Quantity = inventario.SingleOrDefault(s => s.ItemId == y.ItemId) == null ? 0 : inventario.Single(s => s.ItemId == y.ItemId).Quantity, CapsulesQuantity = enCapsules.SingleOrDefault(s => s.ItemId == y.ItemId) == null ? 0 : enCapsules.Single(s => s.ItemId == y.ItemId).CapsulesQuantity }) .ToList(); if (itemsGroups.Count == 0) { return(Json(new { Result = false }, JsonRequestBehavior.DenyGet)); } var groups = itemsGroups .GroupBy(d => d.GroupId) .Select(p => new { GroupId = p.Key, Types = p.GroupBy(e => e.Item.TypeId) .Select(q => new { TypeId = q.Key, Quantity = q.Sum(f => f.Quantity), CapsulesQuantity = q.Sum(f => f.CapsulesQuantity), Items = q.Select(r => new { CurrentItem = r.Item, Quantity = r.Quantity, CapsulesQuantity = r.CapsulesQuantity }) }) }); return(Json(new { Result = true, Groups = groups }, JsonRequestBehavior.DenyGet)); }
private LoadViewModel RecuperarItemsLoad(int id) { var capsuleDB = Database.Capsules.SingleOrDefault(p => p.CapsuleId == id && p.UserId == Username); if (capsuleDB == null) { return(null); } LoadViewModel model = new LoadViewModel(); LoadCapsule(capsuleDB, model); model.Items = capsuleDB.CapsulesItems.Select(p => new ItemLoadViewModel { CurrentItem = ItemBase.Create(ItemsXml, p.ItemId), CapsuleQuantity = p.Quantity, ItemQuantity = 0, LoadQuantity = 0 }).OrderBy(x => x.CurrentItem.Order).ToList(); var isCapsule = ItemsCapsule.Select(s => s.ItemId); var isKey = ItemsXml.Where(p => p.IsKey).Select(s => s.ItemId); var inventoryDB = Database.InventoriesItems.Where(p => p.Inventories.UserId == Username && !isCapsule.Contains(p.ItemId) && (!model.Properties.IsKeyLocker || isKey.Contains(p.ItemId))).ToList(); var inventories = inventoryDB.Select(q => new ItemLoadViewModel { CurrentItem = ItemBase.Create(ItemsXml, q.ItemId), CapsuleQuantity = 0, ItemQuantity = q.Quantity, LoadQuantity = 0 }).OrderBy(p => p.CurrentItem.Order).ToList(); foreach (var item in model.Items) { ItemLoadViewModel inv = inventories.SingleOrDefault(p => p.CurrentItem == item.CurrentItem); if (inv != null) { item.ItemQuantity = inv.ItemQuantity; inventories.Remove(inv); } } model.Items.AddRange(inventories); return(model); }
public ActionResult DateCharts(DateGrouping?grouping, string itemId, bool?accumulative) { var reproduccionesDB = Database.SpawnsCapsulesItems .Where(p => p.SpawnsCapsules.Spawns.UserId == Username) .Select(s => s.ItemId) .Distinct() .ToList(); ChartsViewModel model = new ChartsViewModel(); model.Grouping = grouping ?? DateGrouping.Week; model.Accumulative = accumulative.GetValueOrDefault(); model.ItemId = itemId; model.ViewableItems = ItemsXml.Where(p => reproduccionesDB.Contains(p.ItemId)).Select(q => new { q.ItemId, Description = q.Description() }).ToDictionary(r => r.ItemId, s => s.Description); model.ChartTitle = new ChartTitleViewModel { Grouping = model.Grouping, Item = ItemViewModelLight.Create(ItemsXml, model.ItemId), Accumulative = model.Accumulative }; return(View(model)); }
public ActionResult AddItem(int id) { var capsuleDB = Database.Capsules.SingleOrDefault(p => p.CapsuleId == id && p.UserId == Username); if (capsuleDB == null) { return(new HttpNotFoundResult()); } AddItemViewModel model = new AddItemViewModel(); LoadCapsule(capsuleDB, model); var itemsCargados = capsuleDB.CapsulesItems.Select(p => p.ItemId).ToList(); var isKey = ItemsXml.Where(p => p.IsKey).Select(s => s.ItemId); model.AddeableItems = ItemsXml.Where(q => !ItemsCapsule.Contains(q) && !itemsCargados.Contains(q.ItemId) && (!model.Properties.IsKeyLocker || isKey.Contains(q.ItemId))) .Select(q => new Models.ItemViewModel { CurrentItem = q, }).ToList(); return(View(model)); }