diff --git a/desktop/src/main/java/org/example/petshopdesktop/controllers/dialogcontrollers/StaffRegisterDialogController.java b/desktop/src/main/java/org/example/petshopdesktop/controllers/dialogcontrollers/StaffRegisterDialogController.java index b6f9e54c..04fc74bf 100644 --- a/desktop/src/main/java/org/example/petshopdesktop/controllers/dialogcontrollers/StaffRegisterDialogController.java +++ b/desktop/src/main/java/org/example/petshopdesktop/controllers/dialogcontrollers/StaffRegisterDialogController.java @@ -11,15 +11,21 @@ import javafx.scene.control.Label; import javafx.scene.control.ListCell; import javafx.scene.control.PasswordField; import javafx.scene.control.TextField; +import javafx.scene.image.ImageView; import javafx.stage.Stage; import org.example.petshopdesktop.Validator; import org.example.petshopdesktop.api.dto.common.DropdownOption; import org.example.petshopdesktop.api.dto.employee.EmployeeRequest; +import org.example.petshopdesktop.api.dto.employee.EmployeeResponse; import org.example.petshopdesktop.api.endpoints.DropdownApi; import org.example.petshopdesktop.api.endpoints.EmployeeApi; +import org.example.petshopdesktop.api.endpoints.UserApi; import org.example.petshopdesktop.util.ActivityLogger; +import org.example.petshopdesktop.util.DesktopImageSupport; +import org.example.petshopdesktop.util.FilePickerSupport; import org.example.petshopdesktop.util.TextFieldFormatSupport; +import java.io.File; import java.util.List; public class StaffRegisterDialogController { @@ -38,6 +44,13 @@ public class StaffRegisterDialogController { @FXML private Label lblError; @FXML private Button btnCreate; + @FXML private ImageView imgAvatarPreview; + @FXML private Label lblAvatarStatus; + @FXML private Button btnChangeAvatar; + @FXML private Button btnRemoveAvatar; + + private File selectedAvatarFile; + @FXML void initialize() { TextFieldFormatSupport.applyPhoneNumberFormat(txtPhone); @@ -65,6 +78,10 @@ public class StaffRegisterDialogController { } }); + btnChangeAvatar.setOnMouseClicked(e -> handleChangeAvatar()); + btnRemoveAvatar.setOnMouseClicked(e -> handleRemoveAvatar()); + btnRemoveAvatar.setDisable(true); + loadStores(); } @@ -83,6 +100,22 @@ public class StaffRegisterDialogController { }).start(); } + private void handleChangeAvatar() { + File file = FilePickerSupport.pickImageFile(btnCreate.getScene().getWindow()); + if (file == null) return; + selectedAvatarFile = file; + lblAvatarStatus.setText("Selected: " + file.getName()); + DesktopImageSupport.loadImageInto(imgAvatarPreview, file.toURI().toString(), 90, 90); + btnRemoveAvatar.setDisable(false); + } + + private void handleRemoveAvatar() { + selectedAvatarFile = null; + imgAvatarPreview.setImage(null); + lblAvatarStatus.setText("No avatar"); + btnRemoveAvatar.setDisable(true); + } + @FXML void btnCreateClicked(ActionEvent event) { lblError.setText(""); @@ -147,6 +180,7 @@ public class StaffRegisterDialogController { String staffRole = cbStaffRole.getValue(); boolean active = "Active".equals(cbActive.getValue()); Long storeId = cbStore.getValue().getId(); + File avatarFile = selectedAvatarFile; new Thread(() -> { try { @@ -163,7 +197,14 @@ public class StaffRegisterDialogController { request.setActive(active); request.setPrimaryStoreId(storeId); - EmployeeApi.getInstance().createEmployee(request); + EmployeeResponse created = EmployeeApi.getInstance().createEmployee(request); + + if (avatarFile != null && created.getUserId() != null) { + try { + UserApi.getInstance().uploadUserAvatar(created.getUserId(), avatarFile.toPath()); + } catch (Exception ignored) { + } + } Platform.runLater(() -> { Alert alert = new Alert(Alert.AlertType.INFORMATION); diff --git a/desktop/src/main/resources/org/example/petshopdesktop/dialogviews/staff-register-dialog-view.fxml b/desktop/src/main/resources/org/example/petshopdesktop/dialogviews/staff-register-dialog-view.fxml index 2d377353..6eace893 100644 --- a/desktop/src/main/resources/org/example/petshopdesktop/dialogviews/staff-register-dialog-view.fxml +++ b/desktop/src/main/resources/org/example/petshopdesktop/dialogviews/staff-register-dialog-view.fxml @@ -6,6 +6,7 @@ + @@ -24,6 +25,23 @@