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 (
Gerencie suas consultas e acompanhe seu histórico médico
Carregando suas consultas...
{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' })}
{agendamento.especialidadeMedico}
)}Você não tem consultas agendadas