// Gestion de Usuarios let usuarioEditando = null; document.addEventListener('DOMContentLoaded', function() { console.log('DOM cargado - Inicializando Gestion_Usuarios.js'); cargarUsuarios(); // Escuchar el envío del formulario const formulario = document.getElementById('form-registrar-usuario'); if (formulario) { formulario.addEventListener('submit', function(e) { e.preventDefault(); console.log('Formulario enviado'); if (usuarioEditando) { actualizarUsuario(); } else { registrarUsuario(); } }); } else { console.error('No se encontró el formulario con ID form-registrar-usuario'); } const btnCancelar = document.getElementById('btn-cancelar-edicion'); btnCancelar.addEventListener('click', cancelarEdicion); }); function cargarUsuarios() { console.log('Cargando usuarios...'); fetch('../php/Obtener_Usuarios.php') .then(response => { console.log('Respuesta status:', response.status); if (!response.ok) { throw new Error('Error HTTP: ' + response.status); } return response.json(); }) .then(data => { console.log('Datos recibidos:', data); if (data.success) { const tbody = document.querySelector('#tabla-usuarios tbody'); tbody.innerHTML = ''; if (data.usuarios.length === 0) { tbody.innerHTML = 'No hay usuarios registrados'; return; } data.usuarios.forEach(usuario => { const row = document.createElement('tr'); row.dataset.user = JSON.stringify(usuario); row.dataset.userId = usuario.ID_Usuario; const esSupremo = usuario.ID_Usuario === 1; const botonEliminar = esSupremo ? `` : ``; row.innerHTML = ` ${usuario.Usuario} ${usuario.Nombre} ${usuario.Apellido} ${usuario.DNI} ${usuario.Rol === 'admin' ? 'Administrador' : usuario.Rol === 'cantina' ? 'Trabajador Cantina' : 'Trabajador Cancha'} ${usuario.Telefono || '-'} ${usuario.Correo || '-'} `; tbody.appendChild(row); }); } else { console.error('Error al cargar usuarios:', data.message); const tbody = document.querySelector('#tabla-usuarios tbody'); tbody.innerHTML = 'Error al cargar usuarios'; } }) .catch(error => { console.error('Error en fetch:', error); const tbody = document.querySelector('#tabla-usuarios tbody'); tbody.innerHTML = 'Error de conexión'; }); } function registrarUsuario() { const formulario = document.getElementById('form-registrar-usuario'); const formData = new FormData(formulario); const contraseña = formData.get('contraseña')?.toString().trim() || ''; const confirmarContraseña = formData.get('confirmar_contraseña')?.toString().trim() || ''; // Validar que el rol esté seleccionado if (!formData.get('rol')) { alert('Por favor selecciona un rol'); return; } if (contraseña.length < 6) { alert('La contraseña debe tener al menos 6 carácteres'); return; } if (contraseña !== confirmarContraseña) { alert('Las contraseñas no coinciden'); return; } console.log('Registrando usuario:', { usuario: formData.get('usuario'), rol: formData.get('rol'), nombre: formData.get('nombre') }); fetch('../php/Guardar_Usuario.php', { method: 'POST', body: formData }) .then(response => { console.log('Respuesta status:', response.status); if (!response.ok) { throw new Error('Error HTTP: ' + response.status); } return response.json(); }) .then(data => { console.log('Respuesta del servidor:', data); if (data.success) { alert('✅ Usuario registrado exitosamente'); formulario.reset(); cargarUsuarios(); } else { alert('❌ Error: ' + (data.message || 'No se pudo registrar el usuario')); } }) .catch(error => { console.error('Error en fetch:', error); alert('❌ Error al registrar el usuario: ' + error.message); }); } function editarUsuario(id) { console.log('Editando usuario con ID:', id); // Buscar la fila por el ID del usuario de forma más robusta let row = null; const filas = document.querySelectorAll('#tabla-usuarios tbody tr'); for (let fila of filas) { if (fila.dataset.userId == id) { // Comparación flexible de tipos row = fila; break; } } if (!row || !row.dataset.user) { console.error('No se encontró el usuario con ID:', id); alert('❌ Error: No se pudo encontrar el usuario. Por favor recarga la página e intenta de nuevo.'); return; } try { const usuario = JSON.parse(row.dataset.user); document.getElementById('usuario-id').value = usuario.ID_Usuario; document.getElementById('usuario-username').value = usuario.Usuario; document.getElementById('usuario-password').value = usuario.Contraseña; document.getElementById('usuario-password-confirm').value = usuario.Contraseña; document.querySelector('input[name="nombre"]').value = usuario.Nombre || ''; document.querySelector('input[name="apellido"]').value = usuario.Apellido || ''; document.querySelector('input[name="dni"]').value = usuario.DNI || ''; document.querySelector('input[name="telefono"]').value = usuario.Telefono || ''; document.querySelector('input[name="correo"]').value = usuario.Correo || ''; document.querySelector('select[name="rol"]').value = usuario.Rol; usuarioEditando = id; document.getElementById('btn-registrar-usuario').textContent = 'Guardar Cambios'; document.getElementById('btn-cancelar-edicion').style.display = 'inline-block'; console.log('Usuario cargado para edición:', usuario.Usuario); } catch (error) { console.error('Error al parsear datos del usuario:', error); alert('❌ Error: Los datos del usuario están corruptos. Por favor recarga la página.'); } } function cancelarEdicion() { usuarioEditando = null; document.getElementById('form-registrar-usuario').reset(); document.getElementById('usuario-id').value = ''; document.getElementById('btn-registrar-usuario').textContent = 'Registrar Usuario'; document.getElementById('btn-cancelar-edicion').style.display = 'none'; } function actualizarUsuario() { const formulario = document.getElementById('form-registrar-usuario'); const formData = new FormData(formulario); const contraseña = formData.get('contraseña')?.toString().trim() || ''; const confirmarContraseña = formData.get('confirmar_contraseña')?.toString().trim() || ''; if (!usuarioEditando) { alert('No hay usuario seleccionado para editar'); return; } if (contraseña.length < 6) { alert('La contraseña debe tener al menos 6 carácteres'); return; } if (contraseña !== confirmarContraseña) { alert('Las contraseñas no coinciden'); return; } fetch('../php/Actualizar_Usuario.php', { method: 'POST', body: formData }) .then(response => { if (!response.ok) { throw new Error('Error HTTP: ' + response.status); } return response.json(); }) .then(data => { if (data.success) { alert('✅ Usuario actualizado exitosamente'); cancelarEdicion(); cargarUsuarios(); } else { alert('❌ Error: ' + (data.message || 'No se pudo actualizar el usuario')); } }) .catch(error => { console.error('Error en fetch:', error); alert('❌ Error al actualizar el usuario: ' + error.message); }); } function eliminarUsuario(id) { if (confirm('¿Estás seguro de que deseas eliminar este usuario? Esta acción no se puede deshacer.')) { console.log('Eliminando usuario con ID:', id); fetch('../php/Eliminar_Usuario.php', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, body: 'id=' + id }) .then(response => { console.log('Respuesta status:', response.status); if (!response.ok) { throw new Error('Error HTTP: ' + response.status); } return response.json(); }) .then(data => { console.log('Respuesta del servidor:', data); if (data.success) { alert('✅ Usuario eliminado exitosamente'); cargarUsuarios(); } else { alert('❌ Error: ' + (data.message || 'No se pudo eliminar el usuario')); } }) .catch(error => { console.error('Error en fetch:', error); alert('❌ Error al eliminar el usuario: ' + error.message); }); } }