diff --git a/src/components/FormCriarExcecao.jsx b/src/components/FormCriarExcecao.jsx index 9323a4f..5b5ff9f 100644 --- a/src/components/FormCriarExcecao.jsx +++ b/src/components/FormCriarExcecao.jsx @@ -1,13 +1,13 @@ -import React, { useState } from "react"; +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 || '', @@ -18,6 +18,13 @@ const FormCriarExcecao = ({ onCancel, doctorID }) => { 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 => ({ @@ -26,6 +33,52 @@ const FormCriarExcecao = ({ onCancel, doctorID }) => { })); }; + 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."); @@ -37,6 +90,13 @@ const FormCriarExcecao = ({ onCancel, doctorID }) => { 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) */}
- @@ -134,12 +217,11 @@ const FormCriarExcecao = ({ onCancel, doctorID }) => {
-