Spaces:
Sleeping
Sleeping
File size: 4,632 Bytes
bc774c2 4d8885f bc774c2 4d8885f bc774c2 4d8885f 1d8b98e 4d8885f 1d8b98e bc774c2 1d8b98e bc774c2 4d8885f a5cfc16 4d8885f a5cfc16 a02c36b a5cfc16 4d8885f bc774c2 4d8885f bc774c2 4d8885f bc774c2 4d8885f bc774c2 a5cfc16 bc774c2 a02c36b bc774c2 4d8885f a02c36b bc774c2 4d8885f bc774c2 a5cfc16 bc774c2 a02c36b bc774c2 4d8885f bc774c2 a02c36b 1d8b98e 4d8885f 1d8b98e bc774c2 1d8b98e a02c36b bc774c2 1d8b98e a02c36b bc774c2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
import gradio as gr
import uuid
# Sample menu items (Add your actual items here)
menu_items = [
{"id": 1, "name": "Burger", "price": 5.99},
{"id": 2, "name": "Pizza", "price": 8.99},
{"id": 3, "name": "Pasta", "price": 7.99},
{"id": 4, "name": "Salad", "price": 4.99},
{"id": 5, "name": "Soda", "price": 1.99}
]
# Simulated database for customers and session management
customers = {}
session_data = {}
# Function for user signup
def signup(name, phone):
if phone in customers:
return f"Phone number {phone} is already registered. Please log in."
# Generate unique customer ID
customer_id = f"CUST{str(uuid.uuid4().int)[:6]}"
customers[phone] = {"name": name, "phone": phone, "customer_id": customer_id}
return f"Signup successful! Welcome {name}. Your customer ID is {customer_id}."
# Function for user login
def login(phone):
if phone in customers:
customer = customers[phone]
session_data['customer_id'] = customer['customer_id']
session_data['customer_name'] = customer['name']
return f"Welcome {customer['name']}! You are now logged in."
else:
return "Phone number not found. Please register first."
# Function to add items to the cart
def add_to_cart(item_name):
if 'customer_id' not in session_data:
return "Please log in first to add items to the cart."
# Find the selected item in the menu
selected_item = next((item for item in menu_items if item["name"] == item_name), None)
if not selected_item:
return f"Item '{item_name}' not found in the menu."
# Add item to cart
cart = session_data.get('cart', [])
cart.append({"item_id": selected_item['id'], "name": selected_item['name'], "quantity": 1, "price": selected_item['price']})
session_data['cart'] = cart
return f"Added 1 x {selected_item['name']} to the cart."
# Function to display cart
def view_cart():
if 'customer_id' not in session_data:
return "Please log in first to view your cart."
cart = session_data.get('cart', [])
if not cart:
return "Your cart is empty."
cart_summary = []
total_price = 0
for item in cart:
cart_summary.append(f"{item['name']} x {item['quantity']} - ${item['price']:.2f}")
total_price += item['price']
return "\n".join(cart_summary) + f"\n\nTotal Price: ${total_price:.2f}"
# Function to proceed to order
def proceed_to_order(table_number):
if 'customer_id' not in session_data:
return "Please log in first to proceed with your order."
cart = session_data.get('cart', [])
if not cart:
return "Your cart is empty. Add items to your cart before proceeding."
order_id = str(uuid.uuid4()) # Generate unique order ID
order_details = {
"order_id": order_id,
"customer_id": session_data['customer_id'],
"customer_name": session_data['customer_name'],
"table_number": table_number,
"items": cart
}
session_data['cart'] = [] # Clear cart after order
return f"Order placed successfully!\n\nOrder ID: {order_id}\nTable Number: {table_number}\n\nOrder Details:\n" + "\n".join([f"{item['name']} x {item['quantity']} - ${item['price']:.2f}" for item in cart])
# Dynamic menu interface with add buttons
def generate_menu():
menu_elements = []
for item in menu_items:
button = gr.Button(f"Add {item['name']} (${item['price']:.2f})")
menu_elements.append((button, lambda name=item['name']: add_to_cart(name)))
return menu_elements
# Gradio Interface for Signup
signup_interface = gr.Interface(fn=signup, inputs=["text", "text"], outputs="text", title="Signup")
# Gradio Interface for Login
login_interface = gr.Interface(fn=login, inputs="text", outputs="text", title="Login")
# Gradio Interface for Menu with Add Buttons
menu_buttons = generate_menu()
menu_interface = gr.Blocks()
with menu_interface:
with gr.Row():
gr.Markdown("# Menu")
for button, function in menu_buttons:
button.click(fn=function, outputs="text")
# Gradio Interface for Cart
cart_interface = gr.Interface(fn=view_cart, inputs=None, outputs="text", title="Cart")
# Gradio Interface for Proceed to Order
order_interface = gr.Interface(
fn=proceed_to_order,
inputs=gr.Textbox(label="Table Number"),
outputs="text",
title="Proceed to Order"
)
# Launch Gradio app with multiple tabs
demo = gr.TabbedInterface(
[signup_interface, login_interface, menu_interface, cart_interface, order_interface],
["Signup", "Login", "Menu", "Cart", "Order"]
)
demo.launch()
|