package fi.otavanopisto.pyramus.json.grading;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import fi.internetix.smvc.controllers.JSONRequestContext;
import fi.otavanopisto.pyramus.I18N.Messages;
import fi.otavanopisto.pyramus.dao.DAOFactory;
import fi.otavanopisto.pyramus.dao.grading.TransferCreditTemplateDAO;
import fi.otavanopisto.pyramus.domainmodel.grading.TransferCreditTemplate;
import fi.otavanopisto.pyramus.domainmodel.grading.TransferCreditTemplateCourse;
import fi.otavanopisto.pyramus.framework.JSONRequestController;
import fi.otavanopisto.pyramus.framework.UserRole;
/**
* The controller responsible of loading transfer credit templates.
*/
public class LoadTransferCreditTemplateJSONRequestController extends JSONRequestController {
/**
* Processes the request to load a transfer credit template.
* The request should contain the either following parameters:
* <dl>
* <dt><code>transferCreditTemplateId</code></dt>
* <dd>The ID of the transfer credit to archive.</dd>
* </dl>
*
* @param jsonRequestContext The JSON request context
*/
public void process(JSONRequestContext jsonRequestContext) {
TransferCreditTemplateDAO transferCreditTemplateDAO = DAOFactory.getInstance().getTransferCreditTemplateDAO();
Long transferCreditTemplateId = jsonRequestContext.getLong("transferCreditTemplateId");
TransferCreditTemplate transferCreditTemplate = transferCreditTemplateDAO.findById(transferCreditTemplateId);
List<Map<String, Object>> results = new ArrayList<>();
for (TransferCreditTemplateCourse templateCourse : transferCreditTemplate.getCourses()) {
Map<String, Object> result = new HashMap<>();
String subjectName = templateCourse.getSubject().getName();
String subjectCode = templateCourse.getSubject().getCode();
String subjectEducationType = templateCourse.getSubject().getEducationType() != null ? templateCourse.getSubject().getEducationType().getName() : null;
String localizedSubject = subjectName;
if (StringUtils.isNotBlank(subjectCode) && StringUtils.isNotBlank(subjectEducationType)) {
localizedSubject = Messages.getInstance().getText(jsonRequestContext.getRequest().getLocale(),
"generic.subjectFormatterWithEducationType", new Object[] {
subjectCode,
subjectName,
subjectEducationType
});
} else if (StringUtils.isNotBlank(subjectEducationType)) {
localizedSubject = Messages.getInstance().getText(jsonRequestContext.getRequest().getLocale(),
"generic.subjectFormatterNoSubjectCode", new Object[] {
subjectName,
subjectEducationType
});
} else if (StringUtils.isNotBlank(subjectCode)) {
localizedSubject = Messages.getInstance().getText(jsonRequestContext.getRequest().getLocale(),
"generic.subjectFormatterNoEducationType", new Object[] {
subjectCode,
subjectName
});
}
result.put("courseId", templateCourse.getId());
result.put("courseUnits", templateCourse.getCourseLength().getUnits());
result.put("courseUnit", templateCourse.getCourseLength().getUnit().getId());
result.put("courseName", templateCourse.getCourseName());
result.put("courseNumber", templateCourse.getCourseNumber());
result.put("courseOptionality", templateCourse.getOptionality().name());
result.put("subjectId", templateCourse.getSubject().getId());
result.put("subjectName", localizedSubject);
if (templateCourse.getCurriculum() != null)
result.put("curriculumId", templateCourse.getCurriculum().getId());
results.add(result);
}
jsonRequestContext.addResponseParameter("results", results);
}
public UserRole[] getAllowedRoles() {
return new UserRole[] { UserRole.MANAGER, UserRole.STUDY_PROGRAMME_LEADER, UserRole.ADMINISTRATOR };
}
}