eStudio Scheduling Application University of Kentucky - Computer Science CS 499, Senior Design Fall 2014 Table of Contents I. II. III. IV. V. VI. VII. VIII. IX. X. XI. XII. XIII. XIV. Personnel ---------------------------------------------------------- 3 Disclaimer --------------------------------------------------------- 3 Abstract ------------------------------------------------------------ 3 Introduction -------------------------------------------------------3-4 a. Description ---------------------------------------------3 b. Motivation --------------------------------------------- 3 c. Customer/User Identification --------------------- 4 Production Specifications ------------------------------------- 4-5 Product Planning -------------------------------------------------5-6 a. Effort and Size Estimation i. Estimated Lines of Code (Story Points) ii. Actual Lines of Code (Story Points) iii. Accuracy Schedule and Milestones ------------------------------------- 6-8 Platforms, Tools, and Languages ---------------------------- 8 Design -------------------------------------------------------------- 9-14 Implementation ------------------------------------------------- 14-17 Future Enhancements/Maintenance ---------------------- 17-19 Conclusions ------------------------------------------------------ 19 References ------------------------------------------------------- 19 User’s Manual and Installation Guide --------------------- 20-33 2 I. Personnel: Messer, Matthew Robinson, Mallory Yates, Logan II. Disclaimer: This project has been designed and implemented as a part of the requirements for CS499 Senior Design Project for Fall 2014 semester. While the authors make every effort to deliver a high quality product, we do not guarantee that our products are free from defects. Our software is provided "as is," and you use the software at your own risk. We make no warranties as to performance, merchantability, fitness for a particular purpose, or any other warranties whether expressed or implied. No oral or written communication from or information provided by the authors or the University of Kentucky shall create a warranty. Under no circumstances shall the authors or the University of Kentucky be liable for direct, indirect, special, incidental, or consequential damages resulting from the use, misuse, or inability to use this software, even if the authors or the University of Kentucky have been advised of the possibility of such damages. III. Abstract The eStudio is a communication studio that provides free tutoring in writing, oral presentations, and digital media as well as software and equipment to students in the College of Engineering. Previous CS student groups developed a client scheduling and record keeping software for the eStudio. We initially set out to modify and enhance that program, but we ended up starting from the ground up in what we feel has more longterm sustainability. Essentially our goal was to create a working program that allows clients to schedule appointments with the eStudio tutors; and from a technical standpoint it is an online user interface, with underlying backend-code that connects it to a database. IV. Introduction a. Description: We strove to develop a working scheduling system so that eStudio clients could make appointments to see tutor’s at the eStudio. b. Motivation: This is needed because the former CS groups to work on this project created a program that is not working/unused due to too many bugs. 3 c. Customer/User Identification: Customer: Dr. Emily Dotson – eStudio Administrator Users: Tutors - eStudio Staff, UK Engineering Students – eStudio Clients V. Product Specifications List of Proposed Incorporated Features (These proposed features borrow both from what currently exists as well as the essentials the program is required to do by Ms. Dotson and the eStudio staff.) Four Super Basic Critical Functions Clients can schedule an appointment with the eStudio. Administration can log in and view all client appointments. Administration can download/view printable copy of the database containing client appointments. Tutors and their work hours can be added to the database. Specific Improvements if Time Allows Client Side Interface Login/Registration page. Schedule an Appointment page. Be able to choose a tutor for your appointment. Add undeclared to list of major options for client to choose from. Logout function that actually works. MyProfile page to verify account information/view upcoming appointments. Error messages for clients if schedule were to malfunction. Include group option for clients, with number of students in group and student’s names. Allow clients to only register for one appointment within 6 hours of another appointment. Give clients options for the amount of time they think their tutoring session will need to be, i.e. 15 min, 30 min, 45 min, 1hr. Staff Side Interface Make the schedule view cleaner/more efficient. Allow for admin accounts and tutor accounts. Fix editing of calendar to input tutors into the system, as well as edit the tutors available times/work hours. Remove equipment scheduling. Make database spreadsheet from three clicks to one, more concise information in excel readable table format. 4 Record any errors on spreadsheet. Client search by name, student ID number. Ability to disable client side interface. General Enhancements VI. Improve overall speed, the current application is very slow taking potential minutes instead of a maximum of several seconds. . Aesthetic enhancements, such as matching all colors in the application to the eStudio logo colors and condensing features located in multiple places across the current application to one concise location. . Usage of correct grammar throughout. User password change/reset feature. Product Planning Effort and Size Estimation i. Estimated Lines of Code (Story Points) We did not measure the product planning in estimated lines of code, instead we used Story Points and size modules (using SCRUM basis). Client side interface/backend code – 11 SP 1. 2. 3. 4. 5. 6. 7. 8. Registration/Login/Logout Interface – 1 SP Registration/Login/Logout Backend – 1 SP Make Appointment Interface – 2 SP Make Appointment Backend – 4 SP (hardest part of client side) MyProfile Interface – 0.5 SP MyProfile Backend – 1 SP Edit Profile Interface – 0.5 SP Edit Profile Backend – 1 SP Staff/Administration side interface/backend code – 8.5 1. 2. 3. 4. 5. 6. Staff Login/Logout Interface – 0.5 SP Staff Login/Logout Backend – 0.5 SP Staff Splashpage Interface – 1 SP Staff Splashpage Backend – 1 SP Administrator Interface – 2 SP Administrator Backend – 3.5 SP Documentation total – 2.5 SP (not because writing documentation is hard, but finalizing documentation takes some time away from coding, and it is also essential.) 5 Story points added for team coordination, time for other classes, work, eating, sleep, and general life outside of CS 499 that add to the amount of time/work the project will demand as a whole – 18 SP Total Story Points = 40 SP Most SCRUM sizing estimations are based off a modified Fibonacci sequence of 1, 2, 3, 4, 13, 40, 100. Since we are going with a loose interpretation of scrum we have 22 total story points, but when time for other classes and life in general is factored in we end up with 40 for our total SP. ii. Actual Lines of Code (Story Points) In actuality the Make Appointment Interface was closer to 3 SP instead of 2 and the Make Appointment Backend was 5 SP instead of 4. Which increases the client side total SP to 13 instead of 11. On the administration side the Administrator Backend ended up being 4 SP instead of 3.5 because there was just so much to do. Which brings the staff side total to 9 SP instead of 8.5. Finally the documentation was correct with 2.5, but the outside factors moved from 18 to 20 SP due to the sheer amount of things in our lives. This brought our total SP from 40 to 44.5 SP. iii. Accuracy Overall our accuracy was pretty good. We underestimated slightly on the calendar and administration side but really where we ran into problems was in our own personal lives and other classes interfering with our development time. 44.5-40 SP = 4.5 SP difference 40/44.5 = 0.89 -> 100% - 89% = 11 % increase in amount of estimated SP. VII. Schedule and Milestones Assigned By Instructor Mon, September 15 – Projects Assigned, Teams Formed Wed, September 17 – Teams meet with customers Fri, October 3 – Web page available with requirements Mon, October 13 – status meeting with team 6 Mon, October 20 – Design due on webpage, team 1 presentation Wed, October 29 – Team review with instructor on presentation/design Wed, November 12 – Testing review with instructor Wed, November 19 – Code review and project status meeting with instructor Mon, December 1 – Team Practice Presentation Mon, December 12 – Team Presentation Team Set Deadlines September 14 – Team Formed. September 15 – Contacted Emily Dotson for initial meeting to discuss project details. September 17 – Met with Dr. Dotson and discussed project details. September 20 – Built website for project description. September 24 – Started analyzing previous team’s code. September 26 – Continued analyzing previous code and started moving towards new plan. September 27 – Decided to start from scratch with new project. September 29 – Client confirmed choice of starting from scratch. October 1 – Team divided up challenges and decided which html interfaces each team member would work on. October 3 – Decided what tweaks needed to be made to each page. October 8 – Team met online established design flow for the application and drafted the formal design. October 13 – Finalized website flow, eliminated unnecessary pages, streamlined flow for more efficient design to conform with client’s standards. October 15 – Demoed interface for Dr. Dotson and obtained feedback. October 17 – Worked on database backend code. October 20 – Gave midterm presentation. October 24 – Work on the application and figured out the client registration and login. November 1 – Worked on inputting tutor time information into the MySQL database. November 5 – Worked on the calendar with connecting the PHP to the SQL and HTML. 7 November 12 – Met with professor to discuss testing, and met with Dr. Dotson to go over an update on the project. November 15 – Team worked on beta-test prep, connecting the calendar. November 22 – Team had fully functioning appointment scheduling. November 25 – Team met online, coded the reports to generate and download. December 1 – Team gave mock final presentation. December 3 – Team met to discuss final changes and enhancements to the program. As well as edited the final presentation. December 8 – Team reviewed and practiced the final presentation. VIII. Platforms, Tools, and Languages Platform This will be an online web application hosted from the University of Kentucky web servers that will be accessible for clients from the following browsers: Google Chrome – version 38 or newer Firefox – version 28 or newer Safari 5.0.1 or newer Internet Explorer 11 (if time allows) Mobile versions of Chrome and Safari (if time allows) Languages HTML 5 PHP MySQL Javascript JQuery Tools The tools we used to develop this program were a combination of several different development platforms: NotePad ++ Sublime Text 2 Vim and Pico on the UK Multilab UK Multilab Server UK Multilab MySQL Database 8 IX. Design Design Challenges The original eStudio scheduling application has been written in Ruby on rails. The code here however is very messy and the documentation is extremely lacking. It is also riddled with bugs, to the point that the eStudio isn’t actively using the program for any of their scheduling needs, instead going through a third party online scheduling service. As such we moved on to the new platform combination of HTML pages (with Javascript/JQuery), PHP code for transference of data, and MySQL for database storage of the data. Therefore the hardest challenge is to move from the original rails platform to the new platform, without any loss of features as well as incorporation of proposed enhancements, all within the time constraint of one semester. Another challenge has been getting access to UK’s servers. We have contacted the appropriate personnel about getting our program onto UK’s servers so that we can test it in the environment that it will be running on in a permanent basis, but due to the sheer volume of traffic that they handle we will not have access to it for a few more weeks. This will limit our overall testing time with this project. Finally, and this is a challenge that all teams face, coordinating in person team meetings (because they are the most effective from a productive standpoint) has proven highly challenging given the variety of schedules that each team member is engaged in outside of this class. Design Considerations Basic Functionality The first and most important part of this project was to make sure that, even if at a basic level, the program allowed the eStudio clients to effectively schedule a tutoring appointment. The secondary functions on the administrative side are (in order of importance): viewing of registered appointments, viewing of the logistics of all appointments, and the input of tutors and their work schedules. Features In addition to the basic functionality of this project we plan to include further functionality. While inputting tutors and their work hours into the MySQL database for the project is important, we plan to allow the tutors to login to the program and not only view their upcoming appointments for the week, but (if time allows for its inclusion) also search for any specific client that will be attending that week via either the client’s name or student ID number. For the client interface we are going to allow clients both to view their current profile information, as well as edit any information they may have entered incorrectly and/or change their passwords. For the administration if time permits we want to include a feature to disable the client side interface, essentially turn it off when the eStudio is closed, preventing appointments from being scheduled. 9 Aesthetics Our client has a background in graphic design, therefore the aesthetics our of application were a high ranking priority. With each webpage that was written we needed to make sure we had a unified and consistent look that was both visually pleasing and functional. We used Cascading Style Sheets (CSS) to achieve one look and form across the entire program. We approached the design with the idea of minimal clicks and straightforward, easy to under layouts being essential to the aesthetic appeal and functionality for the user. We also took the eStudio logo and as our basis for the program color scheme, being careful to match both the purple, green, and blue of our program to the exact hexadecimal number for the colors used in the original logo. Data Flow User Interface Design Flow (*Note: Logout option takes you back to the Home Page, allowing for infinite functional program loop.) User Scenarios 1. Clients/Staff navigate to the home/registration page. a. Client is a new user and must register. b. Client is a returning user and can login directly. c. Staff click on the staff portal link. 2. Newly Registered/Returning Clients have logged in. a. Client is directed to the myprofile page, can see all personal information and upcoming appointments. 10 3. Client navigates to make appointment page. a. Client answers questions about appointment. b. Client selects date, is shown available times for that date. c. Client selects time on specified date. d. Client makes appointment. 4. Client navigates to edit profile. a. Client is given option to change profile information. b. Client changes or does not change profile information. c. Client decides to change or not change password. d. Client presses save and is returned to MyProfile page. 5. Client logouts and is returned to home/registration page. 6. Staff is taken to staff login portal from home/registration page (or navigates there directly). a. Staff logins. b. Administrator logins. 7. Staff has logged in. a. Staff is shown upcoming appointments. b. Staff searches for specific client. c. Staff logouts. 8. Administrator has logged in. a. Administrator is shown the help tab with instructions. b. Administrator clicks on Tutors to add/remove a new tutor. i. Page is modified to display tutors from table, along with select checkboxes, add/remove checkboxes, and a save button. c. Administrator clicks on Schedule to modify tutor schedules. i. Page is modified to display search box for tutor, or all tutor schedules. ii. Tutor is selected. 1. Days then hours are modified for selected tutor. 2. Schedule saved. d. Administrator clicks on Report to view logistic of visiting Clients. i. Page is modified showing data from the MySQL table in table format, link to download report is also visible. e. Administrator clicks on Upcoming tab. i. Page is modified to show upcoming appointments. f. Administrator clicks on Disable tab. i. Client side interface is disabled. g. Administrator logouts. Data Structures We used a MySQL database to hold all of our client information, staff/administration information, tutor work information, and appointment information. We had 4 total tables with the following setup: 11 CREATE TABLE Client ( -> LastName varchar(30) NOT NULL, -> FirstName varchar(30) NOT NULL, -> StudentID varchar(10) NOT NULL, -> Major varchar(30) NOT NULL, -> Year varchar(30) NOT NULL, -> English boolean, -> EmailAddress varchar(40) NOT NULL, -> Password varchar(30) NOT NULL, -> PRIMARY KEY(StudentID) ); /* Create the Tutor Table */ CREATE TABLE Tutor ( -> tLastName varchar(30) NOT NULL, -> tFirstName varchar(30) NOT NULL, -> Email varchar(40) NOT NULL, -> Password varchar(30) NOT NULL, -> IsAdmin boolean, -> PRIMARY KEY(Email) ); /* Create the Appointment Table */ CREATE TABLE Appointment( -> AppID int PRIMARY KEY, -> Email varchar(40), -> StudentID varchar(10), -> StartTime DATETIME, -> Duration int, -> FOREIGN KEY (StudentID) references Client(StudentID), -> FOREIGN KEY (Email) references Tutor(Email) ); 12 /* Create the Times Table */ CREATE TABLE Times ( -> StartTime TIME, -> EndTime TIME, -> WeekDay TINYINT, -> TutorEmail varchar(40), -> FOREIGN KEY (TutorEmail) REFERENCES Tutor(Email) ); Explanation of Tables Client: Stores all information about a client (customer). Filled upon registration. Can be updated using the ‘Edit Profile’ button on the client profile page. Tutor: Stores first name, last name, and email address. IsAdmin boolean value determines whether the staff member has admin privileges. Appointment: Stores tutor email, student ID, start time, and duration. Times: Each entry stores a start and end time for a tutor. Multiple entries are made for each tutor – each individual shift that they work (for each day). The WeekDay field stores a number 1-7 inclusive, representing the day of the week. 1 represents Sunday, and 7 represents Saturday. This is used to match with the DAYOFWEEK(date) function in MySQL, which returns a number as described above. Appointment stores the DATETIME of the appointment. If a row is found in Times, and the time in Appointment doesn’t match the time in Times, and the currently selected date doesn’t match the date found in Appointments, display the time as available to be scheduled. x = select * from Times; y = select * from Appointments where DATE(StartTime) != selectedDate; for each value i in x: if( i.startTime NOT found in y ) display the appointment as available. 13 User Interfaces Below is a list of all user interfaces: Client Side: Home Page/Registration/Returning Client Login – index.php – (ClientLogin.php, ClientRegister.php are backend) MyProfile Page – clientInfo.php Upcoming Appointments Tab My Information Tab Edit Information – clientEditInfo.php – (ClientEditInforBack.php is backend) Make Appointment Page – eStudioMakeAppointment.php – (ClientBooking.php is backend) Staff Side: Staff Login Portal – estudioStaffSplash.php – (StaffLogin.php is backend) Tutor Profile Page (Displays upcoming appointments) – tutorProfile.php Administration Help Page – adminHelp.html Admin Tutors Page (Used to add tutors) – addTutorInfo.html (TutorRegister.php is backend) Admin Schedule Page (Used to schedule tutors’ work time) – scheduleTutor.php (TutorTime.php is backend) Admin Reports Button (Generates and Downloads Reports) – Reports.php Admin Upcoming Page (Shows all upcoming appointments) – adminUpcoming.php Other: The pages all use a standard estudiostyle.css page to control formatting across all pages, assuring a uniform look and aesthetic design. As well the files all include a config.php file that configures connections to MySQL database. X. Implementation 1. Issues with Implementation The largest issues we had with implementation were developing the calendar and displaying all of the tutor times in a format that was useable. 2. Design Changes due to Implementation Due to the implementation of our project we had to modify the design of our initial MySQL tables to include a 4th table instead of 3 that we predicted at midterm. We also had originally included the potential for using both JavaScript and jQuery in our program, not knowing at the time if that would be necessary. It turned out for the best functionality of the calendar and tutor time selection that it was indeed necessary. 14 3. Restrictions/Limitations Currently there are a few limitations to our program due to time constraints, all of which are proposed to be solved as future enhancements. Clients/Staff cannot delete appointments that have been made. Disabling Client interface is not possible. Deleting/Modifying tutor shifts is not possible from the interface. Removing tutors isn’t possible from the interface. Queries for MySQL do not use real escape strings to prevent SQL injection. 4. Testing The primary objective of our project is for clients to be able to schedule appointments with the eStudio successfully, then for the eStudio staff to be able to view those appointments. As such the bulk of our testing will be directed on the client side and its proper functioning. Unit Testing The unit testing of our application will be done for each major unit of the program as it works together, it will therefore be split into 3 primary testing groups. 1. Client Side Testing a. This will cover all client interfaces. b. New Client Registration. c. Returning Client Login. d. Client Appointment making. e. Client Upcoming Appointment Viewing. 2. Tutor/Staff Testing a. Tutor Login. b. Tutor View Upcoming Appointments. c. Tutor Profile View. 3. Administrator Testing a. Admin Login. b. Admin View Upcoming Appointments c. Admin Add Tutors. d. Admin Schedule Tutors. e. Admin View Reports. Results of Unit Testing The unit testing for the Client Side, Tutor/Staff, and Administrator testing was successful. All interfaces loaded correctly. A small error was detected with Admin Add Tutors and Admin Schedule Tutors but will be corrected before the final handoff to our customer. 15 Integration/Function Testing The Integration testing of our application will be conducted in 2 parts. First the members of the team will each test the other members’ functions which they have not coded. Second we will utilize people outside of our group but within our major to test our code thoroughly; both randomly selected classmates in CS499, underclassmen in our other CS classes, and the CS grad student at the eStudio will all take time to test our application, looking for the presence of bugs or anything that breaks easily. Our classmates will primarily be testing the Client side interfaces, including (as listed above): New Client Registration. Returning Client Login. Client Appointment making. Client Upcoming Appointment Viewing. The CS grad student tutor will primarily be testing the Staff and Administrator interfaces, including: Tutor Login. Tutor View Upcoming Appointments. Tutor Profile View. Admin Login. Admin View Upcoming Appointments Admin Add Tutors. Admin View Reports. Results of Integration/Function Testing Some of our classmates did test the 4 functions of the Client side interfaces and they were successful. We were unable to run functional testing with the eStudio grad student tutor before the final deadline for the project. System Testing The application will be housed on UK’s servers for its long term future, however it is unlikely we will have access to that storage before the conclusion of our testing phase. As such all of our testing will likely be conducted based off of the application running from the CS Multilab machines. While we cannot test these machines directly, we can test for the compatibility of our application across the multiple browsers it will run through for user interface. 16 Specific Browser Version tests Google Chrome version 38.0.1225.111 m Mozilla Firefox version 33.0.3 Internet Explorer version 11.0.9600.17278 Safari for PC version 5.1.7 Safari for Mac version 7.0.4 Google Chrome mobile Safari mobile Results of System Testing To the best of our knowledge all of the systems tests yielded correct results except internet explorer. It sometimes failed to properly display the web pages sometimes moving parts of the interface to the wrong position. This was remedied the last time we tested, however since internet explorer is so unstable we cannot guarantee that this application will remain working on that platform. Customer/user testing We will conduct testing with our client on this project, for both the eStudio customers and the eStudio staff. Our goal is to deploy a small scale beta-test at the eStudio for their walk-in customers during the week of November 17th-21st. The following will be tested live by our client and their customers during this period. New Customer Registration Returning Customer Login Customer appointment scheduling Tutor login Tutor upcoming appointment viewing Administrator Login Administrator upcoming appointment viewing Administrator download eStudio client traffic report Results of Customer/user testing The beta-test period was cancelled by us due to bugs adding tutors and scheduling of the appointments. We have since to the best of our knowledge fixed those errors and the program is ready for customer/user testing. We propose that it enter this phase of beta testing during the next semester while the project is picked up by a subsequent group. 17 XI. Future Enhancements/Maintenance There are several potential enhancements to be made to this application that could be very easily done in the future. Client Cancel Appointment feature – we think this could easily be done by adding a checkbox to each of the client’s upcoming appointments. Then just have a query that selects and deletes that specific appointment from the appointment table when a cancel appointment button is clicked. Disable Client Interface Button – We a place holder for the disable button on the administration page. Currently it does nothing. The easiest way we have thought of to implement this would be to simply delete all tutor work schedules from the database, mind you not the tutor’s themselves. Without the tutor’s work schedules the calendar would have no information from which to pull information, instead displaying its normal message that no tutors are working that day. The query would likely need to be very specific about the day/days it needs to be disabled, otherwise future appointments that have been scheduled already could be deleted or some kind of error could result. Better password protection, or Link Blue Integration – We did some basic password protection and verification on this application. We would have liked to done more but had to devote more resources to finishing the calendar instead. However most security issues could be avoided completely if the password were to be linked to UK’s Link Blue Password system. Search Available Appointments – Initially we talked allowing both Emily and the tutor’s to search through the available appointments, based on client name or something. We didn’t have time to do this but again this is basic querying of the appointment table and would be easy to do. Mass Delete Old Table Data – Over time obviously the appointments, tutor table, and client tables will start to get large and crowded. This isn’t going to be a problem initially but eventually having to iterate through large tables will slow down the application. So a way for the administrator to delete old tutors who no longer work there, clients who’ve graduated, and appointments from 3 years ago will need to be implemented. Just to clean everything up and make sure it runs properly. Special Client Identification Fields - This would be for the tutor’s to be able to mark a client as either having special needs or potentially being difficult to handle so that way they could prepare in advance for that specific tutoring appointment. It would only show up when tutor’s when to view appointments and would not even be known to the client. Email Upcoming Appointment Reminders/Confirmations to Clients – This is would just be making the application generate an email to clients when they successfully made an appointment, containing the details of that upcoming appointment. 18 XII. Remove Appointment Times That Date Has Passed From Being Displayed – Currently if you click on a day in the past the program will still display the appointments and open time slots for that day. It should not. Delete/Modify Tutor Work Schedules – Currently all tutors input into the database cannot have their schedules modified, or deleted. Remove Old Tutors From The Database – Tutors who no longer work for the eStudio are not able to be deleted from the database at this time from anywhere on the administrator user interface. Give Administrator the Ability to View All Tutors – The administrator doesn’t have the ability to view the tutor’s that are working at this time. This would be an important feature to add to the administrator side, simply by querying and then database and displaying the results in a table Give Admin Access to View Tutor Schedules and Search by a Tutor’s Email to Narrow Results - The ability to view the tutor’s schedules so the administrator can know when the tutors are working based upon the information in the database would be helpful. And since this could be a lot of information searching by a tutor’s email to narrow down the schedules viewed would important. Change SQL Queries to Use Real Escape Strings –SQL queries dealing with insertion should be changed to use mysqli_real_escape_string() functions to escape in case of attack; avoiding sql injection. Conclusions In conclusion this project was delivered to Dr. Dotson and the eStudio. They are pleased with the final product. The product meets all essential specifications. Currently the team believes that the project is suitable for walk-in clients and for long-term beta-testing in the spring semester. Once the proposed future enhancements have been made we believe this project should be able to meet all of the eStudio’s scheduling needs for many years to come. XIII. References Sublime Text 2 – http://www.sublimetext.com/ Notepad ++ - http://notepad-plus-plus.org/ UK Multilab – http://www.cs.uky.edu/students/facilities/multilab eStudio Information – https://www.engr.uky.edu/estudio/ w3Schools for PHP – http://www.w3schools.com/php/ w3Schools for MySQL - http://www.w3schools.com/php/php_mysql_intro.asp 19 XIV. User’s Manual and Installation Guide User’s Manual and Installation Guide Table of Contents How to Use: The Home Page o Client Side Interface -------------------------------------------------- p. 21 New Clients Returning Clients Make A New Appointment View Upcoming Appointments View Profile Information Edit Profile Information Logout o Staff Side Interface ---------------------------------------------------- p. 26-31 Staff Portal Tutor’s Page Administration Page Help View Upcoming Appointments Add New Tutors Schedule New Tutors for Work Download Reports Diable Installation Guide ---------------------------------------------------------------------------- p. 32-33 Where Do I put the webpages? Where Do I put the backend PHP? Setup MySQL Database Permissions to View 20 The Home Page The first step to accessing the site is to navigate to the website: https://scheduling.engr.uky.edu/~beta , where you will be directed to the homepage. Once you are on the homepage the next step depends on if you are a new client, staff, or returning users. We’ll start with new Clients. 21 CLIENT SIDE INTERFACE 1. Registration. To register as a new client simply fill out the form on the left side of the page that says registration. Then click the register button when finished. 2. Returning Users If you are a returning client instead of registering again, enter your student ID and password you made at registration in the corresponding fields in the upper right hand side of the page. Then click the login button. 22 3. Make a New Appointment The next thing to do, if you’re a new user is to make an appointment and it is to this page that you will be directed first. (Returning clients will click the make appointment button to get here). (1)Simply fill out the form on the left side of the page first. (2)Then click a day on the calendar. The middle of the window will now display all available times for appointments during that particular day. Purple boxes show that appointment time is filled, while green boxes are open slots. (3)Simply check a green box, and as long as the information on the left is also filled out, (4)click the make appointment button on the lower left side under that form. If you didn’t mean to schedule an appointment or just wanted to see what times were free, click on the back button to return to the myprofile page. 23 4. View Upcoming Appointments Just click on the upcoming appointments tab to display your upcoming appointments. This is where you’ll be directed once you have made an appointment. 5. View Profile Information Click on the About Me tab to view your information. This is where you will be directed if you are a new user. 24 6. Edit Profile Information Click on the edit profile button to be directed to the edit profile page. From here you clients may change selected information by filling out the form. Once ready click save changes to update information. Click cancel to go back to your profile. 7. Logout Simply click the logout button from any of the profile pages to logout and go back to the homepage. 25 STAFF SIDE INTERFACE 8. Staff Portal Click on the Staff Portal link at the bottom of the home page and you’ll be taken to the staff login page. From here for both tutors and administrators enter your login information (email and password) and you will be directed to the appropriate login page. 26 27 9. Tutor Profile Page Once tutors have logged in they will be directed to their tutor profile page. It currently displays all upcoming appointments for that particular tutor. 10. Administration Help Page This is the default instruction page that the administrator will see upon logging in. It contains brief reference instructions for all of the features that the administrator can do. From here all other administration pages can be accessed via the buttons at the top of the screen, or the hyperlinked text in the instruction area. 28 11. Add New Tutors Clicking on the Tutors button will allow you to add new tutors to the database. You input all of their required information on the screen, including a password. 12. Schedule New Tutors for Work Once new tutors have been added to the database click on the Schedule button to add work hours for those tutors. When you add the work hours and save them, those hours become available to the clients to view as open appointments automatically. On the schedule page enter the tutor’s first and last name, then click on the tab for each day they are working and enter the times, in hr:min:AM/PM format. You can either type these numbers in or use the click buttons. 29 13. Download Reports To download logistical Reports with the pre-specified data simply click on the Reports button from any of the pages. The software will automatically generate a report of the data from the database and download it contained within a .csv file to your download’s folder of for your browser. Simply click on this file and open it in excel to view the data. 30 14. Disable The disable button currently is a placeholder, and clicking it does nothing. It is listed as a future enhancement for the next team and we have included a potential way to implement it. But once working you will just click the disable button and it will shut off the client side interface. Further working specifications will depend on implementation. 31 Installation Guide 1. Where Do I put the webpages? To simply put the webpages on the server of your choice. For the beta-testing phase of this project we used the following Server: scheduling.engr.uky.edu Username: beta Password: Riio$_284x Login and put all of the php, css, html, and images contained on the CD on this, or another server of your choice. (For separate testing and modification, we recommend keeping a backup of the original working code for beta-testing on that server and using a multilab machine for the new testing. 2. Where Do I put the backend PHP? As mentioned above all of the PHP also goes in the same spot on the server. 3. Setup MySQL Database To setup the MySQL database login to the server and start MySQL, using mysql –h mysql –p database Name: estudio_beta Input the password: MV.gVfRNzc *Note all mysql commands must be terminated by a semicolon.* To then setup the tables, use the create tables code, from the data structure section above (listed again below), or load all of that code into a build_tables.sql, which then you can create by using mysql –h mysql –p < build_tables.sql . Create the Client Table CREATE TABLE Client ( LastName varchar(30) NOT NULL, FirstName varchar(30) NOT NULL, StudentID varchar(10) NOT NULL, Major varchar(30) NOT NULL, Year varchar(30) NOT NULL, English boolean, EmailAddress varchar(40) NOT NULL, Password varchar(30) NOT NULL, PRIMARY KEY(StudentID) ); 32 Create the Tutor Table CREATE TABLE Tutor ( tLastName varchar(30) NOT NULL, tFirstName varchar(30) NOT NULL, Email varchar(40) NOT NULL, Password varchar(30) NOT NULL, IsAdmin boolean, PRIMARY KEY(Email) ); Create the Appointment Table CREATE TABLE Appointment( AppID int PRIMARY KEY, Email varchar(40), StudentID varchar(10), StartTime DATETIME, Duration int, FOREIGN KEY (StudentID) references Client(StudentID), FOREIGN KEY (Email) references Tutor(Email) ); Create The Times Table CREATE TABLE Times ( StartTime TIME, EndTime TIME, WeekDay TINYINT, TutorEmail varchar(40), FOREIGN KEY (TutorEmail) REFERENCES Tutor(Email) ); 4. Permissions to View Finally all of the php, html, and image files must have permissions set on the server. To do this simply use chmod 755 * to change the permissions to 755, which is the code for anyone to read the file. 33