public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var totalDistinctHardcoreGamesThatTakeALongTime = DataContext .GetQueryable <PlayerGameResult>() .Where(x => x.PlayerId == playerId && ((((x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.MinPlayTime ?? 0) + (x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.MaxPlayTime ?? 0)) / 2) >= THREE_HOURS_WORTH_OF_MINUTES) && x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.AverageWeight >= WeightTierCalculator.BOARD_GAME_GEEK_WEIGHT_INCLUSIVE_LOWER_BOUND_FOR_HARDCORE) .Select(x => x.PlayedGame.GameDefinitionId) .Distinct() .ToList(); result.PlayerProgress = totalDistinctHardcoreGamesThatTakeALongTime.Count; result.RelatedEntities = totalDistinctHardcoreGamesThatTakeALongTime.ToList(); if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return(result); } result.LevelAwarded = LevelThresholds.OrderByDescending(l => l.Value) .FirstOrDefault(l => l.Value <= result.PlayerProgress) .Key; return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var yearsOfGamesPlayed = DataContext .GetQueryable <PlayerGameResult>() .Where(x => x.PlayerId == playerId && x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.YearPublished != null) .GroupBy(x => x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.YearPublished) .Select(y => y.Key) .ToList(); result.PlayerProgress = yearsOfGamesPlayed.Count; if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return(result); } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var totalTeamLosses = DataContext .GetQueryable<PlayedGame>() .Where(x => x.PlayerGameResults.Any(player => player.PlayerId == playerId) && x.WinnerType == WinnerTypes.TeamLoss) .Select(x => x.Id) .ToList(); result.PlayerProgress = totalTeamLosses.Count; result.RelatedEntities = totalTeamLosses.ToList(); if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return result; } result.LevelAwarded = LevelThresholds.OrderByDescending(l => l.Value) .FirstOrDefault(l => l.Value <= result.PlayerProgress) .Key; return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var categoryGames = DataContext .GetQueryable<PlayerGameResult>() .Where(x => x.PlayerId == playerId && x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.Mechanics.Any(o => o.MechanicName == MechanicName)) .Select(x => x.PlayedGame.GameDefinitionId) .Distinct() .ToList(); result.PlayerProgress = categoryGames.Count; result.RelatedEntities = categoryGames.ToList(); if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return result; } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var minions = DataContext.GetQueryable<Nemesis>() .Include(n => n.MinionPlayer) .Where(n => n.NemesisPlayerId == playerId && n.MinionPlayer.NemesisId == n.Id) .Select(n => n.MinionPlayerId). ToList(); result.PlayerProgress = minions.Count; result.RelatedEntities = minions; if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return result; } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var gamesPlayed = DataContext .GetQueryable <PlayerGameResult>() .Where(pgr => pgr.PlayerId == playerId && ((pgr.PlayedGame.DatePlayed.Month == 12 && pgr.PlayedGame.DatePlayed.Day >= 24) || (pgr.PlayedGame.DatePlayed.Month == 1 && pgr.PlayedGame.DatePlayed.Day == 1))) .Select(pg => pg.PlayedGameId).ToList(); result.RelatedEntities = gamesPlayed; result.PlayerProgress = gamesPlayed.Count; if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return(result); } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var allTeamGameIds = DataContext .GetQueryable <PlayedGame>() .Where(x => (x.WinnerType == WinnerTypes.TeamLoss || x.WinnerType == WinnerTypes.TeamWin) && x.PlayerGameResults.Any(y => y.PlayerId == playerId)) .Select(z => z.Id) .Distinct() .ToList(); result.PlayerProgress = allTeamGameIds.Count; result.RelatedEntities = allTeamGameIds; if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return(result); } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var allNickeledGameIds = DataContext .GetQueryable<PlayerGameResult>() .Where(x => x.PlayerId == playerId) .GroupBy(x => x.PlayedGame.GameDefinitionId) .Select(group => new { group.Key, Count = group.Count() }) .Where(a => a.Count >= 5) .ToList(); result.PlayerProgress = allNickeledGameIds.Count(); result.RelatedEntities = allNickeledGameIds.Select(y => y.Key).ToList(); if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return result; } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var revengedPlayerIds = DataContext .GetQueryable <Nemesis>() .Where(nem => nem.NemesisPlayerId == playerId && nem.NemesisPlayer.CurrentAndPriorNemeses.Any( min => min.NemesisPlayerId == nem.MinionPlayerId && min.DateCreated < nem.DateCreated)) .Select(nem => nem.MinionPlayerId) .Distinct() .ToList(); result.RelatedEntities = revengedPlayerIds; result.PlayerProgress = revengedPlayerIds.Count; if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return(result); } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var gamesPlayed = DataContext .GetQueryable<PlayerGameResult>() .Where(pgr => pgr.PlayerId == playerId && ((pgr.PlayedGame.DatePlayed.Month == 12 && pgr.PlayedGame.DatePlayed.Day >= 24) || (pgr.PlayedGame.DatePlayed.Month == 1 && pgr.PlayedGame.DatePlayed.Day == 1))) .Select(pg => pg.PlayedGameId).ToList(); result.RelatedEntities = gamesPlayed; result.PlayerProgress = gamesPlayed.Count; if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return result; } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var categoryGames = DataContext .GetQueryable <PlayerGameResult>() .Where(x => x.PlayerId == playerId && x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.Categories.Any(o => o.CategoryName == CategoryName)) .Select(x => x.PlayedGame.GameDefinitionId) .Distinct() .ToList(); result.PlayerProgress = categoryGames.Count; result.RelatedEntities = categoryGames.ToList(); if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return(result); } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return(result); }
private void CreateOrUpdateAchievement(Player player, IAchievement achievement, PlayerAchievement currentPlayerAchievement, AchievementAwarded achievementAwarded) { if (currentPlayerAchievement == null) { var playerAchievement = new PlayerAchievement { DateCreated = DateTime.UtcNow, LastUpdatedDate = DateTime.UtcNow, PlayerId = player.Id, AchievementId = achievement.Id, AchievementLevel = achievementAwarded.LevelAwarded.Value, RelatedEntities = achievementAwarded.RelatedEntities }; _dataContext.Save(playerAchievement, new AnonymousApplicationUser()); _dataContext.CommitAllChanges(); NotifyPlayer(player, achievement, achievementAwarded.LevelAwarded); } else { currentPlayerAchievement.RelatedEntities = achievementAwarded.RelatedEntities; if ((int)achievementAwarded.LevelAwarded.Value > (int)currentPlayerAchievement.AchievementLevel) { currentPlayerAchievement.AchievementLevel = achievementAwarded.LevelAwarded.Value; currentPlayerAchievement.LastUpdatedDate = DateTime.UtcNow; _dataContext.AdminSave(currentPlayerAchievement); _dataContext.CommitAllChanges(); NotifyPlayer(player, achievement, achievementAwarded.LevelAwarded); } } }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var totalPoints = DataContext .GetQueryable <PlayerGameResult>() .Where(pgr => pgr.PlayerId == playerId) .Select(pg => pg.TotalPoints) .DefaultIfEmpty(0) .Sum(); result.PlayerProgress = totalPoints; if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return(result); } result.LevelAwarded = GetLevelAwarded(totalPoints); return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var playerHasAWin = DataContext.GetQueryable <PlayerGameResult>().Any(x => x.PlayerId == playerId && x.GameRank == 1); if (playerHasAWin) { return(result); } //TODO how to combine this into a single query with the previous query? var numberOfGamesWithoutWinning = DataContext .GetQueryable <PlayerGameResult>() .Where(y => y.PlayerId == playerId) .Select(pg => pg.PlayedGameId); result.PlayerProgress = numberOfGamesWithoutWinning.Count(); result.RelatedEntities = numberOfGamesWithoutWinning.ToList(); if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return(result); } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var totalDistinctHardcoreGamesThatTakeALongTime = DataContext .GetQueryable<PlayerGameResult>() .Where(x => x.PlayerId == playerId && ((((x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.MinPlayTime ?? 0) + (x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.MaxPlayTime ?? 0)) / 2) >= THREE_HOURS_WORTH_OF_MINUTES) && x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.AverageWeight >= WeightTierCalculator.BOARD_GAME_GEEK_WEIGHT_INCLUSIVE_LOWER_BOUND_FOR_HARDCORE) .Select(x => x.PlayedGame.GameDefinitionId) .Distinct() .ToList(); result.PlayerProgress = totalDistinctHardcoreGamesThatTakeALongTime.Count; result.RelatedEntities = totalDistinctHardcoreGamesThatTakeALongTime.ToList(); if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return result; } result.LevelAwarded = LevelThresholds.OrderByDescending(l => l.Value) .FirstOrDefault(l => l.Value <= result.PlayerProgress) .Key; return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var startDate = new DateTime(Year, 1, 1); var endDate = new DateTime(Year, 12, 31); var numberOfGamesWith10PlaysInYear = DataContext .GetQueryable <PlayerGameResult>() .Where( x => x.PlayerId == playerId && x.PlayedGame.DatePlayed >= startDate && x.PlayedGame.DatePlayed <= endDate) .GroupBy(x => x.PlayedGame.GameDefinitionId) .Select(group => new { group.Key, Count = group.Count() }) .Where(x => x.Count >= 10) .Select(s => s.Key) .ToList(); result.PlayerProgress = numberOfGamesWith10PlaysInYear.Count; if (result.PlayerProgress == LevelThresholds[AchievementLevel.Gold]) { result.RelatedEntities = numberOfGamesWith10PlaysInYear; result.LevelAwarded = AchievementLevel.Gold; } return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var totalPoints = DataContext .GetQueryable<PlayerGameResult>() .Where(pgr => pgr.PlayerId == playerId) .Select(pg => pg.TotalPoints) .DefaultIfEmpty(0) .Sum(); result.PlayerProgress = totalPoints; if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return result; } result.LevelAwarded = GetLevelAwarded(totalPoints); return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var allNickeledGameIds = DataContext .GetQueryable <PlayerGameResult>() .Where(x => x.PlayerId == playerId) .GroupBy(x => x.PlayedGame.GameDefinitionId) .Select(group => new { group.Key, Count = group.Count() }) .Where(a => a.Count >= 5) .ToList(); result.PlayerProgress = allNickeledGameIds.Count(); result.RelatedEntities = allNickeledGameIds.Select(y => y.Key).ToList(); if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return(result); } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var allTeamGameIds = DataContext .GetQueryable<PlayedGame>() .Where(x => (x.WinnerType == WinnerTypes.TeamLoss || x.WinnerType == WinnerTypes.TeamWin) && x.PlayerGameResults.Any(y => y.PlayerId == playerId)) .Select(z => z.Id) .Distinct() .ToList(); result.PlayerProgress = allTeamGameIds.Count; result.RelatedEntities = allTeamGameIds; if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return result; } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var startDate = new DateTime(Year, 1, 1); var endDate = new DateTime(Year, 12, 31); var numberOfGamesWith10PlaysInYear = DataContext .GetQueryable<PlayerGameResult>() .Where( x => x.PlayerId == playerId && x.PlayedGame.DatePlayed >= startDate && x.PlayedGame.DatePlayed <= endDate) .GroupBy(x => x.PlayedGame.GameDefinitionId) .Select(group => new { group.Key, Count = group.Count() }) .Where(x => x.Count >= 10) .Select(s => s.Key) .ToList(); result.PlayerProgress = numberOfGamesWith10PlaysInYear.Count(); if (result.PlayerProgress == LevelThresholds[AchievementLevel.Gold]) { result.RelatedEntities = numberOfGamesWith10PlaysInYear; result.LevelAwarded = AchievementLevel.Gold; } return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var revengedPlayerIds = DataContext .GetQueryable<Nemesis>() .Where(nem => nem.NemesisPlayerId == playerId && nem.NemesisPlayer.CurrentAndPriorNemeses.Any( min => min.NemesisPlayerId == nem.MinionPlayerId && min.DateCreated < nem.DateCreated)) .Select(nem => nem.MinionPlayerId) .Distinct() .ToList(); result.RelatedEntities = revengedPlayerIds; result.PlayerProgress = revengedPlayerIds.Count; if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return result; } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var allPlayerIdsPlayedWith = DataContext .GetQueryable <PlayerGameResult>() .Where(x => x.PlayedGame.PlayerGameResults.Any(y => y.PlayerId == playerId) && x.PlayerId != playerId) .Select(z => z.PlayerId) .Distinct() .ToList(); result.PlayerProgress = allPlayerIdsPlayedWith.Count; result.RelatedEntities = allPlayerIdsPlayedWith; if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return(result); } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var totalTeamLosses = DataContext .GetQueryable <PlayedGame>() .Where(x => x.PlayerGameResults.Any(player => player.PlayerId == playerId) && x.WinnerType == WinnerTypes.TeamLoss) .Select(x => x.Id) .ToList(); result.PlayerProgress = totalTeamLosses.Count; result.RelatedEntities = totalTeamLosses.ToList(); if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return(result); } result.LevelAwarded = LevelThresholds.OrderByDescending(l => l.Value) .FirstOrDefault(l => l.Value <= result.PlayerProgress) .Key; return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var yearsOfGamesPlayed = DataContext .GetQueryable<PlayerGameResult>() .Where(x => x.PlayerId == playerId && x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.YearPublished != null) .GroupBy(x => x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.YearPublished) .Select(y => y.Key) .ToList(); result.PlayerProgress = yearsOfGamesPlayed.Count(); if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return result; } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var minions = DataContext.GetQueryable <Nemesis>() .Include(n => n.MinionPlayer) .Where(n => n.NemesisPlayerId == playerId && n.MinionPlayer.NemesisId == n.Id) .Select(n => n.MinionPlayerId). ToList(); result.PlayerProgress = minions.Count; result.RelatedEntities = minions; if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return(result); } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var numberOfGamesAsSoleWinner = DataContext .GetQueryable <PlayedGame>() .Where(x => x.PlayerGameResults.Any(y => y.PlayerId == playerId && y.GameRank == 1) && !x.PlayerGameResults.Any(y => y.PlayerId != playerId && y.GameRank == 1) && x.NumberOfPlayers >= 10) .Select(g => g.Id); result.PlayerProgress = numberOfGamesAsSoleWinner.Count(); result.RelatedEntities = numberOfGamesAsSoleWinner.ToList(); if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return(result); } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId ) { var result = new AchievementAwarded { AchievementId = Id }; var numberOfGamesAsSoleWinner = DataContext .GetQueryable<PlayedGame>() .Where(x => x.PlayerGameResults.Any(y => y.PlayerId == playerId && y.GameRank == 1) && !x.PlayerGameResults.Any(y => y.PlayerId != playerId && y.GameRank == 1) && x.NumberOfPlayers >= 10) .Select(g => g.Id); result.PlayerProgress = numberOfGamesAsSoleWinner.Count(); result.RelatedEntities = numberOfGamesAsSoleWinner.ToList(); if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return result; } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var allPlayerIdsPlayedWith = DataContext .GetQueryable<PlayerGameResult>() .Where(x => x.PlayedGame.PlayerGameResults.Any(y => y.PlayerId == playerId) && x.PlayerId != playerId) .Select(z => z.PlayerId) .Distinct() .ToList(); result.PlayerProgress = allPlayerIdsPlayedWith.Count; result.RelatedEntities = allPlayerIdsPlayedWith; if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return result; } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var playerHasAWin = DataContext.GetQueryable<PlayerGameResult>().Any(x => x.PlayerId == playerId && x.GameRank == 1); if (playerHasAWin) { return result; } //TODO how to combine this into a single query with the previous query? var numberOfGamesWithoutWinning = DataContext .GetQueryable<PlayerGameResult>() .Where(y => y.PlayerId == playerId) .Select(pg => pg.PlayedGameId); result.PlayerProgress = numberOfGamesWithoutWinning.Count(); result.RelatedEntities = numberOfGamesWithoutWinning.ToList(); if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return result; } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var allPlayedGameIdsWherePlayerRankedSecond = DataContext .GetQueryable <PlayerGameResult>() .Where(x => x.PlayerId == playerId && x.GameRank == 2 && x.PointsScored != null) .Select(x => x.PlayedGameId) .ToList(); var gamesWherePlayerRankedSecondRankTwo = DataContext .GetQueryable <PlayerGameResult>() .Where(x => x.PlayerId == playerId && x.GameRank == 2 && x.PointsScored != null) .Select(x => new GameScores() { PlayedGameId = x.PlayedGameId, GameRank = x.GameRank, PointsScored = x.PointsScored }) .ToList(); var gamesWherePlayerRankedSecondRankOne = DataContext .GetQueryable <PlayerGameResult>() .Where(x => allPlayedGameIdsWherePlayerRankedSecond.Contains(x.PlayedGameId) && x.GameRank == 1 && x.PointsScored != null) .Select(x => new GameScores() { PlayedGameId = x.PlayedGameId, GameRank = x.GameRank, PointsScored = x.PointsScored }) .ToList(); var combinedList = from rankOne in gamesWherePlayerRankedSecondRankOne join rankTwo in gamesWherePlayerRankedSecondRankTwo on rankOne.PlayedGameId equals rankTwo.PlayedGameId where (rankOne.PointsScored - rankTwo.PointsScored.Value) == 1 select rankOne.PlayedGameId; result.PlayerProgress = combinedList.Count(); result.RelatedEntities = combinedList.ToList(); if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return(result); } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; if (this.Winners.Value.Any(w => w.PlayerId == playerId)) { result.PlayerProgress = 1; result.LevelAwarded = AchievementLevel.Gold; } return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; if (this.Winners.Value.Any(w => w.PlayerId == playerId)) { result.PlayerProgress = 1; result.LevelAwarded = AchievementLevel.Gold; } return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var thisPlayerEarnedTheAchievement = DataContext.GetQueryable <PlayerAchievement>().Any(x => x.PlayerId == playerId && x.AchievementId == AchievementId.Collaborator); if (thisPlayerEarnedTheAchievement) { result.PlayerProgress = 1; result.LevelAwarded = AchievementLevel.Gold; } return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var allPlayedGameIdsWherePlayerRankedSecond = DataContext .GetQueryable<PlayerGameResult>() .Where(x => x.PlayerId == playerId && x.GameRank == 2 && x.PointsScored != null) .Select(x => x.PlayedGameId) .ToList(); var gamesWherePlayerRankedSecondRankTwo = DataContext .GetQueryable<PlayerGameResult>() .Where(x => x.PlayerId == playerId && x.GameRank == 2 && x.PointsScored != null) .Select(x => new GameScores() { PlayedGameId = x.PlayedGameId, GameRank = x.GameRank, PointsScored = x.PointsScored } ) .ToList(); var gamesWherePlayerRankedSecondRankOne = DataContext .GetQueryable<PlayerGameResult>() .Where(x => allPlayedGameIdsWherePlayerRankedSecond.Contains(x.PlayedGameId) && x.GameRank == 1 && x.PointsScored != null ) .Select(x => new GameScores() { PlayedGameId = x.PlayedGameId, GameRank = x.GameRank, PointsScored = x.PointsScored }) .ToList(); var combinedList = from rankOne in gamesWherePlayerRankedSecondRankOne join rankTwo in gamesWherePlayerRankedSecondRankTwo on rankOne.PlayedGameId equals rankTwo.PlayedGameId where (rankOne.PointsScored - rankTwo.PointsScored.Value) == 1 select rankOne.PlayedGameId; result.PlayerProgress = combinedList.Count(); result.RelatedEntities = combinedList.ToList(); if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return result; } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var allWeightedGames = DataContext .GetQueryable<PlayerGameResult>() .Where(x => x.PlayerId == playerId) .GroupBy(x => new { WeightTier = x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.AverageWeight < WeightTierCalculator.BOARD_GAME_GEEK_WEIGHT_INCLUSIVE_LOWER_BOUND_FOR_EASY ? WeightTierEnum.Casual : x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.AverageWeight < WeightTierCalculator.BOARD_GAME_GEEK_WEIGHT_INCLUSIVE_LOWER_BOUND_FOR_ADVANCED ? WeightTierEnum.Easy : x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.AverageWeight < WeightTierCalculator.BOARD_GAME_GEEK_WEIGHT_INCLUSIVE_LOWER_BOUND_FOR_CHALLENGING ? WeightTierEnum.Challenging : x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.AverageWeight < WeightTierCalculator.BOARD_GAME_GEEK_WEIGHT_INCLUSIVE_LOWER_BOUND_FOR_HARDCORE ? WeightTierEnum.Advanced : WeightTierEnum.Hardcore }) .Select(group => new { group.Key, Count = group.Count() }) .ToList(); var noUnknownGames = (from item in allWeightedGames where item.Key.WeightTier != WeightTierEnum.Unknown select item).ToList(); if (noUnknownGames.Count() == 5) { result.PlayerProgress = noUnknownGames.Min(p => p.Count); } else { return result; } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var allWeightedGames = DataContext .GetQueryable <PlayerGameResult>() .Where(x => x.PlayerId == playerId) .GroupBy(x => new { WeightTier = x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.AverageWeight < WeightTierCalculator.BOARD_GAME_GEEK_WEIGHT_INCLUSIVE_LOWER_BOUND_FOR_EASY ? WeightTierEnum.Casual : x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.AverageWeight < WeightTierCalculator.BOARD_GAME_GEEK_WEIGHT_INCLUSIVE_LOWER_BOUND_FOR_ADVANCED ? WeightTierEnum.Easy : x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.AverageWeight < WeightTierCalculator.BOARD_GAME_GEEK_WEIGHT_INCLUSIVE_LOWER_BOUND_FOR_CHALLENGING ? WeightTierEnum.Challenging : x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.AverageWeight < WeightTierCalculator.BOARD_GAME_GEEK_WEIGHT_INCLUSIVE_LOWER_BOUND_FOR_HARDCORE ? WeightTierEnum.Advanced : WeightTierEnum.Hardcore }) .Select(group => new { group.Key, Count = group.Count() }) .ToList(); var noUnknownGames = (from item in allWeightedGames where item.Key.WeightTier != WeightTierEnum.Unknown select item).ToList(); if (noUnknownGames.Count() == 5) { result.PlayerProgress = noUnknownGames.Min(p => p.Count); } else { return(result); } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var longestWinStreak = _entityFrameworkPlayerRepository.GetLongestWinningStreak(playerId, DataContext); result.PlayerProgress = longestWinStreak; if (longestWinStreak < LevelThresholds[AchievementLevel.Bronze]) { return(result); } result.LevelAwarded = GetLevelAwarded(longestWinStreak); return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var longestWinStreak = _entityFrameworkPlayerRepository.GetLongestWinningStreak(playerId); result.PlayerProgress = longestWinStreak; if (longestWinStreak < LevelThresholds[AchievementLevel.Bronze]) { return result; } result.LevelAwarded = GetLevelAwarded(longestWinStreak); return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var gamesForUsurperAchievement = _championRepository.GetUsurperAchievementData(playerId); result.RelatedEntities = gamesForUsurperAchievement; result.PlayerProgress = gamesForUsurperAchievement.Count; if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return(result); } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var player = DataContext.GetQueryable<Player>().FirstOrDefault(p => p.Id == playerId); var result = new AchievementAwarded { AchievementId = Id }; if (player != null) { var nemePointsDictionary = (from playerGameResult in DataContext.GetQueryable<PlayerGameResult>() where playerGameResult.PlayedGame.GamingGroupId == player.GamingGroupId group playerGameResult by playerGameResult.PlayerId into groupedResults select new { BasePoints = groupedResults.Sum(x => x.NemeStatsPointsAwarded), GameDurationBonusPoints = groupedResults.Sum(x => x.GameDurationBonusPoints), WeightBonusPoints = groupedResults.Sum(x => x.GameWeightBonusPoints), PlayerId = groupedResults.Key }).ToDictionary(key => key.PlayerId, value => new NemePointsSummary(value.BasePoints, value.GameDurationBonusPoints, value.WeightBonusPoints)) .OrderByDescending(r => r.Value.TotalPoints); if (nemePointsDictionary.First().Key == player.Id && nemePointsDictionary.First().Value.TotalPoints >= MinNemePointsToUnlock) { result.LevelAwarded = LevelThresholds.First().Key; result.PlayerProgress = 1; } } return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = this.Id }; var differentPlayedGames = DataContext.GetQueryable <PlayerGameResult>() .Where(pgr => pgr.PlayerId == playerId) .Select(pgr => pgr.PlayedGame.GameDefinition.Id) .Distinct() .ToList(); if (differentPlayedGames.Any()) { var count = differentPlayedGames.Count; result.PlayerProgress = count; result.LevelAwarded = GetLevelAwarded(count); result.RelatedEntities = differentPlayedGames.ToList(); } return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var allWeightedGames = DataContext .GetQueryable <PlayerGameResult>() .Where(x => x.PlayerId == playerId) .GroupBy(x => new { // World's best change WeightTier = WeightTierCalculator.GetTheRealWeightTier(x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.AverageWeight) }) .Select(group => new { group.Key, Count = group.Count() }) .ToList(); var noUnknownGames = (from item in allWeightedGames where item.Key.WeightTier != WeightTierEnum.Unknown select item).ToList(); if (noUnknownGames.Count == 5) { result.PlayerProgress = noUnknownGames.Min(p => p.Count); } else { return(result); } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var allPlayedGamesWithCategories = DataContext .GetQueryable <PlayerGameResult>() .Where(x => x.PlayerId == playerId) .Select(x => x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.Categories) .Where(y => y.Count != 0) .ToList(); // Brute forced, could not figure out LINQ query for this. Probably needs cleaning up. List <string> finalCategoryList = new List <string>(); foreach (var subList in allPlayedGamesWithCategories) { foreach (var subSubList in subList) { finalCategoryList.Add(subSubList.CategoryName); } } result.PlayerProgress = finalCategoryList.Distinct().Count(); //result.RelatedEntities = allPlayedCategories.ToList(); if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return(result); } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var player = DataContext.GetQueryable <Player>().FirstOrDefault(p => p.Id == playerId); var result = new AchievementAwarded { AchievementId = Id }; if (player != null) { var nemePointsDictionary = (from playerGameResult in DataContext.GetQueryable <PlayerGameResult>() where playerGameResult.PlayedGame.GamingGroupId == player.GamingGroupId group playerGameResult by playerGameResult.PlayerId into groupedResults select new { BasePoints = groupedResults.Sum(x => x.NemeStatsPointsAwarded), GameDurationBonusPoints = groupedResults.Sum(x => x.GameDurationBonusPoints), WeightBonusPoints = groupedResults.Sum(x => x.GameWeightBonusPoints), PlayerId = groupedResults.Key }).ToDictionary(key => key.PlayerId, value => new NemePointsSummary(value.BasePoints, value.GameDurationBonusPoints, value.WeightBonusPoints)) .OrderByDescending(r => r.Value.TotalPoints); if (nemePointsDictionary.First().Key == player.Id && nemePointsDictionary.First().Value.TotalPoints >= MinNemePointsToUnlock) { result.LevelAwarded = LevelThresholds.First().Key; result.PlayerProgress = 1; } } return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = this.Id }; var championedGames = DataContext.GetQueryable <Champion>() .Where(c => c.PlayerId == playerId) .Select(c => c.GameDefinitionId) .Distinct() .ToList(); if (championedGames.Any()) { var count = championedGames.Count; result.LevelAwarded = GetLevelAwarded(count); result.PlayerProgress = count; result.RelatedEntities = championedGames.ToList(); } return(result); }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = this.Id }; var differentPlayedGames = DataContext.GetQueryable<PlayerGameResult>() .Where(pgr => pgr.PlayerId == playerId) .Select(pgr => pgr.PlayedGame.GameDefinition.Id) .Distinct() .ToList(); if (differentPlayedGames.Any()) { var count = differentPlayedGames.Count; result.PlayerProgress = count; result.LevelAwarded = GetLevelAwarded(count); result.RelatedEntities = differentPlayedGames.ToList(); } return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = Id }; var allPlayedGamesWithCategories = DataContext .GetQueryable<PlayerGameResult>() .Where(x => x.PlayerId == playerId) .Select(x => x.PlayedGame.GameDefinition.BoardGameGeekGameDefinition.Categories) .Where(y => y.Count != 0) .ToList(); // Brute forced, could not figure out LINQ query for this. Probably needs cleaning up. List<string> finalCategoryList = new List<string>(); foreach (var subList in allPlayedGamesWithCategories) { foreach (var subSubList in subList) { finalCategoryList.Add(subSubList.CategoryName); } } result.PlayerProgress = finalCategoryList.Distinct().Count(); //result.RelatedEntities = allPlayedCategories.ToList(); if (result.PlayerProgress < LevelThresholds[AchievementLevel.Bronze]) { return result; } result.LevelAwarded = GetLevelAwarded(result.PlayerProgress); return result; }
public override AchievementAwarded IsAwardedForThisPlayer(int playerId) { var result = new AchievementAwarded { AchievementId = this.Id }; var championedGames = DataContext.GetQueryable<Champion>() .Where(c => c.PlayerId == playerId) .Select(c => c.GameDefinitionId) .Distinct() .ToList(); if (championedGames.Any()) { var count = championedGames.Count; result.LevelAwarded = GetLevelAwarded(count); result.PlayerProgress = count; result.RelatedEntities = championedGames.ToList(); } return result; }