// Función para cargar datos en Select2 y devolver una promesa
function polizaData() {
    return $.ajax({
        url: 'https://panel.fivetwofive.tech/yaaxlum/public/select2/poliza', // URL del recurso
        type: 'GET', // Tipo de solicitud
        dataType: 'json', // Tipo de datos esperados del servidor
    }).then(response => {
        // Mapear la respuesta a un formato que Select2 pueda usar
        return response.map(item => ({
            id: item.ID_POLIZA,
            text: item.POLIZA
        }));
    }).catch(error => {
        console.error('Error al cargar los datos:', error);
        // Manejar errores según sea necesario
        return []; // Devolver un array vacío en caso de error
    });
}


// Función para cargar datos en Select2 y devolver una promesa
function cuentaData() {
    return $.ajax({
        url: 'https://panel.fivetwofive.tech/yaaxlum/public/select2/cuenta', // URL del recurso
        type: 'GET', // Tipo de solicitud
        dataType: 'json', // Tipo de datos esperados del servidor
    }).then(response => {
        // Mapear la respuesta a un formato que Select2 pueda usar
        return response.map(item => ({
            id: item.ID_CAT,
            text: item.CUENTA
        }));
    }).catch(error => {
        console.error('Error al cargar los datos:', error);
        // Manejar errores según sea necesario
        return []; // Devolver un array vacío en caso de error
    });
}

function proveedorData() {
    return $.ajax({
        url: 'https://panel.fivetwofive.tech/yaaxlum/public/select2/proveedor', // URL del recurso
        type: 'GET', // Tipo de solicitud
        dataType: 'json', // Tipo de datos esperados del servidor
    }).then(response => {
        // Mapear la respuesta a un formato que Select2 pueda usar
        return response.map(item => ({
            id: item.ID_PROVEEDOR,
            text: item.PROVEEDOR
        }));
    }).catch(error => {
        console.error('Error al cargar los datos:', error);
        // Manejar errores según sea necesario
        return []; // Devolver un array vacío en caso de error
    });
}

function bucketData() {
    return $.ajax({
        url: 'https://panel.fivetwofive.tech/yaaxlum/public/select2/bucket', // URL del recurso
        type: 'GET', // Tipo de solicitud
        dataType: 'json', // Tipo de datos esperados del servidor
    }).then(response => {
        // Mapear la respuesta a un formato que Select2 pueda usar
        return response.map(item => ({
            id: item.ID_BUCKET,
            text: item.BUCKET
        }));
    }).catch(error => {
        console.error('Error al cargar los datos:', error);
        // Manejar errores según sea necesario
        return []; // Devolver un array vacío en caso de error
    });
}

// flu_efe
function edu_fluData() {
    return $.ajax({
        url: 'https://panel.fivetwofive.tech/yaaxlum/public/select2/flu_efe', // URL del recurso
        type: 'GET', // Tipo de solicitud
        dataType: 'json', // Tipo de datos esperados del servidor
    }).then(response => {
        // Mapear la respuesta a un formato que Select2 pueda usar
        return response.map(item => ({
            id: item.ID_EDO_FLU_EFE,
            text: item.EDO_FLU_EFE
        }));
    }).catch(error => {
        console.error('Error al cargar los datos:', error);
        // Manejar errores según sea necesario
        return []; // Devolver un array vacío en caso de error
    });
}

function nivel1() {
    return $.ajax({
        url: 'https://panel.fivetwofive.tech/yaaxlum/public/select2/nivel1', // URL del recurso
        type: 'GET', // Tipo de solicitud
        dataType: 'json', // Tipo de datos esperados del servidor
    }).then(response => {
        // Mapear la respuesta a un formato que Select2 pueda usar
        return response.map(item => ({
            id: item.ID_N1,
            text: item.COD_N1 + ' - ' +item.NIVEL_1
        }));
    }).catch(error => {
        console.error('Error al cargar los datos:', error);
        // Manejar errores según sea necesario
        return []; // Devolver un array vacío en caso de error
    });
}

function nivel2() {
    return $.ajax({
        url: 'https://panel.fivetwofive.tech/yaaxlum/public/select2/nivel2', // URL del recurso
        type: 'GET', // Tipo de solicitud
        dataType: 'json', // Tipo de datos esperados del servidor
    }).then(response => {
        // Mapear la respuesta a un formato que Select2 pueda usar
        return response.map(item => ({
            id: item.ID_N2,
            text: item.COD_N2 + ' - '+item.NIVEL_2
        }));
    }).catch(error => {
        console.error('Error al cargar los datos:', error);
        // Manejar errores según sea necesario
        return []; // Devolver un array vacío en caso de error
    });
}

function nivel3() {
    return $.ajax({
        url: 'https://panel.fivetwofive.tech/yaaxlum/public/select2/nivel3', // URL del recurso
        type: 'GET', // Tipo de solicitud
        dataType: 'json', // Tipo de datos esperados del servidor
    }).then(response => {
        // Mapear la respuesta a un formato que Select2 pueda usar
        return response.map(item => ({
            id: item.ID_N3,
            text:  item.COD_N3 + ' - '+ item.NIVEL_3
        }));
    }).catch(error => {
        console.error('Error al cargar los datos:', error);
        // Manejar errores según sea necesario
        return []; // Devolver un array vacío en caso de error
    });
}

