import asyncio
import os
from sqlalchemy import text, select
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.orm import sessionmaker

# Importáljuk a rendszermodulokat az ellenőrzéshez
try:
    from app.core.config import settings
    from app.core.i18n import t
    from app.models.system_config import SystemParameter
except ImportError as e:
    print(f"❌ Import hiba: {e}")
    print("Ellenőrizd, hogy a PYTHONPATH be van-e állítva!")
    exit(1)

async def diagnose():
    print("\n" + "="*40)
    print("🔍 SZERVIZ KERESŐ - RENDSZER DIAGNOSZTIKA")
    print("="*40 + "\n")

    engine = create_async_engine(settings.DATABASE_URL)
    async_session = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)

    async with async_session() as session:
        # --- 1. SÉMA ELLENŐRZÉSE ---
        print("1️⃣  Adatbázis séma ellenőrzése...")
        try:
            # Organizations tábla oszlopai
            org_res = await session.execute(text(
                "SELECT column_name FROM information_schema.columns "
                "WHERE table_schema = 'data' AND table_name = 'organizations';"
            ))
            org_cols = [row[0] for row in org_res.fetchall()]
            
            # Users tábla oszlopai
            user_res = await session.execute(text(
                "SELECT column_name FROM information_schema.columns "
                "WHERE table_schema = 'data' AND table_name = 'users';"
            ))
            user_cols = [row[0] for row in user_res.fetchall()]

            checks = [
                ("organizations.language", "language" in org_cols),
                ("organizations.default_currency", "default_currency" in org_cols),
                ("users.preferred_language", "preferred_language" in user_cols),
                ("system_parameters tábla létezik", True) # Ha idáig eljut, a SystemParameter import sikerült
            ]

            for label, success in checks:
                status = "✅ OK" if success else "❌ HIÁNYZIK"
                print(f"   [{status}] {label}")

        except Exception as e:
            print(f"   ❌ Hiba a séma lekérdezésekor: {e}")

        # --- 2. ADATOK ELLENŐRZÉSE ---
        print("\n2️⃣  System Parameters (Alapadatok) ellenőrzése...")
        try:
            result = await session.execute(select(SystemParameter))
            params = result.scalars().all()
            if params:
                print(f"   ✅ Talált paraméterek: {len(params)} db")
                for p in params:
                    print(f"      - {p.key}: {p.value[:2]}... (+{len(p.value)-2} elem)")
            else:
                print("   ⚠️  Figyelem: A system_parameters tábla üres!")
        except Exception as e:
            print(f"   ❌ Hiba az adatok lekérésekor: {e}")

        # --- 3. NYELVI MOTOR ELLENŐRZÉSE ---
        print("\n3️⃣  Nyelvi motor (i18n) és hu.json ellenőrzése...")
        try:
            test_save = t("COMMON.SAVE")
            test_email = t("email.reg_greeting", first_name="Admin")
            
            if test_save != "COMMON.SAVE":
                print(f"   ✅ Fordítás sikeres: COMMON.SAVE -> '{test_save}'")
                print(f"   ✅ Paraméteres fordítás: '{test_email}'")
            else:
                print("   ❌ A fordítás NEM működik (csak a kulcsot adta vissza).")
                print(f"      Ellenőrizd a /app/app/locales/hu.json elérhetőségét!")
        except Exception as e:
            print(f"   ❌ Hiba a nyelvi motor futtatásakor: {e}")

    print("\n" + "="*40)
    print("✅ DIAGNOSZTIKA KÉSZ")
    print("="*40 + "\n")

if __name__ == "__main__":
    asyncio.run(diagnose())