Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 public IActionResult Get([FromQuery] BooksSearchModel searchModel)
 {
     return(Ok(_bookQueries.GetAll(searchModel)));
 }