function nivel4() {
    return $.ajax({
        url: 'https://panel.fivetwofive.tech/yaaxlum/public/select2/nivel4', // URL del recurso
        type: 'GET', // Tipo de solicitud
        dataType: 'json', // Tipo de datos esperados del servidor
    }).then(response => {
        // Mapear la respuesta a un formato que Select2 pueda usar
        return response.map(item => ({
            id: item.ID_N4,
            text: item.COD_N4 + ' - '+ item.NIVEL_4
        }));
    }).catch(error => {
        console.error('Error al cargar los datos:', error);
        // Manejar errores según sea necesario
        return []; // Devolver un array vacío en caso de error
    });
}

function nivel5() {
    return $.ajax({
        url: 'https://panel.fivetwofive.tech/yaaxlum/public/select2/nivel5', // URL del recurso
        type: 'GET', // Tipo de solicitud
        dataType: 'json', // Tipo de datos esperados del servidor
    }).then(response => {
        // Mapear la respuesta a un formato que Select2 pueda usar
        return response.map(item => ({
            id: item.ID_N5,
            text: item.COD_N5 + ' - '+item.NIVEL_5
        }));
    }).catch(error => {
        console.error('Error al cargar los datos:', error);
        // Manejar errores según sea necesario
        return []; // Devolver un array vacío en caso de error
    });
}

function nivel6() {
    return $.ajax({
        url: 'https://panel.fivetwofive.tech/yaaxlum/public/select2/nivel6', // URL del recurso
        type: 'GET', // Tipo de solicitud
        dataType: 'json', // Tipo de datos esperados del servidor
    }).then(response => {
        // Mapear la respuesta a un formato que Select2 pueda usar
        return response.map(item => ({
            id: item.ID_N6,
            text: item.COD_N6 + ' - '+item.NIVEL_6
        }));
    }).catch(error => {
        console.error('Error al cargar los datos:', error);
        // Manejar errores según sea necesario
        return []; // Devolver un array vacío en caso de error
    });
}

function nivel7() {
    return $.ajax({
        url: 'https://panel.fivetwofive.tech/yaaxlum/public/select2/nivel7', // URL del recurso
        type: 'GET', // Tipo de solicitud
        dataType: 'json', // Tipo de datos esperados del servidor
    }).then(response => {
        // Mapear la respuesta a un formato que Select2 pueda usar
        return response.map(item => ({
            id: item.ID_N7,
            text: item.COD_N7 + ' - '+item.NIVEL_7
        }));
    }).catch(error => {
        console.error('Error al cargar los datos:', error);
        // Manejar errores según sea necesario
        return []; // Devolver un array vacío en caso de error
    });
}

function tcuenta() {
    return $.ajax({
        url: 'https://panel.fivetwofive.tech/yaaxlum/public/select2/tcuenta', // URL del recurso
        type: 'GET', // Tipo de solicitud
        dataType: 'json', // Tipo de datos esperados del servidor
    }).then(response => {
        // Mapear la respuesta a un formato que Select2 pueda usar
        return response.map(item => ({
            id: item.ID_TIPO_CUENTA,
            text: item.TIPO_CUENTA
        }));
    }).catch(error => {
        console.error('Error al cargar los datos:', error);
        // Manejar errores según sea necesario
        return []; // Devolver un array vacío en caso de error
    });
}

function naturaleza() {
    return $.ajax({
        url: 'https://panel.fivetwofive.tech/yaaxlum/public/select2/naturaleza', // URL del recurso
        type: 'GET', // Tipo de solicitud
        dataType: 'json', // Tipo de datos esperados del servidor
    }).then(response => {
        // Mapear la respuesta a un formato que Select2 pueda usar
        return response.map(item => ({
            id: item.ID_NATURALEZA,
            text: item.NATURALEZA
        }));
    }).catch(error => {
        console.error('Error al cargar los datos:', error);
        // Manejar errores según sea necesario
        return []; // Devolver un array vacío en caso de error
    });
}

function cuentaSat() {
    return $.ajax({
        url: 'https://panel.fivetwofive.tech/yaaxlum/public/select2/catSat', // URL del recurso
        type: 'GET', // Tipo de solicitud
        dataType: 'json', // Tipo de datos esperados del servidor
    }).then(response => {
        // Mapear la respuesta a un formato que Select2 pueda usar
        return response.map(item => ({
            id: item.ID_SAT,
            text: item.COD_SAT +' - '+item.CUENTA_SAT
        }));
    }).catch(error => {
        console.error('Error al cargar los datos:', error);
        // Manejar errores según sea necesario
        return []; // Devolver un array vacío en caso de error
    });
}


function catReports() {
    return $.ajax({
        url: 'https://panel.fivetwofive.tech/yaaxlum/public/select2/reportes', // URL del recurso
        type: 'GET', // Tipo de solicitud
        dataType: 'json', // Tipo de datos esperados del servidor
    }).then(response => {
        // Mapear la respuesta a un formato que Select2 pueda usar
        return response.map(item => ({
            id: item.ID_REPORTE,
            text:item.REPORTE
        }));
    }).catch(error => {
        console.error('Error al cargar los datos:', error);
        // Manejar errores según sea necesario
        return []; // Devolver un array vacío en caso de error
    });
}

// Función para inicializar un Select2 con datos precargados
async function initializeSelect2(selectElementId, dataFunction) {
    const options = await dataFunction();
    $('#' + selectElementId).select2({
        data: options,
        placeholder: 'Seleccione una opción',
        width: 'resolve'
    }).trigger('change'); // Trigger change to ensure styles are applied
}