import React, { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { FaCalendarAlt, FaCalendarCheck, FaFileAlt, FaUserMd, FaClock } from 'react-icons/fa'; import { useAuth } from '../components/utils/AuthProvider'; import API_KEY from '../components/utils/apiKeys'; import './style/inicioPaciente.css'; function InicioPaciente() { const navigate = useNavigate(); const { getAuthorizationHeader, isAuthenticated } = useAuth(); const [agendamentos, setAgendamentos] = useState([]); const [medicos, setMedicos] = useState([]); const [agendamentosComMedicos, setAgendamentosComMedicos] = useState([]); const [loading, setLoading] = useState(true); const [pacienteId, setPacienteId] = useState(null); useEffect(() => { const userId = localStorage.getItem('user_id') || localStorage.getItem('patient_id'); setPacienteId(userId); }, []); useEffect(() => { const fetchMedicos = async () => { try { const authHeader = getAuthorizationHeader(); const myHeaders = new Headers(); myHeaders.append("apikey", API_KEY); myHeaders.append("Authorization", authHeader); const requestOptions = { method: 'GET', headers: myHeaders, redirect: 'follow' }; const response = await fetch("https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/doctors", requestOptions); if (response.ok) { const data = await response.json(); setMedicos(data); console.log(' Médicos carregados:', data.length); } else { console.error(' Erro ao buscar médicos:', response.status); } } catch (error) { console.error(' Erro ao buscar médicos:', error); } }; const fetchAgendamentos = async () => { try { const authHeader = getAuthorizationHeader(); const myHeaders = new Headers(); myHeaders.append("apikey", API_KEY); myHeaders.append("Authorization", authHeader); const requestOptions = { method: 'GET', headers: myHeaders, redirect: 'follow' }; // Buscar todos os agendamentos (depois filtraremos pelo paciente) const response = await fetch("https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments", requestOptions); if (response.ok) { const data = await response.json(); setAgendamentos(data); console.log(' Agendamentos carregados:', data.length); } else { console.error(' Erro ao buscar agendamentos:', response.status); } } catch (error) { console.error(' Erro ao buscar agendamentos:', error); } finally { setLoading(false); } }; if (isAuthenticated) { fetchMedicos(); fetchAgendamentos(); } }, [isAuthenticated, getAuthorizationHeader]); useEffect(() => { if (agendamentos.length > 0 && medicos.length > 0) { const agendamentosComNomes = agendamentos.map(agendamento => { const medico = medicos.find(m => m.id === agendamento.doctor_id); return { ...agendamento, nomeMedico: medico?.full_name || 'Médico não encontrado', especialidadeMedico: medico?.specialty || '' }; }); setAgendamentosComMedicos(agendamentosComNomes); } }, [agendamentos, medicos]); const meusAgendamentos = agendamentosComMedicos.filter(a => pacienteId ? a.patient_id === pacienteId : true ); const hoje = new Date(); hoje.setHours(0, 0, 0, 0); const agendamentosFuturos = meusAgendamentos.filter(a => { if (!a.scheduled_at) return false; const dataAgendamento = new Date(a.scheduled_at); return dataAgendamento >= hoje && a.status !== 'cancelled' && a.status !== 'completed'; }).sort((a, b) => new Date(a.scheduled_at) - new Date(b.scheduled_at)); const proximasConsultas = agendamentosFuturos.length; const consultasHoje = agendamentosFuturos.filter(a => { const dataAgendamento = new Date(a.scheduled_at); dataAgendamento.setHours(0, 0, 0, 0); return dataAgendamento.getTime() === hoje.getTime(); }).length; const consultasPendentes = meusAgendamentos.filter(a => a.status === 'pending' || a.status === 'requested' ).length; const historicoConsultas = meusAgendamentos.filter(a => a.status === 'completed' ).length; return (

Bem-vindo ao MediConnect

Gerencie suas consultas e acompanhe seu histórico médico

Próximas Consultas {proximasConsultas}
Consultas Hoje {consultasHoje}
Aguardando {loading ? '...' : consultasPendentes}
Realizadas {historicoConsultas}

Acesso Rápido

navigate('/paciente/agendamento')}>
Minhas Consultas Ver todos os agendamentos
navigate('/paciente/laudo')}>
Meus Laudos Acessar documentos médicos
navigate('/paciente/agendamento')}>
Meus Médicos Ver histórico de atendimentos

Próximas Consultas

{loading ? (

Carregando suas consultas...

) : agendamentosFuturos.length > 0 ? (
{agendamentosFuturos.slice(0, 3).map(agendamento => (

{new Date(agendamento.scheduled_at).toLocaleTimeString('pt-BR', { hour: '2-digit', minute: '2-digit' })}

{new Date(agendamento.scheduled_at).toLocaleDateString('pt-BR', { day: '2-digit', month: 'short', year: 'numeric' })}

Dr(a): {agendamento.nomeMedico}

{agendamento.especialidadeMedico && (

{agendamento.especialidadeMedico}

)}
{agendamento.status === 'scheduled' ? 'Confirmado' : agendamento.status === 'pending' ? 'Aguardando' : agendamento.status === 'requested' ? 'Solicitado' : agendamento.status}
))} {agendamentosFuturos.length > 3 && ( )}
) : (

Você não tem consultas agendadas

)}
); } export default InicioPaciente;