Yaswanth56 commited on
Commit
632ed93
·
verified ·
1 Parent(s): 3c7c2d0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +59 -91
app.py CHANGED
@@ -1,102 +1,70 @@
1
- import gradio as gr
2
  from simple_salesforce import Salesforce
3
- from dotenv import load_dotenv
4
- import os
5
 
6
- # Load environment variables
7
- load_dotenv()
8
 
9
- # Salesforce connection
10
- try:
11
- sf = Salesforce(
12
- username=os.getenv("SF_USERNAME"),
13
- password=os.getenv("SF_PASSWORD"),
14
- security_token=os.getenv("SF_SECURITY_TOKEN"),
15
- domain="login" # Use "test" for sandbox
16
- )
17
- print("Salesforce connection successful!")
18
- except Exception as e:
19
- print(f"Salesforce connection failed: {e}")
20
- sf = None
21
 
22
- # Function to handle user authentication and Salesforce login
23
- def authenticate_user(email, password):
24
- if not sf:
25
- return "Salesforce connection failed. Please check credentials and try again.", None, None, gr.update(visible=False), gr.update(visible=False)
26
-
27
- try:
28
- query = f"SELECT Id, Reward_Points__c FROM Customer_Login__c WHERE Email__c = '{email}' AND Password__c = '{password}'"
29
- result = sf.query(query)
30
-
31
- if result['totalSize'] == 0:
32
- return "Invalid Login Details", None, None, gr.update(visible=False), gr.update(visible=False)
33
-
34
- customer = result['records'][0]
35
- reward_points = customer['Reward_Points__c']
36
-
37
- return f"Welcome, you have {reward_points} points. Proceed to rewards.", customer['Id'], reward_points, gr.update(visible=True), gr.update(visible=True)
38
- except Exception as e:
39
- return f"Error during authentication: {e}", None, None, gr.update(visible=False), gr.update(visible=False)
40
-
41
- # Function to handle reward points logic
42
- def handle_rewards(customer_id, bill_amount, apply_rewards):
43
- try:
44
- customer = sf.Customer_Login__c.get(customer_id)
45
- points = customer['Reward_Points__c']
46
- gst = 0.18 * bill_amount
47
-
48
- if points >= 500 and apply_rewards:
49
- discount = 0.1 * bill_amount
50
- final_bill = bill_amount - discount + gst
51
- updated_points = points - 500
52
- message = "You saved 10% on your total bill!"
53
- else:
54
- discount = 0
55
- earned_points = 0.1 * bill_amount
56
- final_bill = bill_amount + gst
57
- updated_points = points + earned_points
58
- message = f"You earned {earned_points:.2f} reward points!"
59
-
60
- # Update the customer's reward points in Salesforce
61
- sf.Customer_Login__c.update(customer_id, {'Reward_Points__c': updated_points})
62
 
63
- return message, final_bill, updated_points
64
- except Exception as e:
65
- return f"Error applying rewards: {e}", 0, 0
 
66
 
67
- # Define the Gradio interface
68
- def create_interface():
69
- with gr.Blocks() as demo:
70
- # Login section
71
- gr.Markdown("### Login to your account")
72
- email_input = gr.Textbox(label="Email", placeholder="Enter your email")
73
- password_input = gr.Textbox(label="Password", placeholder="Enter your password", type="password")
74
- login_button = gr.Button("Login")
75
- login_output = gr.Textbox(label="Status")
76
- customer_id_output = gr.Textbox(label="Customer ID", visible=False) # Hidden
77
- reward_points_output = gr.Textbox(label="Available Reward Points", visible=False) # Hidden
78
-
79
- # Reward points section (Initially hidden)
80
- reward_section = gr.Column(visible=False)
81
- gr.Markdown("### Reward Points Section", elem_id="reward_section")
82
- bill_amount_input = gr.Number(label="Enter Bill Amount", value=0)
83
- apply_rewards_checkbox = gr.Checkbox(label="Apply Reward Points", value=True)
84
- rewards_button = gr.Button("Calculate Bill")
85
- rewards_message = gr.Textbox(label="Message")
86
- final_bill_output = gr.Textbox(label="Final Bill Amount")
87
- remaining_points_output = gr.Textbox(label="Remaining Points")
88
 
