public async Task <UserWithAchievementsVM> GetFriendWithAchievementsAsync(Guid userId, Guid friendId, bool isAdmin) { var friendWithAchievements = await _friendRepository.GetFriendAsync(userId, friendId, isAdmin); var achievementsVM = _mapper.Map <IEnumerable <UserAchievementVM> >(friendWithAchievements.Achievements); var groupedByCategoryAchievements = achievementsVM. GroupBy(a => a.Category.FirstToLower()). ToDictionary( kv => kv.Key, kv => kv.AsEnumerable().GroupBy(_ => _.Type.FirstToLower()). ToDictionary(_ => _.Key, _ => _.Select(__ => __.Value))); var groupedAchievementsVM = new GroupedUserAchievementsVM() { GroupedAchievements = groupedByCategoryAchievements, Any = groupedByCategoryAchievements.SelectMany(kv => kv.Value).Any() }; return(new UserWithAchievementsVM( groupedAchievementsVM, _mapper.Map <UserVM>(friendWithAchievements.User))); }
public UserWithAchievementsVM(GroupedUserAchievementsVM achievements, UserVM user) { Achievements = achievements; User = user; }