diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTAAbstractController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTAAbstractController.java index 3513e98df24615a77aaa032b96ca501730df3fae..2e57ec79f917024206abc79bfb9755a821068a4c 100644 --- a/src/main/java/org/olat/course/nodes/gta/ui/GTAAbstractController.java +++ b/src/main/java/org/olat/course/nodes/gta/ui/GTAAbstractController.java @@ -21,7 +21,9 @@ package org.olat.course.nodes.gta.ui; import java.util.Calendar; import java.util.Date; +import java.util.List; +import org.olat.basesecurity.GroupRoles; import org.olat.core.commons.services.notifications.PublisherData; import org.olat.core.commons.services.notifications.SubscriptionContext; import org.olat.core.commons.services.notifications.ui.ContextualSubscriptionController; @@ -34,6 +36,10 @@ import org.olat.core.gui.control.controller.BasicController; import org.olat.core.id.Identity; import org.olat.core.util.Formatter; import org.olat.core.util.StringHelper; +import org.olat.course.CourseFactory; +import org.olat.course.ICourse; +import org.olat.course.assessment.AssessmentHelper; +import org.olat.course.assessment.AssessmentManager; import org.olat.course.assessment.manager.UserCourseInformationsManager; import org.olat.course.nodes.GTACourseNode; import org.olat.course.nodes.gta.GTAManager; @@ -45,6 +51,7 @@ import org.olat.course.nodes.gta.TaskProcess; import org.olat.course.run.environment.CourseEnvironment; import org.olat.course.run.userview.UserCourseEnvironment; import org.olat.group.BusinessGroup; +import org.olat.group.BusinessGroupService; import org.olat.modules.ModuleConfiguration; import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryService; @@ -92,6 +99,8 @@ public abstract class GTAAbstractController extends BasicController { @Autowired protected RepositoryService repositoryService; @Autowired + protected BusinessGroupService businessGroupService; + @Autowired protected UserCourseInformationsManager userCourseInformationsManager; public GTAAbstractController(UserRequest ureq, WindowControl wControl, @@ -375,6 +384,7 @@ public abstract class GTAAbstractController extends BasicController { && date.compareTo(new Date()) < 0) { //push to the next step assignedTask = gtaManager.nextStep(assignedTask, gtaNode); + doUpdateAttempts(); } } else if(dueDate.getMessage() != null) { mainVC.contextPut("submitDueDateMsg", dueDate.getMessage()); @@ -461,6 +471,26 @@ public abstract class GTAAbstractController extends BasicController { return assignedTask; } + protected void doUpdateAttempts() { + if(businessGroupTask) { + List<Identity> identities = businessGroupService.getMembers(assessedGroup, GroupRoles.participant.name()); + AssessmentManager assessmentManager = courseEnv.getAssessmentManager(); + assessmentManager.preloadCache(identities); + ICourse course = CourseFactory.loadCourse(courseEnv.getCourseResourceableId()); + + for(Identity identity:identities) { + UserCourseEnvironment uce = AssessmentHelper.createAndInitUserCourseEnvironment(identity, course); + gtaNode.incrementUserAttempts(uce); + } + } else { + if(userCourseEnv == null) { + ICourse course = CourseFactory.loadCourse(courseEnv.getCourseResourceableId()); + userCourseEnv = AssessmentHelper.createAndInitUserCourseEnvironment(assessedIdentity, course); + } + gtaNode.incrementUserAttempts(userCourseEnv); + } + } + @Override protected void event(UserRequest ureq, Component source, Event event) { if("show".equals(event.getCommand())) { diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java index 9cc1529db1d63914cabb3a539e659a38a90d59b1..7abc6bbe000549ac496435f38f135695a4c89e50 100644 --- a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java +++ b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java @@ -49,7 +49,6 @@ import org.olat.course.nodes.gta.model.TaskDefinition; import org.olat.course.nodes.gta.model.TaskDefinitionList; import org.olat.course.run.environment.CourseEnvironment; import org.olat.group.BusinessGroup; -import org.olat.group.BusinessGroupService; import org.olat.modules.co.ContactFormController; import org.olat.resource.OLATResource; import org.olat.user.DisplayPortraitController; @@ -82,8 +81,6 @@ public class GTACoachController extends GTAAbstractController { @Autowired private UserManager userManager; - @Autowired - private BusinessGroupService groupService; public GTACoachController(UserRequest ureq, WindowControl wControl, CourseEnvironment courseEnv, GTACourseNode gtaNode, BusinessGroup assessedGroup, boolean withTitle, boolean withGrading) { @@ -519,7 +516,7 @@ public class GTACoachController extends GTAAbstractController { if (assessedGroup != null) { String toName = assessedGroup.getName(); contactList = new ContactList(toName); - List<Identity> memberList = groupService.getMembers(assessedGroup, GroupRoles.participant.name()); + List<Identity> memberList = businessGroupService.getMembers(assessedGroup, GroupRoles.participant.name()); contactList.addAllIdentites(memberList); } else if (assessedIdentity != null) { diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java index c13ae7f194b5d386ffedb0d9dd035017dc1c0b69..5c782d812e767a6dfd84ee930166f6c22351030d 100644 --- a/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java +++ b/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java @@ -50,10 +50,6 @@ import org.olat.core.util.mail.MailManager; import org.olat.core.util.mail.MailTemplate; import org.olat.core.util.mail.MailerResult; import org.olat.core.util.vfs.VFSContainer; -import org.olat.course.CourseFactory; -import org.olat.course.ICourse; -import org.olat.course.assessment.AssessmentHelper; -import org.olat.course.assessment.AssessmentManager; import org.olat.course.nodes.GTACourseNode; import org.olat.course.nodes.MSCourseNode; import org.olat.course.nodes.gta.AssignmentResponse; @@ -66,7 +62,6 @@ import org.olat.course.nodes.gta.model.TaskDefinitionList; import org.olat.course.nodes.ms.MSCourseNodeRunController; import org.olat.course.run.userview.UserCourseEnvironment; import org.olat.group.BusinessGroup; -import org.olat.group.BusinessGroupService; import org.springframework.beans.factory.annotation.Autowired; /** @@ -93,8 +88,6 @@ public class GTAParticipantController extends GTAAbstractController { @Autowired private MailManager mailManager; - @Autowired - private BusinessGroupService businessGroupService; public GTAParticipantController(UserRequest ureq, WindowControl wControl, GTACourseNode gtaNode, UserCourseEnvironment userCourseEnv) { @@ -323,21 +316,7 @@ public class GTAParticipantController extends GTAAbstractController { } } - private void doUpdateAttempts() { - if(businessGroupTask) { - List<Identity> identities = businessGroupService.getMembers(assessedGroup, GroupRoles.participant.name()); - AssessmentManager assessmentManager = courseEnv.getAssessmentManager(); - assessmentManager.preloadCache(identities); - ICourse course = CourseFactory.loadCourse(courseEnv.getCourseResourceableId()); - - for(Identity identity:identities) { - UserCourseEnvironment uce = AssessmentHelper.createAndInitUserCourseEnvironment(identity, course); - gtaNode.incrementUserAttempts(uce); - } - } else { - gtaNode.incrementUserAttempts(userCourseEnv); - } - } + private void doSubmissionEmail() { String body = config.getStringValue(GTACourseNode.GTASK_SUBMISSION_TEXT);