diff --git a/nginx/public/index.html b/nginx/public/index.html index df91054..3f47660 100644 --- a/nginx/public/index.html +++ b/nginx/public/index.html @@ -65,6 +65,7 @@

Now with dark mode for the true programmers!


+

diff --git a/src/main/scala/model/OfficeHoursServer.scala b/src/main/scala/model/OfficeHoursServer.scala index 1db211b..f6ff93a 100644 --- a/src/main/scala/model/OfficeHoursServer.scala +++ b/src/main/scala/model/OfficeHoursServer.scala @@ -117,6 +117,8 @@ class EnterQueueListener(server: OfficeHoursServer) extends DataListener[String] i.sendEvent("queue", server.queueJSON_TA()) } + }else{ + socket.sendEvent("changeUsername","This username has been used by another student in the queue, please use another username.") } } } diff --git a/src/main/scala/model/database/Database.scala b/src/main/scala/model/database/Database.scala index bda7b4a..df588dc 100644 --- a/src/main/scala/model/database/Database.scala +++ b/src/main/scala/model/database/Database.scala @@ -45,8 +45,22 @@ class Database extends DatabaseAPI { statement.execute() } + override def moveToEndOfQueue(student: StudentInQueue): Unit = { + val statement1 = connection.prepareStatement("DELETE FROM queue WHERE username=?") + statement1.setString(1, student.username) + statement1.execute() + + val statement2 = connection.prepareStatement("INSERT INTO queue VALUE (?, ?, ?)") + statement2.setString(1, student.username) + statement2.setString(2, student.helpDescription) + statement2.setLong(3, System.nanoTime()) + statement2.execute() + } - + override def clearQueue:Unit = { + val statement = connection.prepareStatement("TRUNCATE TABLE queue") + statement.execute() + } override def removeStudentFromQueue(username: String): Unit = { val statement = connection.prepareStatement("DELETE FROM queue WHERE username=?") statement.setString(1, username) diff --git a/src/main/scala/model/database/DatabaseAPI.scala b/src/main/scala/model/database/DatabaseAPI.scala index 61b90e1..9052b3a 100644 --- a/src/main/scala/model/database/DatabaseAPI.scala +++ b/src/main/scala/model/database/DatabaseAPI.scala @@ -5,6 +5,8 @@ import model.StudentInQueue trait DatabaseAPI { def addStudentToQueue(student: StudentInQueue): Unit + def moveToEndOfQueue(student: StudentInQueue): Unit + def clearQueue:Unit def removeStudentFromQueue(username: String): Unit def getQueue: List[StudentInQueue] def checkTACredentials(credentials: String): Boolean diff --git a/src/main/scala/model/database/TestingDatabase.scala b/src/main/scala/model/database/TestingDatabase.scala index b847f27..07cde0e 100644 --- a/src/main/scala/model/database/TestingDatabase.scala +++ b/src/main/scala/model/database/TestingDatabase.scala @@ -11,12 +11,21 @@ class TestingDatabase extends DatabaseAPI { data ::= student } + override def moveToEndOfQueue(student: StudentInQueue): Unit = { + data = data.filter(_.username != student.username) + var latestTime = data.head.timestamp + val newStudent = new StudentInQueue(student.username,student.helpDescription,latestTime+1) + data ::= newStudent + } + + override def clearQueue: Unit = { + data = List() + } override def removeStudentFromQueue(username: String): Unit = { data = data.filter(_.username != username) } - override def getQueue: List[StudentInQueue] = { data.reverse } diff --git a/src/main/scala/testCases.scala b/src/main/scala/testCases.scala new file mode 100644 index 0000000..b1f71e8 --- /dev/null +++ b/src/main/scala/testCases.scala @@ -0,0 +1,71 @@ +import java.sql.{Connection, DriverManager, ResultSet} +import model.database.{Database,DatabaseAPI,TestingDatabase} +import model.StudentInQueue +import play.api.libs.json.Json +import org.mindrot.jbcrypt.BCrypt +import org.scalatest.FunSuite + +class testCases extends FunSuite{ + test("myTest"){ + + val database = new TestingDatabase + val student1 = new StudentInQueue("David","Project1",5) + val student2 = new StudentInQueue("Alex","Project2",50) + val student3 = new StudentInQueue("Jesse","Project3",500) + val student4 = new StudentInQueue("Ethan","Project4",5000) + val student5 = new StudentInQueue("Nathan","Project5",50000) + + + database.addStudentToQueue(student1) + database.addStudentToQueue(student2) + database.addStudentToQueue(student3) + val queue = database.getQueue + assert(queue(0).username == "David") + assert(queue(0).helpDescription == "Project1") + assert(queue(0).timestamp == 5) + + assert(queue(1).username == "Alex") + assert(queue(1).helpDescription == "Project2") + assert(queue(1).timestamp == 50) + + assert(queue(2).username == "Jesse") + assert(queue(2).helpDescription == "Project3") + assert(queue(2).timestamp == 500) + + database.removeStudentFromQueue("Alex") + val queue2 = database.getQueue + assert(queue2(1).username == "Jesse") + assert(queue2(1).helpDescription == "Project3") + assert(queue2(1).timestamp == 500) + + database.clearQueue + val queue3 = database.getQueue + assert(queue3 == List()) + database.addStudentToQueue(student1) + database.addStudentToQueue(student2) + database.addStudentToQueue(student3) + database.addStudentToQueue(student4) + database.addStudentToQueue(student5) + database.moveToEndOfQueue(student2) + val queue4 = database.getQueue + assert(queue4(0).username == "David") + assert(queue4(0).helpDescription == "Project1") + assert(queue4(0).timestamp == 5) + assert(queue4(1).username == "Jesse") + assert(queue4(1).helpDescription == "Project3") + assert(queue4(1).timestamp == 500) + assert(queue4(2).username == "Ethan") + assert(queue4(2).helpDescription == "Project4") + assert(queue4(2).timestamp == 5000) + assert(queue4(3).username == "Nathan") + assert(queue4(3).helpDescription == "Project5") + assert(queue4(3).timestamp == 50000) + assert(queue4(4).username == "Alex") + assert(queue4(4).helpDescription == "Project2") + assert(queue4(4).timestamp == 50001) + + + + + } +}