Example #1
0
        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 }));
        }
Example #2
0
        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 }));
        }
Example #3
0
        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 }));
        }