File size: 4,635 Bytes
01780bf
bb51932
01780bf
 
a1cfef6
 
 
 
01780bf
 
a1cfef6
6ddba4d
01780bf
2fab7d3
c1d8f2a
3480da8
9d5c08a
2fab7d3
3480da8
 
 
 
 
 
 
 
 
 
 
 
5ef3837
c1d8f2a
 
 
 
 
 
 
 
 
bb51932
 
 
 
 
17b12ba
 
bb51932
9d5c08a
 
 
c1d8f2a
3480da8
c1d8f2a
3480da8
 
 
bb51932
c1d8f2a
 
 
 
 
a4315ce
 
 
 
 
c1d8f2a
1aa8118
 
5ef3837
1aa8118
9d5c08a
1aa8118
c32f608
c1d8f2a
 
 
 
 
 
 
 
 
 
 
1aa8118
 
5ef3837
1aa8118
9d5c08a
1aa8118
efa0646
c1d8f2a
 
 
 
 
 
 
 
 
 
 
 
 
 
1aa8118
 
5ef3837
c1d8f2a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
efa0646
c1d8f2a
2fab7d3
bb51932
a1cfef6
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
128
129
130
131
132
133
import torch
from flask import Flask, render_template, request, jsonify, redirect, session, url_for
import json
import os
from transformers import pipeline
from gtts import gTTS
from pydub import AudioSegment
from pydub.silence import detect_nonsilent
from transformers import AutoConfig
import time
from waitress import serve
from simple_salesforce import Salesforce
import requests

# βœ… Initialize Flask App
app = Flask(__name__, template_folder="templates")
app.secret_key = os.urandom(24)

# βœ… Enable Debug Mode
app.config["DEBUG"] = True

# βœ… Salesforce Connection Setup
try:
    print("Attempting to connect to Salesforce...")
    sf = Salesforce(username='[email protected]', 
                    password='Sati@1020', 
                    security_token='sSSjyhInIsUohKpG8sHzty2q')
    print("βœ… Connected to Salesforce successfully!")
except Exception as e:
    print(f"❌ Failed to connect to Salesforce: {str(e)}")

# βœ… Print All Available Routes at Startup
@app.before_request
def print_routes():
    if not hasattr(app, 'printed_routes'):
        app.printed_routes = True
        print("\nβœ… Available Routes:")
        for rule in app.url_map.iter_rules():
            print(f"➑ {rule}")

# βœ… ROUTE: List All Routes for Debugging
@app.route("/routes", methods=["GET"])
def list_routes():
    routes = []
    for rule in app.url_map.iter_rules():
        routes.append({"endpoint": rule.endpoint, "route": str(rule)})
    return jsonify({"available_routes": routes})

# βœ… HOME ROUTE
@app.route("/", methods=["GET"])
def home():
    return jsonify({"message": "Welcome to Biryani Hub API. Use /register, /login, /menu, /index, /dashboard, or /routes to check available endpoints."})

# βœ… RENDER INDEX.HTML (Register & Login Page)
@app.route("/index", methods=["GET"])
def index_page():
    return render_template("index.html")

# βœ… RENDER DASHBOARD
@app.route("/dashboard", methods=["GET"])
def dashboard():
    return render_template("dashboard.html")

# βœ… RENDER MENU PAGE
@app.route("/menu_page", methods=["GET"])
def menu_page():
    return render_template("menu_page.html")

# βœ… REGISTER API: Create a new Customer in Salesforce
@app.route("/register", methods=["POST"])
def register():
    print("➑ Register API hit")
    data = request.json
    if not data or "name" not in data or "email" not in data or "phone" not in data:
        return jsonify({"error": "Missing required fields"}), 400

    try:
        new_customer = sf.Customer_Login__c.create({
            'Name': data["name"],
            'Email__c': data["email"],
            'Phone_Number__c': data["phone"]
        })
        return jsonify({"success": True, "message": "Registration successful", "customer_id": new_customer["id"]})
    except Exception as e:
        return jsonify({"error": f"Failed to register: {str(e)}"}), 500

# βœ… LOGIN API: Validate User Credentials
@app.route("/login", methods=["POST"])
def login():
    print("➑ Login API hit")
    data = request.json
    if not data or "email" not in data or "phone" not in data:
        return jsonify({"error": "Missing email or phone"}), 400

    try:
        query = f"SELECT Id, Name FROM Customer_Login__c WHERE Email__c = '{data['email']}' AND Phone_Number__c = '{data['phone']}'"
        result = sf.query(query)

        if result["totalSize"] > 0:
            user = result["records"][0]
            session["customer_id"] = user["Id"]  # Store in session
            return jsonify({"success": True, "message": "Login successful", "customer_id": user["Id"], "name": user["Name"]})
        else:
            return jsonify({"error": "Invalid login credentials"}), 401
    except Exception as e:
        return jsonify({"error": f"Login failed: {str(e)}"}), 500

# βœ… MENU API: Fetch Menu Items from Salesforce
@app.route("/menu", methods=["GET"])
def get_menu():
    print("➑ Menu API hit")
    try:
        query = "SELECT Name, Price__c, Ingredients__c, Category__c FROM Menu_Item__c"
        result = sf.query(query)

        menu_items = []
        for item in result["records"]:
            menu_items.append({
                "name": item["Name"],
                "price": item["Price__c"],
                "ingredients": item["Ingredients__c"],
                "category": item["Category__c"]
            })

        return jsonify({"success": True, "menu": menu_items})
    except Exception as e:
        return jsonify({"error": f"Failed to fetch menu: {str(e)}"}), 500

# βœ… START PRODUCTION SERVER
if __name__ == "__main__":
    print("βœ… Starting Flask API Server on port 7860...")
    serve(app, host="0.0.0.0", port=7860)