Flow
1) When the user logs in a user profile is created in CodeAssess.logUserIn
2) We then getting a list of classes in User.requestListOfClasses
3) We create teacher if it doesn't exist in Class.createTeacherIfDoesntExist
4) We create class if it doesn't exist in CodeAssess.createClassIfDoesntExist
// TEACHER
5) We then getting a list of classes in Teacher.requestListOfClasses
6) getting a list of students in Class.requestListOfStudents
7) getting studentData for all students in Class.getStudentDataForAllStudents
8) fetch individual student data in Student.fetchStudentData
9) getting all announcements in Class.getAnnouncements
// STUDENT
5) we create student if it doesn't exist in CodeAssess.createStudentIfDoesntExist