import gradio as gr from simple_salesforce import Salesforce # Salesforce Connection sf = Salesforce(username='diggavalli98@gmail.com', password='Sati@1020', security_token='sSSjyhInIsUohKpG8sHzty2q') # Cart to store items cart = [] # Function to fetch menu items def fetch_menu_from_salesforce(): query = "SELECT Id, Name, Price__c, Description__c, Image1__c, Section__c, Veg_NonVeg__c FROM Menu_Item__c" menu_items = sf.query(query) return menu_items["records"] # Function to fetch add-ons def fetch_add_ons_from_salesforce(): query = "SELECT Id, Name, Price__c, Menu_Item__c FROM Add_Ons__c WHERE Available_In_Menu__c = true" add_ons = sf.query(query) return add_ons["records"] # Function to generate menu HTML def generate_menu_html(menu_items): html = "
" for item in menu_items: html += f"""
{item.get('Name')}

{item.get('Name')}

{item.get('Description__c')}

${item.get('Price__c')}

""" html += "
" return html # Function to save order in Salesforce def save_order_in_salesforce(cart_data, total_cost): try: if not cart_data: return "Cart is empty!" # Save Order order = { "Name": f"Order-{datetime.now().strftime('%Y%m%d%H%M%S')}", "Total_Amount__c": total_cost, "Order_Date__c": datetime.now().isoformat(), } order_result = sf.Order__c.create(order) order_id = order_result["id"] # Save Order Items for item in cart_data: order_item = { "Order__c": order_id, "Menu_Item__c": item["menu_item_id"], "Quantity__c": item["quantity"], "Price__c": item["price"], "Total_Price__c": item["total_price"], "Add_Ons__c": ", ".join(addon["name"] for addon in item["add_ons"]), "Special_Instructions__c": item["instructions"], } sf.Order_Item__c.create(order_item) return "Order placed successfully!" except Exception as e: return f"Error saving order: {str(e)}" # JS for Popup popup_script = """ """ # Gradio App with gr.Blocks() as app: menu_items = fetch_menu_from_salesforce() add_ons = fetch_add_ons_from_salesforce() with gr.Row(): gr.HTML("

Welcome to Biryani Hub

") with gr.Row(): cart_view = gr.Textbox(label="Cart Items", interactive=False) total_cost_view = gr.Textbox(label="Total Cost", interactive=False) with gr.Row(): menu_output = gr.HTML(generate_menu_html(menu_items)) with gr.Row(): submit_order = gr.Button("Proceed to Order") order_status = gr.Textbox(label="Order Status", interactive=False) submit_order.click( lambda: save_order_in_salesforce(cart, sum(item["total_price"] for item in cart)), inputs=[], outputs=order_status, ) gr.HTML(""" """) gr.HTML(popup_script) app.launch()