Spaces:
Sleeping
Sleeping
File size: 4,191 Bytes
bc774c2 1d8b98e bc774c2 1d8b98e bc774c2 1d8b98e bc774c2 1d8b98e bc774c2 1d8b98e bc774c2 a5cfc16 bc774c2 1d8b98e bc774c2 a5cfc16 bc774c2 1d8b98e bc774c2 a5cfc16 bc774c2 1d8b98e bc774c2 a5cfc16 bc774c2 1d8b98e bc774c2 1d8b98e bc774c2 1d8b98e bc774c2 1d8b98e 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 |
import gradio as gr
import uuid
# Sample data for menu items (You can replace these with your actual menu items)
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 (In real applications, use a real database)
customers = {} # Stores customers by phone number
session_data = {}
# Function for user registration (signup)
def signup(name, phone):
if phone in customers:
return f"Phone number {phone} is already registered. Please log in."
# Create a unique customer ID
customer_id = f"CUST{str(uuid.uuid4().int)[:6]}" # Shortened unique customer ID
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."
# Display menu after login
def display_menu():
if 'customer_id' not in session_data:
return "Please log in first to view the menu."
menu = "\n".join([f"{item['id']}. {item['name']} - ${item['price']}" for item in menu_items])
return f"Welcome, {session_data['customer_name']}! Here is the menu:\n\n{menu}"
# Add item to cart
def add_to_cart(item_id, quantity):
if 'customer_id' not in session_data:
return "Please log in first to add items to your cart."
cart = session_data.get('cart', [])
cart.append({"item_id": item_id, "quantity": quantity})
session_data['cart'] = cart
return f"Item added to cart. Cart has {len(cart)} item(s)."
# View cart contents
def view_cart():
if 'customer_id' not in session_data:
return "Please log in first to view your cart."
cart = session_data.get('cart', [])
cart_items = []
total_price = 0
for item in cart:
item_details = next((menu_item for menu_item in menu_items if menu_item['id'] == item['item_id']), None)
if item_details:
cart_items.append(f"{item_details['name']} x {item['quantity']} - ${item_details['price'] * item['quantity']}")
total_price += item_details['price'] * item['quantity']
return "\n".join(cart_items) + f"\nTotal Price: ${total_price}"
# Proceed to order function
def proceed_to_order(table_number):
if 'customer_id' not in session_data:
return "Please log in first to proceed with your order."
order_id = str(uuid.uuid4()) # Generate unique order ID
cart = session_data.get('cart', [])
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 ID: {order_id}\nTable Number: {table_number}\nOrder Details: {order_details}"
# Gradio Interface for Signup (Registration)
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
menu_interface = gr.Interface(fn=display_menu, inputs=None, outputs="text", title="Menu")
# 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="text", 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()
|