async function recuperarCantidadGenero(tipoConsulta, filtros = {}) {
    try {
        const response = await fetch("../controllers/graficos.php", {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({ tipoConsulta, ...filtros }),
        });
        const data = await response.json();
        return data.cantidad || 0;
    } catch (error) {
        console.error("Error al recuperar datos:", error);
        return 0;
    }
}

async function recuperarCantidadEdad(tipoConsulta, filtros = {}) {
    try {
        const response = await fetch("../controllers/graficos.php", {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({ tipoConsulta, ...filtros }),
        });
        const data = await response.json();
        return data.cantidad || 0;
    } catch (error) {
        console.error("Error al recuperar datos:", error);
        return 0;
    }
}

async function recuperarCantidadEstado(tipoConsulta, filtros = {}) {
    try {
        const response = await fetch("../controllers/graficos.php", {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({ tipoConsulta, ...filtros }),
        });
        const data = await response.json();
        if (!Array.isArray(data)) throw new Error("La respuesta del backend no es un array.");
        return data;
    } catch (error) {
        console.error("Error al recuperar datos de estados:", error);
        return [];
    }
}

async function recuperarCantidadExamen(tipoConsulta, filtros = {}) {
    try {
        const response = await fetch("../controllers/graficos.php", {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({ tipoConsulta, ...filtros }),
        });
        const data = await response.json();
        if (!Array.isArray(data)) throw new Error("La respuesta del backend no es un array");
        return data;
    } catch (error) {
        console.error("Error al recuperar datos de examenes:", error);
        return [];
    }
}

async function recuperarCantidadFecha(tipoConsulta, filtros = {}) {
    try {
        const response = await fetch("../controllers/graficos.php", {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({ tipoConsulta, ...filtros }),
        });
        const data = await response.json();
        if (!Array.isArray(data)) throw new Error("La respuesta del backend no es un array.");
        return data;
    } catch (error) {
        console.error("Error al recuperar datos de fechas:", error);
        return [];
    }
}

let filtroActivo = null; // Puede ser 'id_rango_edad', 'id_genero', 'id_examen', 'fechas' o null

function getFiltrosSeleccionados() {
    const id_rango_edad = document.getElementById('id_rango_edad')?.value || "NULL";
    const id_genero = document.getElementById('id_genero')?.value || "NULL";
    const id_examen = document.getElementById('id_examen')?.value || "NULL";
    const fechaInicio = document.getElementById('date1')?.value || "";
    const fechaFin = document.getElementById('date2')?.value || "";

    if (filtroActivo === 'id_rango_edad' && id_rango_edad !== "NULL") {
        return { id_rango_edad };
    }
    if (filtroActivo === 'id_genero' && id_genero !== "NULL") {
        return { id_genero };
    }
    if (filtroActivo === 'id_examen' && id_examen !== "NULL") {
        return { id_examen };
    }
    if (filtroActivo === 'fechas' && fechaInicio && fechaFin) {
        return { fechaInicio, fechaFin };
    }
    return {}; // Sin filtros
}

function setFiltroActivo(tipo) {
    filtroActivo = tipo;
}
function getFiltroActivo() {
    return filtroActivo;
}

async function obtenerDatosGeneros(filtros = {}) {
    const response = await fetch("../controllers/graficos.php", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ tipoConsulta: "Generos", ...filtros }),
    });
    return await response.json();
}

async function obtenerDatosEdades(filtros = {}) {
    const response = await fetch("../controllers/graficos.php", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ tipoConsulta: "Edades", ...filtros }),
    });
    return await response.json();
}

async function obtenerDatosEstados(filtros = {}) {
    const response = await fetch("../controllers/graficos.php", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ tipoConsulta: "Estados", ...filtros }),
    });
    return await response.json();
}

async function obtenerDatosExamenes(filtros = {}) {
    const response = await fetch("../controllers/graficos.php", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ tipoConsulta: "Examenes", ...filtros }),
    });
    return await response.json();
}

async function obtenerDatosFechas(filtros = {}) {
    const response = await fetch("../controllers/graficos.php", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ tipoConsulta: "Fechas", ...filtros }),
    });
    return await response.json();
}

async function obtenerResumenGenero(filtros = {}) {
    const response = await fetch("../controllers/graficos.php", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ tipoConsulta: "ResumenGenero", ...filtros }),
    });
    return await response.json();
}

export {
    obtenerDatosGeneros,
    obtenerDatosEdades,
    obtenerDatosEstados,
    obtenerDatosExamenes,
    obtenerDatosFechas,
    getFiltrosSeleccionados,
    setFiltroActivo,
    getFiltroActivo,
    obtenerResumenGenero // <-- Exporta la nueva función
};