diff --git a/src/main/java/edu/group5/app/control/AuthController.java b/src/main/java/edu/group5/app/control/AuthController.java
index c2f923b..7c34afd 100644
--- a/src/main/java/edu/group5/app/control/AuthController.java
+++ b/src/main/java/edu/group5/app/control/AuthController.java
@@ -1,7 +1,6 @@
package edu.group5.app.control;
import edu.group5.app.model.AppState;
-import edu.group5.app.model.organization.Organization;
import edu.group5.app.model.user.User;
import edu.group5.app.model.user.UserService;
import edu.group5.app.utils.ParameterValidator;
diff --git a/src/main/java/edu/group5/app/control/DonationController.java b/src/main/java/edu/group5/app/control/DonationController.java
index 70d6444..07af6fd 100644
--- a/src/main/java/edu/group5/app/control/DonationController.java
+++ b/src/main/java/edu/group5/app/control/DonationController.java
@@ -83,7 +83,7 @@ public String getPaymentMethod() {
*/
public Map getUserDonations(int userId) {
ParameterValidator.intChecker(userId, "User ID");
- return service.getDonationRepository().filterByUser(userId);
+ return service.getUserDonations(userId);
}
/**
diff --git a/src/main/java/edu/group5/app/control/NavigationController.java b/src/main/java/edu/group5/app/control/NavigationController.java
index 04fb5e2..92ea26a 100644
--- a/src/main/java/edu/group5/app/control/NavigationController.java
+++ b/src/main/java/edu/group5/app/control/NavigationController.java
@@ -63,7 +63,7 @@ public NavigationController(BorderPane root, AppState appState, UserService user
*/
public void showHomePage() {
root.setTop(header);
- root.setCenter(new HomePageView(appState, this));
+ root.setCenter(new HomePageView(this));
}
/**
@@ -72,7 +72,7 @@ public void showHomePage() {
*/
public void showLoginPage() {
root.setTop(loginHeader);
- root.setCenter(new LoginPageView(appState, this, authController));
+ root.setCenter(new LoginPageView(this, authController));
}
/**
@@ -81,7 +81,7 @@ public void showLoginPage() {
*/
public void showSignUpPage() {
root.setTop(loginHeader);
- root.setCenter(new SignUpPageView(appState, this, authController));
+ root.setCenter(new SignUpPageView(this, authController));
}
/**
@@ -99,7 +99,7 @@ public void showPaymentCompletePage() {
*/
public void showCausesPage() {
root.setTop(header);
- root.setCenter(new CausesPageView(appState, this, organizationController));
+ root.setCenter(new CausesPageView(this, organizationController));
}
/**
@@ -109,7 +109,7 @@ public void showCausesPage() {
*/
public void showOrganizationPage() {
root.setTop(header);
- root.setCenter(new OrganizationPageView(appState, this, donationController));
+ root.setCenter(new OrganizationPageView(this, organizationController, donationController));
}
/**
@@ -118,7 +118,7 @@ public void showOrganizationPage() {
*/
public void showDonationPage() {
root.setTop(header);
- root.setCenter(new DonationPageView(appState, this, donationController));
+ root.setCenter(new DonationPageView(this, donationController));
}
public void showAboutUsPage() {
diff --git a/src/main/java/edu/group5/app/model/donation/DonationService.java b/src/main/java/edu/group5/app/model/donation/DonationService.java
index 6f978b1..5eb964b 100644
--- a/src/main/java/edu/group5/app/model/donation/DonationService.java
+++ b/src/main/java/edu/group5/app/model/donation/DonationService.java
@@ -1,5 +1,6 @@
package edu.group5.app.model.donation;
import java.time.Instant;
+import java.util.Map;
import java.math.BigDecimal;
import java.sql.Timestamp;
import edu.group5.app.model.organization.Organization;
@@ -34,21 +35,21 @@ public DonationService(DonationRepository donationRepository,
}
/**
- * Getter for the DonationRepository used by this service.
- * This method allows access to the donation repository for managing donation records and retrieving donation information.
- * @return the DonationRepository instance used by this service
+ * Gets all donations made by a specific user.
+ * @param userId the ID of the user
+ * @return a map of donations made by that user
*/
- public DonationRepository getDonationRepository() {
- return this.donationRepository;
+ public Map getUserDonations(int userId) {
+ return donationRepository.filterByUser(userId);
}
/**
- * Getter for the OrganizationRepository used by this service.
- * This method allows access to the organization repository for validating organization information when processing donations.
- * @return the OrganizationRepository instance used by this service
+ * Gets all donations to a specific organization.
+ * @param organizationId the organization ID
+ * @return map of donations to that organization
*/
- public OrganizationRepository getOrganizationRepository() {
- return this.organizationRepository;
+ public Map getOrganizationDonations(int organizationId) {
+ return donationRepository.filterByOrganization(organizationId);
}
/**
diff --git a/src/main/java/edu/group5/app/model/organization/OrganizationService.java b/src/main/java/edu/group5/app/model/organization/OrganizationService.java
index d0c84a3..df4d04e 100644
--- a/src/main/java/edu/group5/app/model/organization/OrganizationService.java
+++ b/src/main/java/edu/group5/app/model/organization/OrganizationService.java
@@ -35,14 +35,6 @@ public OrganizationService(OrganizationRepository organizationRepository, Organi
this.scraper = scraper;
}
- /**
- * Getter for the OrganizationRepository used by this service.
- * @return the OrganizationRepository instance used by this service
- */
- public OrganizationRepository getOrganizationRepository() {
- return this.organizationRepository;
- }
-
/**
* Retrieves all trusted organizations.
* @return a map of trusted organizations by organization number
diff --git a/src/main/java/edu/group5/app/model/user/User.java b/src/main/java/edu/group5/app/model/user/User.java
index 54c9e16..806f1f7 100644
--- a/src/main/java/edu/group5/app/model/user/User.java
+++ b/src/main/java/edu/group5/app/model/user/User.java
@@ -1,5 +1,4 @@
package edu.group5.app.model.user;
-import java.lang.reflect.Parameter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
diff --git a/src/main/java/edu/group5/app/model/user/UserService.java b/src/main/java/edu/group5/app/model/user/UserService.java
index a6d316e..9d215d0 100644
--- a/src/main/java/edu/group5/app/model/user/UserService.java
+++ b/src/main/java/edu/group5/app/model/user/UserService.java
@@ -25,17 +25,6 @@ public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
- /**
- * Getter for the UserRepository used by this service.
- * This method allows access to the user repository for managing user data and
- * performing operations such as registration and login.
- *
- * @return the UserRepository instance used by this service
- */
- public UserRepository getUserRepository() {
- return this.userRepository;
- }
-
/**
* Registers a new user with the given information. Validates the input data and
* creates a new User object
diff --git a/src/main/java/edu/group5/app/view/causespage/CausesPageView.java b/src/main/java/edu/group5/app/view/causespage/CausesPageView.java
index 346df19..271bfa9 100644
--- a/src/main/java/edu/group5/app/view/causespage/CausesPageView.java
+++ b/src/main/java/edu/group5/app/view/causespage/CausesPageView.java
@@ -34,19 +34,16 @@
* a fallback "no image" is displayed.
*/
public class CausesPageView extends BorderPane {
- private final AppState appState;
private final NavigationController nav;
private final OrganizationController orgController;
private GridPane organizationGrid;
private Map allOrganizations;
- public CausesPageView(AppState appState, NavigationController nav, OrganizationController orgController) {
- ParameterValidator.objectChecker(appState, "AppState");
+ public CausesPageView(NavigationController nav, OrganizationController orgController) {
ParameterValidator.objectChecker(nav, "NavigationController");
ParameterValidator.objectChecker(orgController, "OrganizationController");
- this.appState = appState;
this.nav = nav;
this.orgController = orgController;
@@ -94,9 +91,9 @@ private BorderPane createBody() {
card.updateLogo(entry.getValue().logoUrl());
}
}
- Organization currentOrg = appState.getCurrentOrganization();
+ Organization currentOrg = orgController.getCurrentOrganization();
if (currentOrg != null && orgs.containsKey(currentOrg.orgNumber())) {
- appState.setCurrentOrganization(orgs.get(currentOrg.orgNumber()));
+ orgController.setCurrentOrganization(orgs.get(currentOrg.orgNumber()));
}
});
});
@@ -165,7 +162,7 @@ private GridPane createOrganizationSection(String searchTerm) {
? org.logoUrl()
: null;
- OrganizationCard card = new OrganizationCard(appState, nav, org, img);
+ OrganizationCard card = new OrganizationCard(nav, orgController, org, img);
grid.add(card, column, row);
diff --git a/src/main/java/edu/group5/app/view/causespage/OrganizationCard.java b/src/main/java/edu/group5/app/view/causespage/OrganizationCard.java
index c24b32a..4645d0b 100644
--- a/src/main/java/edu/group5/app/view/causespage/OrganizationCard.java
+++ b/src/main/java/edu/group5/app/view/causespage/OrganizationCard.java
@@ -1,9 +1,8 @@
package edu.group5.app.view.causespage;
import edu.group5.app.control.NavigationController;
-import edu.group5.app.model.AppState;
+import edu.group5.app.control.OrganizationController;
import edu.group5.app.model.organization.Organization;
-import edu.group5.app.utils.ParameterValidator;
import javafx.geometry.Pos;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
@@ -22,15 +21,16 @@
* to the organization's detail page.
*/
public class OrganizationCard extends VBox {
- private final AppState appState;
private final Organization organization;
private final NavigationController nav;
+ private final OrganizationController organizationController;
private StackPane imageContainer;
private String currentLogoUrl;
- public OrganizationCard(AppState appstate, NavigationController nav, Organization org, String img) {
- this.appState = appstate;
+ public OrganizationCard(NavigationController nav, OrganizationController organizationController,
+ Organization org, String img) {
this.nav = nav;
+ this.organizationController = organizationController;
this.organization = org;
setId("mainContainer");
getStylesheets().add(getClass().getResource("/browsepage/browse_org.css").toExternalForm());
@@ -43,7 +43,7 @@ public OrganizationCard(AppState appstate, NavigationController nav, Organizatio
);
setOnMouseClicked(e -> {
- appstate.setCurrentOrganization(getOrganizationWithCurrentLogo());
+ organizationController.setCurrentOrganization(getOrganizationWithCurrentLogo());
nav.showOrganizationPage();
});
diff --git a/src/main/java/edu/group5/app/view/donationpage/DonationPageView.java b/src/main/java/edu/group5/app/view/donationpage/DonationPageView.java
index 61ca29c..ed0288c 100644
--- a/src/main/java/edu/group5/app/view/donationpage/DonationPageView.java
+++ b/src/main/java/edu/group5/app/view/donationpage/DonationPageView.java
@@ -2,7 +2,6 @@
import edu.group5.app.control.DonationController;
import edu.group5.app.control.NavigationController;
-import edu.group5.app.model.AppState;
import edu.group5.app.utils.ParameterValidator;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
@@ -28,7 +27,6 @@
* payment method buttons, donation button, and a back to organization page button.
*/
public class DonationPageView extends BorderPane {
- private final AppState appState;
private final NavigationController nav;
private final DonationController donationController;
@@ -37,12 +35,10 @@ public class DonationPageView extends BorderPane {
private Node selectedPaymentMethod = null;
private Button donateBtn;
- public DonationPageView(AppState appState, NavigationController nav, DonationController donationController) {
- ParameterValidator.objectChecker(appState, "AppState");
+ public DonationPageView(NavigationController nav, DonationController donationController) {
ParameterValidator.objectChecker(nav, "NavigationController");
ParameterValidator.objectChecker(donationController, "DonationController");
- this.appState = appState;
this.nav = nav;
this.donationController = donationController;
@@ -219,7 +215,7 @@ private void selectPaymentMethod(Node element) {
selectedPaymentMethod.getStyleClass().add("payment-method-selected");
String paymentMethod = (String) element.getUserData();
- appState.setCurrentPaymentMethod(paymentMethod);
+ donationController.setPaymentMethod(paymentMethod);
updateDonationButtonState();
}
@@ -243,7 +239,7 @@ private void clearSelection() {
}
private void updateDonationAmount(BigDecimal amount) {
- appState.setCurrentDonationAmount(amount);
+ donationController.setDonationAmount(amount);
}
private BigDecimal parseAmount(String amountStr) {
diff --git a/src/main/java/edu/group5/app/view/homepage/HomePageView.java b/src/main/java/edu/group5/app/view/homepage/HomePageView.java
index c24b89b..137e0b1 100644
--- a/src/main/java/edu/group5/app/view/homepage/HomePageView.java
+++ b/src/main/java/edu/group5/app/view/homepage/HomePageView.java
@@ -1,7 +1,6 @@
package edu.group5.app.view.homepage;
import edu.group5.app.control.NavigationController;
-import edu.group5.app.model.AppState;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.ScrollPane;
@@ -19,11 +18,9 @@
* and an about us button. The page also has a charity image at the bottom.
*/
public class HomePageView extends BorderPane {
- private final AppState appState;
private final NavigationController nav;
- public HomePageView(AppState appState, NavigationController nav) {
- this.appState = appState;
+ public HomePageView(NavigationController nav) {
this.nav = nav;
getStylesheets().add(getClass().getResource("/homepage/homepage.css").toExternalForm());
diff --git a/src/main/java/edu/group5/app/view/loginpage/LoginPageView.java b/src/main/java/edu/group5/app/view/loginpage/LoginPageView.java
index 11b3ba7..927a8af 100644
--- a/src/main/java/edu/group5/app/view/loginpage/LoginPageView.java
+++ b/src/main/java/edu/group5/app/view/loginpage/LoginPageView.java
@@ -2,7 +2,6 @@
import edu.group5.app.control.NavigationController;
import edu.group5.app.control.AuthController;
-import edu.group5.app.model.AppState;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
@@ -21,7 +20,6 @@
* a login box, an email box, a login button, and a register button.
*/
public class LoginPageView extends BorderPane {
- private final AppState appState;
private final NavigationController nav;
private final AuthController authController;
@@ -29,8 +27,7 @@ public class LoginPageView extends BorderPane {
private PasswordField passwordField;
private Label errorLabel;
- public LoginPageView(AppState appState, NavigationController nav, AuthController authController) {
- this.appState = appState;
+ public LoginPageView(NavigationController nav, AuthController authController) {
this.nav = nav;
this.authController = authController;
diff --git a/src/main/java/edu/group5/app/view/loginpage/SignUpPageView.java b/src/main/java/edu/group5/app/view/loginpage/SignUpPageView.java
index 8638a1f..bdcfb54 100644
--- a/src/main/java/edu/group5/app/view/loginpage/SignUpPageView.java
+++ b/src/main/java/edu/group5/app/view/loginpage/SignUpPageView.java
@@ -2,7 +2,6 @@
import edu.group5.app.control.NavigationController;
import edu.group5.app.control.AuthController;
-import edu.group5.app.model.AppState;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
@@ -22,7 +21,6 @@
* a password field, a sign up button, and an back to login button.
*/
public class SignUpPageView extends BorderPane {
- private final AppState appState;
private final NavigationController nav;
private final AuthController authController;
@@ -32,8 +30,7 @@ public class SignUpPageView extends BorderPane {
private PasswordField passwordField;
private Label errorLabel;
- public SignUpPageView(AppState appState, NavigationController nav, AuthController authController) {
- this.appState = appState;
+ public SignUpPageView(NavigationController nav, AuthController authController) {
this.nav = nav;
this.authController = authController;
diff --git a/src/main/java/edu/group5/app/view/organizationpage/OrganizationPageView.java b/src/main/java/edu/group5/app/view/organizationpage/OrganizationPageView.java
index 2268d4d..3bea2ff 100644
--- a/src/main/java/edu/group5/app/view/organizationpage/OrganizationPageView.java
+++ b/src/main/java/edu/group5/app/view/organizationpage/OrganizationPageView.java
@@ -2,7 +2,7 @@
import edu.group5.app.control.DonationController;
import edu.group5.app.control.NavigationController;
-import edu.group5.app.model.AppState;
+import edu.group5.app.control.OrganizationController;
import edu.group5.app.model.organization.Organization;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
@@ -29,16 +29,21 @@
* donation page, and a back button to return to the causes page.
*/
public class OrganizationPageView extends BorderPane {
- private final AppState appState;
private final NavigationController nav;
+ private final OrganizationController organizationController;
private final DonationController donationController;
- public OrganizationPageView(AppState appState, NavigationController nav, DonationController donationController) {
- this.appState = appState;
+ public OrganizationPageView(NavigationController nav,
+ OrganizationController organizationController,
+ DonationController donationController) {
this.nav = nav;
+ this.organizationController = organizationController;
this.donationController = donationController;
- getStylesheets().add(Objects.requireNonNull(getClass().getResource("/organizationpage/organizationpage.css")).toExternalForm());
+ getStylesheets().add(Objects
+ .requireNonNull(getClass()
+ .getResource("/organizationpage/organizationpage.css"))
+ .toExternalForm());
VBox content = new VBox();
content.getChildren().addAll(createBackButton(), createBody());
@@ -84,7 +89,7 @@ private StackPane createImageContainer() {
imageContainer.setPrefWidth(120);
imageContainer.setMaxWidth(120);
- Organization org = appState.getCurrentOrganization();
+ Organization org = organizationController.getCurrentOrganization();
if (org != null && org.logoUrl() != null && !org.logoUrl().isBlank()) {
ImageView logo = new ImageView(new Image(org.logoUrl(), true));
logo.setId("logo");
@@ -106,7 +111,7 @@ private StackPane createImageContainer() {
}
private VBox createOrgInfoSection() {
- Organization org = appState.getCurrentOrganization();
+ Organization org = organizationController.getCurrentOrganization();
VBox orgInfoSection = new VBox();
orgInfoSection.setSpacing(50);
diff --git a/src/main/java/edu/group5/app/view/userpage/UserPageView.java b/src/main/java/edu/group5/app/view/userpage/UserPageView.java
index 5e2370a..c46af3c 100644
--- a/src/main/java/edu/group5/app/view/userpage/UserPageView.java
+++ b/src/main/java/edu/group5/app/view/userpage/UserPageView.java
@@ -19,12 +19,9 @@
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.HBox;
-import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import java.text.SimpleDateFormat;
-
-import java.math.RoundingMode;
import java.util.*;
@@ -51,13 +48,15 @@ public UserPageView(AppState appState, NavigationController nav, AuthController
}
private HBox createProfileSection() {
- ImageView avatar = new ImageView(new Image(Objects.requireNonNull(getClass().getResourceAsStream("/userpage/account_circle.png"))));
+ ImageView avatar = new ImageView(new Image(Objects
+ .requireNonNull(getClass()
+ .getResourceAsStream("/userpage/account_circle.png"))));
avatar.setFitWidth(150);
avatar.setFitHeight(150);
avatar.setPreserveRatio(true);
avatar.setId("avatar");
- User currentUser = appState.getCurrentUser();
+ User currentUser = authController.getCurrentUser();
Text name = new Text(currentUser.getFirstName() + " " + currentUser.getLastName());
name.setId("profile-name");
@@ -133,7 +132,7 @@ private VBox createDonationsSection() {
donationsBox.getStyleClass().add("donation-list");
donationsBox.setPadding(new Insets(10));
- User currentUser = appState.getCurrentUser();
+ User currentUser = authController.getCurrentUser();
Map userDonations =
donationController.getUserDonations(currentUser.getUserId());
diff --git a/src/test/java/edu/group5/app/model/donation/DonationServiceTest.java b/src/test/java/edu/group5/app/model/donation/DonationServiceTest.java
index 3ed1aec..f57b559 100644
--- a/src/test/java/edu/group5/app/model/donation/DonationServiceTest.java
+++ b/src/test/java/edu/group5/app/model/donation/DonationServiceTest.java
@@ -61,16 +61,6 @@ void testConstructorThrowsIfOrganizationRepositoryIsNull() {
assertEquals("OrganizationRepository cannot be null", exception.getMessage());
}
- @Test
- void testGetDonationRepository() {
- assertEquals(donationRepository, donationService.getDonationRepository());
- }
-
- @Test
- void testGetOrganizationRepository() {
- assertEquals(organizationRepository, donationService.getOrganizationRepository());
- }
-
@Test
void donateReturnsFalseIfCustomerNull() {
boolean result = donationService.donate(null,
diff --git a/src/test/java/edu/group5/app/model/organization/OrganizationServiceTest.java b/src/test/java/edu/group5/app/model/organization/OrganizationServiceTest.java
index 2d76391..78f3e1a 100644
--- a/src/test/java/edu/group5/app/model/organization/OrganizationServiceTest.java
+++ b/src/test/java/edu/group5/app/model/organization/OrganizationServiceTest.java
@@ -43,11 +43,6 @@ void constructor_throwsIfScraperIsNull() {
assertEquals("OrganizationScraper cannot be null", ex.getMessage());
}
- @Test
- void testGetOrganizationRepository() {
- assertEquals(repo, service.getOrganizationRepository());
- }
-
@Test
void testGetTrustedOrganizationsWithLogos() {
Map orgsWithLogos = service.getTrustedOrganizationsWithLogos();
diff --git a/src/test/java/edu/group5/app/model/user/UserServiceTest.java b/src/test/java/edu/group5/app/model/user/UserServiceTest.java
index acec10b..99a6913 100644
--- a/src/test/java/edu/group5/app/model/user/UserServiceTest.java
+++ b/src/test/java/edu/group5/app/model/user/UserServiceTest.java
@@ -34,11 +34,6 @@ void constructorthrowsIfNull() {
assertEquals("UserRepository cannot be null", ex.getMessage());
}
- @Test
- void testGetUserRepository() {
- assertEquals(repo, service.getUserRepository());
- }
-
@Test
void registerUserValid() {
boolean result = service.registerUser("Customer", "Alice", "Smith",