"use client"; import DoctorLayout from "@/components/doctor-layout"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Calendar, Clock, User, Plus } from "lucide-react"; import Link from "next/link"; import { useEffect, useState } from "react"; import { AvailabilityService } from "@/services/availabilityApi.mjs"; type Availability = { id: string; doctor_id: string; weekday: string; start_time: string; end_time: string; slot_minutes: number; appointment_type: string; active: boolean; created_at: string; updated_at: string; created_by: string; updated_by: string | null; }; type Schedule = { weekday: object; }; export default function PatientDashboard() { const userInfo = JSON.parse(localStorage.getItem("user_info") || "{}"); const doctorId = "58ea5330-5cfe-4433-a218-2749844aee89"; //userInfo.id; const [availability, setAvailability] = useState(null); const [schedule, setSchedule] = useState>({}); const formatTime = (time: string) => time.split(":").slice(0, 2).join(":"); // Mapa de tradução const weekdaysPT: Record = { sunday: "Domingo", monday: "Segunda", tuesday: "Terça", wednesday: "Quarta", thursday: "Quinta", friday: "Sexta", saturday: "Sábado", }; useEffect(() => { const fetchData = async () => { try { const response = await AvailabilityService.list(); const filteredResponse = response.filter((disp: { doctor_id: any }) => disp.doctor_id == doctorId); setAvailability(filteredResponse); } catch (e: any) { alert(`${e?.error} ${e?.message}`); } }; fetchData(); }, []); function formatAvailability(data: Availability[]) { // Agrupar os horários por dia da semana const schedule = data.reduce((acc: any, item) => { const { weekday, start_time, end_time } = item; // Se o dia ainda não existe, cria o array if (!acc[weekday]) { acc[weekday] = []; } // Adiciona o horário do dia acc[weekday].push({ start: start_time, end: end_time, }); return acc; }, {} as Record); return schedule; } useEffect(() => { if (availability) { const formatted = formatAvailability(availability); setSchedule(formatted); } }, [availability]); return (

Dashboard

Bem-vindo ao seu portal de consultas médicas

Próxima Consulta
02 out

Dr. Silva - 14:30

Consultas Este Mês
4

4 agendadas

Perfil
100%

Dados completos

Ações Rápidas Acesse rapidamente as principais funcionalidades Próximas Consultas Suas consultas agendadas

Dr. João Santos

Cardiologia

02 out

14:30

Horário Semanal Confira rapidamente a sua disponibilidade da semana {["sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"].map((day) => { const times = schedule[day] || []; return (

{weekdaysPT[day]}

{times.length > 0 ? ( times.map((t, i) => (

{formatTime(t.start)}
{formatTime(t.end)}

)) ) : (

Sem horário

)}
); })}
); }