示例#1
0
        public int EditBook(BookUpdateRequest model)
        {
            using (var conn = DbConnection())
            {
                int id = 0;
                if (conn.State == ConnectionState.Open)
                {
                    using (var cmd = new SqlCommand("Book_Update", conn))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.AddWithValue("@Book_Id", model.Book_Id);
                        cmd.Parameters.AddWithValue("@Title", model.Title);
                        cmd.Parameters.AddWithValue("@Genre", model.Genre);
                        cmd.Parameters.AddWithValue("@Publication_Date", model.Publication_Date);
                        cmd.Parameters.AddWithValue("@Price", model.Price);
                        cmd.Parameters.AddWithValue("@Description", model.Description);
                        cmd.Parameters.AddWithValue("@Author_Id", model.Author_Id);

                        cmd.ExecuteNonQuery();

                        id = (int)cmd.Parameters["@Book_Id"].Value;
                    }
                }
                else
                {
                    BadConnection();
                }
                return(id);
            }
        }
        public IActionResult UpdateBookForAuthor(Guid authorId, Guid id,
                                                 [FromBody] BookUpdateRequest book)
        {
            if (book == null)
            {
                return(BadRequest());
            }

            if (book.Description == book.Title)
            {
                ModelState.AddModelError(nameof(BookUpdateRequest),
                                         "The provided description should be different from the title.");
            }

            if (!ModelState.IsValid)
            {
                return(new UnprocessableEntityObjectResult(ModelState));
            }


            if (!_libraryRepository.AuthorExists(authorId))
            {
                return(NotFound());
            }

            var bookForAuthorFromRepo = _libraryRepository.GetBookForAuthor(authorId, id);

            if (bookForAuthorFromRepo == null)
            {
                var bookToAdd = book.ConvertToBook();
                bookToAdd.Id = id;

                _libraryRepository.AddBookForAuthor(authorId, bookToAdd);

                if (!_libraryRepository.Save())
                {
                    throw new Exception($"Upserting book {id} for author {authorId} failed on save.");
                }

                var bookToReturn = new BookResponse(bookToAdd);

                return(CreatedAtRoute("GetBookForAuthor",
                                      new { authorId = authorId, id = bookToReturn.Id },
                                      bookToReturn));
            }

            bookForAuthorFromRepo.Title       = book.Title;
            bookForAuthorFromRepo.Description = book.Description;

            _libraryRepository.UpdateBookForAuthor(bookForAuthorFromRepo);

            if (!_libraryRepository.Save())
            {
                throw new Exception($"Updating book {id} for author {authorId} failed on save.");
            }

            return(NoContent());
        }
示例#3
0
 public IHttpActionResult Put(BookUpdateRequest model)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest());
     }
     else
     {
         return(Ok("Book number " + svc.EditBook(model) + " has been updated"));
     }
 }
示例#4
0
        public BookUpdateRequestHandlerTests()
        {
            var fixture = new Fixture();

            fixture.Behaviors.Add(new OmitOnRecursionBehavior());

            _commandDispatcher = new Mock <ICommandDispatcher>();
            _testRequest       = fixture.Create <BookUpdateRequest>();

            _handler = new BookUpdateRequestHandler(_commandDispatcher.Object);
        }
示例#5
0
        public BookResponse UpdateBook(int bookId, BookUpdateRequest book)
        {
            var bookToUpdate = _mapper.Map <Book>(book);

            bookToUpdate.BookId = bookId;

            var updatedBook = _libraryContext.Books.Update(bookToUpdate);

            _libraryContext.SaveChanges();

            return(_mapper.Map <BookResponse>(updatedBook.Entity));
        }
示例#6
0
    public async Task <ActionResult <BookResponse> > Put([FromBody] BookUpdateRequest request)
    {
        if (!ModelState.IsValid)
        {
            return(BadRequest(ModelState));
        }

        var model = _mapper.Map <Book>(request);
        await _db.UpdateAsync(model);

        _logger.LogInformation("Книга {0} успешно изменена", request.Id);

        var result = _mapper.Map <BookResponse>(model);

        return(Ok(result));
    }