public async Task <PagedResults <Event> > GetEventsByMeetAsync( int meetId, PagingOptions pagingOptions, SortOptions <Event, EventEntity> sortOptions, SearchOptions <Event, EventEntity> searchOptions, CancellationToken ct) { IQueryable <EventEntity> query = _context.Events .Where(r => r.meetId == meetId); query = searchOptions.Apply(query); query = sortOptions.Apply(query); var size = await query.CountAsync(ct); var items = await query .Skip(pagingOptions.Offset.Value) .Take(pagingOptions.Limit.Value) .ProjectTo <Event>() .ToArrayAsync(ct); BarHeightsProcessor bhp = new BarHeightsProcessor(_context, meetId); foreach (var evt in items) { evt.Params = await _paramsProcessor .GetParameters(evt.eventId, ct); if (evt.Params.EventType[0] == 'V') { evt.BarHeights = await bhp.GetHeights(evt.eventId, ct); } } return(new PagedResults <Event> { Items = items, TotalSize = size, }); }
public async Task <Collection <Event> > GetEventsByAthleteAsync( int athleteId, SortOptions <Event, EventEntity> sortOptions, SearchOptions <Event, EventEntity> searchOptions, CancellationToken ct) { var entries = _context.EventEntries.Where(r => r.athleteId == athleteId) .Select(r => r.eventId); IQueryable <EventEntity> query = _context.Events.Where(e => entries.Contains(e.eventId)); query = searchOptions.Apply(query); query = sortOptions.Apply(query); var items = await query .ProjectTo <Event>() .ToArrayAsync(ct); BarHeightsProcessor bhp = new BarHeightsProcessor( _context, items[0].meetId); foreach (var evt in items) { evt.Params = await _paramsProcessor .GetParameters(evt.eventId, ct); if (evt.Params.EventType[0] == 'V') { evt.BarHeights = await bhp.GetHeights(evt.eventId, ct); } } return(new Collection <Event> { Value = items }); }