File size: 2,904 Bytes
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
import gradio as gr
import random
import uuid

# Sample 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}
]

# Sample customer data for login (in a real system, use a database)
customers = {
    "user1": {"name": "John Doe", "phone": "1234567890", "customer_id": "CUST001"},
    "user2": {"name": "Jane Smith", "phone": "9876543210", "customer_id": "CUST002"}
}

# Initialize session data
session_data = {}

def login(phone):
    for customer_id, details in customers.items():
        if details['phone'] == phone:
            session_data['customer_id'] = details['customer_id']
            session_data['customer_name'] = details['name']
            return f"Welcome {details['name']}!"
    return "Customer not found. Please register."

def display_menu():
    return "\n".join([f"{item['id']}. {item['name']} - ${item['price']}" for item in menu_items])

def add_to_cart(item_id, quantity):
    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)."

def view_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}"

def proceed_to_order(table_number):
    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
login_interface = gr.Interface(fn=login, inputs="text", outputs="text", title="Customer Login")
menu_interface = gr.Interface(fn=display_menu, inputs=None, outputs="text", title="Menu")
cart_interface = gr.Interface(fn=view_cart, inputs=None, outputs="text", title="Cart")
order_interface = gr.Interface(fn=proceed_to_order, inputs="text", outputs="text", title="Proceed to Order")

# Launch Gradio app
demo = gr.TabbedInterface([login_interface, menu_interface, cart_interface, order_interface], ["Login", "Menu", "Cart", "Order"])
demo.launch()