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));
        }
Example #3
0
        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));
 }