private static IQueryable <Team> GetOrderByQuery(IQueryable <Team> teamQuery, GetTeamNavigationPaginatedQuery paginationQuery) { if (paginationQuery.NameOrder == OrderEnum.Asc) { return(teamQuery.OrderBy(t => t.Name)); } return(teamQuery.OrderByDescending(t => t.Name)); }
private static Expression <Func <Team, bool> > ToPredicate(GetTeamNavigationPaginatedQuery query) { return(team => !team.IsDeleted && (query.TournamentFilter == null || team.Participations.Any(p => !p.Deactivated && !p.Tournament.IsDeleted && p.Tournament.IsPublished && p.Tournament.Id == query.TournamentFilter)) && (query.MemberIdFilter == null || team.UserTeams.Any(uT => uT.LeaveDate == null && !uT.User.IsDeleted && uT.User.Id == query.MemberIdFilter)) && (query.NameFilter == null || team.Name.Contains(query.NameFilter))); }
public async Task <IPagedList <TeamNavigation> > GetAllTeamNavigationPaginated( GetTeamNavigationPaginatedQuery paginationQuery) { var query = GetTeamIncludeQueryable() .Where(ToPredicate(paginationQuery)); if (paginationQuery.NameOrder != null) { query = GetOrderByQuery(query, paginationQuery); } return(await query.Select(t => ToTeamNavigation(t)) .FromPaginationQueryAsync(paginationQuery)); }
public async Task <IActionResult> GetTeams([FromQuery] GetTeamNavigationPaginatedQuery query) { var teams = await Mediator.Send(query); var teamsWithLinks = teams.Select(team => new HateoasResponse <TeamNavigation>(team, GetLinksForTeam(team.Id))); return(Ok(HateoasResponseBuilder.FromPagedList( Url, teams.ToPagedListResume(), teamsWithLinks.ToList(), nameof(GetTeams)) )); }