DSatishchandra commited on
Commit
59e1a5c
·
verified ·
1 Parent(s): 7ea28c1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +37 -9
app.py CHANGED
@@ -768,7 +768,7 @@ def add_suggestion_to_cart():
768
  @app.route('/cart/add', methods=['POST'])
769
  def add_to_cart():
770
  data = request.json
771
- item_name = data.get('itemName').strip()
772
  item_price = data.get('itemPrice')
773
  item_image = data.get('itemImage')
774
  addons = data.get('addons', [])
@@ -777,20 +777,28 @@ def add_to_cart():
777
  section = data.get('section')
778
  customer_email = session.get('user_email')
779
 
 
780
  if not item_name or not item_price:
781
- return jsonify({"success": False, "error": "Item name and price are required."})
 
 
 
782
 
783
  try:
 
784
  query = f"""
785
- SELECT Id, Quantity__c, Add_Ons__c, Add_Ons_Price__c, Instructions__c FROM Cart_Item__c
 
786
  WHERE Customer_Email__c = '{customer_email}' AND Name = '{item_name}'
787
  """
788
  result = sf.query(query)
789
  cart_items = result.get("records", [])
790
 
 
791
  addons_price = sum(addon['price'] for addon in addons)
792
  new_addons = "; ".join([f"{addon['name']} (${addon['price']})" for addon in addons])
793
 
 
794
  if cart_items:
795
  cart_item_id = cart_items[0]['Id']
796
  existing_quantity = cart_items[0]['Quantity__c']
@@ -798,19 +806,23 @@ def add_to_cart():
798
  existing_addons_price = cart_items[0].get('Add_Ons_Price__c', 0)
799
  existing_instructions = cart_items[0].get('Instructions__c', "")
800
 
 
801
  combined_addons = existing_addons if existing_addons != "None" else ""
802
  if new_addons:
803
  combined_addons = f"{combined_addons}; {new_addons}".strip("; ")
804
 
 
805
  combined_instructions = existing_instructions
806
  if instructions:
807
  combined_instructions = f"{combined_instructions} | {instructions}".strip(" | ")
808
 
 
809
  combined_addons_list = combined_addons.split("; ")
810
  combined_addons_price = sum(
811
  float(addon.split("($")[1][:-1]) for addon in combined_addons_list if "($" in addon
812
  )
813
 
 
814
  sf.Cart_Item__c.update(cart_item_id, {
815
  "Quantity__c": existing_quantity + 1,
816
  "Add_Ons__c": combined_addons,
@@ -821,12 +833,14 @@ def add_to_cart():
821
  "Section__c": section
822
  })
823
  else:
 
824
  addons_string = "None"
825
  if addons:
826
  addons_string = new_addons
827
 
828
  total_price = item_price + addons_price
829
 
 
830
  sf.Cart_Item__c.create({
831
  "Name": item_name,
832
  "Price__c": total_price,
@@ -842,10 +856,11 @@ def add_to_cart():
842
  })
843
 
844
  return jsonify({"success": True, "message": "Item added to cart successfully."})
 
845
  except Exception as e:
 
846
  print(f"Error adding item to cart: {str(e)}")
847
- return jsonify({"success": False, "error": str(e)})
848
-
849
 
850
 
851
  @app.route("/cart/add_item", methods=["POST"])
@@ -901,8 +916,9 @@ def get_addons():
901
  item_name = request.args.get('item_name')
902
  item_section = request.args.get('item_section')
903
 
 
904
  if not item_name or not item_section:
905
- return jsonify({"success": False, "error": "Item name and section are required."})
906
 
907
  try:
908
  # Fetch customization options from Salesforce based on the section
@@ -914,10 +930,20 @@ def get_addons():
914
  result = sf.query(query)
915
  addons = result.get('records', [])
916
 
 
 
 
 
917
  # Format data for frontend
918
  formatted_addons = []
919
  for addon in addons:
