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 |