// Llenar el formulario para editar un usuario
function editarUsuario(datos) {
    const form = document.getElementById('formUsuario');
    const contenedorFecha = document.getElementById('contenedorFechaRegistro');
    
    form.id.value = datos.Id;
    form.nombres.value = datos.nombres;
    form.apellidos.value = datos.apellidos;
    form.correo.value = datos.usuario;
    form.telefono.value = datos.telefono;
    form.acceso.value = datos.acceso_id;
    form.habilitado.value = datos.habilitado;
    
    // Mostrar y llenar el campo fecha_registro en formato YYYY-MM-DD
    if (datos.fecha_registro) {
        contenedorFecha.style.display = 'block';
        let soloFecha = datos.fecha_registro.split(' ')[0];  // ← Agregar esta línea
        form.fecha_registro.value = soloFecha;                // ← Y cambiar esta
    }
    
    // Contraseña queda vacía por seguridad
    form.contrasena.value = "";
    form.confirmar.value = "";
    
    // Reiniciar iconos de contraseña
    document.getElementById('iconContrasena').textContent = '👁️‍🗨️';
    document.getElementById('iconConfirmar').textContent = '👁️‍🗨️';
    document.getElementById('contrasena').type = 'password';
    document.getElementById('confirmar').type = 'password';
    
    window.scrollTo({ top: 0, behavior: 'smooth' });
}

// Confirmar y eliminar usuario con SweetAlert2
function eliminarUsuario(id) {
    Swal.fire({
        title: '¿Está seguro?',
        text: "Se eliminará este usuario",
        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.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({
                    icon: 'error',
                    title: 'Error',
                    text: 'Error al eliminar el usuario.',
                    width: '400px'
                });
            });
        }
    });
}

// Mostrar mensajes en pantalla (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('formUsuario').addEventListener('submit', async function (e) {
    e.preventDefault();

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

    // Validar correo solo si es nuevo
    if (!esActualizar) {
        try {
            const resp = await fetch('validar_correo.php', {
                method: 'POST',
                body: new URLSearchParams({ correo })
            });
            const data = await resp.json();
            if (!data.ok) {
                Swal.fire({
                    icon: 'error',
                    title: 'Error',
                    text: data.mensaje,
                    width: '400px'
                });
                document.querySelector('input[name="correo"]').focus();
                return; // no continúa con el registro
            }
        } catch (err) {
            console.error(err);
            Swal.fire({
                icon: 'error',
                title: 'Error',
                text: 'Error al verificar el correo',
                width: '400px'
            });
            return;
        }
    }

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

// Limpiar formulario y ocultar fecha_registro
document.getElementById('formUsuario').addEventListener('reset', function() {
    const contenedorFecha = document.getElementById('contenedorFechaRegistro');
    contenedorFecha.style.display = 'none';
    this.id.value = '';
    
    // Reiniciar iconos de contraseña
    document.getElementById('iconContrasena').textContent = '👁️‍🗨️';
    document.getElementById('iconConfirmar').textContent = '👁️‍🗨️';
    document.getElementById('contrasena').type = 'password';
    document.getElementById('confirmar').type = 'password';
});

document.addEventListener('DOMContentLoaded', () => {
    const btnReset = document.getElementById('resetUsuariosBtn');
    if (!btnReset) return;

    btnReset.addEventListener('click', async () => {
        const result = await Swal.fire({
            title: '¿Está seguro?',
            text: 'Se deshabilitará a todos los usuarios (excepto ADMIN).',
            icon: 'warning',
            showCancelButton: true,
            confirmButtonText: 'Sí, continuar',
            cancelButtonText: 'Cancelar',
            width: '400px'
        });

        if (!result.isConfirmed) return;

        try {
            const resp = await fetch('reset_usuarios.php', {
                method: 'POST',
                headers: { 'Content-Type': 'application/json' },
                body: JSON.stringify({ accion: 'reset' })
            });
            const data = await resp.json();
            Swal.fire({
                icon: data.ok ? 'success' : 'error',
                title: 'Resultado',
                text: data.mensaje || 'Operación completada',
                timer: 4000,
                showConfirmButton: false,
                width: '400px'
            }).then(() => location.reload());
        } catch (e) {
            console.error(e);
            Swal.fire({
                icon: 'error',
                title: 'Error',
                text: 'Error al resetear usuarios',
                width: '400px'
            });
        }
    });
});