예제 #1
0
        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));
            }
        }
예제 #2
0
        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));
        }
예제 #3
0
        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));
            }
        }