Spaces:
				
			
			
	
			
			
		Sleeping
		
	
	
	
			
			
	
	
	
	
		
		
		Sleeping
		
	Update app.py
Browse files
    	
        app.py
    CHANGED
    
    | 
         @@ -365,19 +365,20 @@ def cart(): 
     | 
|
| 365 | 
         | 
| 366 | 
         
             
            @app.route('/cart/add', methods=['POST'])
         
     | 
| 367 | 
         
             
            def add_to_cart():
         
     | 
| 368 | 
         
            -
                data = request.json 
     | 
| 369 | 
         
            -
                item_name = data.get('itemName').strip() 
     | 
| 370 | 
         
            -
                item_price = data.get('itemPrice') 
     | 
| 371 | 
         
            -
                item_image = data.get('itemImage') 
     | 
| 372 | 
         
            -
                addons = data.get('addons', []) 
     | 
| 373 | 
         
            -
                instructions = data.get('instructions', '') 
     | 
| 374 | 
         
            -
                 
     | 
| 
         | 
|
| 
         | 
|
| 375 | 
         | 
| 376 | 
         
             
                if not item_name or not item_price:
         
     | 
| 377 | 
         
             
                    return jsonify({"success": False, "error": "Item name and price are required."})
         
     | 
| 378 | 
         | 
| 379 | 
         
             
                try:
         
     | 
| 380 | 
         
            -
                    # Query the cart to check if the item already exists
         
     | 
