Skip to content
Snippets Groups Projects
Commit 9e599913 authored by Tomáš Zaťko's avatar Tomáš Zaťko
Browse files

Merge branch 'fix/fixed-book-controller-endpoint' into 'milestone-1'

fix: fixed BookController endpoints

See merge request !28
parents 35c6e4b4 3686be8e
No related branches found
No related tags found
2 merge requests!31Milestone 1,!28fix: fixed BookController endpoints
...@@ -53,14 +53,28 @@ namespace WebAPI.Controllers ...@@ -53,14 +53,28 @@ namespace WebAPI.Controllers
[Route("{id}")] [Route("{id}")]
public async Task<IActionResult> GetBook(int 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) 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] [HttpPost]
...@@ -84,12 +98,11 @@ namespace WebAPI.Controllers ...@@ -84,12 +98,11 @@ namespace WebAPI.Controllers
AuthorId = model.AuthorId AuthorId = model.AuthorId
}; };
_dbContext.Books _dbContext.Books.Add(new_book);
.Add(new_book);
await _dbContext.SaveChangesAsync(); await _dbContext.SaveChangesAsync();
return Ok(new_book); return Ok("New book added.");
} }
[HttpPut] [HttpPut]
...@@ -117,12 +130,11 @@ namespace WebAPI.Controllers ...@@ -117,12 +130,11 @@ namespace WebAPI.Controllers
book.Price = model.Price; book.Price = model.Price;
book.AuthorId = model.AuthorId; book.AuthorId = model.AuthorId;
_dbContext.Books _dbContext.Books.Update(book);
.Update(book);
await _dbContext.SaveChangesAsync(); await _dbContext.SaveChangesAsync();
return Ok(book); return Ok("Book updated.");
} }
[HttpDelete] [HttpDelete]
...@@ -141,17 +153,23 @@ namespace WebAPI.Controllers ...@@ -141,17 +153,23 @@ namespace WebAPI.Controllers
return BadRequest("Book was not found."); return BadRequest("Book was not found.");
} }
_dbContext.Books _dbContext.Books.Remove(book);
.Remove(book);
await _dbContext.SaveChangesAsync(); await _dbContext.SaveChangesAsync();
return Ok(); return Ok("Book was deleted.");
} }
[HttpGet] [HttpGet]
[Route("filter")] [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(); var query = _dbContext.Books.AsQueryable();
...@@ -185,6 +203,11 @@ namespace WebAPI.Controllers ...@@ -185,6 +203,11 @@ namespace WebAPI.Controllers
query = query.Where(book => book.AuthorId == authorId); query = query.Where(book => book.AuthorId == authorId);
} }
if (!string.IsNullOrWhiteSpace(publisher))
{
query = query.Where(book => book.Publisher.Contains(publisher));
}
var filteredBooks = await query.ToListAsync(); var filteredBooks = await query.ToListAsync();
if (!filteredBooks.Any()) if (!filteredBooks.Any())
......
...@@ -66,20 +66,6 @@ namespace WebAPI.Controllers ...@@ -66,20 +66,6 @@ namespace WebAPI.Controllers
return Ok(reviewDTO); 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] [HttpPost]
[Route("create")] [Route("create")]
public async Task<IActionResult> AddReview([FromBody] ReviewDTO reviewModel) public async Task<IActionResult> AddReview([FromBody] ReviewDTO reviewModel)
...@@ -123,5 +109,19 @@ namespace WebAPI.Controllers ...@@ -123,5 +109,19 @@ namespace WebAPI.Controllers
return Ok("Review updated."); 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.");
}
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment