package fi.otavanopisto.pyramus.util.dataimport.scripting.api;
import java.util.ArrayList;
import java.util.List;
import fi.otavanopisto.pyramus.dao.DAOFactory;
import fi.otavanopisto.pyramus.dao.base.DefaultsDAO;
import fi.otavanopisto.pyramus.dao.base.SubjectDAO;
import fi.otavanopisto.pyramus.dao.modules.ModuleDAO;
import fi.otavanopisto.pyramus.dao.users.StaffMemberDAO;
import fi.otavanopisto.pyramus.domainmodel.base.EducationalTimeUnit;
import fi.otavanopisto.pyramus.domainmodel.base.Subject;
import fi.otavanopisto.pyramus.domainmodel.modules.Module;
import fi.otavanopisto.pyramus.domainmodel.users.User;
import fi.otavanopisto.pyramus.util.dataimport.scripting.InvalidScriptException;
public class ModuleAPI {
public ModuleAPI(Long loggedUserId) {
this.loggedUserId = loggedUserId;
}
public Long create(String name, String description, Long maxParticipantCount, String subjectCode, Integer courseNumber) throws InvalidScriptException {
ModuleDAO moduleDAO = DAOFactory.getInstance().getModuleDAO();
SubjectDAO subjectDAO = DAOFactory.getInstance().getSubjectDAO();
StaffMemberDAO userDAO = DAOFactory.getInstance().getStaffMemberDAO();
DefaultsDAO defaultsDAO = DAOFactory.getInstance().getDefaultsDAO();
Subject subject = subjectDAO.findByCode(subjectCode);
if (subject == null) {
throw new InvalidScriptException("Subject by code '" + subjectCode + "' not found.");
}
User loggedUser = userDAO.findById(loggedUserId);
if (loggedUser == null) {
throw new InvalidScriptException("Logged user not found.");
}
EducationalTimeUnit timeUnit = defaultsDAO.getDefaults().getBaseTimeUnit();
// TODO: moduleLength, timeUnit, curriculum
return moduleDAO.create(name, subject, courseNumber, 0d, timeUnit, description, maxParticipantCount, loggedUser).getId();
}
public Long[] listIdsBySubjectCodeAndCourseNumber(String subjectCode, Integer courseNumber) {
ModuleDAO moduleDAO = DAOFactory.getInstance().getModuleDAO();
SubjectDAO subjectDAO = DAOFactory.getInstance().getSubjectDAO();
Subject subject = subjectDAO.findByCode(subjectCode);
List<Long> result = new ArrayList<>();
List<Module> modules = moduleDAO.listBySubjectAndCourseNumber(subject, courseNumber);
for (Module module : modules) {
result.add(module.getId());
}
return result.toArray(new Long[0]);
}
public Long[] listIdsBySubjectCode(String subjectCode) {
ModuleDAO moduleDAO = DAOFactory.getInstance().getModuleDAO();
SubjectDAO subjectDAO = DAOFactory.getInstance().getSubjectDAO();
List<Long> result = new ArrayList<>();
Subject subject = subjectDAO.findByCode(subjectCode);
List<Module> modules = moduleDAO.listBySubject(subject);
for (Module module : modules) {
result.add(module.getId());
}
return result.toArray(new Long[0]);
}
private Long loggedUserId;
}