Skip to content

AndrewCollin32/HotPlate-Waitlist-Manager

Repository files navigation

HotPlate

A simple restaurant waitlist management software created by AndrewCollin32

Untitled_Artwork 17

Hot Plate (Waitlist Manager)

HotPlate is a powerful software tool that is made for managing restaurants
This software version is made for managing waitlists.

HotPlate was created by Andrew Collin and it has plans to expand beyond a waitlist management software

Getting Started

--

Requirements

  • Java SDK 15 and above
  • Java FX
  • Twilio (Optional, see below)
  • SQL Database (Optional)

How_to_use

Untitled_Artwork 10

Main_Screen

(Customer Portal) When you first open your program, you will be greeted with this screen. This is the customer's screen, this is used for customers to reserve their seats.
The goal of this screen is to have customer's eyes drawn to the screen when they walk in so they will independently reserve their seats without any assistance.

  • 0: HotPlate Drop-down menu Button
  • 1: Sign In Button - Takes you to a login page where you will be granted admin access.
  • 2: About Me Button - Takes you to a page that has my credits as well as my social media.
  • 3: Call Waiter Button [Disabled] - Send a text to your waiter's phone number.
  • 4: Waitlist Label - Shows the current waitlist size.
  • 5: Reserve Your Seat Button - Takes you to an input page where you can fill in your information to reserve your seat

Untitled_Artwork 18


Reservation_Page

This page is for customers to input their information to reserve their seat.

  • 0: Drop-down menu for party size (Min = 1, Max = 12)
  • 1: Name text field - Where customers enter their prefered name. Will be used in the text message
  • 2: Phone number text field - Customers have to enter their phone number in order to receive the SMS message. Allowed format:
    (123)-456-7890, 123-456-7890, 1234567890
  • 3: Submit Button - Saves all the entries including the time it was submitted
  • 4: Cancel Button - Deletes all the entries and takes you back to the customer's portal

Reservation Page


Sign_In_Page

The sign in page is used by employees to grant access to the admin page.

  • 0: Pin number textfield - Used for employees to enter their pin number. (The default pin number is 1111, but you can change it in the settings)
  • 1: Close Button - Takes you back to the customer portal
  • 2: Submit Button - Validates the pin number and takes you to the admin page

signin


Admin_Page

The admin page has control over all the entries submitted. In this page, you can add, edit and delete entries. You can also warn and call the selected customer. You will also have access to settings, saving the data and loading the data.

  • Hotplate Drop-down menu
    • Customer Portal - Takes you back to the main page
    • Options Drop-down menu
      • Custom Message Button - Takes you to a page where you can customize your SMS messages.
      • Settings - Takes you to the settings page where you can change your name, change the restaurant's name, change the auto load feature, change the pin and the time format.
    • About Me Button - Takes you to a page that has my credits as well as my social media
    • Exit - Closes the entire program (without saving)
  • File Drop-down menu
    • Save - Saves all of your customer's data. (Your settings will be automatically saved when you exit the settings page and customize message page)
    • Load - Loads all of your customer's data
  • Edit Drop-down menu
    • Add - Takes you to a page where you can add an additional entry
    • Edit - Takes you to a page where you can edit your selected entry on the table
    • Cut - Deletes a selected entry
    • Warn - Sends a SMS message to your selected entry warning your customer that their seating is almost ready
    • Call - Sends a SMS message to your selected entry warning your customer that their seating is ready
    • Clear Table - Deletes every entry on your table
  • Help - Takes you to my GitHub page


  • TableView - A table that displays all of the entries. It includes the name, party size, the time it was submitted and their phone number

Image 8-11-22 at 8 33 PM


Settings

The settings can only be accessed through the admin page. In this page, you can edit your name, your restaurant's name, auto load feature, pin and the time format. Changes made in this page will be applied to admin and customer portals.

  • Name - Textfiled for you to enter your prefered name.
  • Restaurant - Textfield to enter your restaurant's name. It can be used as an string injection for your messages.
  • Load - Check box where if selected, your last saved customer's data will automatically load on to the table.
  • Light Settings - Disabled and will be released in future developments
  • Pin - Textfield for you to enter a new pin. The pin is used to grant access to the Admin's page.
  • Time Format - You can choose between the 12hr and the 24hr time format. Once saved, the new time format will be applied to new and existing customer's data including the clock on the upper right corner of the Admin page.

Settings


Register