920
- options = addon.get("Options__c", "").split(", ") # Convert comma-separated options into a list
 
 
 
 
 
 
921
  formatted_addons.append({
922
  "name": addon["Name"],
923
  "type": addon["Customization_Type__c"],
@@ -930,8 +956,10 @@ def get_addons():
930
  return jsonify({"success": True, "addons": formatted_addons})
931
 
932
  except Exception as e:
933
- print(f"Error fetching add-ons: {e}")
934
- return jsonify({"success": False, "error": "Unable to fetch add-ons. Please try again later."})
 
 
935
 
936
  @app.route("/cart/update_quantity", methods=["POST"])
937
  def update_quantity():
 
768
  @app.route('/cart/add', methods=['POST'])
769
  def add_to_cart():
770
  data = request.json
771
+ item_name = data.get('itemName', '').strip()
772
  item_price = data.get('itemPrice')
773
  item_image = data.get('itemImage')
774
  addons = data.get('addons', [])
 
777
  section = data.get('section')
778
  customer_email = session.get('user_email')
779
 
780
+ # Basic validation for required fields
781
  if not item_name or not item_price:
782
+ return jsonify({"success": False, "error": "Item name and price are required."}), 400
783
+
784
+ if not customer_email:
785
+ return jsonify({"success": False, "error": "User email is required."}), 400
786
 
787
  try:
788
+ # Query to check if the item is already in the cart
789
  query = f"""
790
+ SELECT Id, Quantity__c, Add_Ons__c, Add_Ons_Price__c, Instructions__c
791
+ FROM Cart_Item__c
792
  WHERE Customer_Email__c = '{customer_email}' AND Name = '{item_name}'
793
  """
794
  result = sf.query(query)
795
  cart_items = result.get("records", [])
796
 
797
+ # Calculate the total price for the addons
798
  addons_price = sum(addon['price'] for addon in addons)
799
  new_addons = "; ".join([f"{addon['name']} (${addon['price']})" for addon in addons])
800
 
801
+ # If the item is already in the cart, update it
802
  if cart_items:
803
  cart_item_id = cart_items[0]['Id']
804
  existing_quantity = cart_items[0]['Quantity__c']
 
806
  existing_addons_price = cart_items[0].get('Add_Ons_Price__c', 0)
807
  existing_instructions = cart_items[0].get('Instructions__c', "")
808
 
809
+ # Combine the new addons with the existing ones
810
  combined_addons = existing_addons if existing_addons != "None" else ""
811
  if new_addons:
812
  combined_addons = f"{combined_addons}; {new_addons}".strip("; ")
813
 
814
+ # Combine existing instructions with new instructions
815
  combined_instructions = existing_instructions
816
  if instructions:
817
  combined_instructions = f"{combined_instructions} | {instructions}".strip(" | ")
818
 
819
+ # Calculate total addons price
820
  combined_addons_list = combined_addons.split("; ")
821
  combined_addons_price = sum(
822
  float(addon.split("($")[1][:-1]) for addon in combined_addons_list if "($" in addon
823
  )
824
 
825
+ # Update the cart item in Salesforce
826
  sf.Cart_Item__c.update(cart_item_id, {
827
  "Quantity__c": existing_quantity + 1,
828
  "Add_Ons__c": combined_addons,
 
833
  "Section__c": section
834
  })
835
  else:
836
+ # If the item is not already in the cart, create a new entry
837
  addons_string = "None"
838
  if addons:
839
  addons_string = new_addons
840
 
841
  total_price = item_price + addons_price
842
 
843
+ # Create new cart item in Salesforce
844
  sf.Cart_Item__c.create({
845
  "Name": item_name,
846
  "Price__c": total_price,
 
856
  })
857
 
858
  return jsonify({"success": True, "message": "Item added to cart successfully."})
859
+
860
  except Exception as e:
861
+ # Log the error for debugging
862
  print(f"Error adding item to cart: {str(e)}")
863
+ return jsonify({"success": False, "error": "An error occurred while adding the item to the cart."}), 500
 
864
 
865
 
866
  @app.route("/cart/add_item", methods=["POST"])
 
916
  item_name = request.args.get('item_name')
917
  item_section = request.args.get('item_section')
918
 
919
+ # Check if both item_name and item_section are provided
920
  if not item_name or not item_section:
921
+ return jsonify({"success": False, "error": "Item name and section are required."}), 400
922
 
923
  try:
924
  # Fetch customization options from Salesforce based on the section
 
930
  result = sf.query(query)
931
  addons = result.get('records', [])
932
 
933
+ # Check if we found any addons
934
+ if not addons:
935
+ return jsonify({"success": False, "error": "No customization options found for the given section."}), 404
936
+
937
  # Format data for frontend
938
  formatted_addons = []
939
  for addon in addons:
940
+ # Ensure 'Options__c' exists and is not None
941
+ options = addon.get("Options__c", "")
942
+ if options: # If options are available, split them
943
+ options = options.split(", ") # Convert comma-separated options into a list
944
+ else:
945
+ options = [] # If no options, default to an empty list
946
+
947
  formatted_addons.append({
948
  "name": addon["Name"],
949
  "type": addon["Customization_Type__c"],
 
956
  return jsonify({"success": True, "addons": formatted_addons})
957
 
958
  except Exception as e:
959
+ # Log the exception for debugging
960
+ app.logger.error(f"Error fetching addons: {str(e)}")
961
+ return jsonify({"success": False, "error": "An error occurred while fetching customization options."}), 500
962
+
963
 
964
  @app.route("/cart/update_quantity", methods=["POST"])
965
  def update_quantity():