public class SaveOrder extends OrderForm {
private List<Schedule> scheduleList = new ArrayList<Schedule>();
@Override
public String execute() throws Exception {
LogInformation log = new LogInformation();
setStudent((User) manager.getById(User.class, getStudent().getId()));
if (getSemester().getId() != null
&& !"".equalsIgnoreCase(getSemester().getId())) {
setSemester((Semester) manager.getById(Semester.class,
getSemester().getId()));
setSubjects(manager
.getList(
"FROM "
+ Subject.class.getName()
+ " sub WHERE sub.logInformation.activeFlag=1 AND sub.major='"
+ getStudent().getMajor().getId() + "' OR sub.major.id = '' "
+ "ORDER BY sub.semester ASC", null, null));
}
if (getSubject().getId() != null
&& !"".equalsIgnoreCase(getSubject().getId())) {
setSubject((Subject) manager.getById(Subject.class, getSubject()
.getId()));
setOrders(manager.getList("FROM " + Order.class.getName()
+ " p WHERE p.student.id='" + getStudent().getId()
+ "' AND p.subject.id='" + getSubject().getId() + "' ",
null, null));
}
// /-----------
if (getOrder().getId() == null
|| "".equalsIgnoreCase(getOrder().getId())) {
log = new LogInformation();
log.setCreateBy(credentials.getCurrentUser().getId());
log.setCreateDate(new Timestamp(System.currentTimeMillis()));
getOrder().setId(null);
}
if (getSchedule().getId() == null
|| "".equalsIgnoreCase(getSchedule().getId())) {
log = new LogInformation();
log.setCreateBy(credentials.getCurrentUser().getId());
log.setCreateDate(new Timestamp(System.currentTimeMillis()));
getSchedule().setId(null);
}
if (hasErrors()) {
return INPUT;
}
log.setLastUpdateBy(credentials.getCurrentUser().getId());
log.setLastUpdateDate(new Timestamp(System.currentTimeMillis()));
log.setActiveFlag(1);
getOrder().setLogInformation(log);
getOrder().setStudent(getStudent());
getOrder().setSemester(getSemester());
getOrder().setSubject(getSubject());
getSchedule().setLogInformation(log);
getSchedule().setStudent(getStudent());
getSchedule().setEduClass(getEduClass());
getSchedule().setSubject(getSubject().getId());
try {
if (getEduClass().getId() != null
&& !"".equalsIgnoreCase(getEduClass().getId())) {
setEduClass((EduClass) manager.getById(EduClass.class,
getEduClass().getId()));
setSchedules(manager.getList("FROM " + Schedule.class.getName()
+ " sc WHERE sc.student.id='" + getStudent().getId()
+ "' AND sc.subject='" + getSubject().getId()
+ "' AND sc.eduClass.semester = '"
+ getSemester().getId() + "'", null, null));
setOrders(manager.getList("FROM " + Order.class.getName()
+ " o WHERE o.student.id='" + getStudent().getId()
+ "' AND o.subject.id='" + getSubject().getId() + "'",
null, null));
scheduleList = manager.getList("FROM "
+ Schedule.class.getName()
+ " sc WHERE sc.student.id='" + getStudent().getId()
+ "' AND sc.eduClass.semester = '"
+ getSemester().getId() + "' ", null, null);
for (int i = 0; i < scheduleList.size(); i++) {
if (getEduClass().getSubject().getId() != scheduleList.get(
i).getSubject()
&& !scheduleList.get(i).getSubject()
.equalsIgnoreCase(
getEduClass().getSubject().getId())) {
if (!getEduClass().getDay().getId().equalsIgnoreCase(
"0")
|| !scheduleList.get(i).getEduClass().getDay()
.getId().equalsIgnoreCase("0")) {
if (getEduClass().getStartDate().after(
scheduleList.get(i).getEduClass()
.getStartDate())
&& getEduClass().getStartDate().before(
scheduleList.get(i).getEduClass()
.getEndDate())
|| scheduleList.get(i).getEduClass()
.getStartDate().after(
getEduClass()
.getStartDate())
&& scheduleList.get(i).getEduClass()
.getStartDate().before(
getEduClass().getEndDate())
|| getEduClass().getStartDate().equals(
scheduleList.get(i).getEduClass()
.getStartDate())) {
if (getEduClass().getDay().getId().trim()
.equalsIgnoreCase(
scheduleList.get(i)
.getEduClass().getDay()
.getId().trim())) {
addActionError("Schedule of this class have a same time with '"
+ scheduleList.get(i).getEduClass()
.getSubject().getName()
+ "' class '"
+ scheduleList.get(i).getEduClass()
.getName() + "' .");
semSorts = manager
.getList(
"FROM "
+ SemesterSorting.class
.getName()
+ " ss WHERE NOT ss.logInformation.activeFlag=0",
null, null);
return INPUT;
}
}
}
}
}
if (getSchedules().isEmpty() && getEduClass().getSisa() > 0) {
setStudent((User) manager.getById(User.class, getStudent()
.getId()));
getStudent()
.setCredit(
getStudent().getCredit()
- getSubject().getCredit());
if (getStudent().getCredit() >= 0) {
getOrder().setLecture(getEduClass().getLecture().getId());
getOrder().setSession(getOrders().size() + 1);
setSessi(getOrder().getSession());
getEduClass().setSisa(getEduClass().getSisa() - 1);
manager.save(getEduClass());
manager.save(getStudent());
manager.save(getSchedule());
manager.save(getOrder());
semSorts = manager
.getList(
"FROM "
+ SemesterSorting.class
.getName()
+ " ss WHERE NOT ss.logInformation.activeFlag=0",
null, null);
setEduClasses(manager.getList("FROM "
+ EduClass.class.getName()
+ " sc WHERE sc.subject.id = '"
+ getSubject().getId()
+ "' AND sc.semester = '"
+ getSemester().getId() + "' ", null, null));
}
if (getStudent().getCredit() < 0) {
semSorts = manager
.getList(
"FROM "
+ SemesterSorting.class
.getName()
+ " ss WHERE NOT ss.logInformation.activeFlag=0",
null, null);
addActionError("You don't have enough credit.");
}
}
if (!getSchedules().isEmpty() && getEduClass().getSisa() > 0) {
getEduClass().setSisa(getEduClass().getSisa() - 1);
log.setLastUpdateBy(credentials.getCurrentUser().getId());
log.setLastUpdateDate(new Timestamp(System
.currentTimeMillis()));
log.setActiveFlag(1);
setSchedule(getSchedules().get(0));
getSchedule().getEduClass().setSisa(
getSchedule().getEduClass().getSisa() + 1);
setOrder(getOrders().get(0));
setSchedule((Schedule) manager.getById(Schedule.class,