"""
Script pour vérifier les Price IDs dans Stripe
"""
import os
import sys
from pathlib import Path

# Ajouter le chemin parent pour les imports
sys.path.insert(0, str(Path(__file__).parent.parent))

from dotenv import load_dotenv
import stripe

# Charger les variables d'environnement
load_dotenv()

# Configurer Stripe
stripe.api_key = os.getenv('STRIPE_SECRET_KEY')

def check_price(price_id: str, name: str):
    """Vérifie un Price ID dans Stripe"""
    print(f"\n{'='*60}")
    print(f"🔍 Vérification du prix: {name}")
    print(f"{'='*60}")
    print(f"Price ID: {price_id}")
    
    try:
        price = stripe.Price.retrieve(price_id, expand=['product'])
        
        print(f"✅ Prix trouvé!")
        print(f"   - Type: {price.type}")
        print(f"   - Récurrent: {'Oui' if price.type == 'recurring' else 'Non'}")
        if price.type == 'recurring':
            print(f"   - Intervalle: {price.recurring.interval}")
            print(f"   - Nombre d'intervalles: {price.recurring.interval_count}")
        print(f"   - Montant: {price.unit_amount / 100} {price.currency.upper()}")
        print(f"   - Actif: {'Oui' if price.active else 'Non'}")
        print(f"   - Produit: {price.product.name if hasattr(price, 'product') else price.product}")
        
        if price.type != 'recurring':
            print(f"   ⚠️  ATTENTION: Ce prix n'est pas récurrent!")
            print(f"   ⚠️  Il ne peut pas être utilisé pour un abonnement!")
        
        return price
        
    except stripe.error.InvalidRequestError as e:
        print(f"❌ Erreur: {e}")
        return None
    except Exception as e:
        print(f"❌ Erreur inattendue: {e}")
        return None

def main():
    print("\n" + "="*60)
    print("🔍 VÉRIFICATION DES PRICE IDS STRIPE")
    print("="*60)
    
    # Price IDs à vérifier
    prices = {
        "PRO Mensuel": "price_1SLkIp0qg7sBeE8mRnnADWKW",
        "PRO Annuel": "price_1SLjH00qg7sBeE8m3njQQtBk",
        "ENTERPRISE Mensuel": "price_1SLjIU0qg7sBeE8mDEbizc6t",
        "ENTERPRISE Annuel": "price_1SLjIV0qg7sBeE8mKDPopv6K"
    }
    
    results = {}
    for name, price_id in prices.items():
        results[name] = check_price(price_id, name)
    
    print("\n" + "="*60)
    print("📊 RÉSUMÉ")
    print("="*60)
    
    valid_count = sum(1 for p in results.values() if p and p.type == 'recurring')
    invalid_count = sum(1 for p in results.values() if p and p.type != 'recurring')
    not_found_count = sum(1 for p in results.values() if not p)
    
    print(f"✅ Prix récurrents valides: {valid_count}/4")
    print(f"⚠️  Prix non-récurrents: {invalid_count}/4")
    print(f"❌ Prix non trouvés: {not_found_count}/4")
    
    if invalid_count > 0 or not_found_count > 0:
        print("\n⚠️  ACTIONS REQUISES:")
        print("   1. Allez sur https://dashboard.stripe.com/test/products")
        print("   2. Pour chaque prix non-récurrent, créez un nouveau prix:")
        print("      - Cliquez sur le produit")
        print("      - Ajoutez un nouveau prix")
        print("      - Sélectionnez 'Récurrent'")
        print("      - Choisissez 'Mensuel' ou 'Annuel'")
        print("      - Copiez le nouveau Price ID")
        print("   3. Mettez à jour web_sentinel/payment/config.py avec les nouveaux Price IDs")

if __name__ == '__main__':
    main()
