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
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) => (
|
{header}
|
)
)}
{disponibilidades.map((disp, index) => (
| {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;