diff --git a/asignados.html b/asignados.html
index 466bde4..6f3f2dc 100644
--- a/asignados.html
+++ b/asignados.html
@@ -2,7 +2,7 @@
-
+
Pendientes de Cita - IntegraRepara
@@ -234,6 +234,7 @@
let globalAllServices = [];
let pendingRequests = [];
let systemStatuses = [];
+ let systemGuilds = [];
let bizHours = { m_start: '09:00', m_end: '14:00', a_start: '16:00', a_end: '19:00' };
// Variables del Agendador Inteligente
@@ -270,16 +271,22 @@
}
await applyTheme();
lucide.createIcons();
- loadStatuses();
+ await loadStatusesAndGuilds();
refreshData();
});
- async function loadStatuses() {
+ async function loadStatusesAndGuilds() {
try {
- const res = await fetch(`${API_URL}/statuses`, { headers: { "Authorization": `Bearer ${localStorage.getItem("token")}` } });
- const data = await res.json();
- if (data.ok) systemStatuses = data.statuses;
- } catch (e) { }
+ const headers = { "Authorization": `Bearer ${localStorage.getItem("token")}` };
+ const [resSt, resG] = await Promise.all([
+ fetch(`${API_URL}/statuses`, { headers }),
+ fetch(`${API_URL}/guilds`, { headers })
+ ]);
+ const dataSt = await resSt.json();
+ const dataG = await resG.json();
+ if (dataSt.ok) systemStatuses = dataSt.statuses;
+ if (dataG.ok) systemGuilds = dataG.guilds;
+ } catch(e) {}
}
async function refreshData() {
@@ -288,8 +295,9 @@
try {
const headers = { "Authorization": `Bearer ${localStorage.getItem("token")}` };
+ const myUserId = JSON.parse(atob(localStorage.getItem('token').split('.')[1])).sub;
- const resActivos = await fetch(`${API_URL}/services/active`, { headers });
+ const resActivos = await fetch(`${API_URL}/providers/scraped`, { headers });
const dataActivos = await resActivos.json();
const resReqs = await fetch(`${API_URL}/agenda/requests`, { headers });
@@ -299,16 +307,25 @@
globalAllServices = dataActivos.services;
pendingRequests = dataReqs.requests;
+ // FILTRO MAESTRO CORREGIDO
localServices = globalAllServices.filter(s => {
- if (s.provider === 'SYSTEM_BLOCK') return false;
+ // 1. Descartar si no es mío, si es bloqueo o si está en la papelera
+ if (s.assigned_to !== myUserId || s.provider === 'SYSTEM_BLOCK' || s.status === 'archived') return false;
+
const raw = s.raw_data || {};
- if (raw.scheduled_date && raw.scheduled_date.trim() !== "") return false;
+
+ // 2. Si ya está en la lista de solicitudes, no lo duplicamos
if (raw.appointment_status === 'pending') return false;
+ // 3. SOLO PASAN LOS QUE NO TIENEN FECHA
+ if (raw.scheduled_date && raw.scheduled_date.trim() !== "") return false;
+
+ // 4. Asegurarnos de que no está terminado/anulado
if (raw.status_operativo) {
const st = systemStatuses.find(x => String(x.id) === String(raw.status_operativo));
if (st && st.is_final) return false;
}
+
return true;
});