Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java,v diff -u -r1.48.2.40 -r1.48.2.41 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java 9 Jan 2017 11:49:09 -0000 1.48.2.40 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java 11 Jan 2017 08:57:32 -0000 1.48.2.41 @@ -58,6 +58,7 @@ import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.rest.RestTags; import org.lamsfoundation.lams.rest.ToolRestManager; +import org.lamsfoundation.lams.tool.ToolCompletionStatus; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolOutput; import org.lamsfoundation.lams.tool.ToolOutputDefinition; @@ -2369,6 +2370,29 @@ return getAssessmentByContentId(toolContentId).getTitle(); } + @Override + public ToolCompletionStatus getCompletionStatus(Long learnerId, Long toolSessionId) { + AssessmentUser learner = getUserByIDAndSession(learnerId, toolSessionId); + if ( learner == null ) { + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_NOT_ATTEMPTED, null, null); + } + + Assessment assessment = getAssessmentBySessionId(toolSessionId); + List results = assessmentResultDao.getAssessmentResults(assessment.getUid(), learner.getUserId()); + Date startDate = null; + Date finishDate = null; + for ( AssessmentResult result: results ) { + if ( startDate == null || ( result.getStartDate() != null && result.getStartDate().before(startDate)) ) + startDate = result.getStartDate(); + if ( finishDate == null || ( result.getFinishDate() != null && result.getFinishDate().after(finishDate)) ) + finishDate = result.getFinishDate(); + } + + if ( learner.isSessionFinished() ) + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_COMPLETED, startDate, finishDate); + else + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_ATTEMPTED, startDate, null); + } // ****************** REST methods ************************* /** Index: lams_tool_bbb/src/java/org/lamsfoundation/lams/tool/bbb/service/BbbService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_bbb/src/java/org/lamsfoundation/lams/tool/bbb/service/BbbService.java,v diff -u -r1.8.2.7 -r1.8.2.8 --- lams_tool_bbb/src/java/org/lamsfoundation/lams/tool/bbb/service/BbbService.java 15 Jun 2016 08:07:14 -0000 1.8.2.7 +++ lams_tool_bbb/src/java/org/lamsfoundation/lams/tool/bbb/service/BbbService.java 11 Jan 2017 08:57:36 -0000 1.8.2.8 @@ -47,6 +47,7 @@ import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; +import org.lamsfoundation.lams.tool.ToolCompletionStatus; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolOutput; import org.lamsfoundation.lams.tool.ToolOutputDefinition; @@ -739,4 +740,14 @@ this.coreNotebookService = coreNotebookService; } + @Override + public ToolCompletionStatus getCompletionStatus(Long learnerId, Long toolSessionId) { + BbbUser learner = getUserByUserIdAndSessionId(learnerId, toolSessionId); + if (learner == null) { + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_NOT_ATTEMPTED, null, null); + } + + return new ToolCompletionStatus(learner.isFinishedActivity() ? ToolCompletionStatus.ACTIVITY_COMPLETED + : ToolCompletionStatus.ACTIVITY_ATTEMPTED, null, null); + } } Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java,v diff -u -r1.63.2.12 -r1.63.2.13 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java 13 Dec 2016 14:33:59 -0000 1.63.2.12 +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java 11 Jan 2017 08:57:37 -0000 1.63.2.13 @@ -48,6 +48,7 @@ import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.rest.RestTags; import org.lamsfoundation.lams.rest.ToolRestManager; +import org.lamsfoundation.lams.tool.ToolCompletionStatus; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolOutput; import org.lamsfoundation.lams.tool.ToolOutputDefinition; @@ -807,6 +808,32 @@ public Class[] getSupportedToolOutputDefinitionClasses(int definitionType) { return getChatOutputFactory().getSupportedDefinitionClasses(definitionType); } + + @Override + public ToolCompletionStatus getCompletionStatus(Long learnerId, Long toolSessionId) { + ChatUser learner = getUserByUserIdAndSessionId(learnerId, toolSessionId); + if (learner == null) { + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_NOT_ATTEMPTED, null, null); + } + + Date startDate = null; + Date endDate = learner.getLastPresence(); + List messages = getMessagesForUser(learner); + for ( ChatMessage message : messages ) { + Date sendDate = message.getSendDate(); + if ( sendDate != null ) { + if ( startDate == null || sendDate.before(startDate) ) + startDate = sendDate; + if ( endDate == null || sendDate.after(endDate) ) + endDate = sendDate; + } + } + + if (learner.isFinishedActivity()) + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_COMPLETED, startDate, endDate); + else + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_ATTEMPTED, startDate, null); + } // ========================================================================================= // ****************** REST methods ************************* Index: lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/service/DacoServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/service/DacoServiceImpl.java,v diff -u -r1.21.2.10 -r1.21.2.11 --- lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/service/DacoServiceImpl.java 15 Jun 2016 08:07:12 -0000 1.21.2.10 +++ lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/service/DacoServiceImpl.java 11 Jan 2017 08:57:39 -0000 1.21.2.11 @@ -28,6 +28,7 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.Collection; +import java.util.Date; import java.util.LinkedList; import java.util.List; import java.util.Set; @@ -55,6 +56,7 @@ import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; +import org.lamsfoundation.lams.tool.ToolCompletionStatus; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolOutput; import org.lamsfoundation.lams.tool.ToolOutputDefinition; @@ -1021,4 +1023,30 @@ public Class[] getSupportedToolOutputDefinitionClasses(int definitionType) { return getDacoOutputFactory().getSupportedDefinitionClasses(definitionType); } + + @Override + public ToolCompletionStatus getCompletionStatus(Long learnerId, Long toolSessionId) { + DacoUser learner = getUserByUserIdAndSessionId(learnerId, toolSessionId); + if (learner == null) { + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_NOT_ATTEMPTED, null, null); + } + + Date startDate = null; + Date endDate = null; + Set answers = learner.getAnswers(); + for ( DacoAnswer answer : answers ) { + Date createDate = answer.getCreateDate(); + if ( createDate != null ) { + if ( startDate == null || createDate.before(startDate) ) + startDate = createDate; + if ( endDate == null || createDate.after(endDate) ) + endDate = createDate; + } + } + + if (learner.isSessionFinished()) + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_COMPLETED, startDate, endDate); + else + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_ATTEMPTED, startDate, null); + } } \ No newline at end of file Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/IMessageDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Attic/IMessageDAO.java,v diff -u -r1.1.2.4 -r1.1.2.5 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/IMessageDAO.java 5 May 2016 08:11:04 -0000 1.1.2.4 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/IMessageDAO.java 11 Jan 2017 08:57:34 -0000 1.1.2.5 @@ -66,4 +66,10 @@ */ int getTopicsNum(Long userID, Long sessionId); + /** Get the create date of the first message left by this user in the session and the last + * message left. + * @param userUid + * @return + */ + Object[] getDateRangeOfMessages(Long userUid); } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/MessageDao.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/Attic/MessageDao.java,v diff -u -r1.1.2.5 -r1.1.2.6 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/MessageDao.java 11 May 2016 07:14:59 -0000 1.1.2.5 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/MessageDao.java 11 Jan 2017 08:57:34 -0000 1.1.2.6 @@ -28,7 +28,10 @@ import java.util.List; import org.hibernate.LockOptions; +import org.hibernate.SQLQuery; +import org.hibernate.type.StringType; import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO; +import org.lamsfoundation.lams.tool.forum.persistence.ForumUser; import org.lamsfoundation.lams.tool.forum.persistence.IMessageDAO; import org.lamsfoundation.lams.tool.forum.persistence.Message; import org.springframework.stereotype.Repository; @@ -56,6 +59,9 @@ + Message.class.getName() + " m " + " where m.createdBy.userId=? and m.toolSession.sessionId=? and m.isAuthored = false"; + private static final String SQL_QUERY_DATES_BY_USER_SESSION = "SELECT MIN(create_date) start_date, MAX(create_date) end_date " + + " FROM tl_lafrum11_message WHERE create_by = :userUid"; + @Override public void saveOrUpdate(Message message) { this.getSession().saveOrUpdate(message); @@ -118,4 +124,12 @@ return 0; } } + + @Override + public Object[] getDateRangeOfMessages(Long userUid) { + SQLQuery query = (SQLQuery) getSession().createSQLQuery(SQL_QUERY_DATES_BY_USER_SESSION.toString()) + .setLong("userUid", userUid); + Object[] values = (Object[]) query.list().get(0); + return values; + } } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java,v diff -u -r1.126.2.23 -r1.126.2.24 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 22 Dec 2016 10:49:09 -0000 1.126.2.23 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 11 Jan 2017 08:57:34 -0000 1.126.2.24 @@ -70,6 +70,7 @@ import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.rest.RestTags; import org.lamsfoundation.lams.rest.ToolRestManager; +import org.lamsfoundation.lams.tool.ToolCompletionStatus; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolOutput; import org.lamsfoundation.lams.tool.ToolOutputDefinition; @@ -1469,7 +1470,22 @@ public Class[] getSupportedToolOutputDefinitionClasses(int definitionType) { return getForumOutputFactory().getSupportedDefinitionClasses(definitionType); } + + @Override + public ToolCompletionStatus getCompletionStatus(Long learnerId, Long toolSessionId) { + ForumUser learner = getUserByUserAndSession(learnerId, toolSessionId); + if (learner == null) { + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_NOT_ATTEMPTED, null, null); + } + Object[] dates = messageDao.getDateRangeOfMessages(learner.getUid()); + if (learner.isSessionFinished()) + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_COMPLETED, (Date)dates[0], (Date)dates[1]); + else + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_ATTEMPTED,(Date) dates[0], null); + } + + // ****************** REST methods ************************* /** Index: lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/service/GmapService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/service/GmapService.java,v diff -u -r1.25.2.7 -r1.25.2.8 --- lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/service/GmapService.java 15 Jun 2016 08:06:35 -0000 1.25.2.7 +++ lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/service/GmapService.java 11 Jan 2017 08:57:33 -0000 1.25.2.8 @@ -47,6 +47,7 @@ import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; +import org.lamsfoundation.lams.tool.ToolCompletionStatus; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolOutput; import org.lamsfoundation.lams.tool.ToolOutputDefinition; @@ -703,4 +704,30 @@ public Class[] getSupportedToolOutputDefinitionClasses(int definitionType) { return null; } + + @Override + public ToolCompletionStatus getCompletionStatus(Long learnerId, Long toolSessionId) { + GmapUser learner = getUserByUserIdAndSessionId(learnerId, toolSessionId); + if (learner == null) { + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_NOT_ATTEMPTED, null, null); + } + + Date startDate = null; + Date endDate = null; + List markers = getGmapMarkersBySessionId(toolSessionId); + for ( GmapMarker marker : markers ) { + Date createdDate = marker.getCreated(); + if ( marker.getCreatedBy().getUserId() == learnerId && createdDate != null ) { + if ( startDate == null || createdDate.before(startDate) ) + startDate = createdDate; + if ( endDate == null || createdDate.after(endDate) ) + endDate = createdDate; + } + } + + if (learner.isFinishedActivity()) + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_COMPLETED, startDate, endDate); + else + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_ATTEMPTED, startDate, null); + } } Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java,v diff -u -r1.31.2.21 -r1.31.2.22 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java 4 Jan 2017 12:48:46 -0000 1.31.2.21 +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java 11 Jan 2017 08:55:21 -0000 1.31.2.22 @@ -61,6 +61,7 @@ import org.lamsfoundation.lams.rating.model.LearnerItemRatingCriteria; import org.lamsfoundation.lams.rating.model.RatingCriteria; import org.lamsfoundation.lams.rating.service.IRatingService; +import org.lamsfoundation.lams.tool.ToolCompletionStatus; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolOutput; import org.lamsfoundation.lams.tool.ToolOutputDefinition; @@ -1066,6 +1067,35 @@ //no actions required } + @Override + public ToolCompletionStatus getCompletionStatus(Long learnerId, Long toolSessionId) { + ImageGalleryUser learner = getUserByIDAndSession(learnerId, toolSessionId); + if (learner == null) { + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_NOT_ATTEMPTED, null, null); + } + + Date startDate = null; + Date endDate = null; + ImageGallery imageGallery = getImageGallerySessionBySessionId(toolSessionId).getImageGallery(); + Set items = getImagesForGroup(imageGallery, toolSessionId); + for (ImageGalleryItem item : items) { + if (item.getCreateBy().getUserId() == learnerId) { + Date newDate = item.getCreateDate(); + if (newDate != null) { + if (startDate == null || newDate.before(startDate)) + startDate = newDate; + if (endDate == null || newDate.after(endDate)) + endDate = newDate; + } + } + } + + if (learner.isSessionFinished()) + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_COMPLETED, startDate, endDate); + else + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_ATTEMPTED, startDate, null); + } + /* =================================================================================== */ public IExportToolContentService getExportContentService() { Index: lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/dao/CommonCartridgeItemVisitDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/dao/CommonCartridgeItemVisitDAO.java,v diff -u -r1.1.2.2 -r1.1.2.3 --- lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/dao/CommonCartridgeItemVisitDAO.java 11 May 2016 07:15:13 -0000 1.1.2.2 +++ lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/dao/CommonCartridgeItemVisitDAO.java 11 Jan 2017 08:55:23 -0000 1.1.2.3 @@ -44,4 +44,5 @@ public List getCommonCartridgeItemLogBySession(Long sessionId, Long itemUid); + public Object[] getDateRangeOfAccesses(Long userUid); } Index: lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/dao/hibernate/CommonCartridgeItemVisitDAOHibernate.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/dao/hibernate/CommonCartridgeItemVisitDAOHibernate.java,v diff -u -r1.1.2.4 -r1.1.2.5 --- lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/dao/hibernate/CommonCartridgeItemVisitDAOHibernate.java 11 May 2016 07:15:12 -0000 1.1.2.4 +++ lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/dao/hibernate/CommonCartridgeItemVisitDAOHibernate.java 11 Jan 2017 08:55:23 -0000 1.1.2.5 @@ -27,6 +27,7 @@ import java.util.List; import java.util.Map; +import org.hibernate.SQLQuery; import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO; import org.lamsfoundation.lams.tool.commonCartridge.dao.CommonCartridgeItemVisitDAO; import org.lamsfoundation.lams.tool.commonCartridge.model.CommonCartridge; @@ -52,6 +53,9 @@ + " and s.commonCartridge.uid = r.uid " + " and r.contentId =? " + " group by v.sessionId, v.commonCartridgeItem.uid "; + private static final String SQL_QUERY_DATES_BY_USER_SESSION = "SELECT MIN(access_date) start_date, MAX(access_date) end_date " + + " FROM tl_laimsc11_item_log WHERE user_uid = :userUid"; + @Override public CommonCartridgeItemVisitLog getCommonCartridgeItemLog(Long itemUid, Long userId) { List list = doFind(FIND_BY_ITEM_AND_USER, new Object[] { userId, itemUid }); @@ -93,4 +97,11 @@ return (List) doFind(FIND_BY_ITEM_BYSESSION, new Object[] { sessionId, itemUid }); } + @Override + public Object[] getDateRangeOfAccesses(Long userUid) { + SQLQuery query = (SQLQuery) getSession().createSQLQuery(SQL_QUERY_DATES_BY_USER_SESSION.toString()) + .setLong("userUid", userUid); + Object[] values = (Object[]) query.list().get(0); + return values; + } } Index: lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/service/CommonCartridgeServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/service/CommonCartridgeServiceImpl.java,v diff -u -r1.9.2.12 -r1.9.2.13 --- lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/service/CommonCartridgeServiceImpl.java 15 Jun 2016 08:06:29 -0000 1.9.2.12 +++ lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/service/CommonCartridgeServiceImpl.java 11 Jan 2017 08:55:23 -0000 1.9.2.13 @@ -58,6 +58,7 @@ import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; +import org.lamsfoundation.lams.tool.ToolCompletionStatus; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolOutput; import org.lamsfoundation.lams.tool.ToolOutputDefinition; @@ -1023,4 +1024,19 @@ public List getMonitorsByToolSessionId(Long sessionId) { return getLessonService().getMonitorsByToolSessionId(sessionId); } + + @Override + public ToolCompletionStatus getCompletionStatus(Long learnerId, Long toolSessionId) { + CommonCartridgeUser learner = getUserByIDAndSession(learnerId, toolSessionId); + if (learner == null) { + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_NOT_ATTEMPTED, null, null); + } + + Object[] dates = commonCartridgeItemVisitDao.getDateRangeOfAccesses(learner.getUid()); + if (learner.isSessionFinished()) + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_COMPLETED, (Date)dates[0], (Date)dates[1]); + else + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_ATTEMPTED,(Date) dates[0], null); + } + } Index: lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/service/KalturaService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/service/KalturaService.java,v diff -u -r1.9.2.9 -r1.9.2.10 --- lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/service/KalturaService.java 15 Jun 2016 08:06:54 -0000 1.9.2.9 +++ lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/service/KalturaService.java 11 Jan 2017 08:55:22 -0000 1.9.2.10 @@ -43,6 +43,7 @@ import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; +import org.lamsfoundation.lams.tool.ToolCompletionStatus; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolOutput; import org.lamsfoundation.lams.tool.ToolOutputDefinition; @@ -735,4 +736,34 @@ public Class[] getSupportedToolOutputDefinitionClasses(int definitionType) { return getKalturaOutputFactory().getSupportedDefinitionClasses(definitionType); } + + @Override + public ToolCompletionStatus getCompletionStatus(Long learnerId, Long toolSessionId) { + KalturaUser learner = getUserByUserIdAndSessionId(learnerId, toolSessionId); + if (learner == null) { + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_NOT_ATTEMPTED, null, null); + } + + Kaltura kaltura = getSessionBySessionId(toolSessionId).getKaltura(); + Date startDate = null; + Date endDate = null; + Set allItems = kaltura.getKalturaItems(); + for (KalturaItem item : allItems) { + if (!item.isCreateByAuthor() && item.getCreatedBy().getUserId() == learnerId) { + Date newDate = item.getCreateDate(); + if (newDate != null) { + if (startDate == null || newDate.before(startDate)) + startDate = newDate; + if (endDate == null || newDate.after(endDate)) + endDate = newDate; + } + } + } + + if (learner.isFinishedActivity()) + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_COMPLETED, startDate, endDate); + else + return new ToolCompletionStatus(ToolCompletionStatus.ACTIVITY_ATTEMPTED, startDate, null); + } + }