import bcrypt
from pymongo import MongoClient

# --- CONFIGURACIÓN ---
# PEGA AQUÍ tu cadena de conexión que copiaste de Atlas
# IMPORTANTE: Reemplaza <password> por 04092013 si no aparece ya puesto
URI = "mongodb+srv://kim2007:04092013@proyecto.feguffv.mongodb.net/?retryWrites=true&w=majority"

client = MongoClient(URI)
db = client['ayuda']
alumnos = db['alumnos']
usuarios = db['usuarios']

# --- EJERCICIO 1: REGISTRO SIN DUPLICADOS ---
def registrar_alumno():
    print("\n--- Registro de Alumno ---")
    nombre = input("Nombre: ")
    grupo = input("Grupo: ")
    tel = input("Teléfono: ")
    
    if alumnos.find_one({"telefono": tel}):
        print("⚠️ Error: El teléfono ya existe en la base de datos.")
    else:
        alumnos.insert_one({"nombre": nombre, "grupo": grupo, "telefono": tel})
        print("✅ Alumno registrado correctamente.")

# --- EJERCICIO 2: BUSCADOR ---
def buscar_alumno():
    print("\n--- Buscador de Alumnos ---")
    nom = input("Ingresa el nombre a buscar: ")
    resultados = alumnos.find({"nombre": {"$regex": nom, "$options": "i"}})
    
    encontrados = list(resultados)
    if encontrados:
        for r in encontrados:
            print(f"-> {r['nombre']} | Grupo: {r['grupo']} | Tel: {r['telefono']}")
    else:
        print("No se encontraron resultados.")

# --- EJERCICIO 3: LOGIN CON CIFRADO ---
def gestionar_usuarios():
    print("\n1. Crear Usuario (Cifrado)\n2. Iniciar Sesión")
    op = input("Selecciona: ")
    user = input("Usuario: ")
    password = input("Contraseña: ").encode('utf-8')

    if op == "1":
        # Ciframos la contraseña con bcrypt
        hashed = bcrypt.hashpw(password, bcrypt.gensalt())
        usuarios.insert_one({"user": user, "pass": hashed})
        print("✅ Usuario creado con éxito.")
    elif op == "2":
        datos = usuarios.find_one({"user": user})
        if datos and bcrypt.checkpw(password, datos['pass']):
            print("🔓 ¡Bienvenido! Sesión iniciada.")
        else:
            print("🔒 Usuario o contraseña incorrectos.")

# --- MENÚ PRINCIPAL ---
def menu():
    while True:
        print("\n=== PROYECTO ESCOLAR ===")
        print("1. Registrar Alumno\n2. Buscar Alumno\n3. Login/Registro\n4. Salir")
        opcion = input("Elige una opción: ")
        if opcion == "1": registrar_alumno()
        elif opcion == "2": buscar_alumno()
        elif opcion == "3": gestionar_usuarios()
        elif opcion == "4": break

if __name__ == "__main__":
    menu()