Skip to content

Commit

Permalink
Merge pull request #75 from PEC-CSS/fix-page-response-to-list-response
Browse files Browse the repository at this point in the history
Fix page response to list response
  • Loading branch information
Krace33 authored Oct 16, 2023
2 parents 2dc5221 + da76cac commit 208d5a1
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 44 deletions.
11 changes: 6 additions & 5 deletions src/main/java/com/pecacm/backend/controllers/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import com.pecacm.backend.model.AuthenticationRequest;
import com.pecacm.backend.response.AuthenticationResponse;
import com.pecacm.backend.response.RegisterResponse;
import com.pecacm.backend.response.UserEventResponse;
import com.pecacm.backend.response.UserEventDetails;
import com.pecacm.backend.services.VerificationService;
import com.pecacm.backend.services.JwtService;
import com.pecacm.backend.services.UserService;
Expand All @@ -28,6 +28,7 @@
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.UUID;

@RestController
Expand Down Expand Up @@ -111,7 +112,7 @@ public ResponseEntity<Long> getRank(@RequestParam @NonNull Integer score) {
}

@GetMapping("/leaderboard")
public ResponseEntity<Page<User>> getLeaderboard(@RequestParam @Nullable Integer offset, @RequestParam @Nullable Integer pageSize) {
public ResponseEntity<List<User>> getLeaderboard(@RequestParam @Nullable Integer offset, @RequestParam @Nullable Integer pageSize) {
if (offset == null) offset = 0;
if (pageSize == null) pageSize = 20; // returning first 20 users

Expand All @@ -122,14 +123,14 @@ public ResponseEntity<Page<User>> getLeaderboard(@RequestParam @Nullable Integer
}

@GetMapping("/leaderboard/{batch}")
public ResponseEntity<Page<User>> getLeaderboardByBatch(@PathVariable Integer batch, @RequestParam @Nullable Integer offset, @RequestParam @Nullable Integer pageSize) {
public ResponseEntity<List<User>> getLeaderboardByBatch(@PathVariable Integer batch, @RequestParam @Nullable Integer offset, @RequestParam @Nullable Integer pageSize) {
if (offset == null) offset = 0;
if (pageSize == null) pageSize = 20; // returning first 20 users

if (offset < 0) throw new AcmException("offset cannot be < 0", HttpStatus.BAD_REQUEST);
if (pageSize <= 0) throw new AcmException("pageSize must be >= 0", HttpStatus.BAD_REQUEST);

Page<User> users = userService.getLeaderboardByBatch(batch, offset, pageSize);
List<User> users = userService.getLeaderboardByBatch(batch, offset, pageSize);
return ResponseEntity.ok(users);
}

Expand All @@ -143,7 +144,7 @@ public ResponseEntity<User> updateUser(@RequestBody User user) {

@GetMapping("/events")
@PreAuthorize(Constants.HAS_ROLE_MEMBER_AND_ABOVE)
public ResponseEntity<Page<UserEventResponse>> getEventsForUser(@RequestParam @Nullable EventRole eventRole, @RequestParam @Nullable Integer pageSize, @RequestParam @Nullable Integer offset) {
public ResponseEntity<List<UserEventDetails>> getEventsForUser(@RequestParam @Nullable EventRole eventRole, @RequestParam @Nullable Integer pageSize, @RequestParam @Nullable Integer offset) {
if (offset == null) offset = 0;
if (pageSize == null) pageSize = 20; // returning first 20 users

Expand Down
20 changes: 0 additions & 20 deletions src/main/java/com/pecacm/backend/response/UserEventResponse.java

This file was deleted.

30 changes: 11 additions & 19 deletions src/main/java/com/pecacm/backend/services/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import com.pecacm.backend.constants.ErrorConstants;
import com.pecacm.backend.entities.Transaction;
import com.pecacm.backend.entities.User;
import com.pecacm.backend.entities.Event;
import com.pecacm.backend.entities.VerificationToken;
import com.pecacm.backend.enums.EventRole;
import com.pecacm.backend.enums.Role;
Expand All @@ -13,11 +12,9 @@
import com.pecacm.backend.repository.TransactionRepository;
import com.pecacm.backend.repository.UserRepository;
import com.pecacm.backend.repository.VerificationTokenRepository;
import com.pecacm.backend.response.UserEventResponse;
import com.pecacm.backend.response.UserEventDetails;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.http.HttpStatus;
import org.springframework.security.core.context.SecurityContextHolder;
Expand All @@ -27,7 +24,6 @@
import org.springframework.transaction.annotation.Transactional;

import java.util.*;
import java.util.stream.Collectors;

@Service
public class UserService implements UserDetailsService {
Expand Down Expand Up @@ -121,8 +117,8 @@ public Long getRank(Integer score) {
return userRepository.countByXpGreaterThan(score) + 1;
}

public Page<User> getLeaderboard(Integer offset, Integer pageSize) {
return userRepository.findAllByOrderByXpDesc(PageRequest.of(offset, pageSize));
public List<User> getLeaderboard(Integer offset, Integer pageSize) {
return userRepository.findAllByOrderByXpDesc(PageRequest.of(offset, pageSize)).getContent();
}

public User updateUser(User updatedUser, String email) {
Expand Down Expand Up @@ -158,43 +154,39 @@ public User updateUser(User updatedUser, String email) {
}
}

public Page<User> getLeaderboardByBatch(Integer batch, Integer offset, Integer pageSize) {
return userRepository.findAllByBatch(batch, PageRequest.of(offset, pageSize));
public List<User> getLeaderboardByBatch(Integer batch, Integer offset, Integer pageSize) {
return userRepository.findAllByBatch(batch, PageRequest.of(offset, pageSize)).getContent();
}

public Page<UserEventResponse> getEventsForUserWithRole(EventRole eventRole, Integer pageSize, Integer offset) {
public List<UserEventDetails> getEventsForUserWithRole(EventRole eventRole, Integer pageSize, Integer offset) {
String email = (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
User user = this.loadUserByUsername(email);
Page<Transaction> transactionsPage = transactionRepository.findByUserIdAndRole(user.getId(), eventRole, PageRequest.of(offset, pageSize));

List<UserEventResponse> eventResponseList = transactionsPage.getContent().stream()
.map(transaction -> new UserEventResponse(
return transactionsPage.getContent().stream()
.map(transaction -> new UserEventDetails(
transaction.getEvent().getId(),
transaction.getEvent().getTitle(),
eventRole,
transaction.getXp(),
transaction.getEvent().getEndDate()
))
.toList();

return new PageImpl<>(eventResponseList, transactionsPage.getPageable(), transactionsPage.getTotalElements());
}

public Page<UserEventResponse> getEventsForUser(Integer pageSize, Integer offset) {
public List<UserEventDetails> getEventsForUser(Integer pageSize, Integer offset) {
String email = (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
User user = this.loadUserByUsername(email);
Page<Transaction> transactionsPage = transactionRepository.findByUserId(user.getId(), PageRequest.of(offset, pageSize));

List<UserEventResponse> eventResponseList = transactionsPage.getContent().stream()
.map(transaction -> new UserEventResponse(
return transactionsPage.getContent().stream()
.map(transaction -> new UserEventDetails(
transaction.getEvent().getId(),
transaction.getEvent().getTitle(),
transaction.getRole(),
transaction.getXp(),
transaction.getEvent().getEndDate()
))
.toList();

return new PageImpl<>(eventResponseList, transactionsPage.getPageable(), transactionsPage.getTotalElements());
}
}

0 comments on commit 208d5a1

Please sign in to comment.