Beispiel #1
0
        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));
            }
        }
Beispiel #2
0
        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));
            }
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        public async Task <IActionResult> DeleteBookAuthor(int authorId)
        {
            try
            {
                Data.Entities.BookAuthor dbBookAuthor = await _repository.GetBookAuthorAsync(authorId);

                if (dbBookAuthor == null)
                {
                    return(NotFound());
                }

                _repository.Delete <Data.Entities.BookAuthor>(dbBookAuthor);
                await _repository.SaveChangesAsync();

                return(NoContent());
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, "Database exception: " + ex.Message));
            }
        }