package fi.otavanopisto.pyramus.json.grading;
import java.util.Date;
import fi.internetix.smvc.controllers.JSONRequestContext;
import fi.otavanopisto.pyramus.dao.DAOFactory;
import fi.otavanopisto.pyramus.dao.courses.CourseStudentDAO;
import fi.otavanopisto.pyramus.dao.grading.CourseAssessmentDAO;
import fi.otavanopisto.pyramus.dao.grading.GradeDAO;
import fi.otavanopisto.pyramus.dao.users.StaffMemberDAO;
import fi.otavanopisto.pyramus.domainmodel.courses.CourseStudent;
import fi.otavanopisto.pyramus.domainmodel.grading.CourseAssessment;
import fi.otavanopisto.pyramus.domainmodel.grading.Grade;
import fi.otavanopisto.pyramus.domainmodel.users.StaffMember;
import fi.otavanopisto.pyramus.framework.JSONRequestController;
import fi.otavanopisto.pyramus.framework.UserRole;
public class SaveCourseAssessmentJSONRequestController extends JSONRequestController {
public void process(JSONRequestContext jsonRequestContext) {
StaffMemberDAO staffMemberDAO = DAOFactory.getInstance().getStaffMemberDAO();
CourseStudentDAO courseStudentDAO = DAOFactory.getInstance().getCourseStudentDAO();
GradeDAO gradeDAO = DAOFactory.getInstance().getGradeDAO();
CourseAssessmentDAO courseAssessmentDAO = DAOFactory.getInstance().getCourseAssessmentDAO();
Long courseStudentId = jsonRequestContext.getLong("courseStudentId");
Date assessmentDate = jsonRequestContext.getDate("assessmentDate");
Long assessingUserId = jsonRequestContext.getLong("assessingUserId");
Long gradeId = jsonRequestContext.getLong("gradeId");
String verbalAssessment = jsonRequestContext.getString("verbalAssessment");
CourseStudent courseStudent = courseStudentDAO.findById(courseStudentId);
StaffMember assessingUser = staffMemberDAO.findById(assessingUserId);
Grade grade = gradeId == null ? null : gradeDAO.findById(gradeId);
CourseAssessment assessment = courseAssessmentDAO.findByCourseStudentAndArchived(courseStudent, Boolean.FALSE);
if (assessment == null) {
assessment = courseAssessmentDAO.create(courseStudent,
assessingUser, grade, assessmentDate, verbalAssessment);
} else {
assessment = courseAssessmentDAO.update(assessment,
assessingUser, grade, assessmentDate, verbalAssessment, assessment.getArchived());
}
jsonRequestContext.setRedirectURL(jsonRequestContext.getReferer(true));
}
public UserRole[] getAllowedRoles() {
return new UserRole[] { UserRole.MANAGER, UserRole.STUDY_PROGRAMME_LEADER, UserRole.ADMINISTRATOR };
}
}