public async Task <ActionResult <Data.Models.Book> > PatchBook(int bookId, JsonPatchDocument <Data.Models.BookForUpdate> patchDocument) { try { Data.Entities.Book dbBook = await _repository.GetBookAsync(bookId); if (dbBook == null) { return(NotFound()); } var updatedBook = _mapper.Map <Data.Models.BookForUpdate>(dbBook); patchDocument.ApplyTo(updatedBook, ModelState); _mapper.Map(updatedBook, dbBook); if (await _repository.SaveChangesAsync()) { Data.Models.Book savedBook = _mapper.Map <Data.Models.Book>(await _repository.GetBookAsync(bookId)); return(Ok(savedBook)); } else { return(StatusCode(StatusCodes.Status500InternalServerError, "Unable to save to database")); } } catch (Exception ex) { return(StatusCode(StatusCodes.Status500InternalServerError, "Unable to patch book " + ex.Message)); } }
public async Task <ActionResult <Data.Models.Book> > CreateNewBook(Data.Models.BookForCreate newBook) { Data.Entities.Book dbNewBook = null; try { dbNewBook = _mapper.Map <Data.Entities.Book>(newBook); } catch (Exception ex) { return(BadRequest("Input is in invalid format: " + ex.Message)); } if (dbNewBook == null) { return(BadRequest("Input is in invalid format")); } await _repository.AddAsync <Data.Entities.Book>(dbNewBook); await _repository.SaveChangesAsync(); Data.Models.Book addedBook = _mapper.Map <Data.Models.Book>(dbNewBook); var url = _linkgenerator.GetPathByAction(HttpContext, "GetBookByBookId", "Books", addedBook); return(this.Created(url, addedBook)); }
public async Task <ActionResult <Data.Models.Book> > UpdateBook(int bookId, Data.Models.BookForUpdate updatedBook) { try { Data.Entities.Book dbBook = await _repository.GetBookAsync(bookId); if (dbBook == null) { return(NotFound()); } _mapper.Map(updatedBook, dbBook); if (await _repository.SaveChangesAsync()) { Data.Models.Book savedBook = _mapper.Map <Data.Models.Book>(dbBook); return(Ok(savedBook)); } else { return(BadRequest("Failed to update.")); } } catch (Exception ex) { return(StatusCode(StatusCodes.Status500InternalServerError, "Database exception: " + ex.Message)); } }
public async Task <IActionResult> GetDetailedBookInfo([FromBody] Book incomingBook) { try { Data.Models.Book book = await _context.Books.FirstOrDefaultAsync(b => b.Id == incomingBook.Id); if (book != null) { List <BookHistory> bookHistory = await _context.BookHistoryRecords .Where(bh => bh.Id == incomingBook.Id).ToListAsync(); List <User> userList = new List <User>(); foreach (var bh in bookHistory) { userList.Add( await _context.Users.Where(u => u.Id == bh.UserId).FirstOrDefaultAsync()); } return(Json("")); } else { throw new Exception("Book was not found"); } } catch (Exception e) { return(Json("Error: " + e.Message)); } }