#!/usr/bin/env python3
"""Vérifier les achats récents de packs d'avatars."""

import sys
import os

# Ajouter le chemin parent au PYTHONPATH
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")))

from python.db_config import DB_CONFIG
import mysql.connector

def check_recent_purchases():
    """Vérifier les achats récents de packs d'avatars."""
    print("🔍 Recherche des achats récents de packs d'avatars...\n")
    
    try:
        conn = mysql.connector.connect(**DB_CONFIG)
    except Exception as e:
        print(f"❌ Impossible de se connecter à la base de données: {e}")
        return
    
    if not conn:
        print("❌ Impossible de se connecter à la base de données")
        return
    
    try:
        cursor = conn.cursor(dictionary=True)
        
        # Récupérer les achats de packs d'avatars avec les infos utilisateur
        query = """
            SELECT 
                uap.user_id,
                u.display_name,
                u.email,
                uap.pack_id,
                uap.purchased_at,
                uap.transaction_id,
                uap.price_paid,
                pt.stripe_payment_intent_id,
                pt.stripe_session_id,
                pt.status as transaction_status
            FROM user_avatar_packs uap
            JOIN users u ON uap.user_id = u.id
            LEFT JOIN payment_transactions pt ON pt.stripe_session_id = uap.transaction_id
            ORDER BY uap.purchased_at DESC
            LIMIT 10
        """
        
        cursor.execute(query)
        purchases = cursor.fetchall()
        
        if not purchases:
            print("❌ Aucun achat de pack d'avatars trouvé dans la base de données")
            return
        
        print(f"✅ {len(purchases)} achat(s) trouvé(s):\n")
        print("=" * 100)
        
        for i, p in enumerate(purchases, 1):
            print(f"\n🛒 ACHAT #{i}")
            print(f"   👤 Acheteur: {p['display_name']} (ID: {p['user_id']})")
            print(f"   📧 Email: {p['email']}")
            print(f"   📦 Pack: {p['pack_id']}")
            print(f"   💰 Prix payé: {p['price_paid']}€")
            print(f"   📅 Date d'achat: {p['purchased_at']}")
            print(f"   🔑 Session ID: {p['transaction_id']}")
            
            if p['stripe_payment_intent_id']:
                print(f"   💳 Payment Intent: {p['stripe_payment_intent_id']}")
            if p['transaction_status']:
                print(f"   📊 Statut transaction: {p['transaction_status']}")
            
            print("-" * 100)
        
        # Vérifier combien d'avatars ont été débloqués pour chaque achat
        print("\n\n📊 Vérification des avatars débloqués:")
        print("=" * 100)
        
        for p in purchases:
            cursor.execute("""
                SELECT COUNT(*) as count
                FROM user_avatars ua
                WHERE ua.user_id = %s 
                AND ua.avatar_id IN (
                    SELECT avatar_id FROM pack_avatars WHERE pack_id = %s
                )
            """, (p['user_id'], p['pack_id']))
            
            result = cursor.fetchone()
            avatar_count = result['count'] if result else 0
            
            print(f"\n👤 {p['display_name']} - Pack '{p['pack_id']}':")
            print(f"   ✓ {avatar_count} avatar(s) débloqué(s)")
            
            # Vérifier combien d'avatars devrait contenir ce pack
            cursor.execute("""
                SELECT COUNT(*) as expected
                FROM pack_avatars
                WHERE pack_id = %s
            """, (p['pack_id'],))
            
            result = cursor.fetchone()
            expected_count = result['expected'] if result else 0
            
            if avatar_count == expected_count:
                print(f"   ✅ Correct! ({avatar_count}/{expected_count})")
            else:
                print(f"   ⚠️ ATTENTION: Devrait avoir {expected_count} avatars, mais n'en a que {avatar_count}!")
        
    except Exception as e:
        print(f"❌ Erreur: {e}")
        import traceback
        traceback.print_exc()
    finally:
        cursor.close()
        conn.close()

if __name__ == "__main__":
    check_recent_purchases()
