Add update route for posts

This commit is contained in:
Florian
2018-05-14 18:15:49 +02:00
parent 81aa3a6004
commit a1fb3298f9
2 changed files with 47 additions and 0 deletions

View File

@@ -1,5 +1,6 @@
package org.codiki.posts; package org.codiki.posts;
import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors; 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.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; 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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@@ -113,4 +115,10 @@ public class PostController {
return result; return result;
} }
@PutMapping("/")
public void update(@RequestBody final PostDTO pPost, final HttpServletRequest pRequest,
final HttpServletResponse pResponse) throws IOException {
postService.update(pPost, pRequest, pResponse);
}
} }

View File

@@ -1,12 +1,17 @@
package org.codiki.posts; package org.codiki.posts;
import java.io.IOException;
import java.util.Date;
import java.util.Optional; import java.util.Optional;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.codiki.core.entities.dto.PostDTO; 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.Post;
import org.codiki.core.entities.persistence.User;
import org.codiki.core.repositories.CategoryRepository;
import org.codiki.core.repositories.PostRepository; import org.codiki.core.repositories.PostRepository;
import org.codiki.core.security.TokenService; import org.codiki.core.security.TokenService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -18,6 +23,9 @@ public class PostService {
@Autowired @Autowired
private PostRepository postRepository; private PostRepository postRepository;
@Autowired
private CategoryRepository categoryRepository;
@Autowired @Autowired
private TokenService tokenService; private TokenService tokenService;
@@ -38,4 +46,35 @@ public class PostService {
return result; 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<Post> postOpt = postRepository.getByKey(pPost.getKey());
if(postOpt.isPresent()) {
final Optional<Category> 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);
}
}
} }