3 Specific Requirements 3.1 Functional Requirements 3.1.1. Test Harness (Seth Hohensee) The test harness will modify content of the REMSY database, enrollment file, Active Directory domain users, and Banner model database. It will be used to generate sample data for REMSY functionality testing. The following functional requirements must be met: 3.1.1.1. Must provide developers with the ability to clear all data from the enrollment file 3.1.1.2. Must provide developers with the ability to clear all users from the REMSY database 3.1.1.3. Must provide developers with the ability to clear all users from the Banner model database 3.1.1.4. Must provide developers with the ability to clear all users from the REMSY Organizational Unit of the Active Directory Domain 3.1.1.4.1 Performing 3.1.1.4 must also execute: 3.1.1.1 3.1.1.2 3.1.1.3 3.1.1.5. Must provide developers with the ability to clear all locations form the REMSY database 3.1.1.6. Must provide developers with the ability to create a user specified number of locations in the REMSY database 3.1.1.7. Must provide developers with the ability to create a user specified number of tutoring sessions 3.1.1.7.1 Tutoring sessions must not overlap with any existing class period for a course 3.1.1.7.2 A random existing tutor must be assigned to each session 3.1.1.7.2.1 Must check for scheduling conflicts before assigning the tutor to the session 3.1.1.8. Must provide developers with the ability to create a user specified number of domain users of the types: Student Tutor Professor Administrator 3.1.1.8.1 Class entries must be added to the enrollment file on student or tutor creation 3.1.1.8.1.1 Class entries must be randomly chosen from instances of courses present in the Banner model database 3.1.1.8.1.2 Each student or tutor’s grade data for current classes must be set to one of the following values in the Banner model database: A A B+ B B C+ C C D+ D D F W WF I 3.1.1.8.1.3 Enrollment file entries must contain the following fields in a colon separated list Course name (i.e. CS411w) CRN Student name (last name first and middle initial last) UIN Student email Phone number 3.1.1.8.2 Each created user must be added to the Banner model database 3.1.1.8.3 Each created user must be added to the REMSY database 3.1.2. Account Creation Requirements (Eric Diep) The purpose of the account creation page is to allow potential users to create account. Accounts, which are composed of the username and password, have the following functional requirements that must be met 3.1.2.1 Username must model Midas login: a. First letter of the user’s first name b. First four letters of user’s last name c. Three digit number 3.1.2.2 Password must be: a. At least eight b. Contain the following o Lower-case letter(s) o Upper-case letter(s) o Number(s) o Symbol(s) found on the keyboard 3.1.2.3 Account information (username and password) must be stored on database 3.1.3 Authentication Requirements (Seth Hohensee) The purpose of the authentication is to both identify the user and restrict access to the REMSY system to legitimate students. The following authentication functional requirements must be met: 3.1.3.1 REMSY must confirm the user’s identity by authenticating against Active Directory when a login attempt occurs. 3.1.3.1.1 REMSY must then pull information about the user from the REMSY database based on username to complete the login. 3.1.3.2 REMSY must log the student into the highest identity associated with their Active Directory account. 3.1.3.2.1 Possible identities include (in descending order) Administrator Professor Tutor Student 3.1.3.3 REMSY must initiate the account creation process if a user without records within the REMSY database successfully authenticates (see 3.1.2). 3.1.4 Mobile Requirements (Zachary Regelski and Matthew Letchworth) This section details the abilities of the mobile application. It breaks it down into the different user groups and gives the abilities that each one is granted. It also shows the mobile functionality compared to that of the PC version. The following functional requirements must be met: 3.1.4.1 Registered users must be able to log-in 3.1.4.2 Registered users must only have access to their appropriate interface 3.1.4.3 Registered students must be able to: Ability PC Mobile Create an account Log in to account Modify account information View current availability Adjust availability View sessions available for tutoring Sign up for available sessions Manage sessions currently registered for Submit surveys on tutors they have had a session with View previous surveys on tutors Indicate attendance Submit requests for a course to be added Receive notifications SMS E-Mail Push Notifications 3.1.4.4 Registered tutors must be able to: Ability PC Mobile Create an account Log in to account Modify account information View current availability Adjust availability View sessions available for tutoring Manage sessions currently registered for Flag students as troublesome View previous surveys on themselves Confirm attendance of student Receive notifications SMS E-Mail Push Notifications 3.1.4.5 Registered administrators must be able to: Ability PC Mobile Create an account Log in to account Modify account information View sessions available for tutoring Manage sessions students are currently registered for View tutors flags on students View previous surveys on tutors View requests for a course to be added Override tutor input Receive notifications SMS E-Mail Push Notifications 3.1.5. Hardware Requirement (Matthew Letchworth) REMSY must have the ability to interact with certain hardware. The purpose of the hardware is to streamline the log-in process securely. The following functional requirements must be met: 3.1.5.1. 3.1.5.2. 3.1.5.3. The card reader must connect properly to the host computer The card reader must be able to read data from the swipe of the card The card reader must be able login the user via the card reader 3.1.6 Database Requirement (Denis Mileyko) 3.1.6.1 Database must be created in MySQL Database Server version 5.2 3.1.6.2 Tables, Queries, and Reports: Tables, queries, views, and stored procedures will be developed as necessary to fulfill the requirements of this application. As much as possible, all calls from the web will implement these stored procedures for faster access and security vice programming the SQL statements directly in the web page code. 3.1.6.3 MySQL Server user account must be used for maximum security. 3.1.6.4 Only ODU authorized personnel can have access to this database 3.1.6.5 Initial database diagram is shown in Figure 1 attendance_status Table comments: Table contains student attendance status names Column Type attendance_status_id int(11) Null Default No Comments Auto increment primary key name varchar(255) No Name of the attendance status active char(1) Y - if attendance status active, N - if attendance status inactive No Indexes Keyname Type Unique Packed PRIMARY BTREE Yes No Column Cardinality Collation Null attendance_status_id 3 calendar_item Table comments: Contains student/tutor availability and class schedule A No Column Type Null Default Comments calendar_item_id int(11) No Auto increment primary index start_date date No Start date of the class schedule or student/tutor availability end_date date No End date of the class schedule or student/tutor availability active char(1) No Y - if calendar item active, N - if calendar item inactive Indexes Keyname Type Unique Packed PRIMARY BTREE Yes No Column Cardinality Collation Null calendar_item_id 0 A No calendar_item_detail Table comments: Contains daily time intervals related to the calendar item Column Type Null Default Comments calendar_item_detail_id int(11) No Auto incremented primary index calendar_item_id int(11) No Foreign key to calendar_item.calendar_item_id day_of_week int(11) No 0 - Sunday, 1 - Monday, ... , 6 - Saturday start_time time No Start time of the calendar item at the current day of week end_time time No End time of the calendar item at the current day of week Indexes Keyname PRIMARY Type Unique Packed BTREE Yes availability_id BTREE No Column Cardinality Collation Null No calendar_item_detail_id 0 A No No calendar_item_id A No class Table comments: Contains classes information Column Type Null Default Comments class_id int(11) No Class unique identifier course_id int(11) No Foreign key to course.course_id location_id int(11) No Foreign key to location.location_id crn varchar(255) No CRN identifier teacher_id int(11) No Tutor: Foreign key user.user_id capacity int(11) No class capacity in nu,ber of students. 0 unlimited. class_status_id int(11) No Foreign key to class_status.status_id Indexes Keyname Type Unique Packed Column Cardinality Collation Null PRIMARY BTREE Yes course_id BTREE No No No class_id 2 A No course_id A No location_id A No teacher_id A No course Table comments: Contains courses information Column Type Null Default Comments course_id int(11) No Course unique identifier subject_id int(11) No Subject: foreign key to subject.subject_id name varchar(255) No Name of the course course_number varchar(255) No Course number active Y - if course is active, N - if course is inactive Indexes char(1) No Keyname Type Unique Packed Column Cardinality Collation Null PRIMARY BTREE Yes No course_id 1 A No subject_id BTREE No No subject_id A No location Table comments: Contains locations information Column Type Null Default Comments location_id int(11) No Location unique identifier name char(255) No Location Name street varchar(255) No Street address city varchar(255) No City state varchar(255) No State zip varchar(10) No Zip code phone varchar(255) No Telephone fax varchar(255) No Fax email varchar(255) No Email address active char(1) Y - if location is active, N - if location is inactive No Indexes Keyname Type Unique Packed Column Cardinality Collation Null PRIMARY BTREE Yes No location_id 3 A No message Table comments: Contains system notifications Column Type Null Default Comments message_id int(11) No Message unique identifier created_date datetime No Date and time when message was created user_id int(11) No User who created the message subject varchar(255) No Subject of the message text text Message content No Indexes Keyname Type Unique Packed Column Cardinality Collation Null PRIMARY BTREE Yes No message_id 0 A No user_id No user_id A No BTREE No message_recipient Table comments: Contains message recipients Column Type Null Default Comments message_recipient_id int(11) No Auto incremented identifier message_id int(11) No Message: foreign key to message.message_id recipient_id int(11) No Recipient: foreign key to user.user_id Indexes Keyname Type Unique Packed PRIMARY BTREE Yes No message_id BTREE No No Column Cardinality Collation Null message_recipient_id 0 A No message_id A No recipient_id A No new_course_student_request Table comments: Contains requests from students to add new course Column Type Null Default Comments new_course_student_request_id int(11) No Request unique identifier student_id int(11) No Student: foreign key to user.user_id course_name varchar(255) No Name of the new course requesting course_id int(11) No Existing course: foreign key to course.course_id notes text No Notes assigned_to int(11) No Assigned to staff: foreign key to user.user_id requested_date datetime No Date and time of the request request_status_id int(11) No Request status: foreign key to request_status.request_status_id Indexes Keyname PRIMAR Y student_id Type Uniqu Packe e d BTRE Yes E BTRE No E assigned_t BTRE No o E No No No Column Cardinalit Collatio Nul y n l new_course_student_request_ 0 id A No student_id A No course_id A No request_status_id A No assigned_to A No new_course_tutor_request Table comments: Contains tutor offers to teach new course Column Type Null Default Comments new_course_tutor_request int(11) No Request unique identifier tutor_id int(11) No Tutor: foreign key to user.user_id course_name varchar(255) No Name of the new course course_id int(11) No Existing course: foreign key to course.course_id notes text No Notes assigned_to int(11) No Assigned to staff: foreign key to user.user_id requested_date datetime No Date and time of the request request_status_id int(11) No Request status: foreign key to request_status.request_status_id Indexes Keyname Type Unique Packed PRIMARY BTREE Yes tutor_id BTREE No assigned_to BTREE No No No No Column Cardinality Collation Null new_course_tutor_request 0 A No tutor_id A No course_id A No request_status_id A No assigned_to A No permission Table comments: Contains all system permissions Column Type permission_id int(11) Null Default No Comments Permission unique identifier name varchar(255) No Name of the permission active char(1) No Y - if permission is active, N - if permission is inactive order_index int(11) No Order index of the permission Indexes Keyname Type Unique Packed PRIMARY BTREE Yes No Column Cardinality Collation Null permission_id 18 A No request_status Table comments: Contains list of available request statuses Column Type request_status_id int(11) Null Default No Comments Request status unique identifier name varchar(255) No Name of the request status active char(1) Y - if request status is active, N - inactive No Indexes Keyname Type Unique Packed PRIMARY BTREE Yes No Column Cardinality Collation Null request_status_id 2 A No role Table comments: Contains user roles Column Type Null Default No Comments role_id int(11) Role unique identifier name varchar(255) No Role name active char(1) Y - if role is active, N - inactive No Indexes Keyname Type Unique Packed Column Cardinality Collation Null PRIMARY BTREE Yes No role_id 4 A No role_permission Table comments: Map user role to allowed permissions Column Type Null Default Comments role_permission_id int(11) No Unique identifier role_id int(11) No Role: foreign key to role.role_id permission_id int(11) No Permission: foreign key to permission.permission_id Indexes Keyname Type Unique Packed PRIMARY BTREE Yes No user_role_id BTREE No No Column Cardinality Collation Null role_permission_id 25 A No role_id A No permission_id A No session Table comments: Contains all classes sessions Column Type Null Default Comments session_id int(11) No Session unique identifier class_id int(11) No Class: foreign key to class.class_id tutor_id int(11) No Tutor assigned to the class: foreign key to user.user_id location_id int(11) No Location of the class: foreign key to location.location_id notes text No Special notes scheduled_date date No Date when the class is scheduled to take place start_time time No Time when class started end_time time No Time when class ended No Session status: foreign key to session_status.session_status_id session_status_id int(11) Indexes Keyname Type Unique Packed PRIMARY BTREE Yes course_id BTREE No No No Column session_id Cardinality Collation Null 0 A No class_id A No tutor_id A No location_id A No session_status_id A No session_history Table comments: Contains history of class session change of status Column Type Null Default Comments session_history_id int(11) No Unique identifier session_id int(11) No Class session: foreign key to session.session_id session_status_id int(11) No Session status: foreign key to session_status.session_status_id user_id int(11) No User who changed the status: foreign key to user.user_id modified_date datetime No Date and time when status of the class has been changed Indexes Keyname Type Unique Packed PRIMARY BTREE Yes session_id BTREE No No No Column Cardinality Collation Null session_history_id 0 A No session_id A No session_status_id A No user_id A No session_rate_student Table comments: Contains students reviews of the classes Column Type Null Default Comments session_rate_student_id int(11) No Unique identifier session_id int(11) No Class session: foreign key to session.session_id session_rate_tutor_criteri int(11) No a_id Rating criteria: foreign key to session_rate_tutor_criteria.session_rate_t utor_criteria_id rate Rating int(11) No Indexes Keyname Type Unique Packed Column Cardinality Collation Null No session_rate_student_ 0 id A No session_log_id BTREE No No session_rate_tutor_cri teria_id A No session_id No session_id A No PRIMARY BTREE Yes BTREE No session_rate_student_criteria Table comments: Contains all rating criteria for tutors to rate students Column Type session_rate_student_criteria_id int(11) Null Default No Comments Unique identifier criteria_name varchar(255) No Name of the rating criteria criteria_description text No Description of the rating criteria order_index int(11) No Order index of the rating criteria active char(1) No Y - if rating is active, N inactive Indexes Keyname Type Unique Packed PRIMARY BTREE Yes Column Cardinality Collation Null session_rate_student_crite 0 ria_id No A No session_rate_tutor Table comments: Contains tutors reviews of the students Column Type Nul Default l Comments session_rate_student_id int(11) No Unique identifier session_id int(11) No Class session: foreign key to session.session_id student_id int(11) No Student: foreign key to user.user_id session_rate_student_crit int(11) No eria_id Rate criteria: foreign key to session_rate_student_criteria.session_rate_st udent_criteria_id rate Rate int(11) No Indexes Keyname PRIMARY Type Unique Packed BTREE Yes No session_log_id BTREE No No session_id No BTREE No Column session_rate_student_id Cardinality Collation Null 0 A No student_id A No session_rate_student_criteria_id A No session_id A No session_rate_tutor_criteria Table comments: Contains all rating criteria for students to rate tutors Column Type Null Default rate_criteria_tutor_id int(11) No Comments Unique identifier criteria_name varchar(255) No Name of the rate criteria criteria_description text No Description of the rate criteria order_index int(11) No Order index of the rate criteria active char(1) No Y - if criteria is active, N - inactive Indexes Keyname Type Unique Packed PRIMARY BTREE Yes No Column Cardinality Collation Null rate_criteria_tutor_id 4 A No session_status Table comments: Contains the list of class session statuses Column Type session_status_id int(11) Null Default No Comments Session status unique identifier name varchar(255) No Class session status name active char(1) Y - if session status active, N - inactive No Indexes Keyname Type Unique Packed PRIMARY BTREE Yes No Column Cardinality Collation Null session_status_id 3 A No session_user Table comments: Assigns the list of students to a particular class Column Type Null Default Comments session_user_id int(11) No Unique identifier session_id int(11) No Class session: foreign key to session.session_id student_id int(11) No Student: foreign key to user.user_id attendance_status_id int(11) No Attendance status: foreign key to attendance_status.attendance_status_id tutor_notes Notes of the tutor related to a specific student varchar(255) No Indexes Keyname Type Unique Packed PRIMARY BTREE Yes No session_id BTREE No No Column session_user_id Cardinality Collation Null 0 A No session_id A No student_id A No attendance_status_id A No subject Table comments: Contains all available subjects Column Type subject_id int(11) name Null Default No Comments Subject unique identifier varchar(255) No Subject name short_name varchar(255) No Subject short name active Y - if subject is active, N - inactive char(1) No Indexes Keyname Type Unique Packed Column Cardinality Collation Null PRIMARY BTREE Yes No subject_id 101 A No user Table comments: Contains users of the system Column Type Null Default user_id int(11) uin varchar(255) No UIN first_name varchar(255) No First name last_name varchar(255) No Last name street varchar(255) No Street address city varchar(255) No City state varchar(255) No State zip varchar(10) No Zip code phone varchar(255) No Telephone alt_phone varchar(255) No Alternative telephone email varchar(255) No Email username varchar(255) No Username password varchar(255) No Password role_id int(11) No Not used last_logon_date datetime No Last date when user was logged in active No Y - if user is active, N - inactive char(1) No Comments User unique identifier Indexes Keyname PRIMARY Type Unique Packed Column Cardinality Collation Null BTREE Yes last_used_role_id BTREE No No user_id 2 A No No role_id A No user_location Table comments: Maps users to locations Column Type Null Default Comments user_location_id int(11) No Unique identifier user_id int(11) No User: foreign key to user.user_id location_id int(11) No Location: foreign key to location.location_id or '0' for all Indexes Keyname Type Unique Packed PRIMARY BTREE Yes No user_id No BTREE No Column Cardinality Collation Null user_location_id 2 A No user_id A No location_id A No user_role Table comments: Maps user to user roles Column Type Null Default Comments user_role_id int(11) No Unique identifier user_id int(11) No User: foreign key to user.user_id role_id int(11) No User role: foreign key to role.role_id Indexes Keyname Type Unique Packed PRIMARY BTREE Yes No user_id No BTREE No Column Cardinality Collation Null user_role_id 5 A No user_id A No role_id A No user_session Table comments: Contains active mobile sessions Column Type Null Default Comments user_session_id varchar(50) No unique user session id created_date datetime No Date and time when current user session has been initiated last_used_date datetime No Date and time of the last query from the user user_id int(11) No User: foreign key to user.user_id ip_address varchar(15) No IP address of the user Indexes Keyname Type Unique Packed Column Cardinality Collation Null PRIMARY BTREE Yes No user_session_id 5 A No user_id No user_id A No BTREE No Figure 1. Initial database diagram 3.1.7 Web Interface Requirements (Denis Mileyko) The main purpose of the Web Interface is to give students, tutors, staff and administrator the ability to access tutoring system from any device capable of browsing web pages and connected to the Internet. Web Interface shall provide users with ability to log in to the system and perform tasks based on their role. Web Interface must meet the requirements of the sitemap (see Figure 2). Home Dashboard Messages Find a Class My Classes Search by: - Subject - Date Range - Location - Tutor List scheduled classes Reviews List reviews Class not found Class Submit request about the class that you are interested to take. My Availability My Account - Display calendar of availability - Modify availability History List classes taken in the past Logout Account Information Exit the app Preferences Profile - Notifications - Subjects of interest Account Information - Information about class. - Sign Up Home Dashboard My Classes Messages My Availability - List scheduled classes - List Classes History - Display calendar of availability - Modify availability Class New Class - Information about class. - List of signed up student - Check In/Out students - Request to cancel class - Request to reschedule class Submit request about the class that you willing to teach My Account Logout Account Information Preferences - Notifications - Subjects of interest Profile Account Information Exit the app Dashboard Logout Home Messages Classes List classes filtered by: - Subject - Tutor - Date and Time Range - List Classes History Allow create/edit classes. Availabilities Settings Availabilities filtered by: - Date and Time Range - Subject - Tutor - Student - Manage notifications Exit the app Users Locations Reports Display list of users filtered by: user role, active/inactive. Allow to create and edit user accounts. List of locations filtered by: active/ inactive. Allow to create and edit locations. Multiple reports User Class - Information about class. - List of signed up student - Check In/Out students - Cancel class - Reschedule class. Availability Information about availability - Account information - User permissions Location Location Details Looking for a class List classes that students are willing to take filtered by: - Subject - Date and Time Range - Date when request has been made I can teach List tutors requests to qualify for teaching a class filtered by: - Subject - Date and Time Range - Date when request has been made Figure 2. Web Interface Sitemap. The following functional requirements must be met: 3.1.7.1 Login Page The Login Page shall authenticate users in the system. The following requirements must be met: 3.1.7.1.1 Display the following input fields: a. Username b. Password 3.1.7.1.2 There must be a Login button on the login page 3.1.7.1.3 Login button triggers authentication process 3.1.7.1.4 Authentication process must meet the following requirements: 3.1.7.1.4.1 If username + password combination match record in database, new login session gets created. 3.1.7.1.4.2 If username + password combination has no match in database, error message must be displayed. 3.1.7.2 Dashboard Page The dashboard page allows user to view system notifications. The following requirements must be met: 3.1.7.2.1 Notification must be displayed as a table that includes columns: a. Date b. Message 3.1.7.2.2 Notification must be sorted by default by notification date descending 3.1.7.3 Find a Class Page The Find a Class page allows user to find available class. The following requirements must be met: 3.1.7.3.1 Display classes as table with the following columns: a. CRN b. Course c. Subject d. Location e. Tutor f. Capacity g. Registered for Class h. Class Times 3.1.7.3.2 Provide the following search criteria: a. Location b. Subject c. Course d. Tutor.Keyword 3.1.7.3.3 There must be an Apply Filter button that applies selected search criteria to the search results and refresh list of classes. 3.1.7.3.4 There must be the “Sign Up” button on each row of the table to allow user to sign up for the class displayed at that row. 3.1.7.3.5 Provide “Request New Class” button that will take user to “Request New Class” Page. 3.1.7.4 My Classes Page The My Classes page allows user to view classes that he/she signed up for. The following requirements must be met: 3.1.7.4.1 Display classes that user has signed up for in the form of a calendar. Square for each calendar day must display the following information for each class: a. CRN b. Course c. Class Time d. Class Status 3.1.7.4.2 Display classes that user has signed up for in the form of a list with the following columns: a. CRN b. Course c. Subject d. Location e. Tutor f. Class Times g. Class Status 3.1.7.4.3 Provide “Review” button next to each class for students 3.1.7.4.3.1 Display Class Review page (Section 3.1.7.9) to allow student rate tutor 3.1.7.4.4 Provide “Session” button next to each class for tutors 3.1.7.4.4.1 Display Class Session page (Section 3.1.7.10) to allow tutors check in/out students and rate students 3.1.7.4.5 Allow user to filter displayed classes by the following criteria: a. Subject b. Location c. Course d. Start Date e. End Date f. Class Status 3.1.7.5 My Availability Page The My Availability page allow user to input time frames that he/she is available. The following requirements must be met: 3.1.7.5.1 3.1.7.5.2 3.1.7.5.3 3.1.7.5.4 3.1.7.5.5 Display calendar for the custom date range Each row of the calendar displays 7 squares, one for each day of the week Square for each day must display the time range when user is available that day Square for each day must display the time when user has a class that day Provide button “Add New Availability” 3.1.7.5.5.1 Display popup window to allow user enter his/her availability. The following requirements must be met: a. Must allow user to enter the following information: 1. Start date 2.End date 3.Time Range 4.Check one or more days of the week that the time rage applies to b. Display entered availability information on the calendar. 3.1.7.6 My Account Page The My Account page allows user to manage user account, set notification preferences. The following requirements must be met: 3.1.7.6.1 Display Profile section 3.1.7.6.1.1 Must allow user to update profile information including the following fields: a. First Name b. Last Name c. Address d. City.State e. Zip f. Phone Number g. Email Address h. Username i. Password 3.1.7.6.1.2 Display Preferences section a. Must allow user to change the following notification preferences: 1. Notify via email 2. Notify via text message 3. Notify via dashboard message b. Must allow user to enter subjects and courses of interest. 3.1.7.7 Classes Page The Classes page allows user to create new classes, edit existing classes. The following requirements must be met: 3.1.7.7.1 Display classes in the form of a list with the following columns: a. CRN b. Course c. Subject d. Location e. Tutor f. Class Times g. Class Status 3.1.7.7.2 Provide Edit button next to each class 3.1.7.7.2.1 Display Class Details Page (Section 3.1.7.8) for the selected class 3.1.7.7.3 Provide Delete button next to each class 3.1.7.7.3.1 Removes select class 3.1.7.7.4 Provide Add Class button 3.1.7.7.4.1 Display Class Details Page (Section 3.1.7.8) to allow user enter information related to the new class 3.1.7.7.5 Allow user to filter displayed classes by the following criteria: a. Subject b. Location c. Course d. Start Date e. End Date f. Class Status 3.1.7.7 Class Details Page The Class Details page allows user to add new class to the system, edit existing class. The following requirements must be met: 3.1.7.7.1 Must allow user to enter/view the following fields: a. Location b. Subject c. Course d. CRN e. Tutor f. Capacity g. Class Times h. Class Status 3.1.7.7.2 Provide Save button a. Save class information to the database b. Redirect user to Classes page 3.1.7.7.3 Provide Delete button a. Delete class from the system b. Redirect user to Classes page 3.1.7.7.4 Provide Cancel button a. Redirect user to Classes page without saving any information 3.1.7.8 Class Review Page The Class Review page allows students to rate tutor. The following requirements must be met: 3.1.7.8.1 Display class information including the following fields: a. Location b. Subject c. Course d. CRN e. Tutor f. Class Time 3.1.7.8.2 Display the list of tutor review questions including the following columns: a. Question b. Answering scale c. Rate 3.1.7.8.3 Provide Cancel button a. Redirect user to previous page without saving any information 3.1.7.8.4 Provide Save button a. Save user input from Rate column into the system b. Redirect user to the previous page 3.1.7.9 Class Session Page The Class Session page allows tutor to check in/out students, mark students as absent, rate students. The following requirements must be met: 3.1.7.9.1 Display list of students with the following column: a. Student Name b. Check In Time c. Check Out Time d. Review Status (Completed/Incomplete) 3.1.7.9.2 Provide “Rate” button next to each student a. Display Review Student Page (Section 3.1.7.11) to allow tutor review the student 3.1.7.9.3 Provide Check In button next to each student a. Enter student’s check in time into the system 3.1.7.9.4 Provide Check Out button next to each student a. Enter student’s check out time into the system 3.1.7.9.5 Provide Exit button a. Close Class Session page b. Redirect to the previous page 3.1.7.10 Review Student Page The Review Student Page allows tutor rate student The following functional requirements must be met: 3.1.7.10.1 Display 3.1.7.10.2 Display the list of review questions including the following columns: a. Question b. Answering scale c. Rate 3.1.7.10.3 Provide Cancel button a. Redirect user to previous page without saving any information 3.1.7.10.4 Provide Save button a. Save user input from Rate column into the system b. Redirect user to the previous page 3.1.7.11 Locations The Location page allows user to create new locations, edit existing location. The following requirements must be met: 3.1.7.11.1 Display locations in the form of a list with the following columns: h. Name i. Address j. Phone k. Email l. Active 3.1.7.11.2 Provide Edit button next to each location 3.1.7.11.2.1 Display Location Details Page (Section 3.1.7.12) for the selected location 3.1.7.11.3 Provide Delete button next to each location 3.1.7.11.3.1 Removes select location 3.1.7.11.4 Provide Add Location button 3.1.7.11.4.1 Display Location Details Page (Section 3.1.7.12) to allow user enter information related to the new location 3.1.7.11.5 Allow user to filter displayed locations by the following criteria: g. Active 3.1.7.12 Location Details Page The Location Details page allows user to add new location to the system, edit existing location. The following requirements must be met: 3.1.7.12.1 Must allow user to enter/view the following fields: i. Name j. Street k. City l. State m. Zip n. Phone o. Email p. Active 3.1.7.12.2 Provide Save button c. Save location information to the database d. Redirect user to Locations page (Section 3.1.7.11) 3.1.7.12.3 Provide Delete button c. Delete location from the system d. Redirect user to Locations page (Section 3.1.7.11) 3.1.7.12.4 Provide Cancel button b. Redirect user to Locations page (Section 3.1.7.11) without saving any information 3.1.7.13 Users The Users page allows user to create new users, edit existing users. The following requirements must be met: 3.1.7.13.1 Display users in the form of a list with the following columns: a. Name b. UIN c. Address d. Email e. Active 3.1.7.13.2 Provide Edit button next to each user 3.1.7.13.2.1 Display User Details Page (Section 3.1.7.14) for the selected user 3.1.7.13.3 Provide Delete button next to each user 3.1.7.13.3.1 Removes selected user 3.1.7.13.4 Provide Add User button 3.1.7.13.4.1 Display User Details Page (Section 3.1.7.14) to allow entering information related to the new user 3.1.7.13.5 Allow to filter displayed users by the following criteria: a. Role b. Active c. UIN d. Name 3.1.7.14 User Details Page The User Details page allows to add new user to the system, edit existing user 3.1.7.14.1 Must allow to enter/view the following fields: a. First Name b. Last Name c. Username d. Password e. Active f. Street g. City h. State i. Zip j. Phone k. Email 3.1.7.14.2 Provide the list of available user roles. a. Assign user to roles that have checkboxes checked. 3.1.7.14.3 Provide the list of locations. a. Allow user access to the selected locations only or all if selected. 3.1.7.14.4 Provide Save button e. Save user information to the database f. Redirect user to Users page (Section 3.1.7.13) 3.1.7.14.5 Provide Delete button e. Delete user from the system f. Redirect user to Users page (Section 3.1.7.13) 3.1.7.14.6 Provide Cancel button c. Redirect user to Users page (Section 3.1.7.13) without saving any information 3.1.7.15 Roles The Roles page allows user to create new roles, edit existing roles. The following requirements must be met: 3.1.7.15.1 Display roles in the form of a list with the following columns: a. Name b. Active 3.1.7.15.2 Provide Edit button next to each roles 3.1.7.15.2.1 Display Role Details Page (Section 3.1.7.16) for the selected role 3.1.7.15.3 Provide Delete button next to each role 3.1.7.15.3.1 Removes selected roles 3.1.7.15.4 Provide Add Role button 3.1.7.15.4.1 Display Role Details Page (Section 3.1.7.16) to allow entering information related to the new role 3.1.7.15.5 Allow to filter displayed roles by the following criteria: a. Active 3.1.7.16 Role Details Page The Role Details page allows to add new role to the system, edit existing role 3.1.7.16.1 Must allow to enter/view the following fields: a. Name b. Active 3.1.7.16.2 Provide the list of available permissions. b. Assign role to selected permission. 3.1.7.16.3 Provide Save button g. Save role information to the database h. Redirect user to Roles page (Section 3.1.7.15) 3.1.7.16.4 Provide Delete button g. Delete role from the system h. Redirect user to Roles page (Section 3.1.7.15) 3.1.7.16.5 Provide Cancel button b. Redirect user to Roles page (Section 3.1.7.15) without saving any information 3.1.8. Reporting Module (Corey Campbell) This section describes the reporting module functionality. Administrators have the ability to customize reports and transfer report data to external applications. The following functional requirements must be met: 3.1.8.1. Must provide administrators with the ability to generate custom reports 3.1.8.1.1 Must provide reports listing tutors who want to qualify for tutoring a class 3.1.8.1.1 Required to be filtered by selectable fields Subject Date Time range Date when request has been made 3.1.8.2 Must provide reports listing classes students are willing to take 3.1.8.2.1.1 Required to be filtered by selectable fields Subject Date Time range Date when request has been made 3.1.8.3 Must provide administrators with the ability to export report data to CSV format 3.2 Performance Requirements (Denis Mileyko) 3.2.1 Design & Layout: Provide optimal web site layout and design for iPads and other mobile devices. The resolution size of 962x667 pixels will be used. 3.2.2 Availability: This project interface will be accessible from the Internet. 3.2.3 Security: Project functions are limited by web page user logins. Users will have access as noted in the USER CHARACTERS section of this document. MySQL Server and Unix system permissions on the web server will handle all other security. 3.2.4 Backup Procedures: Backups will be performed according to the Enterprise Information Security Policy.