File size: 5,109 Bytes
d786351
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c5a57e3
 
ed235bf
 
 
d786351
 
 
 
 
 
c5a57e3
d786351
 
 
 
 
 
 
 
f42647c
d786351
 
 
 
 
 
f42647c
d786351
 
f42647c
 
 
 
d786351
 
 
 
 
f42647c
 
d786351
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f42647c
 
 
 
 
 
 
 
d786351
 
 
 
 
5df49a0
d786351
 
 
5df49a0
d786351
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f42647c
 
d786351
 
 
 
 
 
 
 
 
 
 
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
import gradio as gr
import gspread
from google.oauth2.service_account import Credentials
import os
import json
from datetime import datetime

# Load configuration
conf1 = os.getenv('CONF')
dict = json.loads(conf1)
SHEET_ID = os.getenv('SHEET_ID')

SCOPES = ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive']

# Initialize Google Sheets client
creds = Credentials.from_service_account_info(dict, scopes=SCOPES)
gc = gspread.authorize(creds)
sheet = gc.open_by_key(SHEET_ID)

def verify_username(username):
    """Verify if username exists in user form"""
    scri= '''Hello, this is [Your Name] from YLsourcing. Does your company currently have any procurement plans?

We’d be happy to offer you free recommendations of the best direct suppliers in China, tailored to your needs.

What’s more, we’ll even pay you a bonus of 60 RMB for each inquiry we successfully match with a top supplier. Would you be open to exploring this opportunity?'''
    try:
        user_sheet = sheet.worksheet('Users')
        usernames = user_sheet.col_values(2)  # Assuming username is in column B
        is_valid = username in usernames
        
        return {
            username_output: scri if is_valid else "Invalid username",
            inquiry_section: gr.update(visible=is_valid)
        }
    except Exception as e:
        return {
            username_output: f"Error: {str(e)}",
            inquiry_section: gr.update(visible=False)
        }

def submit_inquiry(username, company_name, phone_number, product_desc, purchase_qty, annual_amount, deadline, export_country):
    """Submit inquiry information to Google Sheet"""
    try:
        # Try to get the Inquiry worksheet, create it if it doesn't exist
        try:
            inquiry_sheet = sheet.worksheet('Inquiry')
        except gspread.WorksheetNotFound:
            inquiry_sheet = sheet.add_worksheet('Inquiry', 1000, 9)  # Increased columns for new fields
            # Add headers
            inquiry_sheet.append_row([
                'Timestamp', 'Username', 'Company Name', 'Phone Number',
                'Product Description', 'Purchase Quantity', 
                'Annual Amount (USD)', 'Purchase Deadline', 
                'Export Country'
            ])
        
        # Prepare the row data
        timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        row_data = [
            timestamp, username, company_name, phone_number,
            product_desc, purchase_qty, annual_amount, 
            deadline, export_country
        ]
        
        # Append the data
        inquiry_sheet.append_row(row_data)
        
        return "Inquiry submitted successfully"
    except Exception as e:
        return f"Error submitting inquiry: {str(e)}"

# Create Gradio interface
with gr.Blocks() as app:
    gr.Markdown(
        """
        # Product Inquiry System
        ### Submit your product inquiry details
        ---
        """
    )

    # Username Verification Section
    gr.Markdown("### 1. User Verification")
    with gr.Group():
        username_input = gr.Textbox(label="Username", placeholder="Enter your username")
        verify_button = gr.Button("Verify Username", variant="primary")
        username_output = gr.Textbox(label="Verification Status", interactive=False)

    # Inquiry Form Section
    with gr.Group(visible=False) as inquiry_section:
        gr.Markdown("### 2. Inquiry Details")
        company_name = gr.Textbox(
            label="Full Company Name",
            placeholder="Enter your company's full name"
        )
        phone_number = gr.Textbox(
            label="Phone Number",
            placeholder="Enter your phone number"
        )
        product_desc = gr.Textbox(
            label="Product Description",
            placeholder="Enter product description",
            lines=3
        )
        purchase_qty = gr.Textbox(
            label="Purchase Quantity",
            placeholder="Enter quantity"
        )
        annual_amount = gr.Textbox(
            label="Estimated Annual Purchase Amount (USD)",
            placeholder="Enter amount in USD"
        )
        deadline = gr.Textbox(
            label="Purchase Deadline",
            placeholder="Enter deadline (e.g., 2024-12-31)"
        )
        export_country = gr.Textbox(
            label="Export Destination Country",
            placeholder="Enter country name"
        )
        
        submit_button = gr.Button("Submit Inquiry", variant="primary")
        submit_output = gr.Textbox(label="Submission Status", interactive=False)

    # Event handlers
    verify_button.click(
        fn=verify_username,
        inputs=username_input,
        outputs=[username_output, inquiry_section]
    )

    submit_button.click(
        fn=submit_inquiry,
        inputs=[
            username_input,
            company_name,
            phone_number,
            product_desc,
            purchase_qty,
            annual_amount,
            deadline,
            export_country
        ],
        outputs=submit_output
    )

# Launch the app
app.launch()