public virtual PlayerAchievementDetails GetCurrentPlayerAchievementDetails(AchievementId achievementId, ApplicationUser currentUser) { var achievement = _achievementRetriever.GetAchievement(achievementId); var result = new PlayerAchievementDetails { AchievementId = achievementId, Description = achievement.Description, IconClass = achievement.IconClass, AchievementName = achievement.Name, LevelThresholds = achievement.LevelThresholds }; result.NumberOfPlayersWithThisAchievement = _dataContext.GetQueryable <PlayerAchievement>().Count(y => y.AchievementId == achievementId); if (currentUser.UserName == AnonymousApplicationUser.USER_NAME_ANONYMOUS) { return(result); } var playerForCurrentUser = _playerRetriever.GetPlayerForCurrentUser(currentUser.Id, currentUser.CurrentGamingGroupId); if (playerForCurrentUser != null) { result.PlayerId = playerForCurrentUser.Id; result.PlayerName = playerForCurrentUser.Name; var achievementAwarded = achievement.IsAwardedForThisPlayer(playerForCurrentUser.Id); result.AchievementLevel = achievementAwarded.LevelAwarded; result.PlayerProgress = achievementAwarded.PlayerProgress; SetRelatedEntities(achievement.Group, result, achievementAwarded.RelatedEntities); } var playerAchievement = _dataContext .GetQueryable <PlayerAchievement>() .FirstOrDefault(x => x.AchievementId == achievementId && x.Player.ApplicationUserId == currentUser.Id); if (playerAchievement == null) { return(result); } result.DateCreated = playerAchievement.DateCreated; result.LastUpdatedDate = playerAchievement.LastUpdatedDate; return(result); }
public virtual PlayerAchievementDetails GetPlayerAchievement(PlayerAchievementQuery playerAchievementQuery) { var achievementId = playerAchievementQuery.AchievementId; var achievement = _achievementRetriever.GetAchievement(achievementId); var result = new PlayerAchievementDetails { AchievementId = achievementId, Description = achievement.Description, IconClass = achievement.IconClass, AchievementName = achievement.Name, LevelThresholds = achievement.LevelThresholds }; result.NumberOfPlayersWithThisAchievement = _dataContext.GetQueryable <PlayerAchievement>().Count(y => y.AchievementId == achievementId); Player player; if (playerAchievementQuery.PlayerId.HasValue) { player = _dataContext.FindById <Player>(playerAchievementQuery.PlayerId); } else { player = _playerRetriever.GetPlayerForCurrentUser(playerAchievementQuery.ApplicationUserId, playerAchievementQuery.GamingGroupId.Value); } if (player != null) { result.PlayerId = player.Id; result.PlayerName = player.Name; var achievementAwarded = achievement.IsAwardedForThisPlayer(player.Id); result.AchievementLevel = achievementAwarded.LevelAwarded; result.PlayerProgress = achievementAwarded.PlayerProgress; SetRelatedEntities(achievement.Group, result, achievementAwarded.RelatedEntities); } var playerAchievement = _dataContext .GetQueryable <PlayerAchievement>() .FirstOrDefault(x => x.AchievementId == achievementId && x.PlayerId == playerAchievementQuery.PlayerId); if (playerAchievement == null) { return(result); } result.DateCreated = playerAchievement.DateCreated; result.LastUpdatedDate = playerAchievement.LastUpdatedDate; return(result); }
public virtual ActionResult Details(AchievementId achievementId, ApplicationUser currentUser) { if (currentUser != null && currentUser.CurrentGamingGroupId > 0) { return(DetailsForCurrentUser(achievementId, currentUser)); } var achievement = _achievementRetriever.GetAchievement(achievementId); var viewModel = _transformer.Transform <PlayerAchievementViewModel>(achievement); return(View(MVC.Achievement.Views.Details, viewModel)); }
public IPagedList <PlayerAchievementWinner> GetResults(GetRecentPlayerAchievementsUnlockedQuery query) { var playerAchievementWinnersQueryable = _dataContext.GetQueryable <PlayerAchievement>() .Where(x => query.PlayerId == null || x.PlayerId == query.PlayerId.Value) .Select(x => new PlayerAchievementWinner { AchievementId = x.AchievementId, AchievementLastUpdateDate = x.LastUpdatedDate, AchievementLevel = x.AchievementLevel, GamingGroupId = x.Player.GamingGroupId, GamingGroupName = x.Player.GamingGroup.Name, PlayerId = x.PlayerId, PlayerName = x.Player.Name, UserId = x.Player.ApplicationUserId, DateCreated = x.DateCreated, LastUpdatedDate = x.LastUpdatedDate }) .OrderByDescending(p => p.AchievementLastUpdateDate); var pagedList = playerAchievementWinnersQueryable.ToPagedList(query.Page, query.PageSize); var distinctAchievements = pagedList.GroupBy(x => x.AchievementId).ToDictionary(x => x.Key, y => _achievementRetriever.GetAchievement(y.Key)); foreach (var playerAchievementWinner in pagedList) { var achievement = distinctAchievements[playerAchievementWinner.AchievementId]; playerAchievementWinner.IconClass = achievement.IconClass; playerAchievementWinner.AchievementName = achievement.Name; playerAchievementWinner.Description = achievement.Description; } return(pagedList); }