Skip to content

Commit

Permalink
Merge pull request #979 from bounswe/main
Browse files Browse the repository at this point in the history
Deploy recent changes 11.12.2023 12.07
  • Loading branch information
canuzdrn authored Dec 11, 2023
2 parents efb84d9 + e3ae9fe commit 116755e
Show file tree
Hide file tree
Showing 4 changed files with 157 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.app.gamereview.controller;

import com.app.gamereview.dto.request.home.HomePagePostsFilterRequestDto;
import com.app.gamereview.dto.response.home.HomePagePostResponseDto;
import com.app.gamereview.model.Post;
import com.app.gamereview.model.User;
import com.app.gamereview.service.PostService;
Expand Down Expand Up @@ -29,13 +30,13 @@ public HomeController(PostService postService) {
}

@GetMapping
public ResponseEntity<List<Post>> getHomePagePosts(@ParameterObject HomePagePostsFilterRequestDto filter,
public ResponseEntity<List<HomePagePostResponseDto>> getHomePagePosts(@ParameterObject HomePagePostsFilterRequestDto filter,
@RequestHeader(name = HttpHeaders.AUTHORIZATION,
required = false) String Authorization){
String email = null;
if (JwtUtil.validateToken(Authorization))
email = JwtUtil.extractSubject(Authorization);
List<Post> postsToShow = postService.getHomepagePosts(filter, email);
List<HomePagePostResponseDto> postsToShow = postService.getHomepagePosts(filter, email);
return ResponseEntity.ok(postsToShow);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com.app.gamereview.dto.response.home;

import com.app.gamereview.enums.ForumType;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;

import java.time.LocalDateTime;
import java.util.List;

@Getter
@Setter
public class HomePagePostResponseDto {

private String id;

private String title;

private String postContent;

private String postImage;

private String poster;

@NotNull
private String forum;

private ForumType type;

private String typeId;

private String typeName;

// TODO avatar

private LocalDateTime lastEditedAt;

private List<String> tags;

private Boolean inappropriate;

private Boolean locked;

private int overallVote; // overallVote = # of upvote - # of downvote

private int voteCount; // voteCount = # of upvote + # of downvote

private LocalDateTime createdAt;

private Boolean isDeleted;
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

import com.app.gamereview.model.Forum;

import java.util.Optional;

public interface ForumRepository extends MongoRepository<Forum, String> {

Optional<Forum> findByIdAndIsDeletedFalse(String id);
}
107 changes: 100 additions & 7 deletions app/backend/src/main/java/com/app/gamereview/service/PostService.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.app.gamereview.dto.request.home.HomePagePostsFilterRequestDto;
import com.app.gamereview.dto.response.comment.CommentReplyResponseDto;
import com.app.gamereview.dto.response.comment.GetPostCommentsResponseDto;
import com.app.gamereview.dto.response.home.HomePagePostResponseDto;
import com.app.gamereview.dto.response.post.GetPostDetailResponseDto;
import com.app.gamereview.enums.*;
import com.app.gamereview.exception.BadRequestException;
Expand Down Expand Up @@ -35,6 +36,8 @@ public class PostService {

private final GameRepository gameRepository;

private final GroupRepository groupRepository;

private final UserRepository userRepository;

private final ProfileRepository profileRepository;
Expand All @@ -56,7 +59,7 @@ public PostService(PostRepository postRepository, ForumRepository forumRepositor
ProfileRepository profileRepository, TagRepository tagRepository,
CommentRepository commentRepository, VoteRepository voteRepository,
AchievementRepository achievementRepository, GameRepository gameRepository, MongoTemplate mongoTemplate,
NotificationService notificationService,
NotificationService notificationService, GroupRepository groupRepository,
ModelMapper modelMapper) {

this.postRepository = postRepository;
Expand All @@ -71,7 +74,7 @@ public PostService(PostRepository postRepository, ForumRepository forumRepositor
this.mongoTemplate = mongoTemplate;
this.modelMapper = modelMapper;
this.notificationService = notificationService;

this.groupRepository = groupRepository;
}

public List<GetPostListResponseDto> getPostList(GetPostListFilterRequestDto filter, String email) {
Expand Down Expand Up @@ -412,7 +415,7 @@ public List<Post> getUserPostList(User user) {

}

public List<Post> getHomepagePosts(HomePagePostsFilterRequestDto filter, String email){
public List<HomePagePostResponseDto> getHomepagePosts(HomePagePostsFilterRequestDto filter, String email){
if(email == null){
return getHomePagePostsOfGuest(filter);
}
Expand All @@ -425,7 +428,7 @@ public List<Post> getHomepagePosts(HomePagePostsFilterRequestDto filter, String
return getHomePagePostsOfUser(filter, findUser.get());
}

public List<Post> getHomePagePostsOfGuest(HomePagePostsFilterRequestDto filter){
public List<HomePagePostResponseDto> getHomePagePostsOfGuest(HomePagePostsFilterRequestDto filter){
Query query = new Query();
query.addCriteria(Criteria.where("type").is(ForumType.GAME.name()));
List<Forum> gameForums = mongoTemplate.find(query, Forum.class);
Expand Down Expand Up @@ -466,10 +469,55 @@ else if(filter.getSortBy().equals(SortType.VOTE_COUNT.name())){
}
}

return postsToShow.subList(0, Math.min(20, postsToShow.size()));
List<Post> first20 = postsToShow.subList(0, Math.min(20, postsToShow.size()));

List<HomePagePostResponseDto> first20dto = new ArrayList<>();

for(Post post : first20){
HomePagePostResponseDto dto = modelMapper.map(post,HomePagePostResponseDto.class);

Optional<Forum> findForum = forumRepository.findByIdAndIsDeletedFalse(post.getForum());

if(findForum.isEmpty()){
continue;
}

Forum forumOfPost = findForum.get();

dto.setType(forumOfPost.getType());
dto.setTypeId(forumOfPost.getParent());

String typeName = null;

if(forumOfPost.getType().equals(ForumType.GROUP)){
Optional<Group> findGroup = groupRepository.findByIdAndIsDeletedFalse(forumOfPost.getParent());

if(findGroup.isEmpty()){
throw new ResourceNotFoundException("Group not found");
}

typeName = findGroup.get().getTitle();
}

else if(forumOfPost.getType().equals(ForumType.GAME)){
Optional<Game> findGame = gameRepository.findByIdAndIsDeletedFalse(forumOfPost.getParent());

if(findGame.isEmpty()){
throw new ResourceNotFoundException("Game not found");
}

typeName = findGame.get().getGameName();
}

dto.setTypeName(typeName);

first20dto.add(dto);
}

return first20dto;
}

public List<Post> getHomePagePostsOfUser(HomePagePostsFilterRequestDto filter, User user){
public List<HomePagePostResponseDto> getHomePagePostsOfUser(HomePagePostsFilterRequestDto filter, User user){
Optional<Profile> findProfile = profileRepository.findByUserIdAndIsDeletedFalse(user.getId());

if(findProfile.isEmpty()) {
Expand Down Expand Up @@ -550,6 +598,51 @@ else if(filter.getSortBy().equals(SortType.VOTE_COUNT.name())){
}
}

return postsToShow.subList(0, Math.min(20, postsToShow.size()));
List<Post> first20 = postsToShow.subList(0, Math.min(20, postsToShow.size()));

List<HomePagePostResponseDto> first20dto = new ArrayList<>();

for(Post post : first20){
HomePagePostResponseDto dto = modelMapper.map(post,HomePagePostResponseDto.class);

Optional<Forum> findForum = forumRepository.findByIdAndIsDeletedFalse(post.getForum());

if(findForum.isEmpty()){
continue;
}

Forum forumOfPost = findForum.get();

dto.setType(forumOfPost.getType());
dto.setTypeId(forumOfPost.getParent());

String typeName = null;

if(forumOfPost.getType().equals(ForumType.GROUP)){
Optional<Group> findGroup = groupRepository.findByIdAndIsDeletedFalse(forumOfPost.getParent());

if(findGroup.isEmpty()){
throw new ResourceNotFoundException("Group not found");
}

typeName = findGroup.get().getTitle();
}

else if(forumOfPost.getType().equals(ForumType.GAME)){
Optional<Game> findGame = gameRepository.findByIdAndIsDeletedFalse(forumOfPost.getParent());

if(findGame.isEmpty()){
throw new ResourceNotFoundException("Game not found");
}

typeName = findGame.get().getGameName();
}

dto.setTypeName(typeName);

first20dto.add(dto);
}

return first20dto;
}
}

0 comments on commit 116755e

Please sign in to comment.