예제 #1
0
        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
                })
            });
        }
예제 #2
0
        public async Task <ActionResult <Paged <AdDto> > > Get([FromQuery] BrowseAds query)
        {
            var result = await _dispatcher.QueryAsync(query);

            return(Ok(result));
        }