diff --git a/src/main/java/org/olat/course/nodes/gta/GTAManager.java b/src/main/java/org/olat/course/nodes/gta/GTAManager.java index 11581dedcef8a08672b91e2bf9a9c3f253e62dea..0499a8f79fd9f8c63b5e1e6ad4a3e6f8cbda6484 100644 --- a/src/main/java/org/olat/course/nodes/gta/GTAManager.java +++ b/src/main/java/org/olat/course/nodes/gta/GTAManager.java @@ -356,6 +356,8 @@ public interface GTAManager { public boolean toggleMark(RepositoryEntry entry, GTACourseNode gtaNode, Identity marker, Identity participant); public List<IdentityMark> getMarks(RepositoryEntry entry, GTACourseNode gtaNode, Identity marker); + + public boolean hasMarks(RepositoryEntry entry, GTACourseNode gtaNode, Identity marker); public void log(String step, String operation, Task assignedTask, Identity actor, Identity assessedIdentity, BusinessGroup assessedGroup, CourseEnvironment courseEnv, GTACourseNode cNode); diff --git a/src/main/java/org/olat/course/nodes/gta/manager/GTAIdentityMarkDAO.java b/src/main/java/org/olat/course/nodes/gta/manager/GTAIdentityMarkDAO.java index 3c0042b897b3f6c9587fb5d54bd88293e642a591..bc939638e072a4689d059a67a2733aaf4746be5f 100644 --- a/src/main/java/org/olat/course/nodes/gta/manager/GTAIdentityMarkDAO.java +++ b/src/main/java/org/olat/course/nodes/gta/manager/GTAIdentityMarkDAO.java @@ -82,6 +82,21 @@ public class GTAIdentityMarkDAO { return !marks.isEmpty(); } + public boolean hasMarks(TaskList taskList, Identity marker) { + if (taskList == null || taskList.getKey() == null || marker == null || marker.getKey() == null) + return false; + + List<IdentityMark> marks = dbInstance.getCurrentEntityManager() + .createNamedQuery("loadByMarker", IdentityMark.class) + .setParameter("taskListKey", taskList.getKey()) + .setParameter("markerKey", marker.getKey()) + .setFirstResult(0) + .setMaxResults(1) + .getResultList(); + + return !marks.isEmpty(); + } + public void deleteMark(TaskList taskList, Identity marker, Identity participant) { if (taskList == null || taskList.getKey() == null || marker == null || marker.getKey() == null || participant == null || participant.getKey() == null) { diff --git a/src/main/java/org/olat/course/nodes/gta/manager/GTAManagerImpl.java b/src/main/java/org/olat/course/nodes/gta/manager/GTAManagerImpl.java index e2dea18abe5766e7f92070b96dca56ee0bb2f70d..87fdceec993fb1baa3745542494fec452820edff 100644 --- a/src/main/java/org/olat/course/nodes/gta/manager/GTAManagerImpl.java +++ b/src/main/java/org/olat/course/nodes/gta/manager/GTAManagerImpl.java @@ -1589,6 +1589,13 @@ public class GTAManagerImpl implements GTAManager, DeletableGroupData { return gtaMarkDao.loadMarks(taskList, marker); } + + @Override + public boolean hasMarks(RepositoryEntry entry, GTACourseNode gtaNode, Identity marker) { + TaskList taskList = getTaskList(entry, gtaNode); + return gtaMarkDao.hasMarks(taskList, marker); + } + @Override public AssessmentEntryStatus convertToAssessmentEntrystatus(Task task, GTACourseNode cNode) { TaskProcess status = task.getTaskStatus(); diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTARunController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTARunController.java index 5efc2db387ca0041583a0ff0e032bc501bdf87bd..11f8178aa7cfba08f25f9dda421552dd0e958c1c 100644 --- a/src/main/java/org/olat/course/nodes/gta/ui/GTARunController.java +++ b/src/main/java/org/olat/course/nodes/gta/ui/GTARunController.java @@ -93,7 +93,7 @@ public class GTARunController extends BasicController implements Activateable2 { manageLink = LinkFactory.createLink("run.manage.coach", mainVC, this); segmentView.addSegment(manageLink, false); } - doOpenCoach(ureq); + doOpenSelectionList(ureq); mainVC.put("segments", segmentView); putInitialPanel(mainVC); } else if(isManagementTabAvalaible(config)) { @@ -107,7 +107,7 @@ public class GTARunController extends BasicController implements Activateable2 { manageLink = LinkFactory.createLink("run.manage.coach", mainVC, this); segmentView.addSegment(manageLink, false); - doOpenCoach(ureq); + doOpenSelectionList(ureq); mainVC.put("segments", segmentView); putInitialPanel(mainVC); } else if(membership.isCoach() || userCourseEnv.isAdmin()) { @@ -119,7 +119,7 @@ public class GTARunController extends BasicController implements Activateable2 { coachLink = LinkFactory.createLink("run.coach.all", mainVC, this); segmentView.addSegment(coachLink, true); - doOpenCoach(ureq); + doOpenSelectionList(ureq); mainVC.put("segments", segmentView); putInitialPanel(mainVC); } else if(membership.isParticipant()) { @@ -203,6 +203,22 @@ public class GTARunController extends BasicController implements Activateable2 { // } + private void doOpenSelectionList(UserRequest ureq) { + RepositoryEntry entry = userCourseEnv.getCourseEnvironment().getCourseGroupManager().getCourseEntry(); + boolean hasMarks = gtaManager.hasMarks(entry, gtaNode, getIdentity()); + if (hasMarks) { + doOpenMarked(ureq); + if(segmentView != null) { + segmentView.select(markedLink); + } + } else { + doOpenCoach(ureq); + if(segmentView != null) { + segmentView.select(coachLink); + } + } + } + private Activateable2 doOpenRun(UserRequest ureq) { if(runCtrl == null) { createRun(ureq); diff --git a/src/test/java/org/olat/course/nodes/gta/manager/GTAIdentityMarkDAOTest.java b/src/test/java/org/olat/course/nodes/gta/manager/GTAIdentityMarkDAOTest.java index e30953d7e1548a5a1f2c16110a759956c91f850a..0639480752fae18b7f62e8412a4d623029e16ec0 100644 --- a/src/test/java/org/olat/course/nodes/gta/manager/GTAIdentityMarkDAOTest.java +++ b/src/test/java/org/olat/course/nodes/gta/manager/GTAIdentityMarkDAOTest.java @@ -125,6 +125,37 @@ public class GTAIdentityMarkDAOTest extends OlatTestCase { assertThat(isMarked).isFalse(); } + @Test + public void shouldCheckIfHasMarks() { + TaskList taskList = createTaskList(); + Identity marker = JunitTestHelper.createAndPersistIdentityAsAuthor("coach"); + Identity participant1 = JunitTestHelper.createAndPersistIdentityAsUser("participant1"); + Identity participant2 = JunitTestHelper.createAndPersistIdentityAsUser("participant2"); + sut.createAndPersisitMark(taskList, marker, participant1); + sut.createAndPersisitMark(taskList, marker, participant2); + dbInstance.commitAndCloseSession(); + + boolean hasMarks = sut.hasMarks(taskList, marker); + + assertThat(hasMarks).isTrue(); + } + + @Test + public void shouldCheckIfHasNoMarks() { + TaskList taskList = createTaskList(); + TaskList otherTaskList = createTaskList(); + Identity marker = JunitTestHelper.createAndPersistIdentityAsAuthor("coach"); + Identity otherMarker = JunitTestHelper.createAndPersistIdentityAsAuthor("otherCoach"); + Identity participant = JunitTestHelper.createAndPersistIdentityAsUser("participant3"); + sut.createAndPersisitMark(otherTaskList, marker, participant); + sut.createAndPersisitMark(taskList, otherMarker, participant); + dbInstance.commitAndCloseSession(); + + boolean hasMarks = sut.hasMarks(taskList, marker); + + assertThat(hasMarks).isFalse(); + } + @Test public void shouldDeleteMarkOfAMarker() { TaskList taskList = createTaskList();