Пример #1
0
 private static IQueryable <Tournament> GetOrderByQuery(IQueryable <Tournament> tournamentQuery,
                                                        GetTournamentNavigationPaginatedQuery paginationQuery)
 {
     if (paginationQuery.NameOrder == OrderEnum.Asc)
     {
         return(tournamentQuery.OrderBy(t => t.Name));
     }
     return(tournamentQuery.OrderByDescending(t => t.Name));
 }
Пример #2
0
        public async Task <IActionResult> GetTournaments([FromQuery] GetTournamentNavigationPaginatedQuery query)
        {
            var tournaments = await Mediator.Send(query);

            var tournamentsWithLinks = tournaments.Select(tournament =>
                                                          new HateoasResponse <TournamentNavigation>(tournament, GetLinksForTournament(tournament.Id)));

            return(Ok(HateoasResponseBuilder.FromPagedList(
                          Url,
                          tournaments.ToPagedListResume(),
                          tournamentsWithLinks.ToList(),
                          nameof(GetTournaments))
                      ));
        }
Пример #3
0
 private static Expression <Func <Tournament, bool> > ToPredicate(GetTournamentNavigationPaginatedQuery query)
 {
     return(tournament =>
            !tournament.IsDeleted &&
            (query.TeamId == null || tournament.Participations.Any(p =>
                                                                   !p.Deactivated && p.Team.Id == query.TeamId && !p.Team.IsDeleted && !p.Step.IsDeleted)) &&
            (query.IsPublishedFilter == null || tournament.IsPublished == query.IsPublishedFilter) &&
            (query.ParticipantIdFilter == null || tournament.Participations.Any(p =>
                                                                                !p.Deactivated && !p.Team.IsDeleted && p.Team.UserTeams.Any(uT =>
                                                                                                                                            uT.LeaveDate == null && !uT.User.IsDeleted && uT.User.Id == query.ParticipantIdFilter))) &&
            (query.LanguageIdFilter == null || tournament.TournamentSteps.Any(tS =>
                                                                              !tS.Step.IsDeleted && tS.Step.ProgrammingLanguage.Id == query.LanguageIdFilter)) &&
            (query.NameFilter == null || tournament.Name.Contains(query.NameFilter)));
 }
Пример #4
0
        public async Task <IPagedList <TournamentNavigation> > GetAllTournamentNavigationPaginated(
            GetTournamentNavigationPaginatedQuery paginationQuery)
        {
            var query = GetTournamentIncludeQueryable()
                        .ThenInclude(s => s.ProgrammingLanguage)
                        .Include(t => t.Participations)
                        .ThenInclude <Tournament, Participation, Team>(p => p.Team)
                        .ThenInclude(t => t.UserTeams)
                        .ThenInclude <Tournament, UserTeam, User>(uT => uT.User)
                        .Where(ToPredicate(paginationQuery));

            query = GetOrderByQuery(query, paginationQuery);
            return(await query
                   .Select(t => ToTournamentNavigation(t))
                   .FromPaginationQueryAsync(paginationQuery));
        }