public async Task <ActionResult <ReadBookDto> > Put(int id, [FromBody] CreateBookDto updateBookDto) { var validator = new CreateBookDtoValidator(); var validationResult = await validator.ValidateAsync(updateBookDto); var requestIsInvalid = id == 0 || !validationResult.IsValid; if (requestIsInvalid) { return(BadRequest(validationResult.Errors)); // this needs refining, but for demo it is ok } var bookToBeUpdate = await _bookService.GetBookById(id); if (bookToBeUpdate == null) { return(NotFound()); } var book = _mapper.Map <CreateBookDto, Book>(updateBookDto); await _bookService.UpdateBook(bookToBeUpdate, book); var updatedBook = await _bookService.GetBookById(id); var updatedBookDto = _mapper.Map <Book, ReadBookDto>(updatedBook); return(Ok(updatedBookDto)); }
public async Task <ActionResult <ReadBookDto> > PostAsync([FromBody] CreateBookDto createBookDto) { var validator = new CreateBookDtoValidator(); var validationResult = await validator.ValidateAsync(createBookDto); if (!validationResult.IsValid) { return(BadRequest(validationResult.Errors)); // this needs refining, but for demo it is ok } var bookToCreate = _mapper.Map <CreateBookDto, Book>(createBookDto); var newBook = await _bookService.CreateBook(bookToCreate); var book = await _bookService.GetBookById(newBook.Id); var musicResource = _mapper.Map <Book, ReadBookDto>(book); return(Ok(musicResource)); }