public async Task <IEnumerable <Book> > GetBooksByCountAsync(GetBooksByPageSizeRequestModel requestModel) { var queryable = _dataContext.Books.AsQueryable(); var filterByTitle = requestModel.FilterOn.Any(x => x.Contains("Title")); var filterByDescription = requestModel.FilterOn.Any(x => x.Contains("Description")); var filteredData = queryable.Where(x => (filterByTitle ? x.Title.Contains(requestModel.FilterBy) : true) && (filterByDescription ? x.ShortDescr.Contains(requestModel.FilterBy) : true)); return(await filteredData.OrderBy(on => on.Title) .Skip((requestModel.PageNumber - 1) * requestModel.PageSize) .Take(requestModel.PageSize) .ToListAsync()); }
public async Task <IActionResult> GetAll() { _logger.LogInformation("Get all books"); //var books = await _bookService.GetBooksAsync(); var requestModel = new GetBooksByPageSizeRequestModel { PageNumber = 1, PageSize = 10 }; var books = await _bookService.GetBooksByCountAsync(requestModel); var bookResponse = _mapper.Map <List <BookResponse> >(books); return(Ok(bookResponse)); }
public async Task GetBooksByPageSizeTest() { // Arrange _mockBookService.Setup(b => b.GetBooksByCountAsync(It.IsAny <GetBooksByPageSizeRequestModel>())).Returns(Task.FromResult(It.IsAny <IEnumerable <Domain.Book> >())); var sut = new BooksController(_mockLogger.Object, _mockBookService.Object, _mockMapper.Object); // Act var requestModel = new GetBooksByPageSizeRequestModel { PageSize = 10, PageNumber = 1 }; var result = await sut.GetBooksByPageSize(requestModel); _mockBookService.Verify(s => s.GetBooksByCountAsync(It.IsAny <GetBooksByPageSizeRequestModel>()), Times.Once, "Expected GetBooksAsync to have been called once"); }
public async Task <IActionResult> GetBooksByPageSize(GetBooksByPageSizeRequestModel requestModel) { _logger.LogInformation("Get all books"); var books = await _bookService.GetBooksByCountAsync(requestModel); var bookResponse = _mapper.Map <List <BookResponse> >(books); var totalNumberOfBooks = await _bookService.GetTotalNumberOfBooks(); var getBooksResponse = new GetBooksResponseModel { BookResponses = bookResponse, TotalNumberOfBooks = totalNumberOfBooks }; return(Ok(getBooksResponse)); }