示例#1
0
        public IActionResult UpdateBlog(int userId, int blogId,
                                        [FromBody] BlogForManipulationDto blog)
        {
            if (!_weblogDataRepository.UserExists(userId))
            {
                return(NotFound());
            }

            var emailAddress = blog.Credentials.EmailAddress;
            var password     = blog.Credentials.Password;

            if (!_weblogDataRepository.Authorized(userId, emailAddress, password))
            {
                return(Unauthorized());
            }

            var blogFromRepo = _weblogDataRepository.GetBlog(blogId);

            if (blogFromRepo is null)
            {
                return(NotFound());
            }

            _mapper.Map(blog, blogFromRepo);

            _weblogDataRepository.UpdateBlog(blogFromRepo);
            _weblogDataRepository.Save();

            return(NoContent());
        }
示例#2
0
        public IActionResult CreateBlog(int userId,
                                        [FromBody] BlogForManipulationDto blog,
                                        [FromHeader(Name = nameof(HeaderNames.Accept))] string mediaType)
        {
            if (!_weblogDataRepository.UserExists(userId))
            {
                return(NotFound());
            }

            var emailAddress = blog.Credentials.EmailAddress;
            var password     = blog.Credentials.Password;

            if (!_weblogDataRepository.Authorized(userId, emailAddress, password))
            {
                return(Unauthorized());
            }

            var blogEntity = _mapper.Map <Entities.Blog>(blog);

            _weblogDataRepository.AddBlog(userId, blogEntity);
            _weblogDataRepository.Save();

            var blogToReturn = _mapper.Map <BlogDto>(blogEntity);

            var includeLinks = MediaTypes.IncludeLinks(mediaType);

            if (!includeLinks)
            {
                return(CreatedAtRoute(nameof(GetBlog),
                                      new { userId, blogId = blogToReturn.BlogId },
                                      blogToReturn));
            }

            var links         = CreateLinksForBlog(Url, userId, blogToReturn.BlogId);
            var blogWithLinks = new BlogDtoWithLinks(blogToReturn, links);

            return(CreatedAtRoute(nameof(GetBlog),
                                  new { userId, blogId = blogToReturn.BlogId },
                                  blogWithLinks));
        }