File size: 3,782 Bytes
a2f1a4d
9b35d16
71978cc
 
728ec2a
253a332
728ec2a
71978cc
 
4be2e38
c32c1af
4be2e38
84a5b18
71978cc
84a5b18
 
 
 
9b35d16
84a5b18
 
 
 
71978cc
 
84a5b18
a2f1a4d
4be2e38
 
 
 
c32c1af
 
 
4be2e38
a2f1a4d
 
a637599
728ec2a
787225f
4c3ee84
65f8d16
7c91f9b
eb54790
7c91f9b
 
a2f1a4d
728ec2a
a637599
a2f1a4d
 
84a5b18
5119cc5
7c91f9b
5119cc5
 
7c91f9b
a2f1a4d
84a5b18
728ec2a
84a5b18
728ec2a
d396f8d
 
 
 
728ec2a
4c3ee84
d396f8d
728ec2a
 
 
 
 
 
 
 
 
 
 
 
 
5146dee
 
 
 
 
 
 
 
728ec2a
5146dee
e4381f9
4be2e38
7c91f9b
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
from flask import Flask, render_template, send_from_directory, request, jsonify
from simple_salesforce import Salesforce
from dotenv import load_dotenv
import os
import logging

logging.basicConfig(level=logging.DEBUG)

load_dotenv()

app = Flask(__name__, template_folder='templates', static_folder='static')

def get_salesforce_connection():
    try:
        sf = Salesforce(
            username=os.getenv('SFDC_USERNAME'),
            password=os.getenv('SFDC_PASSWORD'),
            security_token=os.getenv('SFDC_SECURITY_TOKEN'),
            domain=os.getenv('SFDC_DOMAIN', 'login')
        )
        return sf
    except Exception as e:
        print(f"Error connecting to Salesforce: {e}")
        return None

sf = get_salesforce_connection()

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/static/<path:filename>')
def serve_static(filename):
    return send_from_directory('static', filename)

@app.route('/get_ingredients', methods=['POST'])
def get_ingredients():
    dietary_preference = request.json.get('dietary_preference', '').strip().lower()
    logging.debug(f"Received dietary preference: {dietary_preference}")

    if dietary_preference == 'vegetable':
        logging.debug("Fetching ingredients for Vegetables...")
        soql = "SELECT Name, Image_URL__c, Category__c FROM Sector_Detail__c WHERE Category__c = 'Veg' LIMIT 200"
    elif dietary_preference == 'non-vegetarian':
        logging.debug("Fetching ingredients for Non-Vegetarian...")
        soql = "SELECT Name, Image_URL__c, Category__c FROM Sector_Detail__c WHERE Category__c = 'Non-Veg' LIMIT 200"
    else:
        logging.debug("Invalid dietary preference received.")
        return jsonify({"error": "Invalid dietary preference."}), 400

    try:
        result = sf.query(soql)
        ingredients = [
            {"name": record['Name'], "image_url": record.get('Image_URL__c', ''), "category": record.get('Category__c', '')}
            for record in result['records'] if 'Name' in record
        ]
        logging.debug(f"Fetched ingredients: {[ing['name'] + ' (' + ing['category'] + ')' for ing in ingredients]}")
        return jsonify({"ingredients": ingredients})
    except Exception as e:
        logging.error(f"Error while fetching ingredients: {str(e)}")
        return jsonify({"error": f"Failed to fetch ingredients: {str(e)}"}), 500

@app.route('/get_menu_items_by_ingredients', methods=['POST'])
def get_menu_items_by_ingredients():
    ingredients = request.json.get('ingredients', '').strip().lower()
    logging.debug(f"Received ingredients: {ingredients}")

    # Assuming Menu_Items__c object has an Ingredients__c field to match with selected ingredients
    soql = f"SELECT Item_Name__c, Image_URL__c FROM Menu_Items__c WHERE Ingredients__c LIKE '%{ingredients}%' LIMIT 200"

    try:
        result = sf.query(soql)
        menu_items = [
            {"name": record['Item_Name__c'], "image_url": record.get('Image_URL__c', '')}
            for record in result['records'] if 'Item_Name__c' in record
        ]
        logging.debug(f"Fetched {len(menu_items)} menu items.")
        return jsonify({"menu_items": menu_items})
    except Exception as e:
        logging.error(f"Error while fetching menu items: {str(e)}")
        return jsonify({"error": f"Failed to fetch menu items: {str(e)}"}), 500

@app.route('/submit_ingredients', methods=['POST'])
def submit_ingredients():
    data = request.json
    ingredients = data.get('ingredients', [])
    
    if not ingredients:
        return jsonify({'error': 'No ingredients selected'}), 400
    
    logging.debug(f"Ingredients submitted: {ingredients}")
    return jsonify({'success': True})

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=7860)