import json
import os

def calculer_total_versets(quran_file=None):
    """
    Calcule le nombre total de versets dans le fichier quran.json.
    """
    BASE_DIR = os.path.dirname(os.path.abspath(__file__))
    if quran_file is None:
        quran_file = os.path.join(BASE_DIR, "data", "quran.json")
    
    try:
        with open(quran_file, "r", encoding="utf-8") as f:
            quran = json.load(f)
        
        total = 0
        for sourate_id, sourate_data in quran.items():
            total += len(sourate_data.get("versets", {}))
        
        return total
    except FileNotFoundError:
        # Valeur par défaut si le fichier n'existe pas
        return 545

def creer_bilan(progress_file=None, bilan_file=None, total_items=None):
    """
    Crée un fichier bilan.json indiquant le % d'avancement de chaque utilisateur
    à partir d'un fichier progress.json.
    """
    # Utiliser des chemins absolus basés sur le répertoire du script
    BASE_DIR = os.path.dirname(os.path.abspath(__file__))
    if progress_file is None:
        progress_file = os.path.join(BASE_DIR, "progress.json")
    if bilan_file is None:
        bilan_file = os.path.join(BASE_DIR, "bilan.json")
    
    # Calculer automatiquement le total si non fourni
    if total_items is None:
        total_items = calculer_total_versets()
    
    if not os.path.exists(progress_file):
        print(f"Erreur : le fichier {progress_file} est introuvable.")
        return
    
    with open(progress_file, "r") as f:
        data = json.load(f)

    bilan = {}
    for user, sessions in data.items():
        # Additionner le nombre de versets cochés dans toutes les sessions
        # (chaque verset peut être compté plusieurs fois s'il est coché dans plusieurs sessions)
        total_versets = 0
        for session_items in sessions.values():
            total_versets += len(session_items)
        progress_percent = (total_versets / total_items) * 100
        bilan[user] = round(progress_percent, 2)

    with open(bilan_file, "w") as f:
        json.dump(bilan, f, indent=2)

    print(f"✅ Fichier '{bilan_file}' créé avec succès.")
    print("Contenu :", bilan)


if __name__ == "__main__":
    creer_bilan()
