public async Task <Paged <AdDto> > HandleAsync(BrowseAds query) { var ads = _database.GetCollection <Ad>("ads") .AsQueryable(); if (query.UserId.HasValue) { ads = ads.Where(x => x.UserId == query.UserId); } var result = await ads .OrderByDescending(x => x.CreatedAt) .PaginateAsync(query); return(new Paged <AdDto> { CurrentPage = result.CurrentPage, TotalPages = result.TotalPages, TotalResults = result.TotalResults, ResultsPerPage = result.ResultsPerPage, Items = result.Items.Select(ad => new AdDto { Id = ad.Id, UserId = ad.UserId, Header = ad.Header, Tags = ad.Tags, State = ad.State.ToString().ToLowerInvariant(), From = ad.From, To = ad.To, CreatedAt = ad.CreatedAt }) }); }
public async Task <ActionResult <Paged <AdDto> > > Get([FromQuery] BrowseAds query) { var result = await _dispatcher.QueryAsync(query); return(Ok(result)); }