| 381 | 
         
             
                    query = f"""
         
     | 
| 382 | 
         
             
                        SELECT Id, Quantity__c, Add_Ons__c, Add_Ons_Price__c, Instructions__c FROM Cart_Item__c
         
     | 
| 383 | 
         
             
                        WHERE Customer_Email__c = '{customer_email}' AND Name = '{item_name}'
         
     | 
| 
         @@ -385,61 +386,57 @@ def add_to_cart(): 
     | 
|
| 385 | 
         
             
                    result = sf.query(query)
         
     | 
| 386 | 
         
             
                    cart_items = result.get("records", [])
         
     | 
| 387 | 
         | 
| 388 | 
         
            -
                     
     | 
| 389 | 
         
            -
                     
     | 
| 390 | 
         
            -
                    new_addons = "; ".join([f"{addon['name']} (${addon['price']})" for addon in addons])  # Format new add-ons
         
     | 
| 391 | 
         | 
| 392 | 
         
             
                    if cart_items:
         
     | 
| 393 | 
         
            -
                        # If the item already exists in the cart, update it
         
     | 
| 394 | 
         
             
                        cart_item_id = cart_items[0]['Id']
         
     | 
| 395 | 
         
             
                        existing_quantity = cart_items[0]['Quantity__c']
         
     | 
| 396 | 
         
            -
                        existing_addons = cart_items[0].get('Add_Ons__c', "None") 
     | 
| 397 | 
         
            -
                        existing_addons_price = cart_items[0].get('Add_Ons_Price__c', 0) 
     | 
| 398 | 
         
            -
                        existing_instructions = cart_items[0].get('Instructions__c', "") 
     | 
| 399 | 
         | 
| 400 | 
         
            -
                        # Combine the existing and new add-ons
         
     | 
| 401 | 
         
             
                        combined_addons = existing_addons if existing_addons != "None" else ""
         
     | 
| 402 | 
         
             
                        if new_addons:
         
     | 
| 403 | 
         
             
                            combined_addons = f"{combined_addons}; {new_addons}".strip("; ")
         
     | 
| 404 | 
         | 
| 405 | 
         
            -
                        # Combine the existing and new instructions
         
     | 
| 406 | 
         
             
                        combined_instructions = existing_instructions
         
     | 
| 407 | 
         
             
                        if instructions:
         
     | 
| 408 | 
         
             
                            combined_instructions = f"{combined_instructions} | {instructions}".strip(" | ")
         
     | 
| 409 | 
         | 
| 410 | 
         
            -
                        # Recalculate the total add-ons price
         
     | 
| 411 | 
         
             
                        combined_addons_list = combined_addons.split("; ")
         
     | 
| 412 | 
         
             
                        combined_addons_price = sum(
         
     | 
| 413 | 
         
             
                            float(addon.split("($")[1][:-1]) for addon in combined_addons_list if "($" in addon
         
     | 
| 414 | 
         
             
                        )
         
     | 
| 415 | 
         | 
| 416 | 
         
            -
                        # Update the item in the cart
         
     | 
| 417 | 
         
             
                        sf.Cart_Item__c.update(cart_item_id, {
         
     | 
| 418 | 
         
            -
                            "Quantity__c": existing_quantity + 1, 
     | 
| 419 | 
         
            -
                            "Add_Ons__c": combined_addons, 
     | 
| 420 | 
         
            -
                            "Add_Ons_Price__c": combined_addons_price, 
     | 
| 421 | 
         
            -
                            "Instructions__c": combined_instructions, 
     | 
| 422 | 
         
            -
                            "Price__c": (existing_quantity + 1) * item_price + combined_addons_price, 
     | 
| 
         | 
|
| 
         | 
|
| 423 | 
         
             
                        })
         
     | 
| 424 | 
         
             
                    else:
         
     | 
| 425 | 
         
            -
                        # If the item does not exist in the cart, create a new one
         
     | 
| 426 | 
         
             
                        addons_string = "None"
         
     | 
| 427 | 
         
             
                        if addons:
         
     | 
| 428 | 
         
            -
                            addons_string = new_addons 
     | 
| 429 | 
         | 
| 430 | 
         
            -
                        total_price = item_price + addons_price 
     | 
| 431 | 
         | 
| 432 | 
         
            -
                        # Create a new cart item
         
     | 
| 433 | 
         
             
                        sf.Cart_Item__c.create({
         
     | 
| 434 | 
         
            -
                            "Name": item_name, 
     | 
| 435 | 
         
            -
                            "Price__c": total_price, 
     | 
| 436 | 
         
            -
                            "Base_Price__c": item_price, 
     | 
| 437 | 
         
            -
                            "Quantity__c": 1, 
     | 
| 438 | 
         
            -
                            "Add_Ons_Price__c": addons_price, 
     | 
| 439 | 
         
            -
                            "Add_Ons__c": addons_string, 
     | 
| 440 | 
         
            -
                            "Image1__c": item_image, 
     | 
| 441 | 
         
            -
                            "Customer_Email__c": customer_email, 
     | 
| 442 | 
         
            -
                            "Instructions__c": instructions 
     | 
| 
         | 
|
| 
         | 
|
| 443 | 
         
             
                        })
         
     | 
| 444 | 
         | 
| 445 | 
         
             
                    return jsonify({"success": True, "message": "Item added to cart successfully."})
         
     | 
| 
         | 
|
| 365 | 
         | 
| 366 | 
         
             
            @app.route('/cart/add', methods=['POST'])
         
     | 
| 367 | 
         
             
            def add_to_cart():
         
     | 
| 368 | 
         
            +
                data = request.json
         
     | 
| 369 | 
         
            +
                item_name = data.get('itemName').strip()
         
     | 
| 370 | 
         
            +
                item_price = data.get('itemPrice')
         
     | 
| 371 | 
         
            +
                item_image = data.get('itemImage')
         
     | 
| 372 | 
         
            +
                addons = data.get('addons', [])
         
     | 
| 373 | 
         
            +
                instructions = data.get('instructions', '')
         
     | 
| 374 | 
         
            +
                category = data.get('category')
         
     | 
| 375 | 
         
            +
                section = data.get('section')
         
     | 
| 376 | 
         
            +
                customer_email = session.get('user_email')
         
     | 
| 377 | 
         | 
| 378 | 
         
             
                if not item_name or not item_price:
         
     | 
| 379 | 
         
             
                    return jsonify({"success": False, "error": "Item name and price are required."})
         
     | 
| 380 | 
         | 
| 381 | 
         
             
                try:
         
     | 
| 
         | 
|
| 382 | 
         
             
                    query = f"""
         
     | 
| 383 | 
         
             
                        SELECT Id, Quantity__c, Add_Ons__c, Add_Ons_Price__c, Instructions__c FROM Cart_Item__c
         
     | 
| 384 | 
         
             
                        WHERE Customer_Email__c = '{customer_email}' AND Name = '{item_name}'
         
     | 
| 
         | 
|
| 386 | 
         
             
                    result = sf.query(query)
         
     | 
| 387 | 
         
             
                    cart_items = result.get("records", [])
         
     | 
| 388 | 
         | 
| 389 | 
         
            +
                    addons_price = sum(addon['price'] for addon in addons)
         
     | 
