package de.thdeg.grademanager.gui; import de.thdeg.grademanager.JpaService; import de.thdeg.grademanager.model.Course; import de.thdeg.grademanager.model.Enrollment; import de.thdeg.grademanager.model.Student; import de.thdeg.grademanager.model.enumeration.Mark; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.ComboBox; import java.io.IOException; import java.util.Set; public class StudentGradesController { protected Mark mark; @FXML protected ComboBox<Mark> markComboBox; ObservableList<Mark> markList = FXCollections.observableArrayList(Mark.values()); private static Student student; public static void setStudent(Student student) { StudentGradesController.student = student; } private static Course course; public static void setCourse(Course course) { StudentGradesController.course = course; } @FXML protected void initialize() { markComboBox.setItems(markList); Set<Enrollment> enrollments = student.getEnrollments(); for (Enrollment e: enrollments) { if(course.getId() == e.getCourse().getId()){ if(e.getGrade() != null){ markComboBox.setPromptText(String.valueOf(e.getGrade())); } } } } @FXML protected void onSaveButtonClick(ActionEvent event) throws IOException { if (markComboBox.getValue() != null) { mark = markComboBox.getValue(); Set<Enrollment> enrollments = student.getEnrollments(); for (Enrollment e : enrollments) { if (course.getId() == e.getCourse().getId()) { e.setGrade(mark.getMark()); JpaService jpaService = JpaService.getInstance(); jpaService.runInTransaction(entityManager -> { entityManager.merge(e); return null; }); initialize(); } } } SwitchWindowHelper.switchTo("Student Courses", event); } @FXML protected void switchToStudentCourses(ActionEvent event) throws IOException { SwitchWindowHelper.switchTo("Student Courses", event); } }