import React, { useState, useEffect, useCallback } from "react"; import { Link } from "react-router-dom"; const ENDPOINT_LISTAR = "https://mock.apidog.com/m1/1053378-0-default/rest/v1/doctor_availability"; const DisponibilidadesDoctorPage = () => { const [disponibilidades, setDisponibilidades] = useState([]); const [loading, setLoading] = useState(false); const [filtroMedicoId, setFiltroMedicoId] = useState(""); const [filtroActive, setFiltroActive] = useState("true"); const [medicoValido, setMedicoValido] = useState(false); const fetchDisponibilidades = useCallback(async (doctorId, activeStatus) => { setLoading(true); let url = `${ENDPOINT_LISTAR}?select=*`; if (doctorId) url += `&doctor_id=eq.${doctorId}`; if (activeStatus === "true" || activeStatus === "false") url += `&active=eq.${activeStatus}`; try { const response = await fetch(url); const result = await response.json(); setDisponibilidades(Array.isArray(result) ? result : []); setMedicoValido(Array.isArray(result) && result.length > 0); } catch (error) { setDisponibilidades([]); setMedicoValido(false); } finally { setLoading(false); } }, []); useEffect(() => { if (filtroMedicoId) { fetchDisponibilidades(filtroMedicoId, filtroActive); } else { setDisponibilidades([]); setMedicoValido(false); } }, [filtroMedicoId, filtroActive, fetchDisponibilidades]); return (

Disponibilidades por Médico

+ Gerenciar Disponibilidades
setFiltroMedicoId(e.target.value)} style={{ border: "1px solid #ccc", borderRadius: "4px", padding: "5px" }} />

Disponibilidades Encontradas ({disponibilidades.length})

{loading ? (

Carregando disponibilidades...

) : disponibilidades.length === 0 ? (

Nenhuma disponibilidade encontrada para os filtros aplicados.

) : ( {["ID", "ID Médico", "Dia da Semana", "Início", "Término", "Intervalo (min)", "Tipo Consulta", "Status"].map( (header) => ( ) )} {disponibilidades.map((disp, index) => ( ))}
{header}
{disp.id || "N/A"} {disp.doctor_id} {disp.weekday} {disp.start_time || "N/A"} {disp.end_time || "N/A"} {disp.slot_minutes} {disp.appointment_type} {disp.active ? "Ativa" : "Inativa"}
)}
); }; export default DisponibilidadesDoctorPage;