diff --git a/src/main/java/org/example/petshopdesktop/controllers/LoginController.java b/src/main/java/org/example/petshopdesktop/controllers/LoginController.java index e39b2ea3..502c7a49 100644 --- a/src/main/java/org/example/petshopdesktop/controllers/LoginController.java +++ b/src/main/java/org/example/petshopdesktop/controllers/LoginController.java @@ -29,9 +29,6 @@ public class LoginController { @FXML private Label lblError; - @FXML - private Button btnCreateStaff; - @FXML public void initialize() { lblError.setText(""); @@ -93,24 +90,6 @@ public class LoginController { } } - @FXML - void btnCreateStaffClicked(ActionEvent event) { - lblError.setText(""); - try { - FXMLLoader loader = new FXMLLoader(getClass().getResource("/org/example/petshopdesktop/dialogviews/staff-register-dialog-view.fxml")); - Stage dialog = new Stage(); - dialog.initOwner(txtUsername.getScene().getWindow()); - dialog.initModality(Modality.APPLICATION_MODAL); - dialog.setTitle("Create Staff Account"); - dialog.setScene(new Scene(loader.load())); - dialog.setResizable(false); - dialog.showAndWait(); - } catch (Exception e) { - ActivityLogger.getInstance().logException("LoginController.btnCreateStaffClicked", e, "Opening staff register dialog"); - lblError.setText("Could not open staff account creation."); - } - } - private void openMainLayout() { try { FXMLLoader loader = new FXMLLoader( diff --git a/src/main/java/org/example/petshopdesktop/controllers/MainLayoutController.java b/src/main/java/org/example/petshopdesktop/controllers/MainLayoutController.java index 11609366..a104c135 100644 --- a/src/main/java/org/example/petshopdesktop/controllers/MainLayoutController.java +++ b/src/main/java/org/example/petshopdesktop/controllers/MainLayoutController.java @@ -8,6 +8,7 @@ import javafx.scene.Scene; import javafx.scene.control.Alert; import javafx.scene.control.Button; import javafx.scene.control.Label; +import javafx.scene.control.Separator; import javafx.scene.layout.StackPane; import javafx.stage.Stage; import org.example.petshopdesktop.auth.UserSession; @@ -69,12 +70,21 @@ public class MainLayoutController { @FXML private Button btnAnalytics; + @FXML + private Button btnChat; + @FXML private Label lblUsername; @FXML private Label lblRole; + @FXML + private Label lblAdminSection; + + @FXML + private Separator separatorAdmin; + @FXML private StackPane spContentArea; @@ -150,6 +160,12 @@ public class MainLayoutController { updateButtons(btnSuppliers); } + @FXML + void btnChatClicked(ActionEvent event) { + loadView("chat-view.fxml"); + updateButtons(btnChat); + } + @FXML void btnLogoutClicked(ActionEvent event) { UserSession.getInstance().logout(); @@ -204,6 +220,16 @@ public class MainLayoutController { btnStaffAccounts.setManaged(isAdmin); } + if (lblAdminSection != null) { + lblAdminSection.setVisible(isAdmin); + lblAdminSection.setManaged(isAdmin); + } + + if (separatorAdmin != null) { + separatorAdmin.setVisible(isAdmin); + separatorAdmin.setManaged(isAdmin); + } + btnSalesHistory.setText(isAdmin ? "Sales History" : "Sales"); @@ -244,7 +270,8 @@ public class MainLayoutController { btnProducts, btnPurchaseOrders, btnStaffAccounts, - btnAnalytics + btnAnalytics, + btnChat }; for (Button button : buttons) { diff --git a/src/main/java/org/example/petshopdesktop/controllers/StaffAccountsController.java b/src/main/java/org/example/petshopdesktop/controllers/StaffAccountsController.java index 8e92ddb6..6006bb15 100644 --- a/src/main/java/org/example/petshopdesktop/controllers/StaffAccountsController.java +++ b/src/main/java/org/example/petshopdesktop/controllers/StaffAccountsController.java @@ -5,11 +5,16 @@ import javafx.collections.ObservableList; import javafx.collections.transformation.FilteredList; import javafx.event.ActionEvent; import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Scene; +import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.TextField; import javafx.scene.control.cell.PropertyValueFactory; +import javafx.stage.Modality; +import javafx.stage.Stage; import org.example.petshopdesktop.auth.UserSession; import org.example.petshopdesktop.database.UserDB; import org.example.petshopdesktop.models.StaffAccount; @@ -46,6 +51,9 @@ public class StaffAccountsController { @FXML private Label lblError; + @FXML + private Button btnCreateAccount; + private final ObservableList staffAccounts = FXCollections.observableArrayList(); private FilteredList filtered; @@ -66,6 +74,7 @@ public class StaffAccountsController { if (!UserSession.getInstance().isAdmin()) { lblError.setText("Access restricted."); tvStaff.setDisable(true); + btnCreateAccount.setDisable(true); return; } @@ -77,6 +86,25 @@ public class StaffAccountsController { refresh(); } + @FXML + void btnCreateAccountClicked(ActionEvent event) { + lblError.setText(""); + try { + FXMLLoader loader = new FXMLLoader(getClass().getResource("/org/example/petshopdesktop/dialogviews/staff-register-dialog-view.fxml")); + Stage dialog = new Stage(); + dialog.initOwner(tvStaff.getScene().getWindow()); + dialog.initModality(Modality.APPLICATION_MODAL); + dialog.setTitle("Create Staff Account"); + dialog.setScene(new Scene(loader.load())); + dialog.setResizable(false); + dialog.showAndWait(); + refresh(); + } catch (Exception e) { + ActivityLogger.getInstance().logException("StaffAccountsController.btnCreateAccountClicked", e, "Opening staff register dialog"); + lblError.setText("Could not open staff account creation."); + } + } + private void refresh() { lblError.setText(""); try { diff --git a/src/main/resources/org/example/petshopdesktop/login-view.fxml b/src/main/resources/org/example/petshopdesktop/login-view.fxml index c15d860c..6b76dcc9 100644 --- a/src/main/resources/org/example/petshopdesktop/login-view.fxml +++ b/src/main/resources/org/example/petshopdesktop/login-view.fxml @@ -76,17 +76,5 @@ - - diff --git a/src/main/resources/org/example/petshopdesktop/main-layout-view.fxml b/src/main/resources/org/example/petshopdesktop/main-layout-view.fxml index 57a14cf1..e57286ef 100644 --- a/src/main/resources/org/example/petshopdesktop/main-layout-view.fxml +++ b/src/main/resources/org/example/petshopdesktop/main-layout-view.fxml @@ -3,6 +3,7 @@ + @@ -12,163 +13,181 @@ - - - - - - - - + + + + + + + + + - + - + + + + + - + - - - - - + - + + + - - - - - + - + - + + + + + - + - - - + + + +
diff --git a/src/main/resources/org/example/petshopdesktop/modelviews/analytics-view.fxml b/src/main/resources/org/example/petshopdesktop/modelviews/analytics-view.fxml index a79bbbed..5aa4acb4 100644 --- a/src/main/resources/org/example/petshopdesktop/modelviews/analytics-view.fxml +++ b/src/main/resources/org/example/petshopdesktop/modelviews/analytics-view.fxml @@ -8,195 +8,216 @@ - + + - - - - - + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/org/example/petshopdesktop/modelviews/chat-view.fxml b/src/main/resources/org/example/petshopdesktop/modelviews/chat-view.fxml new file mode 100644 index 00000000..8dc85932 --- /dev/null +++ b/src/main/resources/org/example/petshopdesktop/modelviews/chat-view.fxml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/src/main/resources/org/example/petshopdesktop/modelviews/staff-accounts-view.fxml b/src/main/resources/org/example/petshopdesktop/modelviews/staff-accounts-view.fxml index 1318ad96..b2771e6f 100644 --- a/src/main/resources/org/example/petshopdesktop/modelviews/staff-accounts-view.fxml +++ b/src/main/resources/org/example/petshopdesktop/modelviews/staff-accounts-view.fxml @@ -25,6 +25,14 @@ +