Skip to content

Commit

Permalink
get user events by email
Browse files Browse the repository at this point in the history
  • Loading branch information
harshjohar committed Mar 18, 2024
1 parent d9402ce commit 6d2d919
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 5 deletions.
25 changes: 20 additions & 5 deletions src/main/java/com/pecacm/backend/controllers/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -192,8 +190,25 @@ public ResponseEntity<List<UserEventDetails>> getEventsForUser(@RequestParam @Nu

}

@GetMapping("/{email}/events")
@PreAuthorize(Constants.HAS_ROLE_CORE_AND_ABOVE)
public ResponseEntity<List<UserEventDetails>> 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<User> getFilteredUsers(@RequestParam String query, @RequestParam(required = false,defaultValue = "false") Boolean onlyVerified){
return userService.getFilteredUserList(query,onlyVerified);
public List<User> getFilteredUsers(@RequestParam String query, @RequestParam(required = false, defaultValue = "false") Boolean onlyVerified) {
return userService.getFilteredUserList(query, onlyVerified);
}
}
16 changes: 16 additions & 0 deletions src/main/java/com/pecacm/backend/services/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,14 @@ public List<User> getLeaderboardByBatch(Integer batch, Integer offset, Integer p

public List<UserEventDetails> getEventsForUserWithRole(EventRole eventRole, Integer pageSize, Integer offset) {
String email = (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
return getUserEventDetails(email, eventRole, pageSize, offset);
}

public List<UserEventDetails> getEventsForUserWithRole(String email, EventRole eventRole, Integer pageSize, Integer offset) {
return getUserEventDetails(email, eventRole, pageSize, offset);
}

private List<UserEventDetails> getUserEventDetails(String email, EventRole eventRole, Integer pageSize, Integer offset) {
User user = this.loadUserByUsername(email);
Page<Transaction> transactionsPage = transactionRepository.findByUserIdAndRole(user.getId(), eventRole, PageRequest.of(offset, pageSize));

Expand All @@ -205,6 +213,14 @@ public List<UserEventDetails> getEventsForUserWithRole(EventRole eventRole, Inte

public List<UserEventDetails> getEventsForUser(Integer pageSize, Integer offset) {
String email = (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
return getUserEventDetails(email, pageSize, offset);
}

public List<UserEventDetails> getEventsForUser(String email,Integer pageSize, Integer offset) {
return getUserEventDetails(email, pageSize, offset);
}

private List<UserEventDetails> getUserEventDetails(String email, Integer pageSize, Integer offset) {
User user = this.loadUserByUsername(email);
Page<Transaction> transactionsPage = transactionRepository.findByUserId(user.getId(), PageRequest.of(offset, pageSize));

Expand Down

0 comments on commit 6d2d919

Please sign in to comment.