From a1fb3298f9ebc20181a11cc6545b16757025398c Mon Sep 17 00:00:00 2001 From: Florian Date: Mon, 14 May 2018 18:15:49 +0200 Subject: [PATCH] Add update route for posts --- .../java/org/codiki/posts/PostController.java | 8 ++++ .../java/org/codiki/posts/PostService.java | 39 +++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/src/main/java/org/codiki/posts/PostController.java b/src/main/java/org/codiki/posts/PostController.java index 91f8634..03ea680 100644 --- a/src/main/java/org/codiki/posts/PostController.java +++ b/src/main/java/org/codiki/posts/PostController.java @@ -1,5 +1,6 @@ package org.codiki.posts; +import java.io.IOException; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -17,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -113,4 +115,10 @@ public class PostController { return result; } + + @PutMapping("/") + public void update(@RequestBody final PostDTO pPost, final HttpServletRequest pRequest, + final HttpServletResponse pResponse) throws IOException { + postService.update(pPost, pRequest, pResponse); + } } diff --git a/src/main/java/org/codiki/posts/PostService.java b/src/main/java/org/codiki/posts/PostService.java index 5e741db..8c0710a 100644 --- a/src/main/java/org/codiki/posts/PostService.java +++ b/src/main/java/org/codiki/posts/PostService.java @@ -1,12 +1,17 @@ package org.codiki.posts; +import java.io.IOException; +import java.util.Date; import java.util.Optional; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.codiki.core.entities.dto.PostDTO; +import org.codiki.core.entities.persistence.Category; import org.codiki.core.entities.persistence.Post; +import org.codiki.core.entities.persistence.User; +import org.codiki.core.repositories.CategoryRepository; import org.codiki.core.repositories.PostRepository; import org.codiki.core.security.TokenService; import org.springframework.beans.factory.annotation.Autowired; @@ -18,6 +23,9 @@ public class PostService { @Autowired private PostRepository postRepository; + @Autowired + private CategoryRepository categoryRepository; + @Autowired private TokenService tokenService; @@ -38,4 +46,35 @@ public class PostService { return result; } + + public void update(final PostDTO pPost, final HttpServletRequest pRequest, + final HttpServletResponse pResponse) throws IOException { + final User connectedUser = tokenService.getAuthenticatedUserByToken(pRequest); + + if(connectedUser != null && connectedUser.getKey().equals(pPost.getAuthor().getKey())) { + final Optional postOpt = postRepository.getByKey(pPost.getKey()); + + if(postOpt.isPresent()) { + final Optional category = categoryRepository.findById(pPost.getCategory().getId()); + if(category.isPresent()) { + final Post post = postOpt.get(); + + post.setTitle(pPost.getTitle()); + post.setImage(pPost.getImage()); + post.setDescription(pPost.getDescription()); + post.setCreationDate(new Date()); + post.setText(pPost.getText()); + post.setCategory(category.get()); + + postRepository.save(post); + } else { + pResponse.sendError(HttpServletResponse.SC_BAD_REQUEST); + } + } else { + pResponse.sendError(HttpServletResponse.SC_NOT_FOUND); + } + } else { + pResponse.sendError(HttpServletResponse.SC_FORBIDDEN); + } + } }