diff --git a/WebAPI/Controllers/BookController.cs b/WebAPI/Controllers/BookController.cs index 7760da0992a6fddd17f321acaafda4b6eeb60edc..3066f57b4a5b525e5b4804cc8600edb712900824 100644 --- a/WebAPI/Controllers/BookController.cs +++ b/WebAPI/Controllers/BookController.cs @@ -53,14 +53,28 @@ namespace WebAPI.Controllers [Route("{id}")] public async Task<IActionResult> GetBook(int id) { - var book = await GetBookById(id); + var book = await _dbContext.Books + .AsNoTracking() + .FirstOrDefaultAsync(b => b.Id == id); if (book == null) { - return BadRequest("Book was not found."); + return NotFound("Book was not found."); } - return Ok(book); + var bookDTO = new BookDTO + { + Name = book.Name, + Genre = book.Genre, + Publisher = book.Publisher, + PublishYear = book.PublishYear, + Description = book.Description, + PageNumber = book.PageNumber, + Price = book.Price, + AuthorId = book.AuthorId + }; + + return Ok(bookDTO); } [HttpPost] @@ -84,12 +98,11 @@ namespace WebAPI.Controllers AuthorId = model.AuthorId }; - _dbContext.Books - .Add(new_book); + _dbContext.Books.Add(new_book); await _dbContext.SaveChangesAsync(); - return Ok(new_book); + return Ok("New book added."); } [HttpPut] @@ -117,12 +130,11 @@ namespace WebAPI.Controllers book.Price = model.Price; book.AuthorId = model.AuthorId; - _dbContext.Books - .Update(book); + _dbContext.Books.Update(book); await _dbContext.SaveChangesAsync(); - return Ok(book); + return Ok("Book updated."); } [HttpDelete] @@ -141,17 +153,23 @@ namespace WebAPI.Controllers return BadRequest("Book was not found."); } - _dbContext.Books - .Remove(book); + _dbContext.Books.Remove(book); await _dbContext.SaveChangesAsync(); - return Ok(); + return Ok("Book was deleted."); } [HttpGet] [Route("filter")] - public async Task<IActionResult> FilterBooks(string? name, string? description, decimal? minPrice, decimal? maxPrice, BookGenre? genre, int? authorId) + public async Task<IActionResult> FilterBooks( + string? name, + string? description, + decimal? minPrice, + decimal? maxPrice, + BookGenre? genre, + int? authorId, + string? publisher) { var query = _dbContext.Books.AsQueryable(); @@ -185,6 +203,11 @@ namespace WebAPI.Controllers query = query.Where(book => book.AuthorId == authorId); } + if (!string.IsNullOrWhiteSpace(publisher)) + { + query = query.Where(book => book.Publisher.Contains(publisher)); + } + var filteredBooks = await query.ToListAsync(); if (!filteredBooks.Any()) diff --git a/WebAPI/Controllers/ReviewController.cs b/WebAPI/Controllers/ReviewController.cs index 0f05d875bf789546c0551f4c13d905153098882a..9958f6ef142dea9bcadea5aa5e6a89abbaf05c04 100644 --- a/WebAPI/Controllers/ReviewController.cs +++ b/WebAPI/Controllers/ReviewController.cs @@ -66,20 +66,6 @@ namespace WebAPI.Controllers return Ok(reviewDTO); } - [HttpDelete] - [Route("{id}/delete")] - public async Task<IActionResult> DeleteReview(int id) - { - var review = await _dbContext.Reviews.FindAsync(id); - if (review == null) - return NotFound("Review not found."); - - _dbContext.Reviews.Remove(review); - await _dbContext.SaveChangesAsync(); - - return Ok("Review deleted."); - } - [HttpPost] [Route("create")] public async Task<IActionResult> AddReview([FromBody] ReviewDTO reviewModel) @@ -123,5 +109,19 @@ namespace WebAPI.Controllers return Ok("Review updated."); } + + [HttpDelete] + [Route("{id}/delete")] + public async Task<IActionResult> DeleteReview(int id) + { + var review = await _dbContext.Reviews.FindAsync(id); + if (review == null) + return NotFound("Review not found."); + + _dbContext.Reviews.Remove(review); + await _dbContext.SaveChangesAsync(); + + return Ok("Review deleted."); + } } }