diff --git a/usuarios.html b/usuarios.html
index 9f50b89..53ffe28 100644
--- a/usuarios.html
+++ b/usuarios.html
@@ -401,15 +401,18 @@
});
}
- function renderUsersTable() {
+ function renderUsersTable() {
const tbody = document.getElementById('usersListBody');
+ if (!tbody) return;
+
tbody.innerHTML = currentUsers.length === 0 ? `
| Cargando equipo... |
` : "";
currentUsers.forEach(u => {
- // Determinamos si el usuario está activo basándonos en el campo 'status' del servidor
- const isActive = (u.status === 'active' || u.status === null);
+ // Detectamos si el operario está activo o de baja
+ const isActive = u.status === 'active';
const uGuildNames = (u.guilds || []).map(gid => availableGuilds.find(ag => ag.id === gid)?.name).filter(Boolean).join(", ");
+ // Agrupación visual de zonas
const groupedZones = (u.zones || []).reduce((acc, curr) => {
if (!acc[curr.city]) acc[curr.city] = [];
if (!acc[curr.city].includes(curr.cps)) acc[curr.city].push(curr.cps);
@@ -423,7 +426,7 @@
`;
}).join("") || 'Sin zona';
- // Aplicamos clases CSS de "grisado" si no está activo
+ // Aplicamos el estilo gris y opacidad si es baja temporal
tbody.innerHTML += `
|
@@ -433,7 +436,7 @@
${u.full_name}
${u.email}
- ${!isActive ? '[ Baja Temporal ]' : ''}
+ ${!isActive ? '[ Baja Temporal ]' : ''}
|
${u.phone} |
@@ -457,6 +460,29 @@
lucide.createIcons(); // Importante para que se vea el candado
}
+// Nueva función para el botón de Baja/Activar
+async function toggleUserStatus(id, currentStatus) {
+ const newStatus = currentStatus === 'active' ? 'inactive' : 'active';
+ const msg = newStatus === 'active' ? "¿Reactivar operario?" : "¿Dar de baja temporal?";
+ if(!confirm(msg)) return;
+
+ try {
+ const res = await fetch(`${API_URL}/admin/users/${id}/status`, {
+ method: 'PATCH',
+ headers: {
+ "Content-Type": "application/json",
+ "Authorization": `Bearer ${localStorage.getItem("token")}`
+ },
+ body: JSON.stringify({ status: newStatus })
+ });
+ const data = await res.json();
+ if(data.ok) {
+ showToast(newStatus === 'active' ? "Operario activado" : "Operario en baja temporal");
+ fetchUsers();
+ }
+ } catch(e) { showToast("Error de conexión", true); }
+}
+
// Asegúrate de tener también esta función para que los botones de la tabla funcionen
async function toggleUserStatus(id, currentStatus) {
const newStatus = currentStatus === 'active' ? 'inactive' : 'active';