From 6d2d9190b3222671c0a214967dde3e18bab394dd Mon Sep 17 00:00:00 2001 From: Harshpreet Singh Johar Date: Mon, 18 Mar 2024 12:24:25 +0530 Subject: [PATCH] get user events by email --- .../backend/controllers/UserController.java | 25 +++++++++++++++---- .../pecacm/backend/services/UserService.java | 16 ++++++++++++ 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/pecacm/backend/controllers/UserController.java b/src/main/java/com/pecacm/backend/controllers/UserController.java index 365c039..716ac9f 100644 --- a/src/main/java/com/pecacm/backend/controllers/UserController.java +++ b/src/main/java/com/pecacm/backend/controllers/UserController.java @@ -2,7 +2,6 @@ import com.pecacm.backend.constants.Constants; import com.pecacm.backend.entities.Transaction; -import com.pecacm.backend.entities.Event; import com.pecacm.backend.entities.User; import com.pecacm.backend.entities.VerificationToken; import com.pecacm.backend.enums.EventRole; @@ -13,10 +12,9 @@ import com.pecacm.backend.response.RegisterResponse; import com.pecacm.backend.response.UserEventDetails; import com.pecacm.backend.services.EmailService; -import com.pecacm.backend.services.VerificationService; import com.pecacm.backend.services.JwtService; import com.pecacm.backend.services.UserService; -import org.springframework.data.domain.Page; +import com.pecacm.backend.services.VerificationService; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.lang.NonNull; @@ -192,8 +190,25 @@ public ResponseEntity> getEventsForUser(@RequestParam @Nu } + @GetMapping("/{email}/events") + @PreAuthorize(Constants.HAS_ROLE_CORE_AND_ABOVE) + public ResponseEntity> getEventsForUserEmail(@PathVariable String email, @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 + + 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); + + if (eventRole != null) { + return ResponseEntity.ok(userService.getEventsForUserWithRole(email, eventRole, pageSize, offset)); + } + + return ResponseEntity.ok(userService.getEventsForUser(email, pageSize, offset)); + + } + @GetMapping("/search") - public List getFilteredUsers(@RequestParam String query, @RequestParam(required = false,defaultValue = "false") Boolean onlyVerified){ - return userService.getFilteredUserList(query,onlyVerified); + public List getFilteredUsers(@RequestParam String query, @RequestParam(required = false, defaultValue = "false") Boolean onlyVerified) { + return userService.getFilteredUserList(query, onlyVerified); } } diff --git a/src/main/java/com/pecacm/backend/services/UserService.java b/src/main/java/com/pecacm/backend/services/UserService.java index 1f38b4a..e6dc02d 100644 --- a/src/main/java/com/pecacm/backend/services/UserService.java +++ b/src/main/java/com/pecacm/backend/services/UserService.java @@ -189,6 +189,14 @@ public List getLeaderboardByBatch(Integer batch, Integer offset, Integer p public List getEventsForUserWithRole(EventRole eventRole, Integer pageSize, Integer offset) { String email = (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + return getUserEventDetails(email, eventRole, pageSize, offset); + } + + public List getEventsForUserWithRole(String email, EventRole eventRole, Integer pageSize, Integer offset) { + return getUserEventDetails(email, eventRole, pageSize, offset); + } + + private List getUserEventDetails(String email, EventRole eventRole, Integer pageSize, Integer offset) { User user = this.loadUserByUsername(email); Page transactionsPage = transactionRepository.findByUserIdAndRole(user.getId(), eventRole, PageRequest.of(offset, pageSize)); @@ -205,6 +213,14 @@ public List getEventsForUserWithRole(EventRole eventRole, Inte public List getEventsForUser(Integer pageSize, Integer offset) { String email = (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + return getUserEventDetails(email, pageSize, offset); + } + + public List getEventsForUser(String email,Integer pageSize, Integer offset) { + return getUserEventDetails(email, pageSize, offset); + } + + private List getUserEventDetails(String email, Integer pageSize, Integer offset) { User user = this.loadUserByUsername(email); Page transactionsPage = transactionRepository.findByUserId(user.getId(), PageRequest.of(offset, pageSize));