Agendamento

This commit is contained in:
pedrofedericoo 2025-10-21 14:33:17 -03:00
parent d649d0ebc1
commit ba98884667

View File

@ -68,7 +68,7 @@ const Agendamento = ({setDictInfo}) => { // Mantido setDictInfo (versão main)
let DictAgendamentosOrganizados = {};
let ListaFilaDeEspera = [];
// 1. Agrupamento
for (const agendamento of listaTodosAgendamentos) {
if (agendamento.status === 'requested') {
let v = await ConfigurarFiladeEspera(agendamento.patient_id, agendamento.doctor_id, agendamento);
@ -84,7 +84,6 @@ const Agendamento = ({setDictInfo}) => { // Mantido setDictInfo (versão main)
}
}
// 2. Ordenação Interna: Ordenar os agendamentos por HORÁRIO (do menor para o maior)
for (const DiaAgendamento in DictAgendamentosOrganizados) {
DictAgendamentosOrganizados[DiaAgendamento].sort((a, b) => {
if (a.scheduled_at < b.scheduled_at) return -1;
@ -93,7 +92,7 @@ const Agendamento = ({setDictInfo}) => { // Mantido setDictInfo (versão main)
});
}
// 3. Ordenação Externa: Ordenar os DIAS
const chavesOrdenadas = Object.keys(DictAgendamentosOrganizados).sort((a, b) => {
if (a < b) return -1;
if (a > b) return 1;
@ -107,8 +106,6 @@ const Agendamento = ({setDictInfo}) => { // Mantido setDictInfo (versão main)
setAgendamentosOrganizados(DictAgendamentosFinal);
setfilaEsperaData(ListaFilaDeEspera);
};
// Requisição inicial (Mesclado: Mantido o da MAIN, pois o da disponibilidade2 não tem a ordenação/fila de espera no .then)
useEffect(() => {
var myHeaders = new Headers();
myHeaders.append("Authorization", authHeader);
@ -136,8 +133,6 @@ const Agendamento = ({setDictInfo}) => { // Mantido setDictInfo (versão main)
PegarTodosOsMedicos()
}, [])
// Efeito de filtro de médico (Presente em ambas, mantida a lógica da MAIN/disponibilidade2 que se complementam)
useEffect(() => {
console.log("mudou FiltredTodosMedicos:", FiltredTodosMedicos);
if (FiltredTodosMedicos.length === 1) {
@ -157,7 +152,6 @@ const Agendamento = ({setDictInfo}) => { // Mantido setDictInfo (versão main)
}
}, [FiltredTodosMedicos]);
// Função de Delete (Presente apenas na MAIN)
const deleteConsulta = (selectedPatientId) => {
console.log("tentando apagar")
var myHeaders = new Headers();
@ -177,7 +171,6 @@ fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?id=eq.${sel
}
// Função auxiliar de filtro de médico (Presente em ambas, mantida a versão mais limpa)
const filtrarAgendamentosPorMedico = (dictAgendamentos, idMedicoFiltrado) => {
const todasAsListasDeAgendamentos = Object.values(dictAgendamentos);
@ -192,7 +185,6 @@ const filtrarAgendamentosPorMedico = (dictAgendamentos, idMedicoFiltrado) => {
// Lógica para filtrar os dados da AGENDA (useMemo) - (Presente em ambas, mantida a da MAIN, que está melhor formatada)
const filteredAgendamentos = useMemo(() => {
if (!searchTerm.trim()) {
return AgendamentosMes;
@ -212,7 +204,6 @@ const filtrarAgendamentosPorMedico = (dictAgendamentos, idMedicoFiltrado) => {
return filteredData;
}, [searchTerm]);
// ListarDiasdoMes (Presente em ambas)
const ListarDiasdoMes = (ano, mes) => {
let segundas = []; let tercas = []; let quartas = []; let quintas = []; let sextas = []
const base = dayjs(`${ano}-${mes}-01`)
@ -233,14 +224,13 @@ const filtrarAgendamentosPorMedico = (dictAgendamentos, idMedicoFiltrado) => {
return ListaDiasDatas
}
// handleClickAgendamento (Presente em ambas)
const handleClickAgendamento = (agendamento) => {
if (agendamento.status !== 'vazio') return
else setPageConsulta(true)
};
// handleSearchMedicos (Presente em ambas)
const handleSearchMedicos = (term) => {
setSearchTermDoctor(term);
if (term.trim() === '') {
@ -248,7 +238,6 @@ const handleSearchMedicos = (term) => {
return;
}
// Lógica simples de filtragem:
const filtered = ListaDeMedicos.filter(medico =>
medico.nomeMedico.toLowerCase().includes(term.toLowerCase())
);
@ -262,7 +251,7 @@ const handleSearchMedicos = (term) => {
<div>
<h1>Agendar nova consulta</h1>
{/* Mesclagem dos botões de navegação: Adicionar Consulta da main + Gerenciamento da disponibilidade2 */}
<div className="btns-gerenciamento-e-consulta" style={{ display: 'flex', gap: '10px', marginBottom: '20px' }}>
<button className="btn btn-primary" onClick={() => setPageConsulta(true)}>
<i className="bi bi-plus-circle"></i> Adicionar Consulta
@ -296,7 +285,7 @@ const handleSearchMedicos = (term) => {
type="text"
placeholder="Filtrar atendimento por médico..."
value={searchTermDoctor}
onChange={(e) => handleSearchMedicos(e.target.value)} // Chama a nova função de filtro
onChange={(e) => handleSearchMedicos(e.target.value)}
/>
</div>
</div>
@ -309,8 +298,7 @@ const handleSearchMedicos = (term) => {
key={medico.id}
className='dropdown-item'
onClick={() => {
setSearchTermDoctor(medico.nomeMedico); // Preenche o input
// setFiltredTodosMedicos([]); // Opcional: fechar o dropdown
setSearchTermDoctor(medico.nomeMedico);
}}
>
<p>{medico.nomeMedico} </p>
@ -321,20 +309,6 @@ const handleSearchMedicos = (term) => {
</div>
</div>
{/* Div da disponibilidade2 - Unidade/Selecionar Profissional (manter) */}
<div className="unidade-selecionarprofissional">
<select>
<option value="" disabled selected>
Unidade
</option>
<option value="">Unidade Central</option>
<option value="">Unidade Zona Norte</option>
<option value="">Unidade Zona Oeste</option>
</select>
<input type="text" placeholder="Selecionar profissional" />
</div>
</div>
<div className='container-btns-agenda-fila_esepera'>
@ -392,7 +366,6 @@ const handleSearchMedicos = (term) => {
)
:
(
// Fila de Espera - Restaurada a versão da MAIN com dados reais
<div className="fila-container">
<div className="fila-header">
<input
@ -420,13 +393,13 @@ const handleSearchMedicos = (term) => {
<td> <p>{item.Infos?.paciente_nome} </p> </td>
<td><p>{item.Infos?.paciente_cpf} </p></td>
<td><p>{item.Infos?.nome_nedico} </p></td>
<td>{dayjs(item.agendamento.created_at).format('DD/MM/YYYY HH:mm')}</td> {/* Formatando a data de criação */}
<td>{dayjs(item.agendamento.created_at).format('DD/MM/YYYY HH:mm')}</td>
<td> <div className="d-flex gap-2">
<button className="btn btn-sm btn-edit"
onClick={() => {
console.log(item, 'item')
navigate(`${2}/edit`) // Assumindo uma rota base
navigate(`${2}/edit`)
setDictInfo(item)
}}
>
@ -454,7 +427,6 @@ const handleSearchMedicos = (term) => {
</section>
</div>
) : (
// AgendamentoCadastroManager - (Mesclado: Mantido o setPageConsulta da main)
<AgendamentoCadastroManager setPageConsulta={setPageConsulta} />
)}