#!/usr/bin/env python3
"""Corrige l'avatar invalide 192 et termine l'attribution"""

import mysql.connector
from python.db_config import DB_CONFIG

conn = mysql.connector.connect(**DB_CONFIG)
cursor = conn.cursor(dictionary=True)

# 1. Vérifier l'avatar 192
print('Avatar 192 existe?')
cursor.execute('SELECT * FROM avatars WHERE id = 192')
result = cursor.fetchone()
print(result)

# 2. Supprimer le weekly_reward avec l'avatar invalide
print()
print('Suppression du weekly_reward 2026-W06 (avatar 192 invalide)...')
cursor.execute('DELETE FROM weekly_rewards WHERE week_key = %s', ('2026-W06',))

# Supprimer aussi de user_weekly_avatars
cursor.execute('DELETE FROM user_weekly_avatars WHERE avatar_id = 192')
conn.commit()
print('OK')

# 3. Voir les avatars max
print()
cursor.execute('SELECT MAX(id) as max_id FROM avatars')
print('ID max dans avatars:', cursor.fetchone())

# 4. Recréer avec un avatar valide
print()
print('Recréation de 2026-W06 avec un avatar valide...')
cursor.execute('SELECT id, code FROM avatars WHERE id NOT IN (SELECT avatar_id FROM weekly_rewards) LIMIT 1')
avatar = cursor.fetchone()
if avatar:
    cursor.execute('INSERT INTO weekly_rewards (week_key, avatar_id, created_at) VALUES (%s, %s, NOW())', ('2026-W06', avatar['id']))
    conn.commit()
    print(f"Créé avec avatar {avatar['id']} ({avatar['code']})")

# 5. Vérifier état actuel des weekly_rewards
print()
print('Weekly rewards actuels:')
cursor.execute('SELECT * FROM weekly_rewards ORDER BY week_key')
for r in cursor.fetchall():
    print(f"  {r}")

# 6. Attribuer le nouvel avatar à tous les acheteurs du pack
print()
print('Attribution du nouvel avatar aux acheteurs...')
cursor.execute('SELECT user_id FROM user_challenge_pack')
buyers = cursor.fetchall()

cursor.execute('SELECT avatar_id FROM weekly_rewards WHERE week_key = %s', ('2026-W06',))
w6_avatar = cursor.fetchone()

if w6_avatar:
    for buyer in buyers:
        user_id = buyer['user_id']
        avatar_id = w6_avatar['avatar_id']
        
        # user_weekly_avatars
        cursor.execute('SELECT 1 FROM user_weekly_avatars WHERE user_id = %s AND avatar_id = %s', (user_id, avatar_id))
        if not cursor.fetchone():
            cursor.execute('''
                INSERT INTO user_weekly_avatars (user_id, avatar_id, week_key, obtained_at, obtained_from)
                VALUES (%s, %s, '2026-W06', NOW(), 'challenge_pack')
            ''', (user_id, avatar_id))
            print(f"  user_weekly_avatars: User {user_id} -> Avatar {avatar_id}")
        
        # user_avatars
        cursor.execute('SELECT 1 FROM user_avatars WHERE user_id = %s AND avatar_id = %s', (user_id, avatar_id))
        if not cursor.fetchone():
            cursor.execute('''
                INSERT INTO user_avatars (user_id, avatar_id, source, metadata, unlocked_at)
                VALUES (%s, %s, 'challenge_pack', '{"week_key": "2026-W06"}', NOW())
            ''', (user_id, avatar_id))
            print(f"  user_avatars: User {user_id} -> Avatar {avatar_id}")

conn.commit()

# 7. Vérifier les avatars de Bruno-admin
print()
print('=' * 60)
print('AVATARS DE BRUNO-ADMIN (ID: 1)')
print('=' * 60)

cursor.execute('''
    SELECT ua.avatar_id, ua.source, ua.metadata, a.code
    FROM user_avatars ua
    JOIN avatars a ON a.id = ua.avatar_id
    WHERE ua.user_id = 1
''')
avatars = cursor.fetchall()
print(f"Total: {len(avatars)} avatars")
for a in avatars:
    print(f"  - {a['code']} (ID: {a['avatar_id']}) - source: {a['source']}")

conn.close()
