BusinessLogic.Logic.Players.PlayerRetriever.GetPlayersToCreate C# (CSharp) Метод

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

public GetPlayersToCreate ( string currentUserId, int currentGamingGroupId ) : PlayersToCreateModel
currentUserId string
currentGamingGroupId int
Результат BusinessLogic.Models.Players.PlayersToCreateModel
        public PlayersToCreateModel GetPlayersToCreate(string currentUserId, int currentGamingGroupId)
        {
            var currentUserPlayer = dataContext.GetQueryable<Player>().FirstOrDefault(p => p.ApplicationUserId == currentUserId && p.GamingGroupId == currentGamingGroupId);

            var recentPlayersQuery = GetPlayersToCreateQueryable(currentUserPlayer, currentGamingGroupId)
                .OrderByDescending(
                    p => p.PlayerGameResults
                        .Select(pgr => pgr.PlayedGame.DatePlayed)
                        .OrderByDescending(d => d)
                        .FirstOrDefault())
                .ThenBy(p => p.Name)
                .Take(5);

            var otherPlayersQuery = GetPlayersToCreateQueryable(currentUserPlayer,currentGamingGroupId)
                .Where(p => recentPlayersQuery.All(rp => rp.Id != p.Id))
                .OrderBy(p => p.Name);

            var result = new PlayersToCreateModel
            {
                UserPlayer = GetPlayerInfoForUser(currentUserPlayer),
                OtherPlayers = otherPlayersQuery.Select(GetPlayerInfoForUser).ToList(),
                RecentPlayers = recentPlayersQuery.Select(GetPlayerInfoForUser).ToList()

            };

            return result;
        }