public async Task <ActionResult <GetAuthorDetailsResponse> > AddAnAuthor([FromBody] PostAuthorRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            else
            {
                var author = new Author {
                    FirstName = request.FirstName, LastName = request.LastName
                };
                try
                {
                    _context.Authors.Add(author);
                    await _context.SaveChangesAsync();

                    var response = new GetAuthorDetailsResponse(author.Id, author.FirstName, author.LastName);
                    return(CreatedAtRoute("get-author-by-id", new { Id = author.Id }, response));
                }
                catch (DbUpdateException) // That author already exists!
                {
                    // options here: You could return OK or Accepted. I mean, you did what the person wanted.
                    // Or you could return a 303 - see other. we'll do that because it is more fun.
                    var id = await _context.Authors.Where(a => a.FirstName == request.FirstName && a.LastName == request.LastName)
                             .Select(a => a.Id).SingleOrDefaultAsync();


                    Response.Headers.Add("Location", Url.RouteUrl("get-author-by-id", new { Id = id }));
                    return(StatusCode(303));
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Creates a new author.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>
        ///   <c>PostAuthorsResponse</c> with a new author id.
        /// </returns>
        public PostAuthorResponse Post(PostAuthorRequest request)
        {
            var result =
                authorService.Put(
                    new PutAuthorRequest
            {
                Data = request.Data,
                User = request.User
            });

            return(new PostAuthorResponse {
                Data = result.Data
            });
        }
        /// <summary>
        /// Creates a new author.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>
        ///   <c>PostAuthorsResponse</c> with a new author id.
        /// </returns>
        public PostAuthorResponse Post(PostAuthorRequest request)
        {
            var result =
                authorService.Put(
                    new PutAuthorRequest
                    {
                        Data = request.Data,
                        User = request.User
                    });

            return new PostAuthorResponse { Data = result.Data };
        }