diff --git a/usuarios.html b/usuarios.html
index 0382d5e..9f50b89 100644
--- a/usuarios.html
+++ b/usuarios.html
@@ -401,34 +401,82 @@
});
}
- function renderUsersTable() {
- const tbody = document.getElementById('usersListBody');
- tbody.innerHTML = currentUsers.length === 0 ? `
| Cargando equipo... |
` : "";
- currentUsers.forEach(u => {
- const uGuildNames = (u.guilds || []).map(gid => availableGuilds.find(ag => ag.id === gid)?.name).filter(Boolean).join(", ");
- 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);
- return acc;
- }, {});
+ function renderUsersTable() {
+ const tbody = document.getElementById('usersListBody');
+ 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);
+ const uGuildNames = (u.guilds || []).map(gid => availableGuilds.find(ag => ag.id === gid)?.name).filter(Boolean).join(", ");
+
+ 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);
+ return acc;
+ }, {});
- const uZonesHtml = Object.keys(groupedZones).map(city => {
- return `📍 ${city} (${groupedZones[city].join(", ")})
`;
- }).join("") || 'Sin zona';
+ const uZonesHtml = Object.keys(groupedZones).map(city => {
+ return `
+ 📍 ${city}
+ (${groupedZones[city].join(", ")})
+
`;
+ }).join("") || 'Sin zona';
- tbody.innerHTML += `
-
- ${u.full_name}${u.email} |
- ${u.phone} |
- ${u.role} ${uGuildNames || '-'} |
- ${uZonesHtml} |
-
-
-
- |
-
`;
- });
+ // Aplicamos clases CSS de "grisado" si no está activo
+ tbody.innerHTML += `
+
+
+
+
+ ${!isActive ? '' : ''}
+ ${u.full_name}
+
+ ${u.email}
+ ${!isActive ? ' [ Baja Temporal ]' : ''}
+
+ |
+ ${u.phone} |
+
+ ${u.role}
+ ${uGuildNames || '-'}
+ |
+ ${uZonesHtml} |
+
+
+
+
+
+
+ |
+
`;
+ });
+ lucide.createIcons(); // Importante para que se vea el candado
+}
+
+// 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';
+ if(!confirm(`¿Deseas cambiar el estado de este operario?`)) 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 })
+ });
+ if(await res.json()) {
+ showToast(newStatus === 'active' ? "Operario activado" : "Operario en baja temporal");
+ fetchUsers();
}
+ } catch(e) { showToast("Error", true); }
+}
function showToast(msg, err=false){
const t=document.getElementById('toast'), m=document.getElementById('toastMsg');