"use client"; import type React from "react"; import { useState, useEffect } from "react"; import DoctorLayout from "@/components/doctor-layout"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Clock, Calendar, MapPin, Phone, User, X, RefreshCw } from "lucide-react"; import { Badge } from "@/components/ui/badge"; import { toast } from "sonner"; const APPOINTMENTS_STORAGE_KEY = "clinic-appointments"; // Tipagem da consulta (mantida) interface LocalStorageAppointment { id: number; patientName: string; doctor: string; specialty: string; date: string; time: string; status: "agendada" | "confirmada" | "cancelada" | "realizada"; location: string; phone: string; } // SIMULAÇÃO DO MÉDICO LOGADO - Mantemos apenas para informação no cabeçalho // O NOME AQUI NÃO ESTÁ MAIS SENDO USADO PARA FILTRAR const LOGGED_IN_DOCTOR_NAME = "Dr. João Silva (TODAS AS CONSULTAS)"; // --- COMPONENTE PRINCIPAL --- export default function DoctorAppointmentsPage() { const [appointments, setAppointments] = useState([]); const [isLoading, setIsLoading] = useState(true); useEffect(() => { loadAppointments(); }, []); const loadAppointments = () => { setIsLoading(true); try { const storedAppointmentsRaw = localStorage.getItem(APPOINTMENTS_STORAGE_KEY); const allAppointments: LocalStorageAppointment[] = storedAppointmentsRaw ? JSON.parse(storedAppointmentsRaw) : []; // ***** MUDANÇA IMPLEMENTADA ***** // Removemos a filtragem para que todas as consultas sejam exibidas const appointmentsToShow = allAppointments; // 2. Ordena por Data e Hora appointmentsToShow.sort((a, b) => { const dateTimeA = new Date(`${a.date}T${a.time}:00`); const dateTimeB = new Date(`${b.date}T${b.time}:00`); return dateTimeA.getTime() - dateTimeB.getTime(); }); setAppointments(appointmentsToShow); // Exibe a lista completa (e ordenada) toast.success("Agenda atualizada com sucesso!"); } catch (error) { console.error("Erro ao carregar a agenda do LocalStorage:", error); toast.error("Não foi possível carregar sua agenda."); } finally { setIsLoading(false); } }; // Função utilitária (mantida) const getStatusVariant = (status: LocalStorageAppointment['status']) => { switch (status) { case "confirmada": case "agendada": return "default"; case "realizada": return "secondary"; case "cancelada": return "destructive"; default: return "outline"; } }; const handleCancel = (id: number) => { const storedAppointmentsRaw = localStorage.getItem(APPOINTMENTS_STORAGE_KEY); const allAppointments: LocalStorageAppointment[] = storedAppointmentsRaw ? JSON.parse(storedAppointmentsRaw) : []; const updatedAppointments = allAppointments.map(app => app.id === id ? { ...app, status: "cancelada" as const } : app ); localStorage.setItem(APPOINTMENTS_STORAGE_KEY, JSON.stringify(updatedAppointments)); loadAppointments(); // Recarrega a lista toast.info(`Consulta cancelada com sucesso.`); }; const handleReSchedule = (id: number) => { toast.info(`Reagendamento da Consulta ID: ${id}. Navegar para a página de agendamento.`); }; return (

Minhas Consultas (Agenda Completa)

Todas as consultas agendadas, para qualquer médico, são exibidas aqui ({LOGGED_IN_DOCTOR_NAME})

{isLoading ? (

Carregando a agenda...

) : appointments.length === 0 ? (

Nenhuma consulta agendada no sistema.

) : ( appointments.map((appointment) => { const showActions = appointment.status === "agendada" || appointment.status === "confirmada"; return ( {/* NOME DO PACIENTE */} {appointment.patientName} {/* STATUS DA CONSULTA */} {appointment.status} {/* Coluna de Detalhes */}
Médico: {appointment.doctor}
{new Date(appointment.date).toLocaleDateString("pt-BR", { timeZone: "UTC" })}
{appointment.time}
{/* Coluna 2: Local e Contato */}
{appointment.location}
{appointment.phone || "N/A"}
{/* COLUNA 3: Ações (Botões) */}
{showActions && (
)}
); }) )}
); }