Software used: XAMPP, PHP, PHPMailer, HTML, CSS, JavaScript, SQL, phpMyAdmin, Apache

style.css - 
General css styling rules for the website.

index.php - 
The welcome page of the website, includes the sign-in option for admins.
If already signed in, it allows admins to go to the dashboard immediately.

create_appointment.php -
The appointment creation page meant for students.
Students must input their: email, panther ID, first and last name, 
tutoring mode (online/in-in person), their major, their degree,
their professor, the course they need help with, their preferred tutor,
the date of the appointment, the time of the appointment, and the reason for the
appointment.

Most of this information is pulled from the tutoring database.

submit_appointment.php -
Handles the submission of the appointment by the student.
Checks for the following:
	Does the appointment conflict with other appointments?
	Does this student already have a future appointment pending?
	Does the selected tutor exist?
	Does the appointment fall outside the tutor's working hours?

If any of these conditions are true, the appointment is not made, and the relevant
error message is given to the end-user.
Once the appointment is confirmed, it will send an email to both the 
tutor and student's email. (The tutor's email is defined in the database upon
account creation). This is done with PHPMailer and a gmail SMTP server.

You must input a valid gmail account with its app password (not the regular password)
in this file for the emailing function to work.

createAdmin.php -
This file creates an admin account with the selected email, username, and password.
The password is automatically encrypted.
The professor or superadmin opens tutor_website/createAdmin.php to create the account.
This file MUST be placed in the website directory.
After you're done, remove this file from the website directory to prevent abuse.

employee_login.php -
The login page for admins.
If it fails, it will give an error.
Otherwise, it will bring the admin to the admin dashboard page.
If a student or signed-out admin attempts to access the dashboard, it will not work.

dashboard.php -
An employee-only page. 
If a student or signed-out admin attempts to access this page, it will not work.

The dashboard featues a list of students to manage their appointments from.
Marking an appointment as "Complete" will grant the student one tutoring hour.
Marking an already completed appointment as anything else will remove that student's
tutoring hour for that appointment.

The search bars at the top are used to look through students via several parameters,
such as name, ID, and amount tutoring hours.

get_student_appointments.php -
A helper file for dashboard.php, it is inaccessable.
It gets one specific students' appointments.

update_appointments.php -
A helper file for dashboard.php, it is inaccessable.
It updates appointments if any changes were made.

logout.php -
Logs out the admin user and destroys the session.
This requires the admin to sign in again to access employee-only pages.

view_hours.php -
A page for students to view their hours and appointments.
They can cancel future pending appointments, which will send an email to
both the student and tutor confirming the cancellation.

cancel_appointment.php -
A helper file for view_hours.php, it is inaccessable.
Helps to cancel the appointment, uses PHPMailer and gmail SMTP server to send
cancellation emails.

Set a valid gmail for the file to use, see submit_appointment.php for more 
information about the SMTP server.

admin_manage.php -
An employee-only page. 
If a student or signed-out admin attempts to access this page, it will not work.

Allows admins to add professors, tutors, and courses for students to choose from
when making an appointment. All additions are added to the database and reflected in
the appointment creation page.

To prevent abuse, you can only delete these items within phpMyAdmin.

generate_report.php
An employee-only page. 
If a student or signed-out admin attempts to access this page, it will not work.

A page for admins to generate tutoring reports for the semester.
Title: title for the report, such as Summer 2025.
Extra credit threshold: The threshold of tutoring hours for a student to be considered
to be eligible for extra-credit. Default value is 10, but can be changed easily.

The resulting report contains the following information:
Total tutoring hours, total students helped, total students eligible for extra credit,
the most requested course for tutoring, total count of appointments made,
average tutoring hours per student, active tutors, and the most active tutor.


