public SearchResponse <User_BookReponseModel> SearchForBooksAsNonAdmin(SearchBookRequestModel model, int page, int size) { var availableBooks = this._bookRepo.Find(x => x.IsAvailable); availableBooks = searchForBook(model, availableBooks); var response = new SearchResponse <User_BookReponseModel> { Page = page, TotalCount = availableBooks.Count() }; response.Result = availableBooks.ToList().Skip((response.Page - 1) * size).Take(size).Select(x => x.ToUserModel()); return(response); }
private static IQueryable <Book> searchForBook(SearchBookRequestModel model, IQueryable <Book> availableBooks) { if (!string.IsNullOrWhiteSpace(model.ISBN)) { availableBooks = availableBooks.Where(x => x.ISBN.ToLower() == model.ISBN.ToLower()); } if (!string.IsNullOrWhiteSpace(model.Title)) { availableBooks = availableBooks.Where(x => x.Title.ToLower().Contains(model.Title.ToLower())); } if (!string.IsNullOrWhiteSpace(model.Author)) { availableBooks = availableBooks.Where(x => x.Author.ToLower().Contains(model.Author.ToLower())); } return(availableBooks); }
public IActionResult GetAllAvailableBooks([FromQuery] SearchBookRequestModel model, int page = 1, int size = 10) { try { page = page > 0 ? page : 1; size = size > 0 ? size : 20; var books = this._bookService.SearchForBooksAsNonAdmin(model, page, size); return(Ok(books)); } catch (ArgumentException ex) { return(BadRequest(ex.Message)); } catch (Exception ex) { // log exception return(StatusCode(500, Constants.ServerErrorMessageText)); } }