// Llenar el formulario para editar una materia
function editarMateria(datos) {
    const form = document.getElementById('formMateria');
    form.id.value = datos.Id;
    form.cod_materia.value = datos.cod_materia;
    form.nom_materia.value = datos.nom_materia;
    
    // Importante: usar el nombre correcto del campo select
    const selectAcceso = form.querySelector('select[name="acceso_id"]');
    if (selectAcceso) {
        selectAcceso.value = datos.acceso_id;
    }
    
    form.cant_pregunta.value = datos.cant_pregunta || 0;
    
    window.scrollTo({ top: 0, behavior: 'smooth' });
}

// Confirmar y eliminar materia con SweetAlert2
function eliminarMateria(id) {
    Swal.fire({
        title: '¿Está seguro?',
        text: "Se eliminará esta materia",
        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_materias.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 la materia.', '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('formMateria').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');

    // Validar campos obligatorios
    const cod_materia = formData.get('cod_materia').trim();
    const nom_materia = formData.get('nom_materia').trim();
    const acceso_id = formData.get('acceso_id').trim();
    const cant_pregunta = formData.get('cant_pregunta').trim();

    if (!cod_materia || !nom_materia || !acceso_id) {
        Swal.fire('Error', 'Todos los campos son obligatorios excepto cantidad de preguntas', 'error');
        return;
    }

    if (cant_pregunta && (!Number.isInteger(Number(cant_pregunta)) || Number(cant_pregunta) < 0)) {
        Swal.fire({
            icon: 'error',
            title: 'Error',
            text: 'La cantidad de preguntas debe ser un número entero mayor o igual a 0',
            width: '400px'
        });        
        return;
    }

    // Continuar con registro o actualización
    fetch('procesar_crud_materias.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 (/materia registrada|actualizada/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 Importar con SweetAlert2
document.addEventListener('DOMContentLoaded', () => {
    const btnImportar = document.getElementById('importarBtn');
    if (!btnImportar) return;

    btnImportar.addEventListener('click', async () => {
        const result = await Swal.fire({
            title: '¿Está seguro?',
            text: 'Esta función permitirá importar materias desde un archivo.',
            icon: 'question',
            showCancelButton: true,
            confirmButtonText: 'Sí, continuar',
            cancelButtonText: 'Cancelar',
            width: '400px'
        });

        if (!result.isConfirmed) return;

        // Crear input file dinámicamente
        const input = document.createElement('input');
        input.type = 'file';
        input.accept = '.csv,.txt,.xlsx';
        
        input.onchange = async function(e) {
            const file = e.target.files[0];
            if (!file) return;

            const formData = new FormData();
            formData.append('archivo', file);
            formData.append('accion', 'importar');

            try {
                Swal.fire({
                    title: 'Procesando archivo...',
                    text: 'Espere un momento mientras se importa.',
                    icon: 'info',
                    allowOutsideClick: false,
                    didOpen: () => Swal.showLoading(),
                    width: '400px'
                });
                
                const resp = await fetch('importar_materias.php', {
                    method: 'POST',
                    body: formData
                });
                
                const data = await resp.text();
                
                Swal.close();
                Swal.fire({
                    icon: /error/i.test(data) ? 'error' : 'success',
                    title: 'Resultado',
                    text: data,
                    timer: 4000,
                    showConfirmButton: false,
                    width: '400px'
                }).then(() => {
                    if (!/error/i.test(data)) {
                        location.reload();
                    }
                });
            } catch (e) {
                console.error(e);
                Swal.fire('Error', 'Error al procesar el archivo', 'error');
            }
        };

        input.click();
    });
});