from flask import Flask, render_template, request, redirect, session
import sqlite3
from datetime import datetime
app = Flask(__name__)
app.secret_key = "mysecretkey" # Needed for session handling
def get_db():
conn = sqlite3.connect("project6.db")
conn.row_factory = sqlite3.Row
return conn
@app.route("/")
def index():
return render_template("index.html")
@app.route("/admin", methods=["GET", "POST"])
def admin():
conn = get_db()
cur = conn.cursor()
if request.method == "POST":
cur.execute("INSERT INTO menu (name, category, price, description) VALUES (?, ?, ?, ?)",
(request.form["name"], request.form["category"], float(request.form["price"]), request.form["description"]))
conn.commit()
cur.execute("SELECT * FROM menu")
menu = cur.fetchall()
return render_template("admin.html", menu=menu)
@app.route("/start_order", methods=["GET", "POST"])
def start_order():
if request.method == "POST":
conn = get_db()
cur = conn.cursor()
if request.form["type"] == "new":
cur.execute("INSERT INTO customers (name, street_address, city, state, zip_code, phone_number) VALUES (?, ?, ?, ?, ?, ?)",
(request.form["name"], request.form["street_address"], request.form["city"], request.form["state"], request.form["zip_code"], request.form["phone_number"]))
customer_id = cur.lastrowid
else:
cur.execute("SELECT customer_id FROM customers WHERE name = ?", (request.form["name"],))
row = cur.fetchone()
if row:
customer_id = row["customer_id"]
else:
return "Customer not found"
order_number = "ABC" + datetime.now().strftime('%Y%m%d%H%M%S')
date_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
cur.execute("INSERT INTO orders (customer_id, order_number, date_time) VALUES (?, ?, ?)",
(customer_id, order_number, date_time))
conn.commit()
session["order_number"] = order_number
return redirect("/order")
return render_template("start_order.html")
@app.route("/order", methods=["GET", "POST"])
def order():
conn = get_db()
cur = conn.cursor()
if request.method == "POST":
order_number = session.get("order_number")
for key, value in request.form.items():
if key.startswith("quantity_"):
menu_id = int(key.split("_")[1])
quantity = int(value)
if quantity > 0:
cur.execute("INSERT INTO order_items (order_number, menu_id, quantity) VALUES (?, ?, ?)",
(order_number, menu_id, quantity))
conn.commit()
return redirect("/order_summary")
cur.execute("SELECT * FROM menu")
menu = cur.fetchall()
return render_template("order.html", menu=menu)
@app.route("/order_summary")
def order_summary():
conn = get_db()
cur = conn.cursor()
order_number = session.get("order_number")
cur.execute("""
SELECT m.name, m.price, oi.quantity, (m.price * oi.quantity) AS total_price
FROM order_items oi
JOIN menu m ON m.menu_id = oi.menu_id
WHERE oi.order_number = ?
""", (order_number,))
items = cur.fetchall()
subtotal = sum(item["total_price"] for item in items)
tax = subtotal * 0.06625
tip = subtotal * 0.15
delivery_fee = 5
total = subtotal + tax + tip + delivery_fee
return render_template("order_summary.html", summary=items, subtotal=subtotal, tax=tax, tip=tip, delivery_fee=delivery_fee, total=total)
if __name__ == "__main__":
app.run(debug=True)