Skip to content
Snippets Groups Projects
Commit e8b37287 authored by srosse's avatar srosse
Browse files

OO-4560: task with only solutions in a learn path course

parent a8f225cb
No related branches found
No related tags found
No related merge requests found
...@@ -19,6 +19,8 @@ ...@@ -19,6 +19,8 @@
*/ */
package org.olat.course.nodes.gta; package org.olat.course.nodes.gta;
import org.olat.course.learningpath.FullyAssessedTrigger;
import org.olat.course.learningpath.LearningPathConfigs;
import org.olat.course.learningpath.model.ModuleLearningPathConfigs; import org.olat.course.learningpath.model.ModuleLearningPathConfigs;
import org.olat.course.nodes.GTACourseNode; import org.olat.course.nodes.GTACourseNode;
import org.olat.course.nodes.MSCourseNode; import org.olat.course.nodes.MSCourseNode;
...@@ -36,6 +38,24 @@ public class GTALearningPathConfigs extends ModuleLearningPathConfigs { ...@@ -36,6 +38,24 @@ public class GTALearningPathConfigs extends ModuleLearningPathConfigs {
public GTALearningPathConfigs(ModuleConfiguration moduleConfiguration) { public GTALearningPathConfigs(ModuleConfiguration moduleConfiguration) {
super(moduleConfiguration, false); super(moduleConfiguration, false);
} }
@Override
public FullyAssessedResult isFullyAssessedOnNodeVisited() {
FullyAssessedResult result = super.isFullyAssessedOnNodeVisited();
FullyAssessedTrigger fullyAssedTrigger = getFullyAssessedTrigger();
if(!result.isFullyAssessed() && fullyAssedTrigger == FullyAssessedTrigger.statusDone) {
// can be fully assessed on node visited if only solutions are configured
if(moduleConfiguration.getBooleanSafe(GTACourseNode.GTASK_SAMPLE_SOLUTION)
&& !moduleConfiguration.getBooleanSafe(GTACourseNode.GTASK_ASSIGNMENT)
&& !moduleConfiguration.getBooleanSafe(GTACourseNode.GTASK_SUBMIT)
&& !moduleConfiguration.getBooleanSafe(GTACourseNode.GTASK_REVIEW_AND_CORRECTION)
&& !moduleConfiguration.getBooleanSafe(GTACourseNode.GTASK_REVISION_PERIOD)
&& !moduleConfiguration.getBooleanSafe(GTACourseNode.GTASK_GRADING)) {
return LearningPathConfigs.fullyAssessed(true, true, false);
}
}
return result;
}
@Override @Override
public AssessmentObligation getObligation() { public AssessmentObligation getObligation() {
......
...@@ -34,6 +34,7 @@ import org.olat.course.nodes.gta.model.Solution; ...@@ -34,6 +34,7 @@ import org.olat.course.nodes.gta.model.Solution;
import org.olat.course.nodes.gta.model.TaskDefinition; import org.olat.course.nodes.gta.model.TaskDefinition;
import org.olat.course.nodes.gta.ui.events.SubmitEvent; import org.olat.course.nodes.gta.ui.events.SubmitEvent;
import org.olat.course.run.environment.CourseEnvironment; import org.olat.course.run.environment.CourseEnvironment;
import org.olat.course.run.userview.UserCourseEnvironment;
import org.olat.group.BusinessGroup; import org.olat.group.BusinessGroup;
import org.olat.group.BusinessGroupRef; import org.olat.group.BusinessGroupRef;
import org.olat.modules.assessment.Role; import org.olat.modules.assessment.Role;
...@@ -221,6 +222,18 @@ public interface GTAManager { ...@@ -221,6 +222,18 @@ public interface GTAManager {
*/ */
public AssessmentEntryStatus convertToAssessmentEntryStatus(Task task, GTACourseNode cNode); public AssessmentEntryStatus convertToAssessmentEntryStatus(Task task, GTACourseNode cNode);
/**
* Synchronize the assessment entry with the state of the task.
*
* @param task The task
* @param cNode The course element
* @param assessedUserCourseEnv Optional: the user course environment to be directly updatet
* @param doerIdentity the identity which do the action
* @param by The role of the doer
* @return true if the status is done
*/
public boolean syncAssessmentEntry(Task task, GTACourseNode cNode, UserCourseEnvironment assessedUserCourseEnv, Identity doerIdentity, Role by);
/** /**
* Are users already processing this task? * Are users already processing this task?
* *
......
...@@ -189,16 +189,13 @@ public class GTAManagerImpl implements GTAManager { ...@@ -189,16 +189,13 @@ public class GTAManagerImpl implements GTAManager {
taskDefinitions.addAll(taskDefinitionsList.getTasks()); taskDefinitions.addAll(taskDefinitionsList.getTasks());
} }
} else { } else {
syncWithTaskList(courseEnv, cNode, new TaskListSynched() { syncWithTaskList(courseEnv, cNode, () -> {
@Override ModuleConfiguration config = cNode.getModuleConfiguration();
public void sync() { TaskDefinitionList tasks = (TaskDefinitionList)config.get(GTACourseNode.GTASK_TASKS);
ModuleConfiguration config = cNode.getModuleConfiguration(); if(tasks != null) {
TaskDefinitionList tasks = (TaskDefinitionList)config.get(GTACourseNode.GTASK_TASKS); taskDefinitions.addAll(tasks.getTasks());
if(tasks != null) {
taskDefinitions.addAll(tasks.getTasks());
}
storeTaskDefinitions(taskDefinitions, courseEnv, cNode);
} }
storeTaskDefinitions(taskDefinitions, courseEnv, cNode);
}); });
} }
return taskDefinitions; return taskDefinitions;
...@@ -206,43 +203,36 @@ public class GTAManagerImpl implements GTAManager { ...@@ -206,43 +203,36 @@ public class GTAManagerImpl implements GTAManager {
@Override @Override
public void addTaskDefinition(TaskDefinition newTask, CourseEnvironment courseEnv, GTACourseNode cNode) { public void addTaskDefinition(TaskDefinition newTask, CourseEnvironment courseEnv, GTACourseNode cNode) {
syncWithTaskList( courseEnv, cNode, new TaskListSynched() { syncWithTaskList( courseEnv, cNode, () -> {
@Override List<TaskDefinition> taskDefinitions = getTaskDefinitions(courseEnv, cNode);
public void sync() { taskDefinitions.add(newTask);
List<TaskDefinition> taskDefinitions = getTaskDefinitions(courseEnv, cNode); storeTaskDefinitions(taskDefinitions, courseEnv, cNode);
taskDefinitions.add(newTask);
storeTaskDefinitions(taskDefinitions, courseEnv, cNode);
}
}); });
} }
@Override @Override
public void removeTaskDefinition(TaskDefinition removedTask, CourseEnvironment courseEnv, GTACourseNode cNode) { public void removeTaskDefinition(TaskDefinition removedTask, CourseEnvironment courseEnv, GTACourseNode cNode) {
syncWithTaskList( courseEnv, cNode, new TaskListSynched() { syncWithTaskList( courseEnv, cNode, () -> {
@Override List<TaskDefinition> taskDefinitions = getTaskDefinitions(courseEnv, cNode);
public void sync() { boolean deleteFile = true;
List<TaskDefinition> taskDefinitions = getTaskDefinitions(courseEnv, cNode); for(int i=taskDefinitions.size(); i-->0; ) {
boolean deleteFile = true; if(taskDefinitions.get(i).getTitle().equals(removedTask.getTitle())) {
for(int i=taskDefinitions.size(); i-->0; ) { taskDefinitions.remove(i);
if(taskDefinitions.get(i).getTitle().equals(removedTask.getTitle())) { } else if(taskDefinitions.get(i).getFilename().equals(removedTask.getFilename())) {
taskDefinitions.remove(i); deleteFile = false;
} else if(taskDefinitions.get(i).getFilename().equals(removedTask.getFilename())) {
deleteFile = false;
}
} }
}
if(deleteFile) {
VFSContainer tasksContainer = getTasksContainer(courseEnv, cNode); if(deleteFile) {
VFSItem item = tasksContainer.resolve(removedTask.getFilename()); VFSContainer tasksContainer = getTasksContainer(courseEnv, cNode);
deleteEdusharingUsages(courseEnv, item); VFSItem item = tasksContainer.resolve(removedTask.getFilename());
if(item != null) { deleteEdusharingUsages(courseEnv, item);
item.delete(); if(item != null) {
} item.delete();
} }
storeTaskDefinitions(taskDefinitions, courseEnv, cNode);
} }
storeTaskDefinitions(taskDefinitions, courseEnv, cNode);
}); });
} }
private void deleteEdusharingUsages(CourseEnvironment courseEnv, VFSItem item) { private void deleteEdusharingUsages(CourseEnvironment courseEnv, VFSItem item) {
...@@ -254,19 +244,16 @@ public class GTAManagerImpl implements GTAManager { ...@@ -254,19 +244,16 @@ public class GTAManagerImpl implements GTAManager {
@Override @Override
public void updateTaskDefinition(String currentFilename, TaskDefinition task, CourseEnvironment courseEnv, GTACourseNode cNode) { public void updateTaskDefinition(String currentFilename, TaskDefinition task, CourseEnvironment courseEnv, GTACourseNode cNode) {
syncWithTaskList( courseEnv, cNode, new TaskListSynched() { syncWithTaskList( courseEnv, cNode, () -> {
@Override String filename = currentFilename == null ? task.getFilename() : currentFilename;
public void sync() { List<TaskDefinition> taskDefinitions = getTaskDefinitions(courseEnv, cNode);
String filename = currentFilename == null ? task.getFilename() : currentFilename; for(int i=taskDefinitions.size(); i-->0; ) {
List<TaskDefinition> taskDefinitions = getTaskDefinitions(courseEnv, cNode); if(taskDefinitions.get(i).getFilename().equals(filename)) {
for(int i=taskDefinitions.size(); i-->0; ) { taskDefinitions.set(i, task);
if(taskDefinitions.get(i).getFilename().equals(filename)) { break;
taskDefinitions.set(i, task);
break;
}
} }
storeTaskDefinitions(taskDefinitions, courseEnv, cNode);
} }
storeTaskDefinitions(taskDefinitions, courseEnv, cNode);
}); });
} }
...@@ -307,16 +294,13 @@ public class GTAManagerImpl implements GTAManager { ...@@ -307,16 +294,13 @@ public class GTAManagerImpl implements GTAManager {
solutionsDefinitions.addAll(solutionDefinitionsList.getSolutions()); solutionsDefinitions.addAll(solutionDefinitionsList.getSolutions());
} }
} else { } else {
syncWithTaskList( courseEnv, cNode, new TaskListSynched() { syncWithTaskList( courseEnv, cNode, () -> {
@Override ModuleConfiguration config = cNode.getModuleConfiguration();
public void sync() { SolutionList solutions = (SolutionList)config.get(GTACourseNode.GTASK_SOLUTIONS);
ModuleConfiguration config = cNode.getModuleConfiguration(); if(solutions != null && solutions.getSolutions() != null) {
SolutionList solutions = (SolutionList)config.get(GTACourseNode.GTASK_SOLUTIONS); solutionsDefinitions.addAll(solutions.getSolutions());
if(solutions != null && solutions.getSolutions() != null) {
solutionsDefinitions.addAll(solutions.getSolutions());
}
storeSolutions(solutionsDefinitions, courseEnv, cNode);
} }
storeSolutions(solutionsDefinitions, courseEnv, cNode);
}); });
} }
return solutionsDefinitions; return solutionsDefinitions;
...@@ -324,48 +308,39 @@ public class GTAManagerImpl implements GTAManager { ...@@ -324,48 +308,39 @@ public class GTAManagerImpl implements GTAManager {
@Override @Override
public void addSolution(Solution newSolution, CourseEnvironment courseEnv, GTACourseNode cNode) { public void addSolution(Solution newSolution, CourseEnvironment courseEnv, GTACourseNode cNode) {
syncWithTaskList( courseEnv, cNode, new TaskListSynched() { syncWithTaskList( courseEnv, cNode, () -> {
@Override List<Solution> solutions = getSolutions(courseEnv, cNode);
public void sync() { solutions.add(newSolution);
List<Solution> solutions = getSolutions(courseEnv, cNode); storeSolutions(solutions, courseEnv, cNode);
solutions.add(newSolution);
storeSolutions(solutions, courseEnv, cNode);
}
}); });
} }
@Override @Override
public void removeSolution(Solution removedSolution, CourseEnvironment courseEnv, GTACourseNode cNode) { public void removeSolution(Solution removedSolution, CourseEnvironment courseEnv, GTACourseNode cNode) {
syncWithTaskList( courseEnv, cNode, new TaskListSynched() { syncWithTaskList( courseEnv, cNode, () -> {
@Override List<Solution> solutions = getSolutions(courseEnv, cNode);
public void sync() { for(int i=solutions.size(); i-->0; ) {
List<Solution> solutions = getSolutions(courseEnv, cNode); if(solutions.get(i).getFilename().equals(removedSolution.getFilename())) {
for(int i=solutions.size(); i-->0; ) { solutions.remove(i);
if(solutions.get(i).getFilename().equals(removedSolution.getFilename())) { break;
solutions.remove(i);
break;
}
} }
storeSolutions(solutions, courseEnv, cNode);
} }
storeSolutions(solutions, courseEnv, cNode);
}); });
} }
@Override @Override
public void updateSolution(String currentFilename, Solution solution, CourseEnvironment courseEnv, GTACourseNode cNode) { public void updateSolution(String currentFilename, Solution solution, CourseEnvironment courseEnv, GTACourseNode cNode) {
syncWithTaskList( courseEnv, cNode, new TaskListSynched() { syncWithTaskList( courseEnv, cNode, () -> {
@Override String filename = currentFilename == null ? solution.getFilename() : currentFilename;
public void sync() { List<Solution> solutions = getSolutions(courseEnv, cNode);
String filename = currentFilename == null ? solution.getFilename() : currentFilename; for(int i=solutions.size(); i-->0; ) {
List<Solution> solutions = getSolutions(courseEnv, cNode); if(solutions.get(i).getFilename().equals(filename)) {
for(int i=solutions.size(); i-->0; ) { solutions.set(i, solution);
if(solutions.get(i).getFilename().equals(filename)) { break;
solutions.set(i, solution);
break;
}
} }
storeSolutions(solutions, courseEnv, cNode);
} }
storeSolutions(solutions, courseEnv, cNode);
}); });
} }
...@@ -611,7 +586,7 @@ public class GTAManagerImpl implements GTAManager { ...@@ -611,7 +586,7 @@ public class GTAManagerImpl implements GTAManager {
private List<BusinessGroup> getBusinessGroups(IdentityRef identity, List<Long> groupKeys, List<Long> areaKeys, GroupRoles role) { private List<BusinessGroup> getBusinessGroups(IdentityRef identity, List<Long> groupKeys, List<Long> areaKeys, GroupRoles role) {
List<Long> consolidatedGroupKeys = new ArrayList<>(); List<Long> consolidatedGroupKeys = new ArrayList<>();
if(groupKeys != null && groupKeys.size() > 0) { if(groupKeys != null && !groupKeys.isEmpty()) {
consolidatedGroupKeys.addAll(groupKeys); consolidatedGroupKeys.addAll(groupKeys);
} }
consolidatedGroupKeys.addAll(areaManager.findBusinessGroupKeysOfAreaKeys(areaKeys)); consolidatedGroupKeys.addAll(areaManager.findBusinessGroupKeysOfAreaKeys(areaKeys));
...@@ -628,7 +603,7 @@ public class GTAManagerImpl implements GTAManager { ...@@ -628,7 +603,7 @@ public class GTAManagerImpl implements GTAManager {
List<Long> areaKeys = config.getList(GTACourseNode.GTASK_AREAS, Long.class); List<Long> areaKeys = config.getList(GTACourseNode.GTASK_AREAS, Long.class);
List<Long> consolidatedGroupKeys = new ArrayList<>(); List<Long> consolidatedGroupKeys = new ArrayList<>();
if(groupKeys != null && groupKeys.size() > 0) { if(groupKeys != null && !groupKeys.isEmpty()) {
consolidatedGroupKeys.addAll(groupKeys); consolidatedGroupKeys.addAll(groupKeys);
} }
consolidatedGroupKeys.addAll(areaManager.findBusinessGroupKeysOfAreaKeys(areaKeys)); consolidatedGroupKeys.addAll(areaManager.findBusinessGroupKeysOfAreaKeys(areaKeys));
...@@ -649,7 +624,7 @@ public class GTAManagerImpl implements GTAManager { ...@@ -649,7 +624,7 @@ public class GTAManagerImpl implements GTAManager {
List<Long> areaKeys = config.getList(GTACourseNode.GTASK_AREAS, Long.class); List<Long> areaKeys = config.getList(GTACourseNode.GTASK_AREAS, Long.class);
List<Long> consolidatedGroupKeys = new ArrayList<>(); List<Long> consolidatedGroupKeys = new ArrayList<>();
if(groupKeys != null && groupKeys.size() > 0) { if(groupKeys != null && !groupKeys.isEmpty()) {
consolidatedGroupKeys.addAll(groupKeys); consolidatedGroupKeys.addAll(groupKeys);
} }
consolidatedGroupKeys.addAll(areaManager.findBusinessGroupKeysOfAreaKeys(areaKeys)); consolidatedGroupKeys.addAll(areaManager.findBusinessGroupKeysOfAreaKeys(areaKeys));
...@@ -1040,7 +1015,7 @@ public class GTAManagerImpl implements GTAManager { ...@@ -1040,7 +1015,7 @@ public class GTAManagerImpl implements GTAManager {
task = dbInstance.getCurrentEntityManager().merge(task); task = dbInstance.getCurrentEntityManager().merge(task);
} }
dbInstance.commit(); dbInstance.commit();
syncAssessmentEntry(task, cNode, doerIdentity, Role.user); syncAssessmentEntry(task, cNode, null, doerIdentity, Role.user);
response = new AssignmentResponse(task, Status.ok); response = new AssignmentResponse(task, Status.ok);
} }
} else { } else {
...@@ -1048,7 +1023,7 @@ public class GTAManagerImpl implements GTAManager { ...@@ -1048,7 +1023,7 @@ public class GTAManagerImpl implements GTAManager {
((TaskImpl)currentTask).setTaskStatus(TaskProcess.submit); ((TaskImpl)currentTask).setTaskStatus(TaskProcess.submit);
} }
currentTask = dbInstance.getCurrentEntityManager().merge(currentTask); currentTask = dbInstance.getCurrentEntityManager().merge(currentTask);
syncAssessmentEntry((TaskImpl)currentTask, cNode, doerIdentity, Role.user); syncAssessmentEntry(currentTask, cNode, null, doerIdentity, Role.user);
response = new AssignmentResponse(currentTask, Status.ok); response = new AssignmentResponse(currentTask, Status.ok);
} }
...@@ -1171,7 +1146,7 @@ public class GTAManagerImpl implements GTAManager { ...@@ -1171,7 +1146,7 @@ public class GTAManagerImpl implements GTAManager {
TaskImpl task = createTask(taskName, reloadedTasks, nextStep, businessGroup, identity, cNode); TaskImpl task = createTask(taskName, reloadedTasks, nextStep, businessGroup, identity, cNode);
task.setAssignmentDate(new Date()); task.setAssignmentDate(new Date());
dbInstance.getCurrentEntityManager().persist(task); dbInstance.getCurrentEntityManager().persist(task);
syncAssessmentEntry(task, cNode, doerIdentity, Role.user); syncAssessmentEntry(task, cNode, null, doerIdentity, Role.user);
response = new AssignmentResponse(task, Status.ok); response = new AssignmentResponse(task, Status.ok);
} }
dbInstance.commit(); dbInstance.commit();
...@@ -1184,7 +1159,7 @@ public class GTAManagerImpl implements GTAManager { ...@@ -1184,7 +1159,7 @@ public class GTAManagerImpl implements GTAManager {
} }
} }
currentTask = dbInstance.getCurrentEntityManager().merge(currentTask); currentTask = dbInstance.getCurrentEntityManager().merge(currentTask);
syncAssessmentEntry((TaskImpl)currentTask, cNode, doerIdentity, Role.user); syncAssessmentEntry(currentTask, cNode, null, doerIdentity, Role.user);
response = new AssignmentResponse(currentTask, Status.ok); response = new AssignmentResponse(currentTask, Status.ok);
} }
return response; return response;
...@@ -1436,7 +1411,7 @@ public class GTAManagerImpl implements GTAManager { ...@@ -1436,7 +1411,7 @@ public class GTAManagerImpl implements GTAManager {
taskImpl.setTaskStatus(nextStep); taskImpl.setTaskStatus(nextStep);
TaskImpl mergedTask = dbInstance.getCurrentEntityManager().merge(taskImpl); TaskImpl mergedTask = dbInstance.getCurrentEntityManager().merge(taskImpl);
dbInstance.commit();//make the thing definitive dbInstance.commit();//make the thing definitive
syncAssessmentEntry(mergedTask, cNode, doerIdentity, by); syncAssessmentEntry(mergedTask, cNode, null, doerIdentity, by);
return mergedTask; return mergedTask;
} }
...@@ -1665,7 +1640,7 @@ public class GTAManagerImpl implements GTAManager { ...@@ -1665,7 +1640,7 @@ public class GTAManagerImpl implements GTAManager {
taskImpl.setTaskStatus(newStatus); taskImpl.setTaskStatus(newStatus);
syncDates(taskImpl, newStatus); syncDates(taskImpl, newStatus);
taskImpl = dbInstance.getCurrentEntityManager().merge(taskImpl); taskImpl = dbInstance.getCurrentEntityManager().merge(taskImpl);
syncAssessmentEntry(taskImpl, cNode, doerIdentity, by); syncAssessmentEntry(taskImpl, cNode, null, doerIdentity, by);
// mark the publishers // mark the publishers
OLATResource resource = taskImpl.getTaskList().getEntry().getOlatResource(); OLATResource resource = taskImpl.getTaskList().getEntry().getOlatResource();
...@@ -1716,7 +1691,7 @@ public class GTAManagerImpl implements GTAManager { ...@@ -1716,7 +1691,7 @@ public class GTAManagerImpl implements GTAManager {
taskImpl = dbInstance.getCurrentEntityManager().merge(taskImpl); taskImpl = dbInstance.getCurrentEntityManager().merge(taskImpl);
//log date //log date
createAndPersistTaskRevisionDate(taskImpl, iteration, newStatus); createAndPersistTaskRevisionDate(taskImpl, iteration, newStatus);
syncAssessmentEntry(taskImpl, cNode, doerIdentity, by); syncAssessmentEntry(taskImpl, cNode, null, doerIdentity, by);
return taskImpl; return taskImpl;
} }
...@@ -1755,7 +1730,17 @@ public class GTAManagerImpl implements GTAManager { ...@@ -1755,7 +1730,17 @@ public class GTAManagerImpl implements GTAManager {
AssessmentEntryStatus assessmentStatus; AssessmentEntryStatus assessmentStatus;
if(status == firstStep) { if(status == firstStep) {
assessmentStatus = AssessmentEntryStatus.notStarted; if(status == TaskProcess.grading) {
assessmentStatus = AssessmentEntryStatus.inProgress;
} else if(status == TaskProcess.solution) {
if(cNode.getModuleConfiguration().getBooleanSafe(GTACourseNode.GTASK_GRADING)) {
assessmentStatus = AssessmentEntryStatus.inProgress;
} else {
assessmentStatus = AssessmentEntryStatus.done;
}
} else {
assessmentStatus = AssessmentEntryStatus.notStarted;
}
} else if(status == TaskProcess.review || status == TaskProcess.correction || status == TaskProcess.grading) { } else if(status == TaskProcess.review || status == TaskProcess.correction || status == TaskProcess.grading) {
assessmentStatus = AssessmentEntryStatus.inReview; assessmentStatus = AssessmentEntryStatus.inReview;
} else if(status == TaskProcess.graded) { } else if(status == TaskProcess.graded) {
...@@ -1771,29 +1756,48 @@ public class GTAManagerImpl implements GTAManager { ...@@ -1771,29 +1756,48 @@ public class GTAManagerImpl implements GTAManager {
} }
return assessmentStatus; return assessmentStatus;
} }
private void syncAssessmentEntry(TaskImpl taskImpl, GTACourseNode cNode, Identity doerIdentity, Role by) { @Override
if(taskImpl == null || taskImpl.getTaskStatus() == null || cNode == null) return; public boolean syncAssessmentEntry(Task taskImpl, GTACourseNode cNode,
UserCourseEnvironment assessedUserCourseEnv, Identity doerIdentity, Role by) {
if(taskImpl == null || taskImpl.getTaskStatus() == null || cNode == null) return false;
TaskList taskList = getTaskList(taskImpl); TaskList taskList = getTaskList(taskImpl);
RepositoryEntry courseRepoEntry = taskList.getEntry(); RepositoryEntry courseRepoEntry = taskList.getEntry();
ICourse course = CourseFactory.loadCourse(courseRepoEntry); ICourse course = CourseFactory.loadCourse(courseRepoEntry);
AssessmentEntryStatus assessmentStatus = convertToAssessmentEntryStatus(taskImpl, cNode); AssessmentEntryStatus assessmentStatus = convertToAssessmentEntryStatus(taskImpl, cNode);
AssessmentEntryStatus currentAssessmentStatus = null;
if(GTAType.group.name().equals(cNode.getModuleConfiguration().getStringValue(GTACourseNode.GTASK_TYPE))) { if(GTAType.group.name().equals(cNode.getModuleConfiguration().getStringValue(GTACourseNode.GTASK_TYPE))) {
List<Identity> assessedIdentities = businessGroupRelationDao.getMembers(taskImpl.getBusinessGroup(), GroupRoles.participant.name()); List<Identity> assessedIdentities = businessGroupRelationDao.getMembers(taskImpl.getBusinessGroup(), GroupRoles.participant.name());
for(Identity assessedIdentity:assessedIdentities) { for(Identity assessedIdentity:assessedIdentities) {
UserCourseEnvironment userCourseEnv = AssessmentHelper.createAndInitUserCourseEnvironment(assessedIdentity, course); UserCourseEnvironment userCourseEnv;
if(assessedUserCourseEnv != null && assessedUserCourseEnv.getIdentityEnvironment().getIdentity().equals(assessedIdentity)) {
userCourseEnv = assessedUserCourseEnv;
} else {
userCourseEnv = AssessmentHelper.createAndInitUserCourseEnvironment(assessedIdentity, course);
}
AssessmentEvaluation scoreEvaluation = courseAssessmentService.getAssessmentEvaluation(cNode, userCourseEnv); AssessmentEvaluation scoreEvaluation = courseAssessmentService.getAssessmentEvaluation(cNode, userCourseEnv);
AssessmentEvaluation newScoreEvaluation = new AssessmentEvaluation(scoreEvaluation, assessmentStatus); AssessmentEvaluation newScoreEvaluation = new AssessmentEvaluation(scoreEvaluation, assessmentStatus);
courseAssessmentService.saveScoreEvaluation(cNode, doerIdentity, newScoreEvaluation, userCourseEnv, false, by); courseAssessmentService.saveScoreEvaluation(cNode, doerIdentity, newScoreEvaluation, userCourseEnv, false, by);
if(doerIdentity != null && doerIdentity.equals(assessedIdentity)) {
currentAssessmentStatus = scoreEvaluation.getAssessmentStatus();
}
} }
} else { } else {
Identity assessedIdentity = taskImpl.getIdentity(); Identity assessedIdentity = taskImpl.getIdentity();
UserCourseEnvironment userCourseEnv = AssessmentHelper.createAndInitUserCourseEnvironment(assessedIdentity, course);
UserCourseEnvironment userCourseEnv;
if(assessedUserCourseEnv != null && assessedUserCourseEnv.getIdentityEnvironment().getIdentity().equals(assessedIdentity)) {
userCourseEnv = assessedUserCourseEnv;
} else {
userCourseEnv = AssessmentHelper.createAndInitUserCourseEnvironment(assessedIdentity, course);
}
AssessmentEvaluation scoreEvaluation = courseAssessmentService.getAssessmentEvaluation(cNode, userCourseEnv); AssessmentEvaluation scoreEvaluation = courseAssessmentService.getAssessmentEvaluation(cNode, userCourseEnv);
currentAssessmentStatus = scoreEvaluation.getAssessmentStatus();
AssessmentEvaluation newScoreEvaluation = new AssessmentEvaluation(scoreEvaluation, assessmentStatus); AssessmentEvaluation newScoreEvaluation = new AssessmentEvaluation(scoreEvaluation, assessmentStatus);
courseAssessmentService.saveScoreEvaluation(cNode, doerIdentity, newScoreEvaluation, userCourseEnv, false, by); courseAssessmentService.saveScoreEvaluation(cNode, doerIdentity, newScoreEvaluation, userCourseEnv, false, by);
} }
return currentAssessmentStatus != assessmentStatus;
} }
private TaskList loadForUpdate(TaskList tasks) { private TaskList loadForUpdate(TaskList tasks) {
......
...@@ -616,6 +616,11 @@ public class GTAParticipantController extends GTAAbstractController implements A ...@@ -616,6 +616,11 @@ public class GTAParticipantController extends GTAAbstractController implements A
solutionsCtrl = new DirectoryController(ureq, getWindowControl(), documentsDir, documentsContainer, "run.solutions.description", "bulk.solutions", "solutions"); solutionsCtrl = new DirectoryController(ureq, getWindowControl(), documentsDir, documentsContainer, "run.solutions.description", "bulk.solutions", "solutions");
listenTo(solutionsCtrl); listenTo(solutionsCtrl);
mainVC.put("solutions", solutionsCtrl.getInitialComponent()); mainVC.put("solutions", solutionsCtrl.getInitialComponent());
if(gtaManager.firstStep(gtaNode) == TaskProcess.solution) {
assignedTask = gtaManager.ensureTaskExists(assignedTask, assessedGroup, assessedIdentity, courseEntry, gtaNode);
gtaManager.syncAssessmentEntry(assignedTask, gtaNode, userCourseEnv, getIdentity(), Role.user);
}
} else { } else {
VelocityContainer waitVC = createVelocityContainer("no_solutions_foryou"); VelocityContainer waitVC = createVelocityContainer("no_solutions_foryou");
mainVC.put("solutions", waitVC); mainVC.put("solutions", waitVC);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment