Actualizar asignados.html
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
<html lang="es">
|
<html lang="es">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<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>
|
<title>Pendientes de Cita - IntegraRepara</title>
|
||||||
<script src="https://cdn.tailwindcss.com"></script>
|
<script src="https://cdn.tailwindcss.com"></script>
|
||||||
<script src="https://unpkg.com/lucide@latest"></script>
|
<script src="https://unpkg.com/lucide@latest"></script>
|
||||||
@@ -234,6 +234,7 @@
|
|||||||
let globalAllServices = [];
|
let globalAllServices = [];
|
||||||
let pendingRequests = [];
|
let pendingRequests = [];
|
||||||
let systemStatuses = [];
|
let systemStatuses = [];
|
||||||
|
let systemGuilds = [];
|
||||||
let bizHours = { m_start: '09:00', m_end: '14:00', a_start: '16:00', a_end: '19:00' };
|
let bizHours = { m_start: '09:00', m_end: '14:00', a_start: '16:00', a_end: '19:00' };
|
||||||
|
|
||||||
// Variables del Agendador Inteligente
|
// Variables del Agendador Inteligente
|
||||||
@@ -270,16 +271,22 @@
|
|||||||
}
|
}
|
||||||
await applyTheme();
|
await applyTheme();
|
||||||
lucide.createIcons();
|
lucide.createIcons();
|
||||||
loadStatuses();
|
await loadStatusesAndGuilds();
|
||||||
refreshData();
|
refreshData();
|
||||||
});
|
});
|
||||||
|
|
||||||
async function loadStatuses() {
|
async function loadStatusesAndGuilds() {
|
||||||
try {
|
try {
|
||||||
const res = await fetch(`${API_URL}/statuses`, { headers: { "Authorization": `Bearer ${localStorage.getItem("token")}` } });
|
const headers = { "Authorization": `Bearer ${localStorage.getItem("token")}` };
|
||||||
const data = await res.json();
|
const [resSt, resG] = await Promise.all([
|
||||||
if (data.ok) systemStatuses = data.statuses;
|
fetch(`${API_URL}/statuses`, { headers }),
|
||||||
} catch (e) { }
|
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() {
|
async function refreshData() {
|
||||||
@@ -288,8 +295,9 @@
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const headers = { "Authorization": `Bearer ${localStorage.getItem("token")}` };
|
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 dataActivos = await resActivos.json();
|
||||||
|
|
||||||
const resReqs = await fetch(`${API_URL}/agenda/requests`, { headers });
|
const resReqs = await fetch(`${API_URL}/agenda/requests`, { headers });
|
||||||
@@ -299,16 +307,25 @@
|
|||||||
globalAllServices = dataActivos.services;
|
globalAllServices = dataActivos.services;
|
||||||
pendingRequests = dataReqs.requests;
|
pendingRequests = dataReqs.requests;
|
||||||
|
|
||||||
|
// FILTRO MAESTRO CORREGIDO
|
||||||
localServices = globalAllServices.filter(s => {
|
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 || {};
|
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;
|
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) {
|
if (raw.status_operativo) {
|
||||||
const st = systemStatuses.find(x => String(x.id) === String(raw.status_operativo));
|
const st = systemStatuses.find(x => String(x.id) === String(raw.status_operativo));
|
||||||
if (st && st.is_final) return false;
|
if (st && st.is_final) return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user