package com.borjabolufer.elevate.utils;

import android.content.Context;
import android.util.Log;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class UserFileManager {
    private static final String TAG = "UserFileManager";

      
    public static String generarNombreArchivo(String email, String tipo) {
        String emailLimpio = email.replace("@", "_").replace(".", "_");
        return tipo + "_" + emailLimpio + ".json";
    }

      
    public static boolean existeArchivo(Context context, String email, String tipo) {
        String fileName = generarNombreArchivo(email, tipo);
        File file = new File(context.getFilesDir(), fileName);
        return file.exists();
    }

      
    public static long obtenerTamanoArchivo(Context context, String email, String tipo) {
        String fileName = generarNombreArchivo(email, tipo);
        File file = new File(context.getFilesDir(), fileName);
        return file.exists() ? file.length() : 0;
    }

      
    public static boolean eliminarArchivo(Context context, String email, String tipo) {
        String fileName = generarNombreArchivo(email, tipo);
        File file = new File(context.getFilesDir(), fileName);

        if (file.exists()) {
            boolean deleted = file.delete();
            Log.i(TAG, "Archivo " + fileName + (deleted ? " eliminado" : " NO eliminado"));
            return deleted;
        }
        return true;
    }

      
    public static List<String> listarUsuariosConPlanes(Context context) {
        List<String> usuarios = new ArrayList<>();
        File[] files = context.getFilesDir().listFiles();

        if (files != null) {
            for (File file : files) {
                if (file.getName().startsWith("plan_") && file.getName().endsWith(".json")) {
                    String email = extraerEmailDeNombreArchivo(file.getName());
                    if (email != null) {
                        usuarios.add(email);
                    }
                }
            }
        }
        return usuarios;
    }

    private static String extraerEmailDeNombreArchivo(String fileName) {
        try {
              
            String sinExtension = fileName.replace("plan_", "").replace(".json", "");
              
            int lastUnderscore = sinExtension.lastIndexOf("_");
            if (lastUnderscore > 0) {
                String parte1 = sinExtension.substring(0, lastUnderscore);
                String parte2 = sinExtension.substring(lastUnderscore + 1);
                return parte1.replace("_", "") + "@" + parte2 + ".com";   
            }
        } catch (Exception e) {
            Log.e(TAG, "Error al extraer email: " + e.getMessage());
        }
        return null;
    }
}