The register page can only be opened if you have SQL enabled. If SQL is disabled, then it will give you an alert box that has your sign in information. In this page, you can create a new user by adding their username, password, user's name and restaurant name. Once submitted, it will create a new row in your usersettings table.

  • Username - User is prompted to enter their prefered username for login. This username is unique and is registered as a primary key in SQL.
  • Password - Users need to enter a password that is at least 4 characters long.
  • Name - This is the name you'll be greeted with when you are in the Admin portal. It will also be used when you send call and warn messages.
  • Restaurant Name - This field will only be used when sending out messages and in the customer's portal
  • Cancel - Button that takes you back to the sign in page.
  • Submit - Checks that every textfield is filled and password meets the requirements. Afterwards it will insert the user to the user settings table in your database.

register


SQL_Setup

This is how you can enable SQL for this program. With SQL, you'll get a lot of benefits like: Registering more users, better organize data and ease of access to data. Inorder to begin the SQL setup you'll need three important things:

  • SQL Username
  • SQL Password
  • SQL Database URL

Go to SQLSetup.java in your src/main/java/com/Hotplate/Hotplate/ directory. Fill out the missing values (See below) To Enable SQL, change the useSQL to true. You should get something like this:
public static boolean useSQL = true;
public static String databaseURL = "jdbc:mysql://localhost:{PortNumber}/{databaseName}";
public static String sqlUsername = "{Your Username}";
public static String sqlPassword = "{Your password}";

setup


Enable_SQL

After you've put your credentials, you'll need to create the tables to make this possible. Luckily, you don't have to create the tables. I've written the program to automatically create tables for you. It will also give you a sample list of customers and users for you to interact with.

After filling out the credentials, just run main in SQLSetup.java. Everything would work perfectly if there were no exception errors. You can even check that you've created the tables by using mySQL. (Below)

Afterwards, you are all set to go. Just go to HotplateApp and run main . The program should launch without any issues.

Sequence.02.mp4

Disable_SQL

To disable SQL, simply go to SetupSQL and change useSQL to false.

false

You can even delete all the data and tables by commenting out the 3 methods and uncommenting the deleteEverything method.

delete


Crash_Report

See Troubleshoot for more details about your error. The crash report windows opens up when there is a severe error that has taken place. It shows you the entire log file since you first open your program. It also has a red label at the bottom telling you what the exact error is. You can send the report so I can look at it or you can exit the program and restart it. At the moment I will not receive any reports because this program is still in beta, but you can voice your errors on this Github's repository.

crash report


Troubleshoot

If you encountered a crash report, make sure to copy the red label at the bottom of the log display. The red text is the main culprit to the error.

image

Can_Not_Find_File

This error only occurs when the user is first loading up the program. Before the software starts, it searches through the required directories to find the required files to run this program. When the program can't find a file, it is either:

  • 1. The file was deleted
  • 2. The file was moved
  • 3. The file's name or format was changed
Can not find file: FileName.class This error means the program couldn't find the required java classes. Go to src/main/java/com/Hotplate/Hotplate and see if the class file is in there. If not, just re-download it from this repository.
Can not find file: FileName.fxml This error means the program couldn't find the required fxml document. Go to src/main/resources and see if the fxml file is in there. If not, just re-download it from this repository.

Loading_User_Settings

The error can appear in any of these labels.

errorSaveSettings
erroSaveSettings

When the program is starting it will load the previous user's settings. The file it uses is SaveSettings.ser and it could be found in the main files. The problem occurs if the SaveSettings.ser file is corrupted. This can be caused by running outdated program or running a program that failed to update. In order to resolve this problem, you'll have to delete SaveSettings.ser. Keep in mind that by deleting this file, you'll lose all of your user settings. Customer's data will not be affected.

Another solution is to go to HotPlate.java and change public boolean bypassSaveSettingsDeBug = false; to true public boolean bypassSaveSettingsDeBug = true;. After, you exit the program, just change it back to false. It will resolve the problem itself.


Initializing_Load

initizliaing load

When the program is starting it will load the previous customer's save. The file it uses is DefaultSave.ser and it could be found in the main files. The problem occurs if the DefaultSave.ser file is corrupted. This can be caused by running outdated program or running a program that failed to update. In order to resolve this problem, you'll have to delete DefaultSave.ser. Keep in mind that by deleting this file, you'll lose all of your customer's data. User's settings will not be affected.

Another solution is to go to HotPlate.java and change public boolean bypassSaveCustomersDebug = false; to true public boolean bypassSaveCustomersDebug = true;. After, you exit the program, just change it back to false. It will resolve the problem itself.

Future_Plans

  • Add JUnit Test
  • Use StringBuilder to fuse together strings for log management
  • Create a Log Management Class for universal log management
  • Convert AlertBox and YesNoBox to a Singleton