From fc19a779ce23793006fe188604e01d9a98859b6c Mon Sep 17 00:00:00 2001 From: Timothy Tong Date: Tue, 12 Jan 2016 22:06:42 -0800 Subject: [PATCH] #125 Tutor queue panel with demo functions --- .../TutoringOfficeHourController.java | 46 +++++++++++++++++++ .../java/org/dcsc/admin/dto/QueueSummary.java | 31 +++++++++++++ .../admin/dto/TutorQueueRefreshSummary.java | 19 ++++++++ ...DcscMethodSecurityExpressionOperation.java | 2 +- src/main/resources | 2 +- 5 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 admin/src/main/java/org/dcsc/admin/controllers/tutoring/TutoringOfficeHourController.java create mode 100644 admin/src/main/java/org/dcsc/admin/dto/QueueSummary.java create mode 100644 admin/src/main/java/org/dcsc/admin/dto/TutorQueueRefreshSummary.java diff --git a/admin/src/main/java/org/dcsc/admin/controllers/tutoring/TutoringOfficeHourController.java b/admin/src/main/java/org/dcsc/admin/controllers/tutoring/TutoringOfficeHourController.java new file mode 100644 index 0000000..0578981 --- /dev/null +++ b/admin/src/main/java/org/dcsc/admin/controllers/tutoring/TutoringOfficeHourController.java @@ -0,0 +1,46 @@ +package org.dcsc.admin.controllers.tutoring; + +import org.dcsc.admin.dto.QueueSummary; +import org.dcsc.admin.dto.TutorQueueRefreshSummary; +import org.dcsc.core.course.AcademicCourse; +import org.dcsc.core.time.AcademicTermService; +import org.dcsc.core.tutor.Tutor; +import org.dcsc.core.tutor.TutorService; +import org.dcsc.core.user.DcscUser; +import org.dcsc.core.user.details.DcscUserDetails; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.handler.annotation.MessageMapping; +import org.springframework.messaging.simp.annotation.SendToUser; +import org.springframework.security.core.Authentication; +import org.springframework.stereotype.Controller; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ThreadLocalRandom; + +@Controller +public class TutoringOfficeHourController { + @Autowired + private TutorService tutorService; + @Autowired + private AcademicTermService academicTermService; + + @MessageMapping("/tutor/queue/refresh") + @SendToUser("/queue/office-hour") + public TutorQueueRefreshSummary courseQueueRefresh(Authentication authentication) throws Exception { + DcscUserDetails userDetails = (DcscUserDetails) authentication.getPrincipal(); + DcscUser dcscUser = userDetails.getUser(); + + Tutor tutor = tutorService.getTutor(dcscUser); + + // Demo code + List summaries = new ArrayList<>(); + List courses = tutor.getCourses(academicTermService.getCurrentTerm().getCode()); + for (AcademicCourse course : courses) { + QueueSummary summary = new QueueSummary(course.getCode(), ThreadLocalRandom.current().nextInt(0, 19)); + summaries.add(summary); + } + + return new TutorQueueRefreshSummary(summaries); + } +} diff --git a/admin/src/main/java/org/dcsc/admin/dto/QueueSummary.java b/admin/src/main/java/org/dcsc/admin/dto/QueueSummary.java new file mode 100644 index 0000000..5e4914f --- /dev/null +++ b/admin/src/main/java/org/dcsc/admin/dto/QueueSummary.java @@ -0,0 +1,31 @@ +package org.dcsc.admin.dto; + +public class QueueSummary { + private String course; + private int size; + + public QueueSummary() { + + } + + public QueueSummary(String course, int size) { + this.course = course; + this.size = size; + } + + public String getCourse() { + return course; + } + + public void setCourse(String course) { + this.course = course; + } + + public int getSize() { + return size; + } + + public void setSize(int size) { + this.size = size; + } +} diff --git a/admin/src/main/java/org/dcsc/admin/dto/TutorQueueRefreshSummary.java b/admin/src/main/java/org/dcsc/admin/dto/TutorQueueRefreshSummary.java new file mode 100644 index 0000000..7daea97 --- /dev/null +++ b/admin/src/main/java/org/dcsc/admin/dto/TutorQueueRefreshSummary.java @@ -0,0 +1,19 @@ +package org.dcsc.admin.dto; + +import java.util.List; + +public class TutorQueueRefreshSummary { + List summaries; + + public TutorQueueRefreshSummary(List summaries) { + this.summaries = summaries; + } + + public List getSummaries() { + return summaries; + } + + public void setSummaries(List summaries) { + this.summaries = summaries; + } +} diff --git a/src/main/java/org/dcsc/configuration/DcscMethodSecurityExpressionOperation.java b/src/main/java/org/dcsc/configuration/DcscMethodSecurityExpressionOperation.java index 9c066d8..217fe44 100644 --- a/src/main/java/org/dcsc/configuration/DcscMethodSecurityExpressionOperation.java +++ b/src/main/java/org/dcsc/configuration/DcscMethodSecurityExpressionOperation.java @@ -61,6 +61,6 @@ public boolean hasGroup(String group) { } public boolean hasGroup(String group, boolean adminOnly) { - return permissionEvaluator.hasGroup(authentication, group, true); + return permissionEvaluator.hasGroup(authentication, group, adminOnly); } } diff --git a/src/main/resources b/src/main/resources index fbda0f4..79465e5 160000 --- a/src/main/resources +++ b/src/main/resources @@ -1 +1 @@ -Subproject commit fbda0f4391b3962e0c4da4715f89ddfc6076a8a5 +Subproject commit 79465e55700d4fa9d5c80424701bf2765c42f319