File size: 5,669 Bytes
211d39c
3f862cb
4e07a43
ebdfd29
5ed0e4f
4e07a43
5ed0e4f
 
 
 
 
 
4e07a43
5ed0e4f
 
 
 
 
 
 
 
 
 
 
 
 
 
4e07a43
5ed0e4f
 
 
 
 
621242c
ea68aef
5ed0e4f
 
ea68aef
5ed0e4f
 
 
 
ea68aef
 
 
 
5ed0e4f
 
ea68aef
5ed0e4f
 
 
 
 
 
 
 
ea68aef
 
5ed0e4f
 
 
 
 
 
 
 
 
 
 
 
7327577
5ed0e4f
 
 
7327577
5ed0e4f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7327577
 
5ed0e4f
 
0140872
5ed0e4f
 
7327577
5ed0e4f
 
7327577
5ed0e4f
 
 
 
 
 
 
7327577
5ed0e4f
 
 
 
 
7327577
5ed0e4f
7327577
5ed0e4f
 
 
7327577
5ed0e4f
 
 
 
 
7327577
5ed0e4f
 
 
 
 
7327577
5ed0e4f
 
 
 
51d5c5f
5ed0e4f
7327577
 
5ed0e4f
 
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
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