Esempio n. 1
0
def auto_assign_waiter(table_num):
    # check if there are waiters in the database
    result = connector.execute_query("SELECT email FROM waiter")
    if len(result) == 0:
        error_msg = "No waiters in the database!"
        return jsonify(error={"success": False, "message": error_msg})

# adding a check to ensure there is a waiter assigned to the table when a order is created
    query = "SELECT waiter_id, table_number FROM table_details WHERE table_number = %s AND waiter_id IS NULL"
    result = connector.execute_query(query, (table_num, ))
    if len(result) == 0 or result[0][0] is None:
        # first check if there are waiters that are not assinged to any tables
        waiters = connector.execute_query("SELECT email FROM waiter")
        assignedWaiters = connector.execute_query(
            "SELECT waiter_id FROM table_details")
        for waiter in waiters:
            if waiter not in assignedWaiters:
                query = "UPDATE table_details SET waiter_id = %s WHERE table_number = %s"
                connector.execute_insert_query(query, (waiter[0], table_num))
                return None
        # Select the waiter with the least tables
        query = "SELECT waiter_id, COUNT(table_number) "\
          "FROM table_details "\
          "WHERE waiter_id IS NOT NULL "\
          "GROUP BY waiter_id "\
          "ORDER BY count"
        result = connector.execute_query(query)
        # we ordered by count so the top result will be the waiter with minimal tables
        waiter_email = result[0][0]

        query = "UPDATE table_details SET waiter_id = %s WHERE table_number = %s"
        connector.execute_insert_query(query, (waiter_email, table_num))
Esempio n. 2
0
def clear_waiter_notifications():
	error = vn.validate_clear_waiter_notifications(request)
	if error:
		return(error)

	waiter = request.json.get("waiter_email")

	query = "DELETE FROM waiter_notifications WHERE waiter_email=%s"
	connector.execute_insert_query(query, (waiter,))

	return jsonify(data={"success" : True})
Esempio n. 3
0
def add_waiter_notification():
	error = vn.validate_notification(request)
	if error:
		return(error)
	
	message = request.json.get("message")
	waiter_email = request.json.get("waiter_email")
	customer_email = request.json.get("customer_email")

	query = "INSERT INTO waiter_notifications(waiter_email, customer_email, message) VALUES(%s, %s, %s)"
	connector.execute_insert_query(query, (waiter_email, customer_email, message))

	return jsonify(data={"added_message" : message, "from" : waiter_email, "to" : customer_email, "success" : True})
Esempio n. 4
0
def table_assignment_event():
    error = validate_tables.validate_event(request)
    if error:
        return error

    waiter = request.json.get("waiter_id")
    table = request.json.get("table_id")

    query = "UPDATE table_details SET waiter_id = %s WHERE table_number = %s"
    result = connector.execute_insert_query(query, (waiter, table))
    if not result:
        error_msg = "Error executing query"
        return jsonify(data={"success": False, "message": error_msg})

    return jsonify(data={"success": True})
Esempio n. 5
0
def change_availability():
    error = vf.sent_expected_values(["newState", "menuId"], request)
    if error:
        return error

    newState = request.json.get("newState")
    menuId = request.json.get("menuId")
    query = "UPDATE menu SET available = %s WHERE id = (%s)"
    result = connector.execute_insert_query(query, (newState, menuId))
    if result is False:
        return jsonify(error={
            "success": False,
            "message": "Error MenuId does not exist"
        })
    return jsonify(data={"success": True})
Esempio n. 6
0
def sign_up():
    error = validate_sign_up.validate_customer(request)
    if error:
        return error

    #  Get the details of the user from a post request as a json
    email = request.json.get('email')
    password = request.json.get('password')
    firstname = request.json.get('firstname')
    lastname = request.json.get('lastname')

    query = "INSERT INTO customer VALUES (%s, %s, %s, %s);"
    result = connector.execute_insert_query(query, (email, firstname, lastname, password))
    # if the sql INSERT doesn't work it reverts the statement to prevent data corruption
    if result is False:
        return jsonify(error = {"success": False, "message": "Query failed invalid input"})

    return jsonify(data = {"success": True})
Esempio n. 7
0
def waiter_sign_up():
    error = validate_sign_up.validate_waiter(request)
    if error:
        return error

    email = request.json.get('email')
    password = request.json.get('password')
    firstname = request.json.get('firstname')
    lastname = request.json.get('lastname')
    phone_number = request.json.get('phone_number')

    query = "INSERT INTO waiter (email,firstname, lastname, phone_number, password) VALUES (%s,%s,%s,%s,%s)"
    result = connector.execute_insert_query(query, (email, firstname, lastname, phone_number, password))
    if not result:
        return jsonify(error = {"success": False, "message": "Query failed invalid input"})


    return jsonify(data = {"success": True})
Esempio n. 8
0
def cleanup_waiter():
    connector.execute_insert_query(
        "DELETE FROM waiter WHERE email = '*****@*****.**'")
Esempio n. 9
0
def cleanup_customer():
    connector.execute_insert_query(
        "DELETE FROM customer WHERE email = '*****@*****.**'")