BusinessLogic.Logic.Achievements.YouveGotHeartAchievement.IsAwardedForThisPlayer C# (CSharp) Метод

IsAwardedForThisPlayer() публичный Метод

public IsAwardedForThisPlayer ( int playerId ) : AchievementAwarded
playerId int
Результат AchievementAwarded
        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;
        }
    }