// Llenar el formulario para editar un tipo de acceso
function editarAcceso(datos) {
    const form = document.getElementById('formAcceso');
    form.id.value = datos.Id;
    form.cod_acceso.value = datos.cod_acceso;
    form.tipo_acceso.value = datos.tipo_acceso;
    
    window.scrollTo({ top: 0, behavior: 'smooth' });
}

// Confirmar y eliminar tipo de acceso con SweetAlert2
function eliminarAcceso(id) {
    Swal.fire({
        title: '¿Está seguro?',
        text: "Se eliminará este tipo de acceso",
        icon: 'warning',
        showCancelButton: true,
        confirmButtonText: 'Sí, eliminar',
        cancelButtonText: 'Cancelar',
        width: '400px'
    }).then((result) => {
        if (result.isConfirmed) {
            const formData = new FormData();
            formData.append('accion', 'eliminar');
            formData.append('id', id);

            fetch('procesar_crud_accesos.php', {
                method: 'POST',
                body: formData
            })
            .then(res => res.text())
            .then(msg => {
                Swal.fire({
                    icon: /error/i.test(msg) ? 'error' : 'success',
                    title: 'Resultado',
                    text: msg,
                    timer: 4000,
                    showConfirmButton: false,
                    width: '400px'
                }).then(() => location.reload());
            })
            .catch(err => {
                console.error(err);
                Swal.fire('Error', 'Error al eliminar el tipo de acceso.', 'error');
            });
        }
    });
}

// Mostrar mensajes en pantalla (puedes mantener este si deseas inline)
function mostrarMensaje(texto, tipo = 'exito') {
    const contenedor = document.getElementById('mensaje');
    contenedor.innerHTML = texto;
    contenedor.className = `mensaje ${tipo}`;

    // Ocultar el mensaje después de 5 segundos
    setTimeout(() => {
        contenedor.innerHTML = '';
        contenedor.className = '';
    }, 5000);
}

// Enviar formulario (crear/actualizar)
document.getElementById('formAcceso').addEventListener('submit', async function (e) {
    e.preventDefault();

    const form = this;
    const formData = new FormData(form);
    const esActualizar = !!form.id.value;
    formData.append('accion', esActualizar ? 'actualizar' : 'registrar');

    // Validaciones básicas
    const cod_acceso = formData.get('cod_acceso').trim();
    const tipo_acceso = formData.get('tipo_acceso').trim();

    if (!cod_acceso || !tipo_acceso) {
        Swal.fire('Error', 'Todos los campos son obligatorios', 'error');
        return;
    }

    // Validar formato del código de acceso (solo letras, números y guiones)
    if (!/^[A-Za-z0-9_-]+$/.test(cod_acceso)) {
        Swal.fire({
            icon: 'error',
            title: 'Error',
            text: 'El código de acceso solo puede contener letras, números, guiones y guiones bajos',
            width: '400px'
        });
        return;
    }

    // Continuar con registro o actualización
    fetch('procesar_crud_accesos.php', {
        method: 'POST',
        body: formData
    })
    .then(res => res.text())
    .then(msg => {
        Swal.fire({
            icon: /error|no válida|ya existe/i.test(msg) ? 'error' : 'success',
            title: 'Resultado',
            text: msg,
            timer: 4000,
            showConfirmButton: false,
            width: '400px'
        }).then(() => {
            if (/registrado|actualizado/i.test(msg)) {
                location.reload();
            }
        });
    })
    .catch(err => {
        console.error(err);
        Swal.fire('Error', 'Ocurrió un error al procesar los datos.', 'error');
    });
});

// Funcionalidad del botón Reset (limpiar todo)
document.addEventListener('DOMContentLoaded', () => {
    const btnReset = document.querySelector('.reset-all');
    if (!btnReset) return;

    btnReset.addEventListener('click', async () => {
        const result = await Swal.fire({
            title: '¿Está seguro?',
            text: 'Se limpiarán todos los campos del formulario.',
            icon: 'question',
            showCancelButton: true,
            confirmButtonText: 'Sí, limpiar',
            cancelButtonText: 'Cancelar',
            width: '400px'
        });

        if (result.isConfirmed) {
            document.getElementById('formAcceso').reset();
            document.getElementById('id').value = '';
        }
    });
});