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;
}
}