private IList<Achievement> CleanupRecommendedAchievements(IList<Achievement> recommended, Character character) { List<Achievement> cleanedAchievements = new List<Achievement>(); cleanedAchievements.AddRange(recommended); int numberRemoved = 0; foreach (Achievement achievement in recommended) { // Check to see if we have already removed that achievement if (cleanedAchievements.Where(a => a._id == achievement._id).FirstOrDefault() == null) { continue; } if (achievement.Category == Achievement.FeatsOfStrengthCategory) { cleanedAchievements.Remove(achievement); } Debug.WriteLine(string.Format("Processing Achievment : {0}", achievement)); if (achievement.IsPartOfSeries) { // remove all the achivements from a series foreach (int seriesAchievement in achievement.Series.AchievementIds) { Achievement achievementToRemove = cleanedAchievements.Where(a => a.BlizzardID == seriesAchievement).FirstOrDefault(); if (achievementToRemove != null) { Debug.WriteLine(string.Format("\tRemoving Achievment : {0}", achievementToRemove)); numberRemoved++; cleanedAchievements.Remove(achievementToRemove); } } // Get Players highest achievement in series Achievement nextAchievementInSeries = null; int highestAchievementId = character.GetHighestAchievementInSeries(achievement.Series); if (highestAchievementId != null) { int nextAchievment = 0; for (int i = 0; i < achievement.Series.AchievementIds.Count; i++) { if (achievement.Series.AchievementIds.ElementAt(i) == highestAchievementId) { nextAchievment = i + 1; } } if (nextAchievment < achievement.Series.AchievementIds.Count) { //nextAchievementInSeries = _achievementRepository.FindByAchievementId(achievement.Series.AchievementIds.ElementAt(nextAchievment)); } } else{ //nextAchievementInSeries = _achievementRepository.FindByAchievementId(achievement.Series.AchievementIds[0]); } Debug.WriteLine(string.Format("\tAdding Achievment : {0}", nextAchievementInSeries)); if (nextAchievementInSeries != null) { cleanedAchievements.Add(nextAchievementInSeries); numberRemoved--; } } } return cleanedAchievements; }