From Meg and Zoe:

/requestNextProblem/<level>/<studentID>
- returns the next problem data
requestNextProblem(level: Integer, studentID: String)
handleNextProblem(problemData: String)

/addProblemAttempt/<studentID>/<start_time>/<end_time>/<answer>/<wasCorrect>
- add problem history to database
attemptAddProblemData(start_time: TypeTBD, end_time: TypeTBD, answer: String, wasCorrect: Bool)
handleAddProblemDataAttempt(added: Bool)


From Brynna and Wanchen:


(Student)
/requestStudentDashInfo/<studentID>
- returns Classroom (name) Teacher (name) Level
requestStudentDashInfo(studentID: String)
handleStudentDashInfo(classroomData)
If student ID invalid, go back to login
If no classroom/teacher return empty values array
Else {classroomName, teacherName}

/attemptAddStudentToClassroom/<studentID>/<classroomID>
- return classroom (only student can do this)
attemptRemoveStudentFromClass(studentID: String)
handleRemoveStudentFromClassAttempt()
If student ID invalid, go back to login
If classroomID invalid, notify user
If already in classroom, notify user
Else {classroomName, teacherName}

/attemptRemoveStudentFromClass/<studentID>
- remove student from any class they are apart of
attemptRemoveStudentFromClass(studentID: String)
handleRemoveStudentFromClassAttempt()
If student ID invalid, go back to login
(CHECK) If classroomID invalid, notify user
ELSE {}

/requestProblemHistory/<studentID>
- (unclear what this does)
requestProblemHistory(studentID: String))
handleProblemHistory() 

/requestCorrectIncorrectRatio/<studentID>/<lastNProblems>
requestCorrectIncorrectRatio(studentID: String))
handleCorrectIncorrectRatio()


(Teacher)

/requestTeacherDashInfo/<teacherID>
- returns teacher_name, Classrooms (names,  IDs) with students (ID, names, level)
requestTeacherDashInfo()
handleTeacherDashInfo()
If teacherID invalid, return to home screen
If no classrooms, return {} ask if teacher would like to make a classroom

/attemptAddClassroom/<teacherID>/<classroomName>
attemptAddClassroom(teacherID: String, classroomName: String)
handleAddClassroomAttempt(teacherID)
If teacherID invalid return to homescreen
If teahcer already has classroom with that name, ask to choose a different name
Else return {classroomID}

/attemptRemoveClassroom/<teacherID>/<classroomID>
attemptRemoveClassroom(teacherID)
handleRemoveClassroomAttempt(teacherID)
If teacherID invalid return to homescreen
If no classroom return no error and {}
If removed classroom return {}



From Marco and Sam:
/attemptLogin/<userID>
attemptLogin (checks if there is account with info)
handleLoginAttempt (returns if login successful or not)

/createAccount/<userID>/<userName>/<accountType>
attemptCreateAccount
handleCreateAccountAttempt (returns if createAccount was successful or not)
