Spaces:
Sleeping
Sleeping
from flask import Blueprint, render_template, request, session, jsonify, redirect, url_for | |
from salesforce import get_salesforce_connection | |
sf = get_salesforce_connection() | |
menu_blueprint = Blueprint('menu', __name__) | |
def menu(): | |
email = session.get('user_email') | |
user_name = session.get('user_name') | |
if not email or not user_name: | |
return redirect(url_for("login")) | |
category = request.args.get('category', 'All') | |
veg_filter = request.args.get('veg', None) | |
# Build query based on filters | |
query_conditions = [] | |
if veg_filter: | |
category = 'Veg' | |
query_conditions.append("Veg_NonVeg__c = 'Veg'") | |
elif category == 'All': | |
query_conditions.append("(Veg_NonVeg__c = 'Veg' OR Veg_NonVeg__c = 'Non veg')") | |
elif category == 'Customized Dish': | |
query_conditions.append(f"Section__c = 'Customized Dish' AND Customer_Email__c = '{email}'") | |
else: | |
query_conditions.append(f"Veg_NonVeg__c = '{category}'") | |
query = f""" | |
SELECT Name, Price__c, Image1__c, Image2__c, Video1__c, Section__c, Description__c, Ingredientsinfo__c, NutritionalInfo__c, Allergens__c, Veg_NonVeg__c | |
FROM Menu_Item__c | |
WHERE {' AND '.join(query_conditions)} | |
""" | |
try: | |
result = sf.query(query) | |
menu_items = result.get("records", []) | |
# Organize menu items by section | |
ordered_menu = {} | |
for item in menu_items: | |
section = item.get('Section__c', 'Other') | |
if section not in ordered_menu: | |
ordered_menu[section] = [] | |
ordered_menu[section].append(item) | |
# Fetch most common add-ons (simplified for this example) | |
most_common_addons = ["Medium", "Raita"] | |
return render_template( | |
"menu.html", | |
ordered_menu=ordered_menu, | |
selected_category=category, | |
user_name=user_name, | |
first_letter=user_name[0].upper(), | |
most_common_addons=most_common_addons | |
) | |
except Exception as e: | |
print(f"Error fetching menu items: {e}") | |
return render_template( | |
"menu.html", | |
ordered_menu={}, | |
selected_category=category, | |
user_name=user_name, | |
first_letter=user_name[0].upper(), | |
most_common_addons=[] | |
) | |
def save_custom_dish(): | |
try: | |
email = session.get('user_email') | |
if not email: | |
return jsonify({"success": False, "error": "User not logged in."}), 401 | |
data = request.get_json() | |
menu_item = data.get('menu_item') | |
ingredients = data.get('ingredients', []) | |
instructions = data.get('instructions', '') | |
item_price = float(data.get('itemPrice', 10.00)) | |
item_image = data.get('itemImage', 'https://via.placeholder.com/120') | |
# Create a new Menu_Item__c record for the custom dish | |
sf.Menu_Item__c.create({ | |
"Name": menu_item['name'], | |
"Price__c": item_price, | |
"Image1__c": item_image, | |
"Section__c": "Customized Dish", | |
"Description__c": instructions, | |
"Ingredientsinfo__c": ", ".join(i['name'] for i in ingredients), | |
"Customer_Email__c": email, | |
"Veg_NonVeg__c": "Custom" | |
}) | |
return jsonify({"success": True, "message": "Custom dish saved successfully"}) | |
except Exception as e: | |
print(f"Error saving custom dish: {e}") | |
return jsonify({"success": False, "error": str(e)}), 500 | |
def get_ingredients(): | |
try: | |
data = request.get_json() | |
dietary_preference = data.get('dietary_preference', 'all') | |
# Simplified ingredient fetching logic | |
ingredients = [ | |
{"name": "Tomato", "image_url": "https://via.placeholder.com/120", "category": "vegetarian"}, | |
{"name": "Chicken", "image_url": "https://via.placeholder.com/120", "category": "non-vegetarian"}, | |
{"name": "Onion", "image_url": "https://via.placeholder.com/120", "category": "vegetarian"}, | |
{"name": "Beef", "image_url": "https://via.placeholder.com/120", "category": "non-vegetarian"} | |
] | |
filtered_ingredients = [ | |
ingredient for ingredient in ingredients | |
if dietary_preference == 'all' or ingredient['category'] == dietary_preference.lower() | |
or dietary_preference in ingredient['name'].lower() | |
] | |
return jsonify({"success": True, "ingredients": filtered_ingredients}) | |
except Exception as e: | |
print(f"Error fetching ingredients: {e}") | |
return jsonify({"success": False, "error": str(e)}), 500 | |
def get_menu_items(): | |
try: | |
data = request.get_json() | |
ingredient_names = data.get('ingredient_names', '') | |
# Simplified menu item fetching logic | |
menu_items = [ | |
{"name": "Tomato Curry", "image_url": "https://via.placeholder.com/120"}, | |
{"name": "Chicken Biryani", "image_url": "https://via.placeholder.com/120"} | |
] | |
filtered_items = [ | |
item for item in menu_items | |
if not ingredient_names or any(ing in item['name'].lower() for ing in ingredient_names.split()) | |
] | |
return jsonify({"success": True, "menu_items": filtered_items}) | |
except Exception as e: | |
print(f"Error fetching menu items: {e}") | |
return jsonify({"success": False, "error": str(e)}), 500 |