public async Task<IEnumerable<object>> GetAllAsync(BookQueryParamsDto queryParams)
        {
            var query = _bookRepo.GetAll()
                                 .Where(b => queryParams.IsAvailable == null ||
                                             b.IsAvailable == queryParams.IsAvailable)
                                 .Where(b => queryParams.Author == null || b.Author.Name.Contains(queryParams.Author))
                                 .Where(b => queryParams.Genre == null || b.Genre.Name.Contains(queryParams.Genre))
                                 .Where(b => queryParams.Year == null || b.YearOfPublishing == queryParams.Year)
                                 .ProjectTo<BookReadDto>(_mapper.ConfigurationProvider)
                                 .OrderByDynamic(queryParams.PropertyNameToOrder, queryParams.Ascending);
            
            if (!string.IsNullOrEmpty(queryParams.PropertyNameToGroup))
            {
                return (await query
                       .ToListAsync())
                       .GroupByDynamic(queryParams.PropertyNameToGroup);
            }

            return await query.ToListAsync();
        }
Exemplo n.º 2
0
 public async Task <ActionResult <IEnumerable <object> > > GetAll([FromQuery] BookQueryParamsDto queryParams)
 {
     return(Ok(await _bookService.GetAllAsync(queryParams)));
 }