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