public async Task <ActionResult <BookResource> > UpdateBook(int id, [FromBody] SaveBookResource saveBookResource) { var validator = new SaveBookResourceValidator(); var validationResult = await validator.ValidateAsync(saveBookResource); var requestIsInvalid = id == 0 || !validationResult.IsValid; if (requestIsInvalid) { return(BadRequest(validationResult.Errors)); } var bookToBeUpdate = await _bookService.GetBookById(id); if (bookToBeUpdate == null) { return(NotFound()); } var book = _mapper.Map <SaveBookResource, Book>(saveBookResource); await _bookService.UpdateBook(bookToBeUpdate, book); var updatedBook = await _bookService.GetBookById(id); var updatedBookResource = _mapper.Map <Book, BookResource>(updatedBook); return(Ok(updatedBookResource)); }
public async Task <ActionResult <BookDTO> > UpdateMusic(int id, [FromBody] SaveBookDTo saveMusicResource) { var validator = new SaveBookResourceValidator(); var validationResult = await validator.ValidateAsync(saveMusicResource); var requestIsInvalid = id == 0 || !validationResult.IsValid; if (requestIsInvalid) { return(BadRequest(validationResult.Errors)); // this needs refining, but for demo it is ok } var musicToBeUpdate = await _musicService.GetMusicById(id); if (musicToBeUpdate == null) { return(NotFound()); } var music = _mapper.Map <SaveBookDTo, Music>(saveMusicResource); await _musicService.UpdateMusic(musicToBeUpdate, music); var updatedMusic = await _musicService.GetMusicById(id); var updatedMusicResource = _mapper.Map <Music, BookDTO>(updatedMusic); return(Ok(updatedMusicResource)); }
public async Task <ActionResult <BookDTO> > CreateBook([FromBody] SaveBookDTO saveBook) { try { var validator = new SaveBookResourceValidator(); var validationResult = await validator.ValidateAsync(saveBook); if (!validationResult.IsValid) { return(BadRequest(validationResult.Errors)); } var bookCreation = _mapper.Map <SaveBookDTO, Book>(saveBook); var newBook = await _bookService.Create(bookCreation); var book = await _bookService.GetBookById(newBook.Id); var bookRes = _mapper.Map <Book, BookDTO>(book); return(BuildObjectResult(HttpStatusCode.OK, true, value: bookRes)); } catch (Exception ex) { return(BuildObjectResult(HttpStatusCode.BadRequest, false, ex.Message)); } }
public async Task <ActionResult <BookResource> > UpdateBook(SaveBookResource saveBookResource) { var validator = new SaveBookResourceValidator(); var validationResult = await validator.ValidateAsync(saveBookResource); if (!validationResult.IsValid) { return(BadRequest(validationResult.Errors)); } var bookToCreate = _mapper.Map <SaveBookResource, Book>(saveBookResource); await _bookService.UpdateBook(bookToCreate, bookToCreate); // Delete from reference table all Book-Authors var bookAuthorsToDelete = await _bookAuhtorService.GetBookAuthorById(saveBookResource.Id); foreach (var authorToDelete in bookAuthorsToDelete) { await _bookAuhtorService.DeleteBookAuthor(authorToDelete); } // Add to reference table all Book-Authors foreach (var author in saveBookResource.Authors) { BookAuthorResource bookAuthorResource = new BookAuthorResource(); bookAuthorResource.AuthorId = author.Id; bookAuthorResource.BookId = saveBookResource.Id; var bookAuthorToAdd = _mapper.Map <BookAuthorResource, BookAuthor>(bookAuthorResource); var newBookAuthor = await _bookAuhtorService.CreateBookAuthor(bookAuthorToAdd); } // Delete from reference table all Book-Categories var bookCategoryToDelete = await _bookCategoryService.GetBookCategoryById(saveBookResource.Id); foreach (var categoryToDelete in bookCategoryToDelete) { await _bookCategoryService.DeleteBookCategory(categoryToDelete); } // Add to reference table all Book-Categories foreach (var category in saveBookResource.Categories) { BookCategoryResource bookCategoryResource = new BookCategoryResource(); bookCategoryResource.CategoryId = category.Id; bookCategoryResource.BookId = saveBookResource.Id; var bookCategoryToCreate = _mapper.Map <BookCategoryResource, BookCategory>(bookCategoryResource); var newBookCategory = await _bookCategoryService.CreateBookCategory(bookCategoryToCreate); } var databaseBooks = await _bookService.GetWithCategoriesAndAuthorById(saveBookResource.Id); return(Ok(_mapper.Map <Book, BookResource>(databaseBooks))); }
public async Task <ActionResult <BookDTO> > CreateMusic([FromBody] SaveBookDTo saveMusicResource) { var validator = new SaveBookResourceValidator(); var validationResult = await validator.ValidateAsync(saveMusicResource); if (!validationResult.IsValid) { return(BadRequest(validationResult.Errors)); // this needs refining, but for demo it is ok } var musicToCreate = _mapper.Map <SaveBookDTo, Music>(saveMusicResource); var newMusic = await _musicService.CreateMusic(musicToCreate); var music = await _musicService.GetMusicById(newMusic.Id); var musicResource = _mapper.Map <Music, BookDTO>(music); return(Ok(musicResource)); }
public async Task <ActionResult <BookResource> > CreateBook([FromBody] SaveBookResource saveBookResource) { var validator = new SaveBookResourceValidator(); var validationResult = await validator.ValidateAsync(saveBookResource); if (!validationResult.IsValid) { return(BadRequest(validationResult.Errors)); } var bookToCreate = _mapper.Map <SaveBookResource, Book>(saveBookResource); var newBook = await _bookService.CreateBook(bookToCreate); var book = await _bookService.GetBookById(newBook.Id); var bookResource = _mapper.Map <Book, BookResource>(book); return(Ok(bookResource)); }
public async Task <ActionResult <BookResource> > CreateBook(SaveBookResource saveBookResource) { var validator = new SaveBookResourceValidator(); var validationResult = await validator.ValidateAsync(saveBookResource); if (!validationResult.IsValid) { return(BadRequest(validationResult.Errors)); } var bookToCreate = _mapper.Map <SaveBookResource, Book>(saveBookResource); var newBook = await _bookService.CreateBook(bookToCreate); foreach (var author in saveBookResource.Authors) { BookAuthorResource bookAuthorResource = new BookAuthorResource(); bookAuthorResource.AuthorId = author.Id; bookAuthorResource.BookId = newBook.Id; var bookAuthorToCreate = _mapper.Map <BookAuthorResource, BookAuthor>(bookAuthorResource); var newBookAuhtor = await _bookAuhtorService.CreateBookAuthor(bookAuthorToCreate); } foreach (var category in saveBookResource.Categories) { BookCategoryResource bookCategoryResource = new BookCategoryResource(); bookCategoryResource.CategoryId = category.Id; bookCategoryResource.BookId = newBook.Id; var bookCategoryToCreate = _mapper.Map <BookCategoryResource, BookCategory>(bookCategoryResource); var newBookCategory = await _bookCategoryService.CreateBookCategory(bookCategoryToCreate); } var databaseBooks = await _bookService.GetWithCategoriesAndAuthorById(newBook.Id); return(Ok(_mapper.Map <Book, BookResource>(databaseBooks))); }
public async Task <ActionResult <BookDTO> > UpdateBook([FromRoute] int id, [FromBody] SaveBookDTO saveBook) { try { var validator = new SaveBookResourceValidator(); var validationResult = await validator.ValidateAsync(saveBook); var requestIsInvalid = id == 0 || !validationResult.IsValid; if (requestIsInvalid) { return(BadRequest(validationResult.Errors)); } var bookToBeUpdate = await _bookService.GetBookById(id); if (bookToBeUpdate == null) { return(NotFound()); } var book = _mapper.Map <SaveBookDTO, Book>(saveBook); await _bookService.Update(bookToBeUpdate, book); var updatedBook = await _bookService.GetBookById(id); var updatedBookResource = _mapper.Map <Book, BookDTO>(updatedBook); return(BuildObjectResult(HttpStatusCode.OK, true, value: updatedBookResource)); } catch (Exception e) { return(BuildObjectResult(HttpStatusCode.BadRequest, false, e.Message)); } }