nagasurendra commited on
Commit
6c1ecc9
·
verified ·
1 Parent(s): b18afed

Create menu.py

Browse files
Files changed (1) hide show
  1. menu.py +131 -0
menu.py ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import Blueprint, render_template, request
2
+ from salesforce import get_salesforce_connection
3
+
4
+ menu_blueprint = Blueprint('menu', __name__)
5
+
6
+ # Initialize Salesforce connection
7
+ sf = get_salesforce_connection()
8
+
9
+ @app.route("/menu", methods=["GET", "POST"])
10
+ def menu():
11
+ selected_category = request.args.get("category", "All")
12
+ user_email = session.get('user_email')
13
+
14
+ if not user_email:
15
+ user_email = request.args.get("email")
16
+ user_name = request.args.get("name")
17
+
18
+ if user_email:
19
+ session['user_email'] = user_email
20
+ session['user_name'] = user_name # Store name in session
21
+ else:
22
+ return redirect(url_for("login"))
23
+ else:
24
+ user_name = session.get('user_name') # Get name from session if it's already stored
25
+
26
+ # Get the first letter of the user's name (make it uppercase for consistency)
27
+ first_letter = user_name[0].upper() if user_name else "A"
28
+
29
+ try:
30
+ # Fetch user referral and reward points
31
+ user_query = f"SELECT Referral__c, Reward_Points__c FROM Customer_Login__c WHERE Email__c = '{user_email}'"
32
+ user_result = sf.query(user_query)
33
+
34
+ if not user_result['records']:
35
+ return redirect(url_for('login'))
36
+
37
+ referral_code = user_result['records'][0].get('Referral__c', 'N/A')
38
+ reward_points = user_result['records'][0].get('Reward_Points__c', 0)
39
+
40
+ # Query to fetch Menu_Item__c records including Total_Ordered__c for best sellers
41
+ menu_query = """
42
+ SELECT Name, Price__c, Description__c, Image1__c, Image2__c, Veg_NonVeg__c, Section__c, Total_Ordered__c
43
+ FROM Menu_Item__c
44
+ """
45
+ result = sf.query(menu_query)
46
+ food_items = result['records'] if 'records' in result else []
47
+
48
+ # Ensure Total_Ordered__c has a valid value
49
+ for item in food_items:
50
+ if 'Total_Ordered__c' not in item or item['Total_Ordered__c'] is None:
51
+ item['Total_Ordered__c'] = 0 # Default value
52
+
53
+ # Query to fetch Custom_Dish__c records created within the last 7 days with Total_Ordered__c > 10
54
+ custom_dish_query = """
55
+ SELECT Name, Price__c, Description__c, Image1__c, Image2__c, Veg_NonVeg__c, Section__c, Total_Ordered__c
56
+ FROM Custom_Dish__c
57
+ WHERE CreatedDate >= LAST_N_DAYS:7
58
+ """
59
+ custom_dish_result = sf.query(custom_dish_query)
60
+ custom_dishes = custom_dish_result['records'] if 'records' in custom_dish_result else []
61
+
62
+ # Merge both Menu_Item__c and Custom_Dish__c records into the ordered menu
63
+ all_items = food_items + custom_dishes
64
+
65
+ # Define the order of sections, adding "Best Sellers" at the top
66
+ section_order = ["Best Sellers", "Starters", "Biryanis", "Curries", "Breads", "Customized dish", "Apetizer", "Desserts", "Soft Drinks"]
67
+ ordered_menu = {section: [] for section in section_order}
68
+
69
+ # Sort items by Total_Ordered__c in descending order and pick top 4 as best sellers
70
+ best_sellers = sorted(all_items, key=lambda x: x.get("Total_Ordered__c", 0), reverse=True)
71
+
72
+ if selected_category == "Veg":
73
+ best_sellers = [item for item in best_sellers if item.get("Veg_NonVeg__c") in ["Veg", "both"]]
74
+ elif selected_category == "Non veg":
75
+ best_sellers = [item for item in best_sellers if item.get("Veg_NonVeg__c") in ["Non veg", "both"]]
76
+
77
+ # Take only the top 4 best sellers after filtering
78
+ best_sellers = best_sellers[:4]
79
+
80
+ # Ensure "Best Sellers" is added only if there are items after filtering
81
+ if best_sellers:
82
+ ordered_menu["Best Sellers"] = best_sellers
83
+
84
+ # Create a set to track item names already added to prevent duplicates
85
+ added_item_names = set()
86
+
87
+ # Filter and organize menu items based on category and section (to avoid duplicates)
88
+ for item in all_items:
89
+ section = item.get("Section__c", "Others") # Default to "Others" if missing
90
+ if section not in ordered_menu:
91
+ ordered_menu[section] = []
92
+
93
+ # Skip item if it's already been added to avoid duplicates
94
+ if item['Name'] in added_item_names:
95
+ continue
96
+
97
+ # Apply category filters
98
+ if selected_category == "Veg" and item.get("Veg_NonVeg__c") not in ["Veg", "both"]:
99
+ continue
100
+ if selected_category == "Non veg" and item.get("Veg_NonVeg__c") not in ["Non veg", "both"]:
101
+ continue
102
+
103
+ ordered_menu[section].append(item)
104
+ added_item_names.add(item['Name']) # Add item to the set of added items
105
+ print(f"Added item to {section}: {item['Name']}") # Debugging
106
+
107
+ # Remove empty sections
108
+ ordered_menu = {section: items for section, items in ordered_menu.items() if items}
109
+ print(f"Final ordered menu: {ordered_menu.keys()}") # Debugging
110
+
111
+ categories = ["All", "Veg", "Non veg"]
112
+
113
+ except Exception as e:
114
+ print(f"Error fetching menu data: {str(e)}")
115
+ ordered_menu = {}
116
+ categories = ["All", "Veg", "Non veg"]
117
+ referral_code = 'N/A'
118
+ reward_points = 0
119
+
120
+ # Pass the user's first letter (first_letter) to the template
121
+ return render_template(
122
+ "menu.html",
123
+ ordered_menu=ordered_menu,
124
+ categories=categories,
125
+ selected_category=selected_category,
126
+ referral_code=referral_code,
127
+ reward_points=reward_points,
128
+ user_name=user_name, # Pass name to the template
129
+ first_letter=first_letter # Pass first letter to the template
130
+ )
131
+