File size: 5,603 Bytes
39f7cff
ceac236
024ce39
39f7cff
024ce39
ceac236
 
39f7cff
 
 
 
 
ceac236
39f7cff
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2e45435
39f7cff
 
 
ceac236
39f7cff
 
 
 
 
 
 
 
 
 
ceac236
39f7cff
 
ceac236
3415bfb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39f7cff
 
3415bfb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22a5f92
 
39f7cff
 
 
 
 
 
 
 
 
ceac236
39f7cff
 
ceac236
39f7cff
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
from flask import Blueprint, request, jsonify, redirect, url_for, session, render_template
import random
from salesforce import get_salesforce_connection

sf = get_salesforce_connection()
customdish_blueprint = Blueprint('customdish', __name__)

@customdish_blueprint.route("/custom_dish", methods=["GET", "POST"])
def custom_dish():
    user_email = session.get('user_email')
    if not user_email:
        return redirect(url_for("login"))

    if request.method == "POST":
        # Handle the form submission for veg/non-veg selection
        veg_nonveg = request.form.get("veg_nonveg")
        if not veg_nonveg:
            return jsonify({"success": False, "error": "Please select Vegetarian or Non-Vegetarian"}), 400

        # Store the preference in session and redirect to ingredient selection
        session['veg_nonveg'] = veg_nonveg
        return redirect(url_for('customdish.select_ingredients'))

    # Render the veg/non-veg selection page
    return render_template("custom_dish.html")

@customdish_blueprint.route("/select_ingredients", methods=["GET", "POST"])
def select_ingredients():
    user_email = session.get('user_email')
    if not user_email:
        return redirect(url_for("login"))

    veg_nonveg = session.get('veg_nonveg')
    if not veg_nonveg:
        return redirect(url_for('customdish.custom_dish'))

    if request.method == "POST":
        # Handle the ingredient selection and dish creation
        dish_name = request.form.get("name")
        selected_ingredients = request.form.getlist("ingredients")  # Multiple ingredients can be selected
        description = f"Custom dish with {', '.join(selected_ingredients)}"

        if not dish_name or not selected_ingredients:
            return jsonify({"success": False, "error": "Dish name and ingredients are required"}), 400

        dish_name = dish_name.replace("'", "+")
        price = random.randint(10, 30)  # Example logic for price setting
        item_image_url = "https://huggingface.co/spaces/nagasurendra/BiryaniHubflask30/resolve/main/static/customized.jpg"
        item_image_url2 = "https://huggingface.co/spaces/nagasurendra/BiryaniHubflask30/resolve/main/static/customized1.jpg"

        # Check if the dish already exists in Custom_Dish__c
        existing_dish_query = f"SELECT Id, Total_Ordered__c FROM Custom_Dish__c WHERE Name = '{dish_name}'"
        existing_dish_result = sf.query(existing_dish_query)

        if existing_dish_result['totalSize'] > 0:
            # If the dish exists, increment Total_Ordered__c
            existing_dish = existing_dish_result['records'][0]
            dish_id = existing_dish['Id']
            total_ordered = existing_dish.get('Total_Ordered__c', 0) or 0
            sf.Custom_Dish__c.update(dish_id, {
                'Total_Ordered__c': total_ordered + 1
            })
        else:
            # If the dish does not exist, create a new custom dish
            custom_dish = {
                'Name': dish_name,
                'Price__c': price,
                'Image1__c': item_image_url,
                'Image2__c': item_image_url2,
                'Description__c': description,
                'Veg_NonVeg__c': veg_nonveg,
                'Section__c': 'Customized dish',
                'Total_Ordered__c': 1  # Initial order count
            }
            result = sf.Custom_Dish__c.create(custom_dish)
            if not result.get('success'):
                return jsonify({"success": False, "error": "Failed to create custom dish in Salesforce"}), 500

        # Add the custom dish to the cart
        cart_item_query = f"SELECT Id, Quantity__c FROM Cart_Item__c WHERE Customer_Email__c = '{user_email}' AND Name = '{dish_name}'"
        cart_item_result = sf.query(cart_item_query)

        if cart_item_result['totalSize'] > 0:
            # If the dish is already in the cart, increment the quantity
            cart_item = cart_item_result['records'][0]
            cart_item_id = cart_item['Id']
            existing_quantity = int(cart_item.get('Quantity__c', 0))
            total_price = (existing_quantity + 1) * price

            sf.Cart_Item__c.update(cart_item_id, {
                "Quantity__c": existing_quantity + 1,
                "Price__c": total_price
            })
        else:
            # If the dish is not in the cart, create a new cart item
            cart_item = {
                'Name': dish_name,
                'Price__c': price,
                'Base_Price__c': price,
                'Image1__c': item_image_url,
                'Quantity__c': 1,
                'Add_Ons__c': '',
                'Add_Ons_Price__c': 0,
                'Customer_Email__c': user_email,
                'Category__c': veg_nonveg,
                'Section__c': 'Customized dish'
            }
            cart_result = sf.Cart_Item__c.create(cart_item)
            if not cart_result.get('success'):
                return jsonify({"success": False, "error": "Failed to add custom dish to cart in Salesforce"}), 500

        return redirect(url_for('cart.cart'))

    # Fetch ingredients based on veg/non-veg preference
    try:
        query = f"""
            SELECT Name, Veg_NonVeg__c
            FROM Ingredients__c
            WHERE Veg_NonVeg__c = '{veg_nonveg}' OR Veg_NonVeg__c = 'both'
        """
        result = sf.query_all(query)
        ingredients = result.get('records', [])
    except Exception as e:
        print(f"Error fetching ingredients: {str(e)}")
        ingredients = []

    return render_template("select_ingredients.html", ingredients=ingredients, veg_nonveg=veg_nonveg)