geethareddy's picture
Update menu.py
5ed0e4f verified
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__)
@menu_blueprint.route("/menu", methods=["GET"])
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=[]
)
@menu_blueprint.route("/menu/save_custom_dish", methods=["POST"])
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
@menu_blueprint.route("/get_ingredients", methods=["POST"])
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
@menu_blueprint.route("/get_menu_items", methods=["POST"])
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