public IActionResult GetBooksList(BookFilterViewModel viewModel) { try { return(Ok(_contract.GetBooksList(viewModel))); } catch (Exception ex) { return(InternalServerError(ex.Message)); } }
public async Task <ActionResult <BookFilterViewModel> > Index([FromQuery] int?pageNumber, int?genreId, int?pageSize) { var bookParams = new BookParams { PageNumber = pageNumber ?? 1, PageSize = pageSize ?? Convert.ToInt32(_config.GetValue <string>("BookPagination:PageSize")), GenreId = genreId ?? 0 }; var bookFilterViewModel = new BookFilterViewModel { Books = await _unitOfWork.Books.GetBooksWithGenresAsync(bookParams), Genres = _unitOfWork.Genres.GetAll() }; return(View(bookFilterViewModel)); }
private string BuildWhereClause(BookFilterViewModel viewModel) { var whereClauseBuilder = new StringBuilder(); if (!string.IsNullOrEmpty(viewModel.Category)) { whereClauseBuilder.Append($@" Book_Category.category_title = '{viewModel.Category}'"); } if (!string.IsNullOrEmpty(viewModel.Author)) { if (!string.IsNullOrEmpty(whereClauseBuilder.ToString())) { whereClauseBuilder.Append(" AND "); } whereClauseBuilder.Append($@"Author.lastname LIKE '%{viewModel.Author}%'"); } return(whereClauseBuilder.ToString()); }
internal List <BookDTO> GetBooksList(BookFilterViewModel viewModel) { var whereClauseBuilder = BuildWhereClause(viewModel); if (!string.IsNullOrEmpty(whereClauseBuilder)) { whereClauseBuilder = $" WHERE {whereClauseBuilder}"; } string query = $@"SELECT * FROM Book JOIN Book_Category USING(category_id) JOIN Author USING(author_id) {whereClauseBuilder}"; List <BookDTO> dtos; using (var dataSource = DataSource) { dataSource.Open(); var queryResult = QueryDataSource(query, dataSource); dtos = _adapter.ToBookDTOList(queryResult); dataSource.Close(); } return(dtos); }