Skip to content

Commit

Permalink
Fix: Userfixes; Syntaxses and other stuff. Also moved into favouriites
Browse files Browse the repository at this point in the history
  • Loading branch information
AdrianBalunan committed Apr 20, 2026
1 parent 89c5f9e commit 9e37945
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 66 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -50,32 +51,60 @@ public boolean removeFavourite(User user, Charity charity) {
return false;
}
}

public List<Charity> 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<Charity> 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;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand Down Expand Up @@ -97,7 +97,7 @@ public boolean updateUserSettings(User user, Settings settings){
UPDATE Settings SET
isAnonymous = ?,
language = ?,
lightmode = ?,
lightmode = ?
WHERE UUID_user = ?;
""";
try {
Expand Down Expand Up @@ -125,7 +125,7 @@ public boolean updateUserDetails(User user){
UPDATE User SET
user_name = ?,
user_email = ?,
user_password = ?,
user_password = ?
WHERE UUID_User = ?;
""";
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 9e37945

Please sign in to comment.