Beispiel #1
0
        private BlogPost MapDTOModelToBlogPost(BlogPostDTOModel dto)
        {
            var post = new BlogPost();

            post.AuthorId         = dto.AuthorId;
            post.PostBody         = dto.PostBody;
            post.PostId           = dto.PostId;
            post.PostTitle        = dto.PostTitle;
            post.TimeCreated      = dto.TimeCreated;
            post.TimeLastModified = dto.TimeLastModified;
            return(post);
        }
Beispiel #2
0
        private BlogPostDTOModel MapBlogPostToDTOModel(BlogPost post)
        {
            var dto = new BlogPostDTOModel();

            dto.AuthorId         = post.AuthorId;
            dto.PostBody         = post.PostBody;
            dto.PostId           = post.PostId;
            dto.PostTitle        = post.PostTitle;
            dto.TimeCreated      = post.TimeCreated;
            dto.TimeLastModified = post.TimeLastModified;
            return(dto);
        }
Beispiel #3
0
        [HttpGet("posts/edit/{id}")] // displays page for editing an existing post
        public IActionResult EditPost(string id)
        {
            var postid  = Guid.Parse(id);
            var request = new GetBlogPostRequest {
                PostId = postid
            };
            var response = _getBlogPostInteractor.GetBlogPost(request);
            var dto      = new BlogPostDTOModel();

            if (response.RequestSuccessful)
            {
                dto = MapBlogPostToDTOModel(response.Post);
            }
            return(View(dto));
        }
Beispiel #4
0
        [HttpPost("posts/create")] // creates a new post or redirects to AddPost page
        public IActionResult CreatePost(BlogPostDTOModel dto)
        {
            if (ModelState.IsValid == false)
            {
                return(RedirectToAction("AddPost", "Blog"));
            }

            var userId  = User.Claims.FirstOrDefault(c => c.Type == "BlogUserId").Value;
            var request = new AddBlogPostRequest
            {
                AuthorId  = Guid.Parse(userId),
                PostBody  = dto.PostBody,
                PostTitle = dto.PostTitle
            };
            var response = _addBlogPostInteractor.AddBlogPost(request);

            if (response.AddSuccessful)
            {
                return(RedirectToAction("GetPost", "Blog", new { id = response.Post.PostId }));
            }
            return(RedirectToAction("AddPost", "Blog", dto));
        }
Beispiel #5
0
        [HttpPost("posts/update")] // partially updates a specific post or redirects to EditPost page
        public IActionResult UpdatePost(BlogPostDTOModel dto)
        {
            var userId = Guid.Parse(User.Claims.FirstOrDefault(c => c.Type == "BlogUserId").Value);

            if (ModelState.IsValid == false || userId != dto.AuthorId)
            {
                return(RedirectToAction("EditPost", "Blog", dto));
            }

            var request = new EditBlogPostRequest
            {
                PostBody  = dto.PostBody,
                PostId    = dto.PostId,
                PostTitle = dto.PostTitle
            };
            var response = _editBlogPostInteractor.EditBlogPost(request);

            if (response.EditSuccessful)
            {
                return(RedirectToAction("GetPost", "Blog", new { id = response.Post.PostId }));
            }
            return(RedirectToAction("EditPost", "Blog", dto));
        }
Beispiel #6
0
        [HttpPost("posts/delete")] // removes a specific post or redirects to EditPost page
        public IActionResult RemovePost(BlogPostDTOModel dto)
        {
            var userId = Guid.Parse(User.Claims.FirstOrDefault(c => c.Type == "BlogUserId").Value);

            if (userId != dto.AuthorId)
            {
                ViewData["Message"] = "You are not the author of this post. You cannot delete it.";
                return(RedirectToAction("GetPost", "Blog", new { id = dto.PostId }));
            }
            var request = new DeleteBlogPostRequest {
                PostId = dto.PostId
            };
            var response = _deleteBlogPostInteractor.DeleteBlogPost(request);

            if (response.DeleteSuccessful)
            {
                ViewData["Message"] = "Your post was successfully deleted.";
                return(RedirectToAction("Index", "Blog"));
            }

            ViewData["Message"] = "This post failed to delete. Is the server down? :(";
            return(RedirectToAction("GetPost", "Blog", new { id = dto.PostId }));
        }