Agendamento
This commit is contained in:
parent
d649d0ebc1
commit
ba98884667
@ -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();
|
||||
@ -176,8 +170,7 @@ fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?id=eq.${sel
|
||||
.catch(error => console.log('error', error));
|
||||
|
||||
}
|
||||
|
||||
// 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>
|
||||
@ -320,20 +308,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>
|
||||
|
||||
@ -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} />
|
||||
)}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user