Spaces:
Sleeping
Sleeping
| using LibraryManagement.Shared.Models; | |
| using Microsoft.AspNetCore.Authorization; | |
| using Microsoft.AspNetCore.Mvc; | |
| namespace Backend.Features.Books | |
| { | |
| [] | |
| [] | |
| public class BookController : ControllerBase | |
| { | |
| private readonly IBookService _bookService; | |
| public BookController(IBookService bookService) | |
| { | |
| _bookService = bookService; | |
| } | |
| [] | |
| [] | |
| public async Task<ActionResult<IEnumerable<BookDto>>> GetBooks([FromQuery] int? categoryId = null) | |
| { | |
| var books = await _bookService.GetAllBooksAsync(categoryId); | |
| return Ok(books); | |
| } | |
| [] | |
| [] | |
| public async Task<ActionResult<BookDto>> GetBook(int id) | |
| { | |
| var book = await _bookService.GetBookByIdAsync(id); | |
| if (book == null) return NotFound(); | |
| return Ok(book); | |
| } | |
| [] | |
| [] | |
| public async Task<ActionResult<IEnumerable<BookDto>>> GetBooksByIds([FromQuery] string ids) | |
| { | |
| if (string.IsNullOrEmpty(ids)) return Ok(new List<BookDto>()); | |
| var idList = ids.Split(',').Select(int.Parse).ToList(); | |
| var books = await _bookService.GetBooksByIdsAsync(idList); | |
| return Ok(books); | |
| } | |
| [] | |
| [] | |
| public async Task<ActionResult<BookDto>> CreateBook([FromBody] BookCreateRequest request) | |
| { | |
| try | |
| { | |
| var book = await _bookService.CreateBookAsync(request); | |
| return CreatedAtAction(nameof(GetBook), new { id = book.Id }, book); | |
| } | |
| catch (Exception ex) | |
| { | |
| return BadRequest(new { message = ex.Message }); | |
| } | |
| } | |
| [] | |
| [] | |
| public async Task<ActionResult<BookDto>> UpdateBook(int id, [FromBody] BookUpdateRequest request) | |
| { | |
| var updatedBook = await _bookService.UpdateBookAsync(id, request); | |
| if (updatedBook == null) return NotFound(); | |
| return Ok(updatedBook); | |
| } | |
| [] | |
| [] | |
| public async Task<IActionResult> DeleteBook(int id) | |
| { | |
| var success = await _bookService.DeleteBookAsync(id); | |
| if (!success) return NotFound(); | |
| return NoContent(); | |
| } | |
| } | |
| } | |