import tkinter as tk
from tkinter import scrolledtext
from pymongo import MongoClient

# Conectar a MongoDB (ajusta la URI según tu configuración)
client = MongoClient('mongodb+srv://anotnio:antzosa8961@cluster0.eiptnqd.mongodb.net/?appName=Cluster0')
db = client['base_de_datos']  # Nombre de la base de datos (cambia si es necesario)
collection = db['informes']  # Nombre de la colección (cambia si es necesario)

def cargar_toda_informacion():
    try:
        data = list(collection.find())
        text_area.delete('1.0', tk.END)
        if data:
            for doc in data:
                text_area.insert(tk.END, str(doc) + '\n')
        else:
            text_area.insert(tk.END, "No se encontraron documentos en la colección.\n")
    except Exception as e:
        text_area.delete('1.0', tk.END)
        text_area.insert(tk.END, f"Error al cargar datos: {str(e)}\n")

def buscar_informacion():
    query = search_entry.get().strip()
    if not query:
        text_area.delete('1.0', tk.END)
        text_area.insert(tk.END, "Por favor, ingresa un término de búsqueda.\n")
        return
    try:
        # Buscar documentos donde el campo 'name' contenga la query (case insensitive)
        # Ajusta el campo de búsqueda según tu esquema de datos
        data = list(collection.find({'name': {'$regex': query, '$options': 'i'}}))
        text_area.delete('1.0', tk.END)
        if data:
            for doc in data:
                text_area.insert(tk.END, str(doc) + '\n')
        else:
            text_area.insert(tk.END, f"No se encontraron documentos que coincidan con '{query}'.\n")
    except Exception as e:
        text_area.delete('1.0', tk.END)
        text_area.insert(tk.END, f"Error al buscar datos: {str(e)}\n")

# Crear la ventana principal
root = tk.Tk()
root.title("Visor de MongoDB")

# Campo de entrada para búsqueda
search_entry = tk.Entry(root, width=50)
search_entry.pack(pady=10)
search_entry.insert(0, "Ingresa término de búsqueda (ej: nombre)")

# Botón de búsqueda
search_button = tk.Button(root, text="Buscar", command=buscar_informacion)
search_button.pack(pady=5)

# Botón para cargar toda la información
load_button = tk.Button(root, text="Cargar Toda la Información", command=cargar_toda_informacion)
load_button.pack(pady=5)

# Área de texto para mostrar los resultados
text_area = scrolledtext.ScrolledText(root, width=80, height=20)
text_area.pack(pady=10)

# Iniciar el bucle principal de la GUI
root.mainloop()