package com.kritsit.casetracker.client.domain.ui.controller;
import java.util.HashMap;
import java.util.Map;
import com.kritsit.casetracker.client.domain.services.IAdministratorService;
import com.kritsit.casetracker.client.domain.services.InputToModelParseResult;
import com.kritsit.casetracker.shared.domain.model.Permission;
import com.kritsit.casetracker.shared.domain.model.Staff;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.TextField;
import javafx.scene.control.Alert.AlertType;
public class EditUserController {
private Staff s;
private IAdministratorService administratorService;
private AdministratorController c;
public EditUserController(Staff s, IAdministratorService a, AdministratorController c){
this.s = s;
administratorService = a;
this.c=c;
}
public void initialize(){
initPermissionCombobox();
firstNameField.setText(s.getFirstName());
lastNameField.setText(s.getLastName());
usernameField.setText(s.getUsername());
positionField.setText(s.getPosition());
departmentCombobox.setValue(s.getDepartment());
permissionCombobox.setValue(s.getPermission());
updateButton.setOnAction(event->{
updateUser();
});
}
private void initPermissionCombobox(){
ObservableList<Permission> permissions =
FXCollections.observableArrayList(Permission.ADMIN,
Permission.EDITOR, Permission.VIEWER);
permissionCombobox.setItems(permissions);
}
private void updateUser(){
Map<String, Object> inputMap = new HashMap<String, Object>();
inputMap.put("username", usernameField.getText());
inputMap.put("firstname", firstNameField.getText());
inputMap.put("lastname", lastNameField.getText());
inputMap.put("department", departmentCombobox.getValue());
inputMap.put("position", positionField.getText());
inputMap.put("permission", permissionCombobox.getValue().toString());
InputToModelParseResult result = administratorService.editUser(inputMap);
if(result.isSuccessful()){
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("Editing user");
alert.setHeaderText("User "+usernameField.getText()+" edited successfully");
alert.setContentText("Click OK to proceed");
c.initStaffTable();
alert.showAndWait();
}
else{
Alert alert = new Alert(AlertType.ERROR);
alert.setTitle("Error");
alert.setHeaderText("Error editing user "+usernameField.getText());
alert.setContentText(result.getReason());
alert.showAndWait();
}
}
@FXML private Button updateButton;
@FXML private TextField firstNameField;
@FXML private TextField lastNameField;
@FXML private TextField usernameField;
@FXML private TextField positionField;
@FXML private ComboBox<Permission> permissionCombobox;
@FXML private ComboBox<String> departmentCombobox;
}