import React, { useState, useEffect } from "react"; import { useAuth } from "./utils/AuthProvider"; import API_KEY from "./utils/apiKeys"; import "./AgendarConsulta/style/formagendamentos.css"; import { GetAllDoctors } from './utils/Functions-Endpoints/Doctor'; const ENDPOINT_CRIAR_EXCECAO = "https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/doctor_exceptions"; const FormCriarExcecao = ({ onCancel, doctorID }) => { const { getAuthorizationHeader, user, getUserInfo } = useAuth(); const [dadosAtendimento, setDadosAtendimento] = useState({ profissional: doctorID || '', tipoAtendimento: '', dataAtendimento: '', inicio: '', termino: '', motivo: '' }); const [todosProfissionais, setTodosProfissionais] = useState([]); const [profissionaisFiltrados, setProfissionaisFiltrados] = useState([]); const [isDropdownOpen, setIsDropdownOpen] = useState(false); const [doctorSearchName, setDoctorSearchName] = useState(''); const [searchingDoctor, setSearchingDoctor] = useState(false); const handleAtendimentoChange = (e) => { const { value, name } = e.target; setDadosAtendimento(prev => ({ ...prev, [name]: value })); }; useEffect(() => { const loadDoctors = async () => { setSearchingDoctor(true); let authHeader = ''; try { authHeader = getAuthorizationHeader ? getAuthorizationHeader() : ''; } catch {} try { const Medicos = await GetAllDoctors(authHeader); setTodosProfissionais(Array.isArray(Medicos) ? Medicos : []); } catch (err) { console.error('Erro ao carregar médicos:', err); setTodosProfissionais([]); } finally { setSearchingDoctor(false); } }; loadDoctors(); }, [getAuthorizationHeader]); const handleSearchProfissional = (e) => { const term = e.target.value; setDoctorSearchName(term); if (term.trim() === '') { setProfissionaisFiltrados([]); setIsDropdownOpen(false); return; } const filtered = todosProfissionais.filter(p => (p.full_name || '').toLowerCase().includes(term.toLowerCase()) ); setProfissionaisFiltrados(filtered); setIsDropdownOpen(filtered.length > 0); }; const handleSelectProfissional = (profissional) => { setDadosAtendimento(prev => ({ ...prev, profissional: profissional.id })); setDoctorSearchName(profissional.full_name || ''); setProfissionaisFiltrados([]); setIsDropdownOpen(false); }; // lista simples de valores permitidos const ALLOWED_KINDS = ['disponibilidade_extra', 'bloqueio']; const handleSubmitExcecao = async (e) => { e.preventDefault(); console.log("Tentando criar Exceção."); const { profissional, dataAtendimento, tipoAtendimento, inicio, termino, motivo } = dadosAtendimento; if (!profissional || !dataAtendimento || !tipoAtendimento || !motivo) { alert("Por favor, preencha o ID do Profissional, Data, Tipo e Motivo."); return; } // usa diretamente o value selecionado (já definido no {isDropdownOpen && profissionaisFiltrados.length > 0 && (
{profissionaisFiltrados.map(p => (
handleSelectProfissional(p)}> {p.full_name}
))}
)} {searchingDoctor && Carregando médicos...} {/* ID do profissional (preenchido ao selecionar) */}
); }; export default FormCriarExcecao;