Spaces:
Runtime error
Runtime error
import gradio as gr | |
from simple_salesforce import Salesforce | |
from dotenv import load_dotenv | |
import os | |
# Load environment variables | |
load_dotenv() | |
# Salesforce connection | |
try: | |
sf = Salesforce( | |
username=os.getenv("[email protected]"), | |
password=os.getenv("Sati@1020"), | |
security_token=os.getenv("sSSjyhInIsUohKpG8sHzty2q"), | |
domain="login" # Use "test" for sandbox | |
) | |
print("Salesforce connection successful!") | |
except Exception as e: | |
print(f"Salesforce connection failed: {e}") | |
sf = None | |
# Function to handle user authentication and Salesforce login | |
def authenticate_user(email, password): | |
if not sf: | |
return "Salesforce connection failed. Please check credentials and try again." | |
try: | |
query = f"SELECT Id, Reward_Points__c FROM Customer_Login__c WHERE Email__c = '{email}' AND Password__c = '{password}'" | |
result = sf.query(query) | |
if result['totalSize'] == 0: | |
return "Invalid Login Details" | |
customer = result['records'][0] | |
reward_points = customer['Reward_Points__c'] | |
return f"Welcome, you have {reward_points} points. Proceed to rewards." | |
except Exception as e: | |
return f"Error during authentication: {e}" | |
# Function to handle reward points logic | |
def handle_rewards(customer_id, bill_amount, apply_rewards): | |
try: | |
customer = sf.Customer_Login__c.get(customer_id) | |
points = customer['Reward_Points__c'] | |
gst = 0.18 * bill_amount | |
if points >= 500 and apply_rewards: | |
discount = 0.1 * bill_amount | |
final_bill = bill_amount - discount + gst | |
updated_points = points - 500 | |
sf.Customer_Login__c.update(customer_id, {'Reward_Points__c': updated_points}) | |
message = "You saved 10% on your total bill!" | |
else: | |
discount = 0 | |
earned_points = 0.1 * bill_amount | |
final_bill = bill_amount + gst | |
updated_points = points + earned_points | |
sf.Customer_Login__c.update(customer_id, {'Reward_Points__c': updated_points}) | |
message = f"You earned {earned_points:.2f} reward points!" | |
return message, final_bill, updated_points | |
except Exception as e: | |
return f"Error applying rewards: {e}", 0, 0 | |
# Define the Gradio interface | |
def create_interface(): | |
with gr.Blocks() as demo: | |
gr.Markdown("### Login to your account") | |
email_input = gr.Textbox(label="Email", placeholder="Enter your email") | |
password_input = gr.Textbox(label="Password", placeholder="Enter your password", type="password") | |
login_button = gr.Button("Login") | |
login_output = gr.Textbox(label="Status") | |
# Action for login button | |
login_button.click(authenticate_user, inputs=[email_input, password_input], outputs=login_output) | |
# Reward points section | |
gr.Markdown("### Reward Points Section") | |
customer_id_input = gr.Textbox(label="Customer ID", placeholder="Enter Customer ID") | |
bill_amount_input = gr.Number(label="Enter Bill Amount", min=0) | |
apply_rewards_checkbox = gr.Checkbox(label="Apply Reward Points", value=True) | |
rewards_button = gr.Button("Calculate Bill") | |
rewards_message = gr.Textbox(label="Message") | |
final_bill_output = gr.Textbox(label="Final Bill Amount") | |
remaining_points_output = gr.Textbox(label="Remaining Points") | |
# Action for rewards calculation | |
rewards_button.click(handle_rewards, | |
inputs=[customer_id_input, bill_amount_input, apply_rewards_checkbox], | |
outputs=[rewards_message, final_bill_output, remaining_points_output]) | |
return demo | |
# Run the Gradio interface | |
if __name__ == "__main__": | |
demo = create_interface() | |
demo.launch() | |