public async Task <ActionResult <Data.Models.BookAuthor> > UpdateBookAuthor(int authorId, Data.Models.BookAuthorForUpdate updatedBookAuthor) { try { Data.Entities.BookAuthor dbBookAuthor = await _repository.GetBookAuthorAsync(authorId); if (dbBookAuthor == null) { return(NotFound()); } _mapper.Map(updatedBookAuthor, dbBookAuthor); if (await _repository.SaveChangesAsync()) { Data.Models.BookAuthor savedBookAuthor = _mapper.Map <Data.Models.BookAuthor>(dbBookAuthor); return(Ok(savedBookAuthor)); } else { return(BadRequest("Failed to update.")); } } catch (Exception ex) { return(StatusCode(StatusCodes.Status500InternalServerError, "Database exception: " + ex.Message)); } }
public async Task <ActionResult <Data.Models.BookAuthor> > PatchBookAuthor(int authorId, JsonPatchDocument <Data.Models.BookAuthorForUpdate> patchDocument) { try { Data.Entities.BookAuthor dbBookAuthor = await _repository.GetBookAuthorAsync(authorId); if (dbBookAuthor == null) { return(NotFound()); } var updatedBookAuthor = _mapper.Map <Data.Models.BookAuthorForUpdate>(dbBookAuthor); patchDocument.ApplyTo(updatedBookAuthor, ModelState); _mapper.Map(updatedBookAuthor, dbBookAuthor); if (await _repository.SaveChangesAsync()) { Data.Models.BookAuthor savedBookAuthor = _mapper.Map <Data.Models.BookAuthor>(await _repository.GetBookAuthorAsync(authorId)); return(Ok(savedBookAuthor)); } else { return(StatusCode(StatusCodes.Status500InternalServerError, "Unable to save to database")); } } catch (Exception ex) { return(StatusCode(StatusCodes.Status500InternalServerError, "Unable to patch bookAuthor " + ex.Message)); } }
public async Task <ActionResult <Data.Models.BookAuthor> > CreateNewBookAuthor(Data.Models.BookAuthorForCreate newBookAuthor) { Data.Entities.BookAuthor dbNewBookAuthor = null; try { dbNewBookAuthor = _mapper.Map <Data.Entities.BookAuthor>(newBookAuthor); } catch (Exception ex) { return(BadRequest("Input is in invalid format: " + ex.Message)); } if (dbNewBookAuthor == null) { return(BadRequest("Input is in invalid format")); } await _repository.AddAsync <Data.Entities.BookAuthor>(dbNewBookAuthor); await _repository.SaveChangesAsync(); Data.Models.BookAuthor addedBookAuthor = _mapper.Map <Data.Models.BookAuthor>(dbNewBookAuthor); var url = _linkgenerator.GetPathByAction(HttpContext, "GetBookAuthorByAuthorId", "BookAuthors", addedBookAuthor); return(this.Created(url, addedBookAuthor)); }