"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 DoctorLayout from "@/components/doctor-layout"; import { AvailabilityService } from "@/services/availabilityApi.mjs"; import { usersService } from "@/services/usersApi.mjs"; import { toast } from "@/hooks/use-toast"; import { useRouter } from "next/navigation"; interface UserPermissions { isAdmin: boolean; isManager: boolean; isDoctor: boolean; isSecretary: boolean; isAdminOrManager: boolean; } interface UserData { user: { id: string; email: string; email_confirmed_at: string | null; created_at: string | null; last_sign_in_at: string | null; }; profile: { id: string; full_name: string; email: string; phone: string; avatar_url: string | null; disabled: boolean; created_at: string | null; updated_at: string | null; }; roles: string[]; permissions: UserPermissions; } export default function AvailabilityPage() { const [error, setError] = useState(null); const router = useRouter(); const [isLoading, setIsLoading] = useState(false); const [userData, setUserData] = useState(); const [modalidadeConsulta, setModalidadeConsulta] = useState(""); useEffect(() => { const fetchData = async () => { try { const response = await AvailabilityService.list(); console.log(response); const user = await usersService.getMe(); console.log(user); setUserData(user); } catch (e: any) { alert(`${e?.error} ${e?.message}`); } }; fetchData(); }, []); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (isLoading) return; setIsLoading(true); const form = e.currentTarget; const formData = new FormData(form); const apiPayload = { doctor_id: userData?.user.id, 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, }; console.log(apiPayload); try { const res = await AvailabilityService.create(apiPayload); console.log(res); let message = "disponibilidade cadastrada com sucesso"; try { if (!res[0].id) { throw new Error(`${res.error} ${res.message}` || "A API retornou erro"); } else { console.log(message); } } catch {} toast({ title: "Sucesso", description: message, }); router.push("#"); // adicionar página para listar a disponibilidade } catch (err: any) { toast({ title: "Erro", description: err?.message || "Não foi possível cadastrar o paciente", }); } finally { setIsLoading(false); } }; return (

Definir Disponibilidade

Defina sua disponibilidade para consultas

Dados

); }