diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/LoginPageController.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/LoginPageController.java index 04fa579..3e13f25 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/LoginPageController.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/LoginPageController.java @@ -57,7 +57,7 @@ private void handleLogin(ActionEvent event){ Alert.AlertType.INFORMATION, "Login Success", "Login Successful!"); - LoaderScene.LoadScene("profile_org_Settings", event, null, null, authToken); + LoaderScene.LoadScene("profile_user_Settings", event, null, null, authToken); } else { showAlert( Alert.AlertType.ERROR, diff --git a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileUserSettingsController.java b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileUser/profileUserSettingsController.java similarity index 61% rename from helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileUserSettingsController.java rename to helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileUser/profileUserSettingsController.java index 71455b5..60ed7c5 100644 --- a/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileUserSettingsController.java +++ b/helpmehelpapplication/src/main/java/ntnu/systemutvikling/team6/controller/profileUser/profileUserSettingsController.java @@ -1,6 +1,5 @@ -package ntnu.systemutvikling.team6.controller; +package ntnu.systemutvikling.team6.controller.profileUser; -import javafx.application.Platform; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.*; @@ -10,7 +9,9 @@ import ntnu.systemutvikling.team6.controller.components.NavbarController; import ntnu.systemutvikling.team6.database.DAO.UserDAO; import ntnu.systemutvikling.team6.database.DatabaseConnection; +import ntnu.systemutvikling.team6.database.Readers.UserSelect; import ntnu.systemutvikling.team6.models.user.*; +import ntnu.systemutvikling.team6.security.PasswordHasher; public class profileUserSettingsController extends BaseController { @FXML private NavbarController navbarController; @@ -24,6 +25,10 @@ public class profileUserSettingsController extends BaseController { @FXML private PasswordField PassWordField; @FXML private TextField ConfirmPasswordField; + @FXML private Label nameLabel; + @FXML private Label shortNameLabel; + @FXML private Label shortNameLabel2; + @FXML private Button ConfirmChangeSettings; @FXML private Button ConfirmChangeSettings1; @@ -36,28 +41,38 @@ protected void authTokenisSet() { LoaderScene.LoadScene("FrontPage", stage,null,null,authToken); } navbarController.setAuthToken(authToken); + populateFields(); } @FXML public void initialize() { languageComboBox.getItems().addAll("English", "Norwegian"); themeComboBox.getItems().addAll("Light mode", "Dark mode"); + } - if (authToken != null && authToken.getCurrentUser().getSettings() != null) { - User user = authToken.getCurrentUser(); - Settings settings = user.getSettings(); - languageComboBox.setValue(settings.getLanguage() == Language.NORWEGIAN ? "Norwegian" : "English"); - themeComboBox.setValue(settings.isLightMode() ? "Light mode" : "Dark mode"); - anonymousToggle.setSelected(settings.isAnonymous()); - anonymousLabel.setText(settings.isAnonymous() ? "On" : "Off"); + public void populateFields(){ + User user = authToken.getCurrentUser(); + Settings settings = user.getSettings(); + // Names + nameLabel.setText(user.getUsername()); + shortNameLabel.setText(user.getUsername().substring(0,2).toUpperCase().trim()); + shortNameLabel2.setText(user.getUsername().substring(0,2).toUpperCase().trim()); + // SettingsPage Spesefic: + languageComboBox.setValue(settings.getLanguage() == Language.NORWEGIAN ? "Norwegian" : "English"); + themeComboBox.setValue(settings.isLightMode() ? "Light mode" : "Dark mode"); + anonymousToggle.setSelected(settings.isAnonymous()); - NameField.setText(user.getUsername()); - EmailField.setText(user.getEmail()); - PassWordField.setText("Sett new password here"); - } else { - languageComboBox.setValue("English"); - themeComboBox.setValue("Light mode"); - } + boolean on = settings.isAnonymous(); + anonymousLabel.setText(on ? "On" : "Off"); + anonymousToggle.setStyle( + "-fx-background-color: " + (on ? "#2f8f8b" : "#ccc") + ";" + + "-fx-background-radius: 14; -fx-min-width: 32; -fx-min-height: 28;" + + "-fx-max-width: 52; -fx-max-height: 28;" + ); + + + NameField.setText(user.getUsername()); + EmailField.setText(user.getEmail()); } @FXML @@ -66,7 +81,7 @@ private void handleAnonymousToggle(ActionEvent event) { anonymousLabel.setText(on ? "On" : "Off"); anonymousToggle.setStyle( "-fx-background-color: " + (on ? "#2f8f8b" : "#ccc") + ";" + - "-fx-background-radius: 14; -fx-min-width: 52; -fx-min-height: 28;" + + "-fx-background-radius: 14; -fx-min-width: 32; -fx-min-height: 28;" + "-fx-max-width: 52; -fx-max-height: 28;" ); // save to settings @@ -93,13 +108,27 @@ private void handleNewProfile(ActionEvent event){ showAlert(Alert.AlertType.ERROR, "Mismatch of password", "Password do not match"); return; } - User newUserCredentials= new User(nameText, emailText, password, Role.NORMAL_USER, new Settings(), new Inbox()); + String hashPassword = new PasswordHasher().getHashPassword(password); + User newUserOnlyCredentials= new User(authToken.getCurrentUser().getId().toString(),nameText, emailText, hashPassword,"NORMAL_USER"); boolean updateSuccess; DatabaseConnection conn = new DatabaseConnection(); UserDAO userDataObject = new UserDAO(conn); + UserSelect userReaderObject = new UserSelect(conn); try { - updateSuccess = userDataObject.updateUserDetails(newUserCredentials); + if (!emailText.equals(authToken.getCurrentUser().getEmail())) { + boolean isEmailTaken = userReaderObject.isEmailTaken(emailText); + if (!isEmailTaken) { + updateSuccess = userDataObject.updateUserDetails(newUserOnlyCredentials); + } else { + throw new IllegalArgumentException("Email Alreay taken"); + } + } else { + updateSuccess = userDataObject.updateUserDetails(newUserOnlyCredentials); + } + } catch (IllegalArgumentException e) { + showAlert(Alert.AlertType.ERROR, "Email already taken", "Email already taken by another user."); + return; } catch (Exception e) { e.printStackTrace(); showAlert(Alert.AlertType.ERROR, "Unexpected Error", "Unexpected error ocurred"); @@ -114,6 +143,8 @@ private void handleNewProfile(ActionEvent event){ authToken.getCurrentUser().setPassword(password); authToken.getCurrentUser().setEmail(emailText); LoaderScene.LoadScene("profile_user_settings", event, null, null, authToken); + } else { + System.out.println("Something went wrong when updating Settings"); } } @@ -152,8 +183,32 @@ private void handleNewPreferences(ActionEvent event) { } + @FXML private void handleLogout(ActionEvent event){ authToken.logout(); + showAlert(Alert.AlertType.INFORMATION, "Logging out", "Logging out..."); LoaderScene.LoadScene("FrontPage", event, null, null, authToken); } + + @FXML + private void switchToFrontPage(ActionEvent event){ + LoaderScene.LoadScene("FrontPage", event, null, null, authToken); + } + + @FXML + private void switchToInboxPage(ActionEvent event){ + LoaderScene.LoadScene("profile_user_inbox", event, null, null, authToken); + + } + + @FXML + private void switchToHistoryPage(ActionEvent event){ + LoaderScene.LoadScene("profile_user_history", event, null, null, authToken); + } + + @FXML + private void switchToInterestPage(ActionEvent event){ + LoaderScene.LoadScene("profile_user_interests", event, null, null, authToken); + } + } diff --git a/helpmehelpapplication/src/main/resources/fxml/components/navbar.fxml b/helpmehelpapplication/src/main/resources/fxml/components/navbar.fxml index 157f119..741eb7d 100644 --- a/helpmehelpapplication/src/main/resources/fxml/components/navbar.fxml +++ b/helpmehelpapplication/src/main/resources/fxml/components/navbar.fxml @@ -9,7 +9,7 @@ - + diff --git a/helpmehelpapplication/src/main/resources/fxml/profile_user_settings.fxml b/helpmehelpapplication/src/main/resources/fxml/profile_user_settings.fxml index ae248c6..71c29f7 100644 --- a/helpmehelpapplication/src/main/resources/fxml/profile_user_settings.fxml +++ b/helpmehelpapplication/src/main/resources/fxml/profile_user_settings.fxml @@ -8,7 +8,7 @@ - + @@ -23,71 +23,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -100,8 +37,19 @@ - @@ -110,11 +58,11 @@ - - @@ -127,21 +75,22 @@ -