Actualizar asignados.html
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
<html lang="es">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
|
||||
<title>Pendientes de Cita - IntegraRepara</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<script src="https://unpkg.com/lucide@latest"></script>
|
||||
@@ -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;
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user