private static IQueryable <Participation> GetOrderByQuery(IQueryable <Participation> participationQuery, GetAllParticipationNavigationPaginatedQuery paginationQuery) { if (paginationQuery.EndDateOrder == OrderEnum.Asc) { return(participationQuery.OrderBy(t => t.EndDate)); } return(participationQuery.OrderByDescending(t => t.EndDate)); }
public async Task <IPagedList <ParticipationNavigation> > GetAllParticipationNavigationPaginated( GetAllParticipationNavigationPaginatedQuery paginationQuery) { var query = GetParticipationIncludeQueryable() .Where(ToPredicate(paginationQuery)); if (paginationQuery.EndDateOrder is not null) { query = GetOrderByQuery(query, paginationQuery); } return(await query .Select(p => ToParticipationNavigation(p)) .FromPaginationQueryAsync(paginationQuery)); }
public async Task <IActionResult> GetParticipations( [FromQuery] GetAllParticipationNavigationPaginatedQuery query) { var participations = await Mediator.Send(query); var participationsWithLinks = participations.Select(participation => new HateoasResponse <ParticipationNavigation>(participation, GetLinksForParticipation(participation.Id))); return(Ok(HateoasResponseBuilder.FromPagedList( Url, participations.ToPagedListResume(), participationsWithLinks.ToList(), nameof(GetParticipations)) )); }
private static Expression <Func <Participation, bool> > ToPredicate( GetAllParticipationNavigationPaginatedQuery query) { return(participation => !participation.Deactivated && (query.EndTournamentStepFilter == null || !participation.Step.IsDeleted && participation.EndDate != null && participation.Tournament.IsPublished && !participation.Tournament.IsDeleted && participation.Step.TournamentSteps .Any(tournamentStep => tournamentStep.TournamentId == participation.Tournament.Id && tournamentStep.Step.Id == participation.Step.Id && tournamentStep.Order == participation.Tournament.TournamentSteps .Max(tS => tS.Order) ) ) && (query.TeamIdFilter == null || !participation.Team.IsDeleted && query.TeamIdFilter == participation.Team.Id) && (query.TournamentIdFilter == null || !participation.Tournament.IsDeleted && participation.Tournament.IsPublished && query.TournamentIdFilter == participation.Tournament.Id) && (query.StepIdFilter == null || !participation.Step.IsDeleted && query.StepIdFilter == participation.Step.Id)); }