"""
Script pour vérifier les données weekly_progress dans la base de données RollerLogic
"""
import mysql.connector
from mysql.connector import Error

def check_weekly_data():
    try:
        # Connexion à la base de données
        connection = mysql.connector.connect(**DB_CONFIG)

        if connection.is_connected():
            cursor = connection.cursor(dictionary=True)
            
            print("=" * 80)
            print("VÉRIFICATION DES DONNÉES WEEKLY - RollerLogic")
            print("=" * 80)
            print()
            
            # 1. Vérifier si la table weekly_progress existe
            cursor.execute("SHOW TABLES LIKE 'weekly_progress'")
            if not cursor.fetchone():
                print("❌ Table weekly_progress n'existe pas!")
                return
            
            print("✅ Table weekly_progress existe")
            print()
            
            # 2. Structure de la table
            print("-" * 80)
            print("📋 STRUCTURE DE weekly_progress")
            print("-" * 80)
            cursor.execute("DESCRIBE weekly_progress")
            columns = cursor.fetchall()
            for col in columns:
                print(f"  {col['Field']:<20} {col['Type']:<30} {col['Key']}")
            print()
            
            # 3. Toutes les données de weekly_progress
            print("-" * 80)
            print("📊 DONNÉES DE weekly_progress (toutes)")
            print("-" * 80)
            cursor.execute("SELECT * FROM weekly_progress ORDER BY user_id, week_key DESC")
            rows = cursor.fetchall()
            
            if not rows:
                print("⚠️  Aucune donnée dans weekly_progress")
            else:
                print(f"Total: {len(rows)} enregistrements\n")
                for row in rows:
                    print(f"  user_id: {row.get('user_id')}")
                    print(f"  week_key: {row.get('week_key')}")
                    print(f"  completed_days: {row.get('completed_days')}")
                    print(f"  reward_claimed: {row.get('reward_claimed')}")
                    print(f"  reward_type: {row.get('reward_type')}")
                    print("  ---")
            print()
            
            # 4. Données pour l'utilisateur 73 spécifiquement
            print("-" * 80)
            print("📊 DONNÉES POUR USER_ID = 73")
            print("-" * 80)
            cursor.execute("SELECT * FROM weekly_progress WHERE user_id = 73")
            rows = cursor.fetchall()
            
            if not rows:
                print("⚠️  Aucune donnée pour user_id=73")
            else:
                for row in rows:
                    print(f"  week_key: {row.get('week_key')}")
                    print(f"  completed_days: {row.get('completed_days')}")
                    print(f"  reward_claimed: {row.get('reward_claimed')}")
                    print()
            
            # 5. Vérifier aussi daily_progress
            print("-" * 80)
            print("📊 DONNÉES DE daily_progress (user 73)")
            print("-" * 80)
            cursor.execute("SHOW TABLES LIKE 'daily_progress'")
            if cursor.fetchone():
                cursor.execute("SELECT * FROM daily_progress WHERE user_id = 73")
                rows = cursor.fetchall()
                if not rows:
                    print("⚠️  Aucune donnée daily_progress pour user_id=73")
                else:
                    for row in rows:
                        print(f"  {row}")
            else:
                print("Table daily_progress n'existe pas")
            print()
            
            # 6. Semaine actuelle
            print("-" * 80)
            print("📅 SEMAINE ACTUELLE")
            print("-" * 80)
            cursor.execute("SELECT YEARWEEK(CURDATE(), 1) as current_week, CURDATE() as today, DAYOFWEEK(CURDATE()) as day_of_week")
            result = cursor.fetchone()
            print(f"  Date actuelle: {result['today']}")
            print(f"  Semaine ISO: {result['current_week']}")
            print(f"  Jour de la semaine: {result['day_of_week']} (1=Dimanche, 2=Lundi...)")
            
            # Calculer la clé de semaine comme le fait l'API
            from datetime import date
from python.db_config import DB_CONFIG
            today = date.today()
            # ISO week: Lundi=1, Dimanche=7
            iso_year, iso_week, _ = today.isocalendar()
            week_key = f"{iso_year}-W{iso_week:02d}"
            print(f"  Week key (format API): {week_key}")
            print()
            
            print("=" * 80)
            print("✅ Vérification terminée")
            print("=" * 80)

    except Error as e:
        print(f"❌ Erreur de connexion MySQL: {e}")
    
    finally:
        if 'connection' in dir() and connection.is_connected():
            cursor.close()
            connection.close()
            print("\n🔌 Connexion fermée")

if __name__ == "__main__":
    check_weekly_data()
