package fi.otavanopisto.pyramus.json.settings;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.math.NumberUtils;
import fi.internetix.smvc.controllers.JSONRequestContext;
import fi.otavanopisto.pyramus.dao.DAOFactory;
import fi.otavanopisto.pyramus.dao.grading.GradeDAO;
import fi.otavanopisto.pyramus.dao.grading.GradingScaleDAO;
import fi.otavanopisto.pyramus.domainmodel.grading.GradingScale;
import fi.otavanopisto.pyramus.framework.JSONRequestController;
import fi.otavanopisto.pyramus.framework.UserRole;
/**
* The controller responsible of creating a new grading scale.
*
* @see fi.otavanopisto.pyramus.views.settings.CreateGradingScaleViewController
*/
public class CreateGradingScaleJSONRequestController extends JSONRequestController {
/**
* Processes the request to create a new grading scale.
*
* @param jsonRequestContext The JSON request context
*/
public void process(JSONRequestContext jsonRequestContext) {
GradingScaleDAO gradingScaleDAO = DAOFactory.getInstance().getGradingScaleDAO();
GradeDAO gradeDAO = DAOFactory.getInstance().getGradeDAO();
String name = jsonRequestContext.getRequest().getParameter("name");
String description = jsonRequestContext.getRequest().getParameter("description");
GradingScale gradingScale = gradingScaleDAO.create(name, description);
int rowCount = NumberUtils.createInteger(jsonRequestContext.getRequest().getParameter("gradesTable.rowCount")).intValue();
for (int i = 0; i < rowCount; i++) {
String colPrefix = "gradesTable." + i;
String gradeName = jsonRequestContext.getRequest().getParameter(colPrefix + ".name");
String gradeQualification = jsonRequestContext.getRequest().getParameter(colPrefix + ".qualification");
Double gradeGPA = NumberUtils.createDouble(jsonRequestContext.getRequest().getParameter(colPrefix + ".GPA"));
String gradeDescription = jsonRequestContext.getRequest().getParameter(colPrefix + ".description");
Boolean passingGrade = "1".equals(jsonRequestContext.getRequest().getParameter(colPrefix + ".passingGrade"));
gradeDAO.create(gradingScale, gradeName, gradeDescription, passingGrade, gradeGPA, gradeQualification);
}
String redirectURL = jsonRequestContext.getRequest().getContextPath() + "/settings/editgradingscale.page?gradingScaleId=" + gradingScale.getId();
String refererAnchor = jsonRequestContext.getRefererAnchor();
if (!StringUtils.isBlank(refererAnchor))
redirectURL += "#" + refererAnchor;
jsonRequestContext.setRedirectURL(redirectURL);
}
public UserRole[] getAllowedRoles() {
return new UserRole[] { UserRole.MANAGER, UserRole.STUDY_PROGRAMME_LEADER, UserRole.ADMINISTRATOR };
}
}