diff options
Diffstat (limited to 'src/main/java/at/ac')
| -rw-r--r-- | src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java | 55 | 
1 files changed, 54 insertions, 1 deletions
diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java index eaf016c..86b3139 100644 --- a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java +++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/einsatzverwaltung/controller/CreateNewEmployeeController.java @@ -1,14 +1,31 @@  package at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.controller; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.dto.Employee.EducationLevel; +import at.ac.tuwien.sepm.assignment.groupphase.einsatzverwaltung.service.EmployeeService; +import at.ac.tuwien.sepm.assignment.groupphase.exception.InvalidEmployeeException; +import at.ac.tuwien.sepm.assignment.groupphase.exception.PersistenceException; +import java.lang.invoke.MethodHandles; +import java.time.LocalDate;  import javafx.fxml.FXML; +import javafx.scene.control.Alert; +import javafx.scene.control.Alert.AlertType;  import javafx.scene.control.Button; +import javafx.scene.control.ButtonType;  import javafx.scene.control.CheckBox;  import javafx.scene.control.ChoiceBox;  import javafx.scene.control.Hyperlink;  import javafx.scene.control.TextField; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +@Controller  public class CreateNewEmployeeController { +    private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); +    private final EmployeeService employeeService; +      @FXML private CheckBox inputIsDriver;      @FXML private CheckBox inputIsPilot;      @FXML private Hyperlink btnCancel; @@ -16,6 +33,10 @@ public class CreateNewEmployeeController {      @FXML private TextField inputName;      @FXML private ChoiceBox inputQualification; +    public CreateNewEmployeeController(EmployeeService employeeService) { +        this.employeeService = employeeService; +    } +      @FXML      public void onCancelClicked() {          throw new UnsupportedOperationException(); @@ -23,6 +44,38 @@ public class CreateNewEmployeeController {      @FXML      public void onCreateClicked() { -        throw new UnsupportedOperationException(); + +        Employee employee = +                Employee.builder() +                        .name(inputName.getText()) +                        .educationLevel(parseEducationLevel()) +                        .birthday(LocalDate.MIN) // TODO: change UI to include birthday field +                        .isDriver(inputIsDriver.isSelected()) +                        .isPilot(inputIsPilot.isSelected()) +                        .build(); + +        try { +            employeeService.add(employee); +        } catch (InvalidEmployeeException e) { +            LOG.error("Invalid Employee: {}", e); +            new Alert(AlertType.ERROR, "Ungültige Eingabe", ButtonType.OK).showAndWait(); +            return; +        } catch (PersistenceException e) { +            LOG.error("Employee could not be saved: {}", e); +            new Alert(AlertType.ERROR, "Konnte nicht gespeichert werden", ButtonType.OK) +                    .showAndWait(); +            return; +        } + +        new Alert(AlertType.INFORMATION, "Mitarbeiter wurde erfolgreich angelegt.", ButtonType.OK) +                .showAndWait(); +    } + +    private EducationLevel parseEducationLevel() { +        if (inputQualification.getSelectionModel().getSelectedItem() == null) { +            return EducationLevel.RS; +        } +        return EducationLevel.valueOf( +                inputQualification.getSelectionModel().getSelectedItem().toString());      }  }  | 
