Spaces:
Sleeping
Sleeping
Update app.py (#1)
Browse files
app.py
CHANGED
@@ -142,12 +142,13 @@ def cart():
|
|
142 |
""")
|
143 |
cart_items = result.get("records", [])
|
144 |
|
145 |
-
#
|
|
|
|
|
|
|
146 |
for item in cart_items:
|
147 |
item['Add_Ons__c'] = item.get('Add_Ons__c', "None") # Default to "None" if no add-ons
|
148 |
|
149 |
-
# Calculate subtotal
|
150 |
-
subtotal = sum(item['Quantity__c'] * item['Price__c'] for item in cart_items)
|
151 |
except Exception as e:
|
152 |
print(f"Error fetching cart items: {e}")
|
153 |
cart_items = []
|
@@ -155,28 +156,38 @@ def cart():
|
|
155 |
|
156 |
return render_template("cart.html", cart_items=cart_items, subtotal=subtotal)
|
157 |
|
|
|
158 |
@app.route('/cart/add', methods=['POST'])
|
159 |
def add_to_cart():
|
160 |
data = request.json # Extract JSON payload
|
161 |
item_name = data.get('itemName').strip()
|
162 |
-
item_price = data.get('itemPrice')
|
163 |
item_image = data.get('itemImage')
|
164 |
addons = data.get('addons', []) # Extract add-ons array
|
165 |
-
customer_email = session.get('user_email') #
|
166 |
|
167 |
if not item_name or not item_price:
|
168 |
return jsonify({"success": False, "error": "Item name and price are required."})
|
169 |
|
170 |
-
# Convert add-ons array to a
|
171 |
-
addons_string = "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
172 |
|
173 |
try:
|
174 |
# Save the cart item in Salesforce
|
175 |
sf.Cart_Item__c.create({
|
176 |
"Name": item_name, # Item name
|
177 |
-
"Price__c":
|
|
|
178 |
"Quantity__c": 1, # Default quantity is 1
|
179 |
-
"Add_Ons__c": addons_string, # Add-ons
|
180 |
"Image1__c": item_image, # Item image URL
|
181 |
"Customer_Email__c": customer_email, # Associated customer's email
|
182 |
})
|
@@ -292,16 +303,22 @@ def checkout():
|
|
292 |
user_id = session.get('user_id')
|
293 |
if not email or not user_id:
|
294 |
return jsonify({"success": False, "message": "User not logged in"})
|
|
|
295 |
try:
|
|
|
296 |
result = sf.query(f"""
|
297 |
SELECT Id, Name, Price__c, Quantity__c, Add_Ons__c
|
298 |
FROM Cart_Item__c
|
299 |
WHERE Customer_Email__c = '{email}'
|
300 |
""")
|
301 |
-
cart_items = result
|
302 |
if not cart_items:
|
303 |
return jsonify({"success": False, "message": "Cart is empty"})
|
304 |
-
|
|
|
|
|
|
|
|
|
305 |
order_data = {
|
306 |
"Customer_Name__c": user_id,
|
307 |
"Customer_Email__c": email,
|
@@ -313,14 +330,17 @@ def checkout():
|
|
313 |
"Add_Ons__c": "\n".join(
|
314 |
[item['Add_Ons__c'] if item.get('Add_Ons__c') else "None" for item in cart_items]
|
315 |
),
|
316 |
-
|
317 |
}
|
318 |
sf.Order__c.create(order_data)
|
|
|
|
|
319 |
for item in cart_items:
|
320 |
sf.Cart_Item__c.delete(item["Id"])
|
|
|
321 |
return jsonify({"success": True, "message": "Order placed successfully!"})
|
322 |
except Exception as e:
|
323 |
return jsonify({"success": False, "error": str(e)})
|
324 |
|
|
|
325 |
if __name__ == "__main__":
|
326 |
app.run(debug=False, host="0.0.0.0", port=7860)
|
|
|
142 |
""")
|
143 |
cart_items = result.get("records", [])
|
144 |
|
145 |
+
# Calculate the subtotal, including add-ons prices
|
146 |
+
subtotal = sum(item['Price__c'] * item['Quantity__c'] for item in cart_items)
|
147 |
+
|
148 |
+
# Ensure add-ons are processed properly
|
149 |
for item in cart_items:
|
150 |
item['Add_Ons__c'] = item.get('Add_Ons__c', "None") # Default to "None" if no add-ons
|
151 |
|
|
|
|
|
152 |
except Exception as e:
|
153 |
print(f"Error fetching cart items: {e}")
|
154 |
cart_items = []
|
|
|
156 |
|
157 |
return render_template("cart.html", cart_items=cart_items, subtotal=subtotal)
|
158 |
|
159 |
+
|
160 |
@app.route('/cart/add', methods=['POST'])
|
161 |
def add_to_cart():
|
162 |
data = request.json # Extract JSON payload
|
163 |
item_name = data.get('itemName').strip()
|
164 |
+
item_price = data.get('itemPrice') # Base price of the item
|
165 |
item_image = data.get('itemImage')
|
166 |
addons = data.get('addons', []) # Extract add-ons array
|
167 |
+
customer_email = session.get('user_email') # Get the logged-in user's email
|
168 |
|
169 |
if not item_name or not item_price:
|
170 |
return jsonify({"success": False, "error": "Item name and price are required."})
|
171 |
|
172 |
+
# Convert add-ons array to a formatted string and calculate the add-ons total price
|
173 |
+
addons_string = "None"
|
174 |
+
addons_total_price = 0
|
175 |
+
if addons:
|
176 |
+
addons_details = [f"{addon['name']} (${addon['price']})" for addon in addons]
|
177 |
+
addons_total_price = sum(addon['price'] for addon in addons)
|
178 |
+
addons_string = "; ".join(addons_details)
|
179 |
+
|
180 |
+
# Calculate the total price (item price + add-ons)
|
181 |
+
total_price = item_price + addons_total_price
|
182 |
|
183 |
try:
|
184 |
# Save the cart item in Salesforce
|
185 |
sf.Cart_Item__c.create({
|
186 |
"Name": item_name, # Item name
|
187 |
+
"Price__c": total_price, # Total price (item + add-ons)
|
188 |
+
"Base_Price__c": item_price, # Base price without add-ons
|
189 |
"Quantity__c": 1, # Default quantity is 1
|
190 |
+
"Add_Ons__c": addons_string, # Add-ons with name and price
|
191 |
"Image1__c": item_image, # Item image URL
|
192 |
"Customer_Email__c": customer_email, # Associated customer's email
|
193 |
})
|
|
|
303 |
user_id = session.get('user_id')
|
304 |
if not email or not user_id:
|
305 |
return jsonify({"success": False, "message": "User not logged in"})
|
306 |
+
|
307 |
try:
|
308 |
+
# Fetch cart items for the user
|
309 |
result = sf.query(f"""
|
310 |
SELECT Id, Name, Price__c, Quantity__c, Add_Ons__c
|
311 |
FROM Cart_Item__c
|
312 |
WHERE Customer_Email__c = '{email}'
|
313 |
""")
|
314 |
+
cart_items = result.get("records", [])
|
315 |
if not cart_items:
|
316 |
return jsonify({"success": False, "message": "Cart is empty"})
|
317 |
+
|
318 |
+
# Calculate the total price of the order
|
319 |
+
total_price = sum(item['Price__c'] * item['Quantity__c'] for item in cart_items)
|
320 |
+
|
321 |
+
# Create the order in Salesforce
|
322 |
order_data = {
|
323 |
"Customer_Name__c": user_id,
|
324 |
"Customer_Email__c": email,
|
|
|
330 |
"Add_Ons__c": "\n".join(
|
331 |
[item['Add_Ons__c'] if item.get('Add_Ons__c') else "None" for item in cart_items]
|
332 |
),
|
|
|
333 |
}
|
334 |
sf.Order__c.create(order_data)
|
335 |
+
|
336 |
+
# Clear the cart after placing the order
|
337 |
for item in cart_items:
|
338 |
sf.Cart_Item__c.delete(item["Id"])
|
339 |
+
|
340 |
return jsonify({"success": True, "message": "Order placed successfully!"})
|
341 |
except Exception as e:
|
342 |
return jsonify({"success": False, "error": str(e)})
|
343 |
|
344 |
+
|
345 |
if __name__ == "__main__":
|
346 |
app.run(debug=False, host="0.0.0.0", port=7860)
|