예제 #1
0
        public IActionResult CreatePost([FromBody] BlogPostForCreationDto blogPost)
        {
            try
            {
                if (blogPost == null)
                {
                    _logger.LogError("BlogPost object sent from client is null.");
                    return(BadRequest("BlogPost object is null"));
                }

                if (!ModelState.IsValid)
                {
                    _logger.LogError("Invalid blogpost object sent from client.");
                    return(BadRequest("Invalid model object"));
                }


                var blogPostEntity = blogPost.ToEntity <BlogPost>();
                blogPostEntity.CreatedOnUtc = DateTime.UtcNow;
                _blogService.InsertBlogPost(blogPostEntity);

                var blogPostDto = new BlogPostDto();
                _blogFactory.PrepareBlogPostResponse(blogPostDto, blogPostEntity, false);

                return(CreatedAtRoute("PostById", new { id = blogPostDto.Id }, blogPostDto));
            }
            catch (Exception ex)
            {
                var logMessage = $"BlogController PostCreate Method. Something went wrong. Request : { JsonConvert.SerializeObject(blogPost) } Ex Message : { ex.Message }";
                _logger.LogError(ex, logMessage);
                return(StatusCode(500, "Internal server error"));
            }
        }
예제 #2
0
        public IActionResult CreateBlogPost(
            [FromBody] BlogPostForCreationDto blogPost)
        {
            if (blogPost == null)
            {
                _logger.LogWarning("Create BlogPost has null blogPost argument");
                return(BadRequest());
            }

            if (blogPost.Contents == blogPost.Title)
            {
                ModelState.AddModelError("Contents", "The provided contents should be different from the title.");
                _logger.LogWarning("Create BlogPost has Title=Contents");
            }

            if (!ModelState.IsValid)
            {
                _logger.LogWarning("Create BlogPost has modelState invalid");
                return(BadRequest(ModelState));
            }

            // create blog post
            var finalPost = Mapper.Map <Entities.BlogPost>(blogPost);

            _blogInfoRepository.AddBlogPost(finalPost);
            _logger.LogWarning($"New Blog Post added: {finalPost.Id}");

            try
            {
                if (!_blogInfoRepository.Save())
                {
                    _logger.LogWarning("Save failed");
                    return(StatusCode(500, "A problem happened while handling your request."));
                }

                var createdBlogPostToReturn = Mapper.Map <Models.BlogPostDto>(finalPost);
                _logger.LogInformation($"Blog Post {createdBlogPostToReturn.Id} was saved");
                return(CreatedAtRoute("GetPost", new { id = createdBlogPostToReturn.Id }, createdBlogPostToReturn));
            }
            catch (Exception e)
            {
                _logger.LogError($"Issue in save: {e}");
                return(StatusCode(500, "A problem happened while handling your request."));
            }
        }