"""
Script de poblado inicial de la base de datos.

Uso:
    python seed.py

- Inserta los 15 cursos iniciales si la tabla está vacía.
- Crea el usuario super_admin lperalesc@atento.com si no existe.
"""
from app import create_app
from extensions import db
from models import Curso, User


SUPER_ADMIN_EMAIL = "lperalesc@atento.com"
SUPER_ADMIN_PASSWORD = "AtentoAdmin2026*"  # CAMBIAR después del primer login

CURSOS_INICIALES = [
    # Atención al cliente
    {"titulo": "Las siete claves para convertirte en un experto del servicio al cliente",
     "slug": "siete-claves-servicio-cliente",
     "descripcion": "Habilidades de comunicación fundamentales para transformar tu enfoque al cliente.",
     "ruta": "atencion", "duracion_min": 25},
    {"titulo": "Experiencias que Impactan: La esencia del servicio al cliente",
     "slug": "esencia-servicio-cliente",
     "descripcion": "Comunícate efectivamente, comprende necesidades y ofrece soluciones personalizadas.",
     "ruta": "atencion", "duracion_min": 25},
    {"titulo": "Atento al mensaje: comunicación asertiva",
     "slug": "comunicacion-asertiva",
     "descripcion": "Reconoce tipos de comunicación, supera barreras y expresa ideas con claridad y seguridad.",
     "ruta": "atencion", "duracion_min": 25},
    {"titulo": "Explora el mundo del servicio al cliente",
     "slug": "explora-servicio-cliente",
     "descripcion": "Diferencias entre Call Center y Contact Center, tipos, servicios y habilidades clave.",
     "ruta": "atencion", "duracion_min": 15},
    {"titulo": "Experto en soluciones: Manejo de quejas y reclamos",
     "slug": "experto-soluciones",
     "descripcion": "Convierte quejas en oportunidades de fidelización.",
     "ruta": "atencion", "duracion_min": 25},
    {"titulo": "Resolución de conflictos: Transformando desacuerdos en oportunidades",
     "slug": "resolucion-conflictos",
     "descripcion": "Técnicas para gestionar y resolver conflictos con clientes.",
     "ruta": "atencion", "duracion_min": 25},
    # Ventas
    {"titulo": "Transforma tus ventas I",
     "slug": "transforma-ventas-1",
     "descripcion": "Fundamentos de ventas modernas y técnicas efectivas.",
     "ruta": "ventas", "duracion_min": 30},
    {"titulo": "Transforma tus ventas II",
     "slug": "transforma-ventas-2",
     "descripcion": "Estrategias avanzadas para cerrar más y mejores ventas.",
     "ruta": "ventas", "duracion_min": 30},
    {"titulo": "Negociación: Estrategias efectivas y habilidades clave",
     "slug": "negociacion",
     "descripcion": "Herramientas para negociar con confianza y obtener acuerdos ganar-ganar.",
     "ruta": "ventas", "duracion_min": 30},
    {"titulo": "¿Cómo vencer las objeciones?: Técnicas para que tus clientes digan sí",
     "slug": "vencer-objeciones",
     "descripcion": "Convierte objeciones en oportunidades de cierre.",
     "ruta": "ventas", "duracion_min": 25},
    # Cobranzas
    {"titulo": "Cobranza Exitosa: El arte de recuperar deudas",
     "slug": "cobranza-exitosa",
     "descripcion": "Técnicas de cobranza efectiva y relación con el cliente deudor.",
     "ruta": "cobranzas", "duracion_min": 30},
    {"titulo": "Domina el arte de la escritura: Redacción y ortografía",
     "slug": "redaccion-ortografia",
     "descripcion": "Escribe con claridad, profesionalismo y sin errores.",
     "ruta": "cobranzas", "duracion_min": 25},
    # Complementarios
    {"titulo": "Inteligencia emocional",
     "slug": "inteligencia-emocional",
     "descripcion": "Desarrolla tu autoconocimiento y gestión emocional.",
     "ruta": "complementario", "duracion_min": 30},
    {"titulo": "Prepárate para tu entrevista",
     "slug": "preparate-entrevista",
     "descripcion": "Aprende a destacar en entrevistas laborales y consigue el trabajo que buscas.",
     "ruta": "complementario", "duracion_min": 25},
    {"titulo": "Introducción a la Ofimática",
     "slug": "introduccion-ofimatica",
     "descripcion": "Herramientas básicas de Word, Excel y PowerPoint para el mundo laboral.",
     "ruta": "complementario", "duracion_min": 40},
]


def seed_cursos():
    existentes = Curso.query.count()
    if existentes > 0:
        print(f"[!] Ya existen {existentes} cursos. No se insertó nada.")
        return
    print("Insertando 15 cursos iniciales...")
    for data in CURSOS_INICIALES:
        db.session.add(Curso(**data))
    db.session.commit()
    print(f"[OK] Se insertaron {len(CURSOS_INICIALES)} cursos.")


def seed_super_admin():
    existente = User.query.filter_by(email=SUPER_ADMIN_EMAIL).first()
    if existente:
        # Si ya existe pero no es super_admin, se promueve
        if existente.rol != "super_admin":
            existente.rol = "super_admin"
            existente.activo = True
            db.session.commit()
            print(f"[OK] Usuario {SUPER_ADMIN_EMAIL} promovido a super_admin.")
        else:
            print(f"[!] El super_admin {SUPER_ADMIN_EMAIL} ya existe.")
        return

    admin = User(
        nombre="Leonardo",
        apellido="Perales Cordova",
        email=SUPER_ADMIN_EMAIL,
        rol="super_admin",
        activo=True,
    )
    admin.set_password(SUPER_ADMIN_PASSWORD)
    db.session.add(admin)
    db.session.commit()
    print(f"[OK] Super admin creado: {SUPER_ADMIN_EMAIL}")
    print(f"     Password temporal: {SUPER_ADMIN_PASSWORD}")
    print("     ** CAMBIA la contraseña después del primer login **")


def seed():
    app = create_app()
    with app.app_context():
        db.create_all()
        seed_cursos()
        seed_super_admin()

        from collections import Counter
        resumen = Counter(c["ruta"] for c in CURSOS_INICIALES)
        print("\nResumen por ruta de cursos:")
        for ruta, cant in resumen.items():
            print(f"   - {ruta}: {cant}")


if __name__ == "__main__":
    seed()
