public ActionResult UpdateEdition(int id, Dto.EditionRequest request) { var edition = _repository.GetEdition(id); if (edition == null) { return(NotFound()); } var book = _bookRepository.GetBook(request.BookId); Publisher publisher = null; if (book == null) { return(BadRequest("Book not found")); } if (request.PublisherName != null) { string publisherName = request.PublisherName; publisher = _publisherRepository.GetPublisher(publisherName); if (publisher == null) { Publisher newPublisher = new Publisher { Name = request.PublisherName }; _publisherRepository.CreatePublisher(newPublisher); if (_publisherRepository.SaveChanges() == false) { return(new StatusCodeResult(StatusCodes.Status500InternalServerError)); } publisher = _publisherRepository.GetPublisher(publisherName); } } _mapper.Map(request, edition); _repository.UpdateEdition(edition, book, publisher); if (_repository.SaveChanges() == false) { return(new StatusCodeResult(StatusCodes.Status500InternalServerError)); } return(NoContent()); }