#!/usr/bin/env python3
"""
Test du nouveau workflow : envoyer pages 1,2,5,6,7 puis PDF directement
"""

import os
import sys
import logging

# Configuration du logging
logging.basicConfig(level=logging.INFO)

# Ajouter le chemin du module
sys.path.append('/var/www/html/swiplay.fr/scambot')

def test_pdf_generation_with_real_data():
    """Test complet de la génération PDF avec vraies données"""
    print("\n🧪 Test génération PDF avec données réelles...")
    
    try:
        from modules.contract_generator import ContractGenerator
        from modules.user_manager import UserManager
        
        # Initialiser les managers
        generator = ContractGenerator()
        user_manager = UserManager()
        
        # Récupérer l'utilisateur Mohamed
        discord_id = "393151974109085697"
        user_data = user_manager.get_user(discord_id)
        
        if not user_data:
            print(f"❌ Utilisateur {discord_id} non trouvé")
            return False
        
        print(f"👤 Utilisateur: {user_data['prenom']} {user_data['nom']}")
        print(f"📸 Instagram: {user_data.get('instagram', 'Non défini')}")
        
        # Données vidéo réelles avec le vrai titre
        video_data = {
            'title': 'Ce jeu où toi et tes potes entrez en guerre !',  # Vrai titre
            'platform': 'Instagram',
            'published_date': '30/05/2025',
            'url': 'https://www.instagram.com/p/DKRynr4sOeN/'
        }
        
        print(f"🎬 Titre: {video_data['title']}")
        
        # Simuler le pseudonyme Instagram comme le fait le bot
        creator_pseudo = user_data.get('instagram', 'eyzuro')
        print(f"🎭 Pseudonyme: @{creator_pseudo}")
        
        # Générer le contrat
        result = generator.generate_contract(user_data, video_data, creator_pseudo)
        
        if result['success']:
            print(f"✅ PDF généré: {result['filename']}")
            print(f"📁 Chemin: {result['pdf_path']}")
            
            # Vérifier que le fichier existe
            if os.path.exists(result['pdf_path']):
                size = os.path.getsize(result['pdf_path'])
                print(f"📊 Taille: {size} bytes")
                return True
            else:
                print(f"❌ Fichier PDF non trouvé: {result['pdf_path']}")
                return False
        else:
            print(f"❌ Erreur: {result['error']}")
            return False
            
    except Exception as e:
        print(f"❌ Exception: {e}")
        import traceback
        traceback.print_exc()
        return False

def test_title_and_pseudo_in_pdf():
    """Vérifier que le titre et le pseudonyme sont corrects dans le PDF"""
    print("\n🔍 Vérification du contenu PDF...")
    
    # Chercher le dernier PDF généré
    contracts_dir = "/var/www/html/swiplay.fr/scambot/contracts"
    if not os.path.exists(contracts_dir):
        print(f"❌ Dossier contracts non trouvé: {contracts_dir}")
        return False
    
    # Lister tous les PDF et prendre le plus récent
    pdf_files = [f for f in os.listdir(contracts_dir) if f.endswith('.pdf')]
    if not pdf_files:
        print("❌ Aucun PDF trouvé dans contracts/")
        return False
    
    # Trier par date de modification (le plus récent en premier)
    pdf_files.sort(key=lambda x: os.path.getmtime(os.path.join(contracts_dir, x)), reverse=True)
    latest_pdf = pdf_files[0]
    
    print(f"📄 PDF le plus récent: {latest_pdf}")
    
    # Chercher le fichier .tex correspondant
    tex_name = latest_pdf.replace('.pdf', '.tex')
    temp_tex_files = [f for f in os.listdir('/tmp') if f.endswith('.tex')]
    
    if temp_tex_files:
        # Prendre le plus récent
        temp_tex_files.sort(key=lambda x: os.path.getmtime(os.path.join('/tmp', x)), reverse=True)
        latest_tex = temp_tex_files[0]
        tex_path = os.path.join('/tmp', latest_tex)
        
        print(f"📝 Fichier TEX: {latest_tex}")
        
        try:
            with open(tex_path, 'r', encoding='utf-8', errors='ignore') as f:
                content = f.read()
                
            print("🔍 Contenu clés dans le TEX:")
            lines = content.split('\n')
            for i, line in enumerate(lines):
                if 'Ce jeu où toi et tes potes' in line:
                    print(f"  ✅ Titre trouvé ligne {i+1}: {line.strip()}")
                if 'eyzuro' in line:
                    print(f"  ✅ Pseudonyme trouvé ligne {i+1}: {line.strip()}")
                if 'Mohamed' in line:
                    print(f"  ✅ Nom trouvé ligne {i+1}: {line.strip()}")
                    
            return True
            
        except Exception as e:
            print(f"❌ Erreur lecture TEX: {e}")
            return False
    else:
        print("❌ Aucun fichier TEX temporaire trouvé")
        return False

if __name__ == "__main__":
    print("🚀 Test du nouveau workflow PDF")
    print("=" * 50)
    
    success1 = test_pdf_generation_with_real_data()
    success2 = test_title_and_pseudo_in_pdf()
    
    print(f"\n📊 Résultats:")
    print(f"   Génération PDF: {'✅' if success1 else '❌'}")
    print(f"   Contenu correct: {'✅' if success2 else '❌'}")
    
    if success1 and success2:
        print("\n🎉 Nouveau workflow fonctionnel !")
    else:
        print("\n⚠️ Des améliorations sont nécessaires")