From 7e7ec6b389414efec2d6ec954b8e19be3e14783a Mon Sep 17 00:00:00 2001
From: Henry Page <h.page@student.tudelft.nl>
Date: Thu, 1 Sep 2022 15:25:01 +0200
Subject: [PATCH] Update student request view

Some more updates to the student request view to support hybrid labs

Signed-off-by: Henry Page <h.page@student.tudelft.nl>
---
 .../dto/view/requests/LabRequestViewDTO.java   |  8 ++++++++
 .../messages/RequestCreatedMessage.java        | 18 ++++++++++++++----
 .../view/components/lab-request-info.html      | 10 +++++++---
 3 files changed, 29 insertions(+), 7 deletions(-)

diff --git a/src/main/java/nl/tudelft/queue/dto/view/requests/LabRequestViewDTO.java b/src/main/java/nl/tudelft/queue/dto/view/requests/LabRequestViewDTO.java
index 29a18aff7..87a90f937 100644
--- a/src/main/java/nl/tudelft/queue/dto/view/requests/LabRequestViewDTO.java
+++ b/src/main/java/nl/tudelft/queue/dto/view/requests/LabRequestViewDTO.java
@@ -32,6 +32,7 @@ import nl.tudelft.queue.dto.view.RequestViewDTO;
 import nl.tudelft.queue.model.Feedback;
 import nl.tudelft.queue.model.LabRequest;
 import nl.tudelft.queue.model.TimeSlot;
+import nl.tudelft.queue.model.enums.OnlineMode;
 import nl.tudelft.queue.model.enums.RequestType;
 
 import org.apache.commons.lang3.ArrayUtils;
@@ -48,6 +49,7 @@ public class LabRequestViewDTO extends RequestViewDTO<LabRequest> {
 
 	private String jitsiRoom;
 	private TimeSlot timeSlot;
+	private OnlineMode onlineMode;
 
 	private RequestType requestType;
 
@@ -59,6 +61,10 @@ public class LabRequestViewDTO extends RequestViewDTO<LabRequest> {
 	public void postApply() {
 		super.postApply();
 
+		if (onlineMode != null) {
+			setRoom(null);
+		}
+
 		assignment = getBean(AssignmentCacheManager.class).getOrThrow(data.getAssignment());
 		timeSlot = data.getTimeSlot();
 	}
@@ -85,6 +91,7 @@ public class LabRequestViewDTO extends RequestViewDTO<LabRequest> {
 				"Comment",
 				"Question",
 				"Time Slot",
+				"Online Mode",
 				"Request Type",
 				"Assignment");
 	}
@@ -95,6 +102,7 @@ public class LabRequestViewDTO extends RequestViewDTO<LabRequest> {
 				(comment != null) ? comment : "",
 				(question != null) ? question : "",
 				(timeSlot != null) ? timeSlot.toString() : "",
+				(onlineMode != null) ? onlineMode.getDisplayName() : "",
 				requestType.displayName(),
 				assignment.getName());
 	}
diff --git a/src/main/java/nl/tudelft/queue/realtime/messages/RequestCreatedMessage.java b/src/main/java/nl/tudelft/queue/realtime/messages/RequestCreatedMessage.java
index d5528af37..b59ee137e 100644
--- a/src/main/java/nl/tudelft/queue/realtime/messages/RequestCreatedMessage.java
+++ b/src/main/java/nl/tudelft/queue/realtime/messages/RequestCreatedMessage.java
@@ -21,6 +21,7 @@ import lombok.*;
 import nl.tudelft.librador.dto.view.View;
 import nl.tudelft.queue.dto.view.requests.LabRequestViewDTO;
 import nl.tudelft.queue.model.LabRequest;
+import nl.tudelft.queue.model.enums.OnlineMode;
 import nl.tudelft.queue.model.enums.RequestStatus;
 import nl.tudelft.queue.model.enums.RequestType;
 
@@ -46,6 +47,10 @@ public class RequestCreatedMessage extends View<LabRequest> implements Message {
 	private Long buildingId;
 	private String buildingName;
 
+	private OnlineMode onlineMode;
+
+	private String onlineModeDisplayName;
+
 	private Long assignmentId;
 	private String assignmentName;
 	private Long moduleId;
@@ -74,10 +79,15 @@ public class RequestCreatedMessage extends View<LabRequest> implements Message {
 
 		requestedBy = view.requesterEntityName();
 
-		roomId = view.getRoom().getId();
-		roomName = view.getRoom().getName();
-		buildingId = view.getRoom().getBuilding().getId();
-		buildingName = view.getRoom().getBuilding().getName();
+		if (view.getRoom() != null) {
+			roomId = view.getRoom().getId();
+			roomName = view.getRoom().getName();
+			buildingId = view.getRoom().getBuilding().getId();
+			buildingName = view.getRoom().getBuilding().getName();
+		} else if (view.getOnlineMode() != null) {
+			onlineMode = view.getOnlineMode();
+			onlineModeDisplayName = view.getOnlineMode().getDisplayName();
+		}
 
 		assignmentId = view.getAssignment().getId();
 		assignmentName = view.getAssignment().getName();
diff --git a/src/main/resources/templates/request/view/components/lab-request-info.html b/src/main/resources/templates/request/view/components/lab-request-info.html
index d9ceeb261..359a0a7d1 100644
--- a/src/main/resources/templates/request/view/components/lab-request-info.html
+++ b/src/main/resources/templates/request/view/components/lab-request-info.html
@@ -49,8 +49,11 @@
                 <dt>Assignment</dt>
                 <dd th:text="${request.assignment.name}"></dd>
 
-                <dt>Room</dt>
-                <dd th:text="|${request.room.building.name} - ${request.room.name}|"></dd>
+                <th:block th:if="${request.room != null}">
+                    <dt>Room</dt>
+                    <dd th:text="|${request.room.building.name} - ${request.room.name}|"></dd>
+                </th:block>
+
 
                 <dt>Type</dt>
                 <dd th:text="${request.requestType.displayName()}"></dd>
@@ -65,7 +68,8 @@
                     <dd th:text="${request.comment}"></dd>
                 </th:block>
 
-                <th:block th:if="${request.getJitsiRoom() != null && @permissionService.canViewRequestJitsiRoom(request.id)}">
+                <!--TODO This block needs to be changed to support other online modes -->
+                <th:block th:if="${request.getOnlineMode() == T(nl.tudelft.queue.model.enums.OnlineMode).JITSI && OnlineMode.request.getJitsiRoom() != null && @permissionService.canViewRequestJitsiRoom(request.id)}">
                     <dt>Link to Jitsi Room</dt>
                     <dd>
                         <a th:href="@{${@jitsiService.getJitsiRoomUrl(request.data)}}" th:target="_blank"
-- 
GitLab