public ActionResult UpdateItemAcquisition(
            [Bind(Prefix = "ItemAcquisition")] ItemAcquisition model,
            [Bind(Prefix = "ComponentAcquisitions")] List <ComponentAcquisition> compModel)
        {
            if (ModelState.IsValid)
            {
                User user = _uow.GetRepo <UserRepository>().GetByUsername(User.Identity.Name);
                model.UserID = user.ID;

                WarframeItem item     = _itemUtils.GetByUniqueName(model.ItemUniqueName);
                ItemCategory category = _uow.GetRepo <ItemCategoryRepository>().GetByID(item.ItemCategoryID);
                if (!category.CanBeMastered)
                {
                    model.IsMastered = false;
                }

                ItemAcquisition existing = _uow.GetRepo <ItemAcquisitionRepository>().GetByPrimaryKeys(user.ID, model.ItemUniqueName);
                if (existing == null)
                {
                    _uow.GetRepo <ItemAcquisitionRepository>().Add(model);
                }
                else
                {
                    _uow.GetRepo <ItemAcquisitionRepository>().Update(model);
                }

                if (compModel != null && compModel.Any())
                {
                    foreach (ComponentAcquisition ca in compModel)
                    {
                        ca.UserID = user.ID;
                        ComponentAcquisition existingComp = _uow.GetRepo <ComponentAcquisitionRepository>().GetByPrimaryKeys(user.ID, ca.ComponentUniqueName, ca.ItemUniqueName);
                        if (existingComp == null)
                        {
                            _uow.GetRepo <ComponentAcquisitionRepository>().Add(ca);
                        }
                        else
                        {
                            _uow.GetRepo <ComponentAcquisitionRepository>().Update(ca);
                        }
                    }
                }

                return(Json(new {
                    success = true,
                    itemName = model.ItemUniqueName,
                    view = RenderViewAsync("AcquisitionIcon", model).Result
                }));
            }
            return(Json(new {
                success = false
            }));
        }
Beispiel #2
0
        public ItemModalViewModel Load(WarframeItem warframeItem, ItemCategory itemCategory, ClaimsPrincipal user, UnitOfWork uow, WarframeItemUtilities itemUtils)
        {
            WarframeItem = warframeItem;
            ItemCategory = itemCategory;

            int?userID = null;

            if (user.Identity.IsAuthenticated)
            {
                userID          = int.Parse(user.FindFirstValue(ClaimTypes.NameIdentifier));
                ItemAcquisition = uow.GetRepo <ItemAcquisitionRepository>().GetByPrimaryKeys(userID.Value, WarframeItem.UniqueName);

                if (ItemAcquisition == null)
                {
                    ItemAcquisition = new ItemAcquisition {
                        UserID         = userID.Value,
                        ItemUniqueName = WarframeItem.UniqueName
                    }
                }
                ;
            }

            if (WarframeItem.Components != null && WarframeItem.Components.Any())
            {
                WarframeItem.Components = WarframeItem.Components.OrderByDescending(x => x.Name == "Blueprint").ThenBy(x => x.Name == "Orokin Cell").ThenBy(x => x.Name).ToList();

                if (userID.HasValue)
                {
                    ComponentAcquisitions = uow.GetRepo <ComponentAcquisitionRepository>()
                                            .GetByItemUniqueNameAndUserID(WarframeItem.UniqueName, userID.Value);
                }
                else
                {
                    ComponentAcquisitions = new List <ComponentAcquisition>();
                }

                ItemCategory        cat    = uow.GetRepo <ItemCategoryRepository>().GetByCodexSection(CodexSection.Relics).FirstOrDefault();
                List <WarframeItem> relics = itemUtils.GetByCategoryID(cat.ID);


                int index = 0;
                foreach (Component comp in WarframeItem.Components)
                {
                    ComponentAcquisition ca = ComponentAcquisitions
                                              .SingleOrDefault(x => x.ComponentUniqueName == comp.UniqueName);
                    if (ca == null)
                    {
                        ComponentAcquisitions.Add(new ComponentAcquisition {
                            UserID = userID ?? 0,
                            ComponentUniqueName = comp.UniqueName,
                            ItemUniqueName      = WarframeItem.UniqueName,
                            ComponentName       = comp.Name
                        });
                    }
                    else
                    {
                        ca.ComponentName = comp.Name;
                    }

                    if (comp.Drops != null && comp.Drops.Any())
                    {
                        for (int i = comp.Drops.Count - 1; i >= 0; i--)
                        {
                            var relic = relics.SingleOrDefault(x => x.Name == comp.Drops[i].Location);
                            //if (relic != null && relic.IsVaulted) {
                            //    comp.Drops.RemoveAt(i);
                            //}
                        }
                    }
                    index++;
                }

                ComponentAcquisitions = ComponentAcquisitions.OrderByDescending(x => x.ComponentName == "Blueprint").ThenBy(x => x.ComponentName == "Orokin Cell").ThenBy(x => x.ComponentName).ToList();
            }
            return(this);
        }
    }