public PagedResult <BookDto> GetAll(BooksSearchModel searchModel) { var query = _dataContext.Books .Include(p => p.BookAuthors) .ThenInclude(p => p.Author) .AsQueryable(); var binder = new SearchBinder <BooksSearchModel, Book>() .AddSearchMapping(p => p.Description, (book, sm) => book.Description.Contains(sm.Description, StringComparison.InvariantCultureIgnoreCase)) .AddSearchMapping(p => p.Title, (book, sm) => book.Title.Contains(sm.Title, StringComparison.InvariantCultureIgnoreCase)); query = binder .ApplySearch(query, searchModel) .OrderBy(searchModel); var totalItems = query.Count(); query = query.SkipAndTake(searchModel); var result = new PagedResult <BookDto> { ItemCount = totalItems, Items = query.Select(p => new BookDto { Id = p.Id, Title = p.Title, Description = p.Description, PublishDate = p.PublishDate, Authors = p.BookAuthors.Select(o => o.Author.Name).ToArray() }).ToArray() }; return(result); }
public IActionResult Get([FromQuery] BooksSearchModel searchModel) { return(Ok(_bookQueries.GetAll(searchModel))); }