From 585e5258f7cb9972c55d0b92e98a0ef371fc8d59 Mon Sep 17 00:00:00 2001 From: uhensler <none@none> Date: Tue, 10 Oct 2017 14:42:32 +0200 Subject: [PATCH] OO-3024: Open tab with marked participants if there are marked participants --- .../org/olat/course/nodes/gta/GTAManager.java | 2 ++ .../nodes/gta/manager/GTAIdentityMarkDAO.java | 15 +++++++++ .../nodes/gta/manager/GTAManagerImpl.java | 7 +++++ .../course/nodes/gta/ui/GTARunController.java | 22 +++++++++++-- .../gta/manager/GTAIdentityMarkDAOTest.java | 31 +++++++++++++++++++ 5 files changed, 74 insertions(+), 3 deletions(-) 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 11581dedcef..0499a8f79fd 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 3c0042b897b..bc939638e07 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 e2dea18abe5..87fdceec993 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 5efc2db387c..11f8178aa7c 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 e30953d7e15..0639480752f 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(); -- GitLab