use of fi.otavanopisto.pyramus.dao.courses.CourseSignupStudentGroupDAO in project pyramus by otavanopisto.
the class EditCourseJSONRequestController method processSignupStudentGroups.
private void processSignupStudentGroups(JSONRequestContext requestContext, Course course, StaffMember loggedUser) {
CourseSignupStudentGroupDAO courseSignupStudentGroupDAO = DAOFactory.getInstance().getCourseSignupStudentGroupDAO();
StudentGroupDAO studentGroupDAO = DAOFactory.getInstance().getStudentGroupDAO();
List<CourseSignupStudentGroup> signupStudentGroups = courseSignupStudentGroupDAO.listByCourse(course);
Integer studentGroupsRowCount = requestContext.getInteger("signupStudentGroupsTable.rowCount");
if (studentGroupsRowCount != null) {
Set<Long> studentGroupIdsPresent = new HashSet<>();
for (int i = 0; i < studentGroupsRowCount; i++) {
Long studentGroupId = requestContext.getLong(String.format("signupStudentGroupsTable.%d.studentGroupId", i));
if (studentGroupId != null) {
studentGroupIdsPresent.add(studentGroupId);
}
}
// Create missing groups
studentGroupIdsPresent.forEach(studentGroupId -> {
if (signupStudentGroups.stream().noneMatch(signupStudentGroup -> Objects.equals(signupStudentGroup.getStudentGroup().getId(), studentGroupId))) {
StudentGroup studentGroup = studentGroupDAO.findById(studentGroupId);
if ((studentGroup != null) && UserUtils.canAccessOrganization(loggedUser, studentGroup.getOrganization())) {
courseSignupStudentGroupDAO.create(course, studentGroup);
} else {
throw new SmvcRuntimeException(PyramusStatusCode.UNAUTHORIZED, "Invalid organization.");
}
}
});
// Remove groups that don't exist anymore
signupStudentGroups.stream().filter(signupStudentGroup -> !studentGroupIdsPresent.contains(signupStudentGroup.getStudentGroup().getId())).forEach(signupStudentGroup -> {
if (UserUtils.canAccessOrganization(loggedUser, signupStudentGroup.getStudentGroup().getOrganization())) {
courseSignupStudentGroupDAO.delete(signupStudentGroup);
} else {
throw new SmvcRuntimeException(PyramusStatusCode.UNAUTHORIZED, "Invalid organization.");
}
});
}
}
Aggregations