| 390 | 
         
            +
                    new_addons = "; ".join([f"{addon['name']} (${addon['price']})" for addon in addons])
         
     | 
| 
         | 
|
| 391 | 
         | 
| 392 | 
         
             
                    if cart_items:
         
     | 
| 
         | 
|
| 393 | 
         
             
                        cart_item_id = cart_items[0]['Id']
         
     | 
| 394 | 
         
             
                        existing_quantity = cart_items[0]['Quantity__c']
         
     | 
| 395 | 
         
            +
                        existing_addons = cart_items[0].get('Add_Ons__c', "None")
         
     | 
| 396 | 
         
            +
                        existing_addons_price = cart_items[0].get('Add_Ons_Price__c', 0)
         
     | 
| 397 | 
         
            +
                        existing_instructions = cart_items[0].get('Instructions__c', "")
         
     | 
| 398 | 
         | 
| 
         | 
|
| 399 | 
         
             
                        combined_addons = existing_addons if existing_addons != "None" else ""
         
     | 
| 400 | 
         
             
                        if new_addons:
         
     | 
| 401 | 
         
             
                            combined_addons = f"{combined_addons}; {new_addons}".strip("; ")
         
     | 
| 402 | 
         | 
| 
         | 
|
| 403 | 
         
             
                        combined_instructions = existing_instructions
         
     | 
| 404 | 
         
             
                        if instructions:
         
     | 
| 405 | 
         
             
                            combined_instructions = f"{combined_instructions} | {instructions}".strip(" | ")
         
     | 
| 406 | 
         | 
| 
         | 
|
| 407 | 
         
             
                        combined_addons_list = combined_addons.split("; ")
         
     | 
| 408 | 
         
             
                        combined_addons_price = sum(
         
     | 
| 409 | 
         
             
                            float(addon.split("($")[1][:-1]) for addon in combined_addons_list if "($" in addon
         
     | 
| 410 | 
         
             
                        )
         
     | 
| 411 | 
         | 
| 
         | 
|
| 412 | 
         
             
                        sf.Cart_Item__c.update(cart_item_id, {
         
     | 
| 413 | 
         
            +
                            "Quantity__c": existing_quantity + 1,
         
     | 
| 414 | 
         
            +
                            "Add_Ons__c": combined_addons,
         
     | 
| 415 | 
         
            +
                            "Add_Ons_Price__c": combined_addons_price,
         
     | 
| 416 | 
         
            +
                            "Instructions__c": combined_instructions,
         
     | 
| 417 | 
         
            +
                            "Price__c": (existing_quantity + 1) * item_price + combined_addons_price,
         
     | 
| 418 | 
         
            +
                            "Category__c": category,
         
     | 
| 419 | 
         
            +
                            "Section__c": section
         
     | 
| 420 | 
         
             
                        })
         
     | 
| 421 | 
         
             
                    else:
         
     | 
| 
         | 
|
| 422 | 
         
             
                        addons_string = "None"
         
     | 
| 423 | 
         
             
                        if addons:
         
     | 
| 424 | 
         
            +
                            addons_string = new_addons
         
     | 
| 425 | 
         | 
| 426 | 
         
            +
                        total_price = item_price + addons_price
         
     | 
| 427 | 
         | 
| 
         | 
|
| 428 | 
         
             
                        sf.Cart_Item__c.create({
         
     | 
| 429 | 
         
            +
                            "Name": item_name,
         
     | 
| 430 | 
         
            +
                            "Price__c": total_price,
         
     | 
| 431 | 
         
            +
                            "Base_Price__c": item_price,
         
     | 
| 432 | 
         
            +
                            "Quantity__c": 1,
         
     | 
| 433 | 
         
            +
                            "Add_Ons_Price__c": addons_price,
         
     | 
| 434 | 
         
            +
                            "Add_Ons__c": addons_string,
         
     | 
| 435 | 
         
            +
                            "Image1__c": item_image,
         
     | 
| 436 | 
         
            +
                            "Customer_Email__c": customer_email,
         
     | 
| 437 | 
         
            +
                            "Instructions__c": instructions,
         
     | 
| 438 | 
         
            +
                            "Category__c": category,
         
     | 
| 439 | 
         
            +
                            "Section__c": section
         
     | 
| 440 | 
         
             
                        })
         
     | 
| 441 | 
         | 
| 442 | 
         
             
                    return jsonify({"success": True, "message": "Item added to cart successfully."})
         
     |