| import streamlit as st |
| import pandas as pd |
|
|
| file_path = 'data_with_admin_v2.xlsx' |
|
|
| |
| def load_sheet(file_path, sheet_name): |
| try: |
| return pd.read_excel(file_path, sheet_name=sheet_name) |
| except ValueError: |
| st.warning(f"Worksheet named '{sheet_name}' not found") |
| return pd.DataFrame() |
|
|
| users_df = load_sheet(file_path, 'Users') |
| truck_owners_df = load_sheet(file_path, 'Truck Owners') |
| transporters_df = load_sheet(file_path, 'Transporters') |
| customer_service_df = load_sheet(file_path, 'CustomerService') |
| admin_df = load_sheet(file_path, 'Admin') |
|
|
| def authenticate(username, password): |
| user = users_df[(users_df['Username'] == username) & (users_df['Password'] == password)] |
| if not user.empty: |
| return user.iloc[0]['Role'] |
| return None |
|
|
| def main_ui(): |
| st.title("Instacomm App Login") |
|
|
| username = st.text_input("Username", key="main_login_username") |
| password = st.text_input("Password", type="password", key="main_login_password") |
| login_button = st.button("Login", key="main_login_button") |
|
|
| if login_button: |
| role = authenticate(username, password) |
| if role: |
| st.session_state.role = role |
| st.session_state.logged_in = True |
| else: |
| st.error("Invalid credentials") |
|
|
| def truck_owner_ui(): |
| global truck_owners_df |
| st.title("Truck Owner Functions") |
|
|
| with st.form(key='add_truck_owner_form'): |
| name = st.text_input("Name", key="to_name") |
| vehicle_id = st.text_input("Vehicle ID", key="to_vehicle_id") |
| vehicle_type = st.text_input("Vehicle Type", key="to_vehicle_type") |
| route = st.text_input("Route", key="to_route") |
| load_availability = st.text_input("Load Availability", key="to_load_availability") |
| source = st.text_input("Source", key="to_source") |
| destination = st.text_input("Destination", key="to_destination") |
| submit_button = st.form_submit_button(label='Add Truck Owner', key="to_submit_button") |
|
|
| if submit_button: |
| new_id = truck_owners_df['Truck Owner ID'].max() + 1 |
| new_row = pd.DataFrame({ |
| 'Truck Owner ID': [new_id], |
| 'Name': [name], |
| 'Vehicle ID': [vehicle_id], |
| 'Vehicle Type': [vehicle_type], |
| 'Subscription Status': ['Pending'], |
| 'KYC Status': ['Pending'], |
| 'Route': [route], |
| 'Load Availability': [load_availability], |
| 'Source': [source], |
| 'Destination': [destination], |
| 'Transit Status': ['Pending'], |
| 'GPS Tracking': ['Disabled'] |
| }) |
| truck_owners_df = pd.concat([truck_owners_df, new_row], ignore_index=True) |
| truck_owners_df.to_excel(file_path, sheet_name='Truck Owners', index=False) |
| st.success("Truck owner added successfully!") |
|
|
| if st.button("View Truck Owners Data", key="to_view_truck_owners"): |
| st.dataframe(truck_owners_df) |
|
|
| st.subheader("Truck Owner Verification Status") |
| st.dataframe(truck_owners_df[['Truck Owner ID', 'Name', 'KYC Status', 'Transit Status', 'Load Availability', 'Source', 'Destination']]) |
|
|
| def transporter_ui(): |
| global transporters_df |
| st.title("Transporter Functions") |
|
|
| with st.form(key='add_transporter_form'): |
| name = st.text_input("Name", key="transporter_name") |
| company = st.text_input("Company", key="transporter_company") |
| load_requirements = st.text_input("Load Requirements", key="transporter_load_requirements") |
| source = st.text_input("Source", key="transporter_source") |
| destination = st.text_input("Destination", key="transporter_destination") |
| submit_button = st.form_submit_button(label='Add Transporter', key="transporter_submit_button") |
|
|
| if submit_button: |
| new_id = transporters_df['Transporter ID'].max() + 1 |
| new_row = pd.DataFrame({ |
| 'Transporter ID': [new_id], |
| 'Name': [name], |
| 'Company': [company], |
| 'Load Requirements': [load_requirements], |
| 'Source': [source], |
| 'Destination': [destination], |
| 'KYC Status': ['Pending'] |
| }) |
| transporters_df = pd.concat([transporters_df, new_row], ignore_index=True) |
| transporters_df.to_excel(file_path, sheet_name='Transporters', index=False) |
| st.success("Transporter added successfully!") |
|
|
| if st.button("View Transporters Data", key="transporter_view_transporters"): |
| st.dataframe(transporters_df) |
|
|
| st.subheader("Transporter Verification Status") |
| st.dataframe(transporters_df[['Transporter ID', 'Name', 'Company', 'KYC Status', 'Load Requirements', 'Source', 'Destination']]) |
|
|
| def customer_service_ui(): |
| global truck_owners_df, transporters_df |
| st.title("Customer Service Functions") |
|
|
| if st.button("View Truck Owners Data", key="cs_view_truck_owners"): |
| st.dataframe(truck_owners_df) |
|
|
| if st.button("View Transporters Data", key="cs_view_transporters"): |
| st.dataframe(transporters_df) |
|
|
| st.subheader("Manage KYC and Operations") |
|
|
| if st.button("Verify Truck Owner KYC", key="cs_verify_truck_owner_kyc"): |
| truck_owners_df['KYC Status'] = 'Verified' |
| truck_owners_df.to_excel(file_path, sheet_name='Truck Owners', index=False) |
| st.success("Truck Owner KYC Verified") |
|
|
| if st.button("Verify Transporter KYC", key="cs_verify_transporter_kyc"): |
| transporters_df['KYC Status'] = 'Verified' |
| transporters_df.to_excel(file_path, sheet_name='Transporters', index=False) |
| st.success("Transporter KYC Verified") |
|
|
| def admin_ui(): |
| global customer_service_df |
| st.title("Admin Functions") |
|
|
| st.subheader("View and Manage All Data") |
|
|
| if st.button("View All Truck Owners Data", key="admin_view_all_truck_owners"): |
| st.dataframe(truck_owners_df) |
|
|
| if st.button("View All Transporters Data", key="admin_view_all_transporters"): |
| st.dataframe(transporters_df) |
|
|
| if st.button("View All Customer Service Data", key="admin_view_all_customer_service"): |
| st.dataframe(customer_service_df) |
|
|
| st.subheader("Onboarding and KYC Management") |
|
|
| new_service = st.text_input("Customer Service Name", key="admin_new_cs_name") |
| add_cs_button = st.button("Add Customer Service", key="admin_add_new_cs") |
| if add_cs_button and new_service: |
| new_id = customer_service_df['ID'].max() + 1 |
| new_row = pd.DataFrame({ |
| 'ID': [new_id], |
| 'Name': [new_service], |
| 'KYC Status': ['Pending'] |
| }) |
| customer_service_df = pd.concat([customer_service_df, new_row], ignore_index=True) |
| customer_service_df.to_excel(file_path, sheet_name='CustomerService', index=False) |
| st.success("Customer Service Onboarded Successfully") |
|
|
| if 'logged_in' not in st.session_state: |
| st.session_state.logged_in = False |
|
|
| if 'role' not in st.session_state: |
| main_ui() |
| else: |
| role = st.session_state.role |
| if role == "Truck Owner": |
| truck_owner_ui() |
| elif role == "Transporter": |
| transporter_ui() |
| elif role == "Customer Service": |
| customer_service_ui() |
| elif role == "Admin": |
| admin_ui() |
|
|
| if __name__ == "__main__": |
| main_ui() |
|
|