import { Routes, Route, Navigate, Link } from 'react-router-dom'; import { useAuth } from './context/AuthContext'; import ProtectedRoute from './components/ProtectedRoute'; import Login from './pages/Login'; import Dashboard from './pages/Dashboard'; import MinhasAulas from './pages/MinhasAulas'; import Financeiro from './pages/Financeiro'; import Notas from './pages/Notas'; import Frequencia from './pages/Frequencia'; import Contratos from './pages/Contratos'; import Certificados from './pages/Certificados'; import MeusDados from './pages/MeusDados'; import Avaliacoes from './pages/Avaliacoes'; import Sidebar from './components/Sidebar'; import Header from './components/Header'; import { useState, useEffect } from 'react'; import { AlertCircle } from 'lucide-react'; function AppLayout() { const { token } = useAuth(); const [overdueCount, setOverdueCount] = useState(0); const normalizeStatus = (payment: any) => { const s = payment.status?.toLowerCase(); if (['paid', 'received', 'confirmed', 'pago'].includes(s)) return 'paid'; if (['cancelled', 'cancelado'].includes(s)) return 'cancelled'; // Check if explicitly overdue in database if (['overdue', 'atrasado', 'atrasada', 'vencido'].includes(s)) return 'overdue'; // Everything else that is not paid/cancelled is treated as pending return 'pending'; }; useEffect(() => { if (!token) return; const checkFinance = async () => { try { const res = await fetch('/api/portal/financeiro', { headers: { Authorization: `Bearer ${token}` } }); if (res.ok) { const data = await res.json(); const atrasadas = (data.payments || []).filter((p: any) => normalizeStatus(p) === 'overdue' ).length; setOverdueCount(atrasadas); } } catch (err) { console.error('Erro ao verificar financeiro:', err); } }; checkFinance(); const interval = setInterval(checkFinance, 60000); // Check every minute return () => clearInterval(interval); }, [token]); return (