Ejemplo n.º 1
0
        public ActionResult Edit(int?id = null)
        {
            InvasionReward reward = null;

            if (id.HasValue)
            {
                reward = _uow.GetRepo <InvasionRewardRepository>().GetByID(id.Value);
            }
            return(View(new EditInvasionRewardViewModel().Load(_uow, reward)));
        }
        public InvasionRewardViewModel(InvasionReward invasionReward, IItemStore itemStore)
        {
            this.invasionReward = invasionReward;

            if (invasionReward?.CountedItems != null)
            {
                var countedItem = invasionReward.CountedItems[0];
                Item       = itemStore.GetItemById(countedItem.ItemType);
                ItemCount  = invasionReward.CountedItems.Count;
                Visibility = Visibility.Visible;
            }
            else
            {
                Visibility = Visibility.Collapsed;
            }
        }
Ejemplo n.º 3
0
 public ActionResult Edit([Bind(Prefix = "InvasionReward")] InvasionReward model)
 {
     if (ModelState.IsValid)
     {
         if (model.ID == 0)
         {
             _uow.GetRepo <InvasionRewardRepository>().Add(model);
             TempData["message"] = "Invasion Reward Added";
         }
         else
         {
             _uow.GetRepo <InvasionRewardRepository>().Update(model);
             TempData["message"] = "Invasion Reward Updated";
         }
         return(RedirectToAction("Index"));
     }
     return(View(new EditInvasionRewardViewModel().Load(_uow, model)));
 }
Ejemplo n.º 4
0
        public List <Invasion> GetInvasions(UnitOfWork unitOfwork, WorldState worldState)
        {
            List <Invasion>       importantInavsions  = new List <Invasion>();
            List <InvasionReward> invasionRewardNames = unitOfwork.GetRepo <InvasionRewardRepository>().GetAll();

            foreach (Invasion invasion in worldState.Invasions.Where(x => !x.Completed))
            {
                List <InvasionRewardItem> items = new List <InvasionRewardItem>();
                if (invasion.AttackerRewardItems.SafeAny())
                {
                    items.AddRange(invasion.AttackerRewardItems);
                }
                if (invasion.DefenderRewardItems.SafeAny())
                {
                    items.AddRange(invasion.DefenderRewardItems);
                }

                if (items.Any())
                {
                    foreach (InvasionRewardItem item in items)
                    {
                        InvasionReward rewardName = invasionRewardNames.SingleOrDefault(x => x.UniqueName == item.ItemUniqueName);
                        if (rewardName != null)
                        {
                            item.Name = rewardName.Name;
                        }

                        if (rewardName == null || (rewardName != null && rewardName.ShowOnHomeView))
                        {
                            invasion.IsImportant = true;
                        }
                    }
                }

                invasion.AttackerFaction = factions[invasion.AttackerFaction];
                invasion.DefenderFaction = factions[invasion.DefenderFaction];
                invasion.SolNode         = solNodes[invasion.Node];

                importantInavsions.Add(invasion);
            }
            return(importantInavsions);
        }
        public EditInvasionRewardViewModel Load(UnitOfWork uow, InvasionReward reward = null)
        {
            InvasionReward = reward;
            List <string> names = new List <string>();

            List <string> datas    = uow.GetRepo <TrackedDataRepository>().GetGroupedByType("InvasionRewards").Select(x => x.Data).ToList();
            List <string> existing = uow.GetRepo <InvasionRewardRepository>().GetAll().Select(x => x.UniqueName).ToList();

            foreach (string data in datas)
            {
                if (!existing.Any(x => x.Equals(data)))
                {
                    names.Add(data);
                }
            }

            UniqueNameSelectList = new SelectList(names.OrderBy(x => x));

            return(this);
        }
Ejemplo n.º 6
0
        public void StartTask()
        {
            WorldStateUtilities worldStateUtilities = new WorldStateUtilities();
            WorldState          worldState          = worldStateUtilities.GetWorldState();
            var solNodes = worldStateUtilities.GetSolNodeDictionary();

            SentNotificationRepository sentNotificationRepo = uow.GetRepo <SentNotificationRepository>();
            InvasionRewardRepository   invasionRewardRepo   = uow.GetRepo <InvasionRewardRepository>();

            List <SentNotification> sentNotifications   = sentNotificationRepo.GetByType(TypeName);
            List <InvasionReward>   invasionRewardNames = invasionRewardRepo.GetAll();

            foreach (Invasion invasion in worldState.Invasions)
            {
                string message = string.Empty;
                if (invasion.Completed)
                {
                    continue;
                }
                if (sentNotifications.Any(x => x.DataID == invasion.ID))
                {
                    continue;
                }

                string attackerRewardString = string.Empty;
                string defenderRewardString = string.Empty;

                if (invasion.AttackerRewardItems.SafeAny())
                {
                    List <string> rewards = new List <string>();
                    foreach (var reward in invasion.AttackerRewardItems)
                    {
                        InvasionReward rewardInfo = invasionRewardNames.SingleOrDefault(x => x.UniqueName == reward.ItemUniqueName);
                        if (rewardInfo == null)
                        {
                            rewards.Add(reward.ItemUniqueName.Split('/').Last());
                        }
                        else if (rewardInfo.ShowOnHomeView)
                        {
                            rewards.Add(rewardInfo.Name);
                        }
                    }
                    if (rewards.Any())
                    {
                        attackerRewardString = $"  Attacker: ({ string.Join(", ", rewards)})";
                    }
                }

                if (invasion.DefenderRewardItems.SafeAny())
                {
                    List <string> rewards = new List <string>();
                    foreach (var reward in invasion.DefenderRewardItems)
                    {
                        InvasionReward rewardInfo = invasionRewardNames.SingleOrDefault(x => x.UniqueName == reward.ItemUniqueName);
                        if (rewardInfo == null)
                        {
                            rewards.Add(reward.ItemUniqueName.Split('/').Last());
                        }
                        else if (rewardInfo.ShowOnHomeView)
                        {
                            rewards.Add(rewardInfo.Name);
                        }
                    }
                    if (rewards.Any())
                    {
                        defenderRewardString = $"  Defender: ({string.Join(", ", rewards)})";
                    }
                }


                if (!string.IsNullOrWhiteSpace(attackerRewardString) || !string.IsNullOrWhiteSpace(defenderRewardString))
                {
                    invasion.SolNode = solNodes[invasion.Node];

                    message = $"{invasion.SolNode.Name} ";
                    if (invasion.IsBlocked)
                    {
                        message += "(Currently blocked by another invasion) ";
                    }
                    message += $"Invasion Rewards:{Environment.NewLine}";

                    if (!string.IsNullOrWhiteSpace(attackerRewardString))
                    {
                        message += attackerRewardString;
                    }

                    if (!string.IsNullOrWhiteSpace(attackerRewardString) && !string.IsNullOrWhiteSpace(defenderRewardString))
                    {
                        message += Environment.NewLine;
                    }

                    if (!string.IsNullOrWhiteSpace(defenderRewardString))
                    {
                        message += defenderRewardString;
                    }

                    new PushBulletHelper().SendNotificationToCellPhone(message, appSecrets);
                    sentNotificationRepo.Add(new SentNotification {
                        Type   = TypeName,
                        DataID = invasion.ID
                    });
                }
            }
        }