#!/usr/bin/env python3
"""
Script pour vérifier les settings d'un utilisateur spécifique en base de données
"""

import mysql.connector
import json

def check_user_settings(user_id=None, display_name=None):
    """Vérifie les settings d'un utilisateur"""
    
    connection = None
    
    try:
        # Connexion à la base de données
        connection = mysql.connector.connect(**DB_CONFIG)
        
        if connection.is_connected():
            print("=" * 70)
            print("Vérification des settings utilisateur en base de données")
            print("=" * 70)
            print()
            
            cursor = connection.cursor(dictionary=True)
            
            # Si pas d'ID fourni, chercher les admins
            if not user_id and not display_name:
                print("Recherche des utilisateurs admin...")
                cursor.execute("SELECT id, display_name, is_admin FROM users WHERE is_admin = 1 LIMIT 5")
                admins = cursor.fetchall()
                
                if admins:
                    print(f"Utilisateurs admin trouvés ({len(admins)}):")
                    for admin in admins:
                        print(f"  ID: {admin['id']}, Nom: {admin['display_name']}")
                    print()
                    user_id = admins[0]['id']
                    print(f"Utilisation du premier admin: ID {user_id}")
                else:
                    print("Aucun utilisateur admin trouvé")
                    return
            
            print()
            print("-" * 70)
            
            # Récupérer les infos utilisateur
            if user_id:
                cursor.execute("SELECT id, display_name, is_admin, created_at FROM users WHERE id = %s", (user_id,))
            else:
                cursor.execute("SELECT id, display_name, is_admin, created_at FROM users WHERE display_name = %s", (display_name,))
            
            user = cursor.fetchone()
            
            if not user:
                print(f"Utilisateur non trouvé")
                return
            
            user_id = user['id']
            print(f"📋 Utilisateur: {user['display_name']} (ID: {user_id})")
            print(f"   Admin: {'OUI' if user['is_admin'] else 'NON'}")
            print(f"   Créé: {user['created_at']}")
            print()
            
            # Vérifier la table user_settings
            print("📊 Vérification de la structure des tables...")
            cursor.execute("SHOW TABLES LIKE 'user_settings%'")
            tables = cursor.fetchall()
            
            if tables:
                for table in tables:
                    table_name = table[0] if isinstance(table, tuple) else table.get('Tables_in_RollerLogic', table)
                    print(f"   Table trouvée: {table_name}")
                
                # Chercher les settings
                print()
                print("🔍 Recherche des settings...")
                
                cursor.execute("""
                    SELECT * FROM user_settings WHERE user_id = %s
                """, (user_id,))
                settings = cursor.fetchone()
                
                if settings:
                    print(f"✅ Settings trouvés pour l'utilisateur {user_id}:")
                    for key, value in settings.items():
                        if key != 'user_id':
                            print(f"   {key}: {value}")
                    
                    # Chercher le thème spécifiquement
                    if 'theme' in settings:
                        print()
                        print(f"🎨 Thème enregistré en DB: {settings['theme']}")
                    elif 'settings_json' in settings:
                        try:
                            settings_data = json.loads(settings['settings_json'])
                            print()
                            print(f"⚙️ Thème dans JSON: {settings_data.get('theme', 'NON DÉFINI')}")
                        except:
                            pass
                else:
                    print(f"❌ Aucun setting trouvé pour l'utilisateur {user_id}")
                    print("   Les settings pourraient être stockés ailleurs.")
            else:
                print("❌ Aucune table user_settings trouvée")
            
            # Vérifier dans la table users si les settings y sont
            print()
            print("🔍 Vérification si les settings sont dans la table users...")
            cursor.execute("DESCRIBE users")
            columns = cursor.fetchall()
            column_names = [col['Field'] for col in columns]
            
            theme_columns = [col for col in column_names if 'theme' in col.lower() or 'setting' in col.lower()]
            
            if theme_columns:
                print(f"   Colonnes trouvées: {', '.join(theme_columns)}")
                
                cursor.execute(f"SELECT id, display_name, {', '.join(theme_columns)} FROM users WHERE id = %s", (user_id,))
                user_with_theme = cursor.fetchone()
                if user_with_theme:
                    print(f"\n   Thème dans users table:")
                    for col in theme_columns:
                        value = user_with_theme[col]
                        print(f"      {col}: {value}")
            else:
                print("   Aucune colonne avec 'theme' ou 'setting'")
            
            cursor.close()
            
    except Exception as e:
        print(f"❌ Erreur: {e}")
        return
        
    finally:
        if connection and connection.is_connected():
            connection.close()
            print()
            print("Connexion fermée.")

if __name__ == "__main__":
    import sys
from python.db_config import DB_CONFIG
    
    user_id = None
    display_name = None
    
    if len(sys.argv) > 1:
        if sys.argv[1].isdigit():
            user_id = int(sys.argv[1])
        else:
            display_name = sys.argv[1]
    
    check_user_settings(user_id, display_name)
