import streamlit as st import pandas as pd from openpyxl import load_workbook, Workbook from datetime import datetime import uuid def load_or_create_excel(file_path): try: wb = load_workbook(file_path) except FileNotFoundError: wb = Workbook() wb.create_sheet("Users") wb.create_sheet("GeneratedEmails") wb.create_sheet("TemplateEmails") users_sheet = wb["Users"] users_sheet.append(["UserID", "Name", "Email", "Company", "Role"]) generated_emails_sheet = wb["GeneratedEmails"] generated_emails_sheet.append(["EmailID", "UserID", "Subject", "Body", "Timestamp"]) template_emails_sheet = wb["TemplateEmails"] template_emails_sheet.append(["TemplateID", "Name", "Subject", "Body"]) wb.save(file_path) return wb # Function to add user to Excel def add_user_to_excel(file_path, user_data): wb = load_or_create_excel(file_path) sheet = wb["Users"] user_id = str(uuid.uuid4()) sheet.append([user_id, user_data['name'], user_data['email'], user_data['company'], user_data['role']]) wb.save(file_path) return user_id # Function to save generated email def save_email_to_excel(file_path, user_id, subject, body): wb = load_or_create_excel(file_path) sheet = wb["GeneratedEmails"] email_id = str(uuid.uuid4()) sheet.append([email_id, user_id, subject, body, datetime.now().strftime("%Y-%m-%d %H:%M:%S")]) wb.save(file_path) # Function to add template email def add_template_email(file_path, name, subject, body): wb = load_or_create_excel(file_path) sheet = wb["TemplateEmails"] template_id = str(uuid.uuid4()) sheet.append([template_id, name, subject, body]) wb.save(file_path) # Function to get all template emails def get_template_emails(file_path): df = pd.read_excel(file_path, sheet_name="TemplateEmails") return df.to_dict('records') # Function to generate email using Groq LLM (placeholder) def generate_email(prompt): # Implement your Groq LLM email generation logic here return f"Subject: Generated Email\n\nBody: {prompt}" def get_user_by_id(file_path, user_id): wb = load_workbook(file_path) sheet = wb["Users"] for row in sheet.iter_rows(min_row=2, values_only=True): if row[0] == user_id: return {'name': row[1], 'email': row[2], 'company': row[3], 'role': row[4]} return None def update_user_in_excel(file_path, user_id, user_data): wb = load_workbook(file_path) sheet = wb["Users"] for row in sheet.iter_rows(min_row=2): if row[0].value == user_id: row[1].value = user_data['name'] row[2].value = user_data['email'] row[3].value = user_data['company'] row[4].value = user_data['role'] break wb.save(file_path) def store_sent_email(file_path, sender_email, receiver_email, subject, body): wb = load_or_create_excel(file_path) sheet = wb["GeneratedEmails"] email_id = str(uuid.uuid4()) timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") # Append the sent email details to the sheet sheet.append([email_id, sender_email, receiver_email, subject, body, timestamp]) wb.save(file_path) return email_id