Beispiel #1
0
        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));
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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));
        }
Beispiel #6
0
        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));
        }