Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== diff -u -rf43da266c31a898f0fddc628bdeab7ebbdbef2dd -re0385d4c168977f3bbc8065abd1e7775eed9666a --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision f43da266c31a898f0fddc628bdeab7ebbdbef2dd) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision e0385d4c168977f3bbc8065abd1e7775eed9666a) @@ -791,11 +791,31 @@ private void revertLessonState(Lesson requestedLesson) { Integer currentStatus = requestedLesson.getLessonStateId(); - requestedLesson.setLessonStateId(requestedLesson.getPreviousLessonStateId()); - requestedLesson.setPreviousLessonStateId(currentStatus); + if(requestedLesson.getPreviousLessonStateId() != null) { + if(requestedLesson.getPreviousLessonStateId().equals(Lesson.NOT_STARTED_STATE) && requestedLesson.getScheduleStartDate().before(new Date())) + requestedLesson.setLessonStateId(Lesson.STARTED_STATE); + else + requestedLesson.setLessonStateId(requestedLesson.getPreviousLessonStateId()); + requestedLesson.setPreviousLessonStateId(null); + } else { + if(requestedLesson.getStartDateTime() != null && requestedLesson.getScheduleStartDate() != null) + requestedLesson.setLessonStateId(Lesson.STARTED_STATE); + else if(requestedLesson.getScheduleStartDate() != null) + if(requestedLesson.getScheduleStartDate().after(new Date())) + requestedLesson.setLessonStateId(Lesson.NOT_STARTED_STATE); + else + requestedLesson.setLessonStateId(Lesson.STARTED_STATE); + else if(requestedLesson.getStartDateTime() != null) + requestedLesson.setLessonStateId(Lesson.STARTED_STATE); + else + requestedLesson.setLessonStateId(Lesson.CREATED); + + requestedLesson.setPreviousLessonStateId(currentStatus); + } lessonDAO.updateLesson(requestedLesson); } -/** + + /** * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#removeLesson(long) */ public void removeLesson(long lessonId, Integer userId) {