diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/FavouritesDAO.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/FavouritesDAO.java index 3c61825..2c50e25 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/FavouritesDAO.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/FavouritesDAO.java @@ -2,6 +2,7 @@ import ntnu.systemutvikling.team6.database.DatabaseConnection; import ntnu.systemutvikling.team6.models.Charity; +import ntnu.systemutvikling.team6.models.registry.CharityRegistry; import ntnu.systemutvikling.team6.models.user.User; import java.sql.Connection; @@ -50,32 +51,60 @@ public boolean removeFavourite(User user, Charity charity) { return false; } } - - public List getFavourites(User user) { - String sql = """ - SELECT c.* FROM Charity c - JOIN Favourites f ON c.UUID_charity = f.UUID_charity - WHERE f.UUID_user = ? - """; - - List favourites = new ArrayList<>(); - - try (Connection conn = connection.getMySqlConnection(); - PreparedStatement ps = conn.prepareStatement(sql)) { - - ps.setString(1, user.getId().toString()); - ResultSet rs = ps.executeQuery(); + public CharityRegistry getFavouritesForUser(String user_id) { + CharityRegistry charityRegistry = null; + Connection conn = null; + try { + conn = connection.getMySqlConnection(); + String sql_query = + """ + SELECT + uf.Favourite_Charity, + c.UUID_charities, c.org_number, c.pre_approved, c.status, + cv.charity_name, cv.charity_link, cv.description, cv.logoURL, cv.key_values, cv.logoBLOB, + FROM User_has_favourites uf + INNER JOIN Charities c ON uf.Favourite_Charity = c.UUID_charities + INNER JOIN CharityVanity cv ON uf.Favourite_Charity = cv.UUID_charity + WHERE Favourer = ?; + """; + PreparedStatement stmt = conn.prepareStatement(sql_query); + stmt.setString(1, user_id); + ResultSet rs = stmt.executeQuery(); + + + Charity currentCharity = null; while (rs.next()) { - favourites.add(new Charity( + String currentId = rs.getString("UUID_charities"); + if (currentCharity == null || !currentId.equals(currentCharity.getUUID().toString())) { + currentCharity = + new Charity( + rs.getString("UUID_charities"), + rs.getString("org_number"), + rs.getString("charity_name"), + rs.getString("charity_link"), + rs.getString("status"), + rs.getBoolean("pre_approved"), + rs.getString("description"), + rs.getString("logoURL"), + rs.getString("key_values"), + rs.getBytes("logoBLOB")); + charityRegistry.addCharity(currentCharity); + } + + String categoryName = rs.getString("category"); + if (categoryName != null & !currentCharity.getCategory().contains(categoryName)) { + currentCharity.getCategory().add(categoryName); + } - )); } - } catch (SQLException e) { e.printStackTrace(); + throw new RuntimeException("ERROR: Something went wrong during updating charities table."); + } finally { + conn = null; } - - return favourites; + return charityRegistry; } + } \ No newline at end of file diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/UserDAO.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/UserDAO.java index 918d941..5fc0171 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/UserDAO.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/DAO/UserDAO.java @@ -63,7 +63,7 @@ INSERT INTO Settings ( try (PreparedStatement psUser = conn.prepareStatement(userSql)) { psUser.setString(1, user.getId().toString()); - psUser.setString(2, user.getUsername()); // username + psUser.setString(2, user.getUsername()); psUser.setString(3, user.getEmail()); psUser.setString(4, user.getPasswordHash()); psUser.setString(5, user.getRole().name()); @@ -97,7 +97,7 @@ public boolean updateUserSettings(User user, Settings settings){ UPDATE Settings SET isAnonymous = ?, language = ?, - lightmode = ?, + lightmode = ? WHERE UUID_user = ?; """; try { @@ -125,7 +125,7 @@ public boolean updateUserDetails(User user){ UPDATE User SET user_name = ?, user_email = ?, - user_password = ?, + user_password = ? WHERE UUID_User = ?; """; try { diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/UserSelect.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/UserSelect.java index ee386c3..dcd037a 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/UserSelect.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/database/Readers/UserSelect.java @@ -390,47 +390,5 @@ public Inbox getInboxForUser(String user_id) { return inbox; } - public CharityRegistry getFavouritesForUser(String user_id) { - CharityRegistry charityRegistry = null; - Connection conn = null; - try { - conn = connection.getMySqlConnection(); - String sql_query = - """ - SELECT - uf.Favourite_Charity, - c.UUID_charities, c.org_number, c.pre_approved, c.status, - cv.charity_name, cv.charity_link, cv.description, cv.logoURL, cv.key_values, cv.logoBLOB, - FROM User_has_favourites uf - INNER JOIN Charities c ON uf.Favourite_Charity = c.UUID_charities - INNER JOIN CharityVanity cv ON uf.Favourite_Charity = cv.UUID_charity - WHERE Favourer = ?; - """; - PreparedStatement stmt = conn.prepareStatement(sql_query); - stmt.setString(1, user_id); - ResultSet rs = stmt.executeQuery(); - while (rs.next()) { - Charity charity = - new Charity( - rs.getString("UUID_charities"), - rs.getString("org_number"), - rs.getString("charity_name"), - rs.getString("charity_link"), - rs.getString("status"), - rs.getBoolean("pre_approved"), - rs.getString("description"), - rs.getString("logoURL"), - rs.getString("key_values"), - rs.getBytes("logoBLOB")); - charityRegistry.addCharity(charity); - } - } catch (SQLException e) { - e.printStackTrace(); - throw new RuntimeException("ERROR: Something went wrong during updating charities table."); - } finally { - conn = null; - } - return charityRegistry; - } } diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/user/User.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/user/User.java index 20e1663..05d8655 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/user/User.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/models/user/User.java @@ -67,7 +67,7 @@ public User(String username, String email, String password, Role role, Settings } /** - * Creates a new user taylored for getting info from DATABASE. Settings and inbox can be set on a + * Creates a new user taylored for interaction with the DATABASE. Settings and inbox can be set on a * later date throught another method in databaseManager class * * @param uuid gives the user a unique identifier with UUID