diff --git a/nginx/public/index.html b/nginx/public/index.html
index 5443216..4643aca 100644
--- a/nginx/public/index.html
+++ b/nginx/public/index.html
@@ -14,6 +14,7 @@
Welcome!
Name
+
diff --git a/nginx/public/officeHours.js b/nginx/public/officeHours.js
index 3514c14..809523f 100644
--- a/nginx/public/officeHours.js
+++ b/nginx/public/officeHours.js
@@ -2,6 +2,18 @@ const socket = io.connect("http://localhost:8080", {transports: ['websocket']});
socket.on('queue', displayQueue);
socket.on('message', displayMessage);
+socket.on('repeat', displayRepeat);
+
+function displayRepeat(sendMsg) {
+ const queue = JSON.parse(sendMsg);
+ if (queue['repeat'] === 'yes'){
+ let updatedForRepeats = queue['username'] + " is already in queue"
+ document.getElementById("repeat").innerHTML = updatedForRepeats;
+ }else{
+ let updatedForRepeats = queue['username'] + " is now in queue"
+ document.getElementById("repeat").innerHTML = updatedForRepeats;
+ }
+}
function displayMessage(newMessage) {
document.getElementById("message").innerHTML = newMessage;
diff --git a/src/main/scala/model/OfficeHoursServer.scala b/src/main/scala/model/OfficeHoursServer.scala
index 09ef61b..5ee821a 100644
--- a/src/main/scala/model/OfficeHoursServer.scala
+++ b/src/main/scala/model/OfficeHoursServer.scala
@@ -60,10 +60,20 @@ class DisconnectionListener(server: OfficeHoursServer) extends DisconnectListene
class EnterQueueListener(server: OfficeHoursServer) extends DataListener[String] {
override def onData(socket: SocketIOClient, username: String, ackRequest: AckRequest): Unit = {
- server.database.addStudentToQueue(StudentInQueue(username, System.nanoTime()))
- server.socketToUsername += (socket -> username)
- server.usernameToSocket += (username -> socket)
- server.server.getBroadcastOperations.sendEvent("queue", server.queueJSON())
+ if (server.database.getQueue.exists(s => s.username == username)){
+ println("User already in queue")
+ val messageMap: Map[String, JsValue] = Map("username" -> Json.toJson(username), "repeat" -> Json.toJson("yes"))
+ val sendMsg = Json.stringify(Json.toJson(messageMap))
+ server.server.getBroadcastOperations.sendEvent("repeat", sendMsg)
+ }else{
+ server.database.addStudentToQueue(StudentInQueue(username, System.nanoTime()))
+ server.socketToUsername += (socket -> username)
+ server.usernameToSocket += (username -> socket)
+ val messageMap: Map[String, JsValue] = Map("username" -> Json.toJson(username), "repeat" -> Json.toJson("no"))
+ val sendMsg = Json.stringify(Json.toJson(messageMap))
+ server.server.getBroadcastOperations.sendEvent("repeat", sendMsg)
+ server.server.getBroadcastOperations.sendEvent("queue", server.queueJSON())
+ }
}
}