package fi.otavanopisto.pyramus.json.students; import java.util.List; import fi.internetix.smvc.controllers.JSONRequestContext; import fi.otavanopisto.pyramus.dao.DAOFactory; import fi.otavanopisto.pyramus.dao.grading.CourseAssessmentDAO; import fi.otavanopisto.pyramus.dao.grading.CreditLinkDAO; import fi.otavanopisto.pyramus.dao.grading.TransferCreditDAO; import fi.otavanopisto.pyramus.dao.students.StudentDAO; import fi.otavanopisto.pyramus.dao.users.StaffMemberDAO; import fi.otavanopisto.pyramus.domainmodel.grading.CourseAssessment; import fi.otavanopisto.pyramus.domainmodel.grading.CreditLink; import fi.otavanopisto.pyramus.domainmodel.grading.TransferCredit; import fi.otavanopisto.pyramus.domainmodel.students.Student; import fi.otavanopisto.pyramus.domainmodel.users.User; import fi.otavanopisto.pyramus.framework.JSONRequestController; import fi.otavanopisto.pyramus.framework.UserRole; public class ImportStudentCreditsJSONRequestController extends JSONRequestController { public void process(JSONRequestContext requestContext) { StudentDAO studentDAO = DAOFactory.getInstance().getStudentDAO(); CreditLinkDAO creditLinkDAO = DAOFactory.getInstance().getCreditLinkDAO(); CourseAssessmentDAO courseAssessmentDAO = DAOFactory.getInstance().getCourseAssessmentDAO(); TransferCreditDAO transferCreditDAO = DAOFactory.getInstance().getTransferCreditDAO(); StaffMemberDAO userDAO = DAOFactory.getInstance().getStaffMemberDAO(); Long studentId = requestContext.getLong("studentId"); Student baseStudent = studentDAO.findById(studentId); List<Student> students = studentDAO.listByPerson(baseStudent.getPerson()); students.remove(baseStudent); User loggedUser = userDAO.findById(requestContext.getLoggedUserId()); // LinkedCourseAssessments for baseStudent int rowCount = requestContext.getLong("linkedCourseAssessmentsTable." + baseStudent.getId() + ".rowCount").intValue(); for (int i = 0; i < rowCount; i++) { String paramName = "linkedCourseAssessmentsTable." + baseStudent.getId() + "." + i + ".selected"; boolean selected = new Long(1).equals(requestContext.getLong(paramName)); if (selected) { Long creditLinkId = requestContext.getLong("linkedCourseAssessmentsTable." + baseStudent.getId() + "." + i + ".creditLinkId"); CreditLink creditLink = creditLinkDAO.findById(creditLinkId); creditLinkDAO.archive(creditLink, loggedUser); } } // LinkedTransferCredits for baseStudent rowCount = requestContext.getLong("linkedTransferCreditsTable." + baseStudent.getId() + ".rowCount").intValue(); for (int i = 0; i < rowCount; i++) { String paramName = "linkedTransferCreditsTable." + baseStudent.getId() + "." + i + ".selected"; boolean selected = new Long(1).equals(requestContext.getLong(paramName)); if (selected) { Long creditLinkId = requestContext.getLong("linkedTransferCreditsTable." + baseStudent.getId() + "." + i + ".creditLinkId"); CreditLink creditLink = creditLinkDAO.findById(creditLinkId); creditLinkDAO.archive(creditLink, loggedUser); } } for (Student student : students) { // CourseAssessments rowCount = requestContext.getLong("courseAssessmentsTable." + student.getId() + ".rowCount").intValue(); for (int i = 0; i < rowCount; i++) { String paramName = "courseAssessmentsTable." + student.getId() + "." + i + ".selected"; boolean selected = new Long(1).equals(requestContext.getLong(paramName)); if (selected) { Long courseAssessmentId = requestContext.getLong("courseAssessmentsTable." + student.getId() + "." + i + ".courseAssessmentId"); CourseAssessment courseAssessment = courseAssessmentDAO.findById(courseAssessmentId); CreditLink creditLink = creditLinkDAO.findByStudentAndCredit(baseStudent, courseAssessment); if (creditLink == null) creditLinkDAO.create(courseAssessment, baseStudent, loggedUser); } } // TransferCredits rowCount = requestContext.getLong("transferCreditsTable." + student.getId() + ".rowCount").intValue(); for (int i = 0; i < rowCount; i++) { String paramName = "transferCreditsTable." + student.getId() + "." + i + ".selected"; boolean selected = new Long(1).equals(requestContext.getLong(paramName)); if (selected) { Long transferCreditId = requestContext.getLong("transferCreditsTable." + student.getId() + "." + i + ".transferCreditId"); TransferCredit transferCredit = transferCreditDAO.findById(transferCreditId); CreditLink creditLink = creditLinkDAO.findByStudentAndCredit(baseStudent, transferCredit); if (creditLink == null) creditLinkDAO.create(transferCredit, baseStudent, loggedUser); } } // LinkedCourseAssessments rowCount = requestContext.getLong("linkedCourseAssessmentsTable." + student.getId() + ".rowCount").intValue(); for (int i = 0; i < rowCount; i++) { String paramName = "linkedCourseAssessmentsTable." + student.getId() + "." + i + ".selected"; boolean selected = new Long(1).equals(requestContext.getLong(paramName)); if (selected) { Long courseAssessmentId = requestContext.getLong("linkedCourseAssessmentsTable." + student.getId() + "." + i + ".courseAssessmentId"); CourseAssessment courseAssessment = courseAssessmentDAO.findById(courseAssessmentId); CreditLink creditLink = creditLinkDAO.findByStudentAndCredit(baseStudent, courseAssessment); if (creditLink == null) creditLinkDAO.create(courseAssessment, baseStudent, loggedUser); } } // LinkedTransferCredits rowCount = requestContext.getLong("linkedTransferCreditsTable." + student.getId() + ".rowCount").intValue(); for (int i = 0; i < rowCount; i++) { String paramName = "linkedTransferCreditsTable." + student.getId() + "." + i + ".selected"; boolean selected = new Long(1).equals(requestContext.getLong(paramName)); if (selected) { Long transferCreditId = requestContext.getLong("linkedTransferCreditsTable." + student.getId() + "." + i + ".transferCreditId"); TransferCredit transferCredit = transferCreditDAO.findById(transferCreditId); CreditLink creditLink = creditLinkDAO.findByStudentAndCredit(baseStudent, transferCredit); if (creditLink == null) creditLinkDAO.create(transferCredit, baseStudent, loggedUser); } } } String redirectURL = requestContext.getRequest().getContextPath() + "/students/importstudentcredits.page?studentId=" + baseStudent.getId(); // String refererAnchor = requestContext.getRefererAnchor(); // if (!StringUtils.isBlank(refererAnchor)) // redirectURL += "#" + refererAnchor; requestContext.setRedirectURL(redirectURL); } public UserRole[] getAllowedRoles() { return new UserRole[] { UserRole.MANAGER, UserRole.STUDY_PROGRAMME_LEADER, UserRole.ADMINISTRATOR }; } }