"use client" import type React from "react" import { useState, useEffect, useCallback } from "react" // Importações de componentes omitidas para brevidade, mas estão no código original import PatientLayout from "@/components/patient-layout" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Textarea } from "@/components/ui/textarea" import { Calendar, Clock, User } from "lucide-react" import { doctorsService } from "services/doctorsApi.mjs"; interface Doctor { id: string; full_name: string; specialty: string; phone_mobile: string; } // Chave do LocalStorage, a mesma usada em secretarypage.tsx const APPOINTMENTS_STORAGE_KEY = "clinic-appointments"; export default function ScheduleAppointment() { const [selectedDoctor, setSelectedDoctor] = useState("") const [selectedDate, setSelectedDate] = useState("") const [selectedTime, setSelectedTime] = useState("") const [notes, setNotes] = useState("") const [doctors, setDoctors] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const fetchDoctors = useCallback(async () => { setLoading(true); setError(null); try { const data: Doctor[] = await doctorsService.list(); setDoctors(data || []); } catch (e: any) { console.error("Erro ao carregar lista de médicos:", e); setError("Não foi possível carregar a lista de médicos. Verifique a conexão com a API."); setDoctors([]); } finally { setLoading(false); } }, []); useEffect(() => { fetchDoctors(); }, [fetchDoctors]); const availableTimes = [ "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", ] const handleSubmit = (e: React.FormEvent) => { e.preventDefault() const doctorDetails = doctors.find((d) => d.id === selectedDoctor) // --- SIMULAÇÃO DO PACIENTE LOGADO --- // Você só tem um usuário para cada role. Vamos simular um paciente: const patientDetails = { id: "P001", full_name: "Paciente Exemplo Único", // Este nome aparecerá na agenda do médico location: "Clínica Geral", phone: "(11) 98765-4321" }; if (!patientDetails || !doctorDetails) { alert("Erro: Selecione o médico ou dados do paciente indisponíveis."); return; } const newAppointment = { id: new Date().getTime(), // ID único simples patientName: patientDetails.full_name, doctor: doctorDetails.full_name, // Nome completo do médico (necessário para a listagem) specialty: doctorDetails.specialty, date: selectedDate, time: selectedTime, status: "agendada", phone: patientDetails.phone, }; // 1. Carrega agendamentos existentes const storedAppointmentsRaw = localStorage.getItem(APPOINTMENTS_STORAGE_KEY); const currentAppointments = storedAppointmentsRaw ? JSON.parse(storedAppointmentsRaw) : []; // 2. Adiciona o novo agendamento const updatedAppointments = [...currentAppointments, newAppointment]; // 3. Salva a lista atualizada no LocalStorage localStorage.setItem(APPOINTMENTS_STORAGE_KEY, JSON.stringify(updatedAppointments)); alert(`Consulta com ${doctorDetails.full_name} agendada com sucesso!`); // Limpar o formulário após o sucesso (opcional) setSelectedDoctor(""); setSelectedDate(""); setSelectedTime(""); setNotes(""); } return (

Agendar Consulta

Escolha o médico, data e horário para sua consulta

Dados da Consulta Preencha as informações para agendar sua consulta
setSelectedDate(e.target.value)} min={new Date().toISOString().split("T")[0]} />