From dbee3009d9586fc9c861c569646e8b6bb85703d4 Mon Sep 17 00:00:00 2001 From: Andreas <andreksv@ntnu.no> Date: Fri, 3 May 2024 21:10:13 +0200 Subject: [PATCH] refactor/Updated getUserByNameAndFilter to actually work --- .../savingsapp/controller/user/UserController.java | 1 + .../savingsapp/service/impl/UserServiceImpl.java | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/controller/user/UserController.java b/src/main/java/no/ntnu/idi/stud/savingsapp/controller/user/UserController.java index 35a8e39..46b709d 100644 --- a/src/main/java/no/ntnu/idi/stud/savingsapp/controller/user/UserController.java +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/controller/user/UserController.java @@ -228,6 +228,7 @@ public class UserController { @PathVariable String searchTerm, @PathVariable @Enumerator(value = SearchFilter.class, message = "Invalid filter") String filter) { + log.info("[UserController:getUsersByNameAndFilter] searchTerm: {}, filter: {}", searchTerm, filter); List<User> users = userService.getUsersByNameAndFilter(identity.getId(), searchTerm, SearchFilter.valueOf(filter)); List<UserDTO> userDTOs = new ArrayList<>(); for(User user : users) { diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/service/impl/UserServiceImpl.java b/src/main/java/no/ntnu/idi/stud/savingsapp/service/impl/UserServiceImpl.java index f039a2b..d80a464 100644 --- a/src/main/java/no/ntnu/idi/stud/savingsapp/service/impl/UserServiceImpl.java +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/service/impl/UserServiceImpl.java @@ -51,6 +51,7 @@ import java.util.List; import java.util.Optional; import java.util.UUID; import java.util.Collections; +import java.util.Iterator; /** * Implementation of the UserService interface for user-related operations. @@ -410,13 +411,21 @@ public class UserServiceImpl implements UserService { public List<User> getUsersByNameAndFilter(Long userId, String searchTerm, SearchFilter filter) { List<User> users = userRepository.findUsersByName(searchTerm); users.removeIf(user -> user.getId().equals(userId)); + List<User> friends = new ArrayList<>(); switch (filter) { case NON_FRIENDS: - List<User> friends = getFriends(userId); + friends = getFriends(userId); users.removeAll(friends); break; case FRIENDS: - users = getFriends(userId); + friends = getFriends(userId); + Iterator<User> iterator = users.iterator(); + while (iterator.hasNext()) { + User user = iterator.next(); + if (!friends.contains(user)) { + iterator.remove(); + } + } break; } return users; -- GitLab