"use client"; import { useState, useEffect } from "react"; import Link from "next/link"; 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 { disponibilidadeApi, Availability } from "@/services/disponibilidadeApi"; import { toast } from "@/hooks/use-toast"; import { useRouter } from "next/navigation"; export default function AvailabilityPage() { const [availabilities, setAvailabilities] = useState([]); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); const [isSubmitting, setIsSubmitting] = useState(false); const [modalidadeConsulta, setModalidadeConsulta] = useState(""); const router = useRouter(); // TODO: Substituir pelo ID do médico autenticado const doctorIdTemp = "3bb9ee4a-cfdd-4d81-b628-383907dfa225"; useEffect(() => { const fetchData = async () => { setIsLoading(true); setError(null); try { const response = await disponibilidadeApi.list(); setAvailabilities(response || []); } catch (e: any) { setError("Não foi possível carregar as disponibilidades existentes."); console.error(e); } finally { setIsLoading(false); } }; fetchData(); }, []); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (isSubmitting) return; setIsSubmitting(true); setError(null); const formData = new FormData(e.currentTarget); const apiPayload = { doctor_id: doctorIdTemp, created_by: doctorIdTemp, // TODO: Substituir pelo ID do usuário autenticado weekday: (formData.get("weekday") as string) || undefined, start_time: (formData.get("horarioEntrada") as string) || undefined, end_time: (formData.get("horarioSaida") as string) || undefined, slot_minutes: Number(formData.get("duracaoConsulta")) || undefined, appointment_type: modalidadeConsulta || undefined, active: true, }; try { await disponibilidadeApi.create(apiPayload as Omit); toast({ title: "Sucesso", description: "Disponibilidade cadastrada com sucesso.", }); router.push("/doctor/dashboard"); // Redirecionar para uma página de listagem ou dashboard } catch (err: any) { setError(err?.message || "Não foi possível cadastrar a disponibilidade."); toast({ title: "Erro", description: err?.message || "Não foi possível cadastrar a disponibilidade.", variant: "destructive", }); } finally { setIsSubmitting(false); } }; if (isLoading) { return
Carregando...
; } if (error) { return
Erro: {error}
; } return (

Definir Disponibilidade

Defina sua disponibilidade para consultas

Dados

); }