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); }
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); }
[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)); }
[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)); }
[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)); }
[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 })); }