Add update route for posts
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user