public async Task <IPagedList <LeaderBoardTeamNavigation> > GetAllLeaderBoardTeamNavigationPaginated( GetLeaderBoardTeamsPaginatedQuery query) { var teams = await GetTeamIncludeQueryable() .Where(ToPredicate(query)) .Select(t => ToTeamLeaderBoardNavigation(t, query.TournamentIdFilter)) .ToListAsync(); return(GetOrderByQuery(teams, query).FromEnumerable(query)); }
private static IEnumerable <LeaderBoardTeamNavigation> GetOrderByQuery( IEnumerable <LeaderBoardTeamNavigation> teamQuery, GetLeaderBoardTeamsPaginatedQuery paginationQuery) { if (paginationQuery.ScoreOrder == OrderEnum.Asc) { return(teamQuery.OrderBy(t => t.Score)); } return(teamQuery.OrderByDescending(t => t.Score)); }
private static Expression <Func <Team, bool> > ToPredicate(GetLeaderBoardTeamsPaginatedQuery query) { return(team => !team.IsDeleted && (query.TournamentIdFilter == null || team.Participations.Any(p => !p.Deactivated && !p.Tournament.IsDeleted && p.Tournament.IsPublished && p.Tournament.Id == query.TournamentIdFilter)) && (query.HasFinishedFilter == null || query.HasFinishedFilter.Value == team.Participations.Any(p => !p.Deactivated && p.EndDate != null && p.Step.Id == p.Tournament.TournamentSteps.OrderByDescending(t => t.Order).First().StepId ))); }