89
- # Action for login button
90
- login_button.click(authenticate_user, inputs=[email_input, password_input], outputs=[login_output, customer_id_output, reward_points_output, reward_section, bill_amount_input])
 
 
 
 
 
 
 
 
 
91
 
92
- # Action for rewards calculation
93
- rewards_button.click(handle_rewards,
94
- inputs=[customer_id_output, bill_amount_input, apply_rewards_checkbox],
95
- outputs=[rewards_message, final_bill_output, remaining_points_output])
 
 
 
 
96
 
97
- return demo
98
 
99
- # Run the Gradio interface
100
  if __name__ == "__main__":
101
- demo = create_interface()
102
- demo.launch()
 
1
+ from flask import Flask, render_template, redirect, request, url_for
2
  from simple_salesforce import Salesforce
 
 
3
 
4
+ app = Flask(__name__)
 
5
 
6
+ # Connect to Salesforce (replace with your Salesforce credentials)
7
+ sf = Salesforce(username='your_username', password='your_password', security_token='your_token')
 
 
 
 
 
 
 
 
 
 
8
 
9
+ # Function to update reward points in Salesforce
10
+ def update_rewards_points(email, points):
11
+ # Query Salesforce to get the user by email
12
+ user = sf.query(f"SELECT Id, Reward_Points__c FROM Customer_Login__c WHERE Email__c = '{email}'")
13
+
14
+ if user['totalSize'] == 1:
15
+ # Get the user ID and current reward points
16
+ user_id = user['records'][0]['Id']
17
+ current_points = user['records'][0]['Reward_Points__c']
18
+
19
+ # Calculate new reward points
20
+ new_points = current_points + int(points)
21
+
22
+ # Update reward points in Salesforce
23
+ sf.Customer_Login__c.update(user_id, {'Reward_Points__c': new_points})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
 
25
+ # Route for login page
26
+ @app.route('/')
27
+ def login():
28
+ return render_template('login.html')
29
 
30
+ # Route to process login
31
+ @app.route('/login', methods=['POST'])
32
+ def process_login():
33
+ email = request.form['email']
34
+ password = request.form['password']
35
+
36
+ # Query Salesforce to check if the user exists
37
+ user = sf.query(f"SELECT Id, Email__c, Reward_Points__c FROM Customer_Login__c WHERE Email__c = '{email}'")
38
+
39
+ if user['totalSize'] == 1:
40
+ # Redirect to rewards page after successful login
41
+ return redirect(url_for('rewards', email=email))
42
+ else:
43
+ # Return to login page with error message if user not found
44
+ return render_template('login.html', error="Invalid credentials")
 
 
 
 
 
 
45
 
46
+ # Route to display rewards page
47
+ @app.route('/rewards/<email>')
48
+ def rewards(email):
49
+ user = sf.query(f"SELECT Id, Reward_Points__c FROM Customer_Login__c WHERE Email__c = '{email}'")
50
+
51
+ if user['totalSize'] == 1:
52
+ reward_points = user['records'][0]['Reward_Points__c']
53
+ return render_template('rewards_above.html', reward_points=reward_points, email=email)
54
+ else:
55
+ # If the user is not found, redirect to login page
56
+ return redirect(url_for('login'))
57
 
58
+ # Route to apply rewards
59
+ @app.route('/apply_rewards', methods=['POST'])
60
+ def apply_rewards():
61
+ email = request.form['email']
62
+ reward_points = request.form['reward_points']
63
+
64
+ # Call function to update reward points in Salesforce
65
+ update_rewards_points(email, reward_points)
66
 
67
+ return render_template('rewards_below.html', message="Rewards applied successfully")
68
 
 
69
  if __name__ == "__main__":
70
+ app.run(debug=True)