diff --git a/src/PagesMedico/Agendamento.jsx b/src/PagesMedico/Agendamento.jsx index e0afc247..db3b20f3 100644 --- a/src/PagesMedico/Agendamento.jsx +++ b/src/PagesMedico/Agendamento.jsx @@ -1,19 +1,27 @@ -import React, { useState, useMemo } from "react"; -import dayjs from "dayjs"; +import React, { useState, useMemo } from 'react'; -// Importe os componentes que você está usando -import TabelaAgendamentoDia from "../components/AgendarConsulta/TabelaAgendamentoDia"; -import TabelaAgendamentoSemana from "../components/AgendarConsulta/TabelaAgendamentoSemana"; -import TabelaAgendamentoMes from "../components/AgendarConsulta/TabelaAgendamentoMes"; -import FormNovaConsulta from "../components/AgendarConsulta/FormNovaConsulta"; +import TabelaAgendamentoDia from '../components/AgendarConsulta/TabelaAgendamentoDia'; +import TabelaAgendamentoSemana from '../components/AgendarConsulta/TabelaAgendamentoSemana'; +import TabelaAgendamentoMes from '../components/AgendarConsulta/TabelaAgendamentoMes'; +import FormNovaConsulta from '../components/AgendarConsulta/FormNovaConsulta'; +// ✨ NOVO: Caminho de importação corrigido com base na sua estrutura de pastas +import AgendamentosMes from '../components/AgendarConsulta/DadosConsultasMock.js'; + +import dayjs from 'dayjs'; // Importe os estilos import "./styleMedico/Agendamento.css"; import "./styleMedico/FilaEspera.css"; -// --- DADOS E FUNÇÕES FORA DO COMPONENTE --- +const Agendamento = () => { -const filaEsperaData = [ + const [FiladeEspera, setFiladeEspera] = useState(false); + const [tabela, setTabela] = useState('diario'); + const [PageNovaConsulta, setPageConsulta] = useState(false); + const [searchTerm, setSearchTerm] = useState(''); + + // Dados da fila de espera (sem alteração) + const filaEsperaData = [ { nome: 'Ricardo Pereira', email: 'ricardo.pereira@gmail.com', cpf: '444.777.666-55', telefone: '(79) 99123-4567', entrada: '25/09/2025 às 08:00' }, { nome: 'Ana Costa', email: 'ana.costa@gmail.com', cpf: '321.654.987-00', telefone: '(79) 97777-3333', entrada: '25/09/2025 às 08:30' }, { nome: 'Lucas Martins', email: 'lucas.martins@gmail.com', cpf: '777.666.555-33', telefone: '(79) 99654-3210', entrada: '25/09/2025 às 09:00' }, @@ -22,188 +30,197 @@ const filaEsperaData = [ { nome: 'Fernanda Lima', email: 'fernanda.lima@gmail.com', cpf: '888.999.000-22', telefone: '(79) 98877-6655', entrada: '26/09/2025 às 09:30' }, { nome: 'Carlos Andrade', email: 'carlos.andrade@gmail.com', cpf: '222.555.888-11', telefone: '(79) 99876-5432', entrada: '26/09/2025 às 10:00' }, { nome: 'Juliana Oliveira', email: 'juliana.o@gmail.com', cpf: '111.222.333-44', telefone: '(79) 98765-1234', entrada: '26/09/2025 às 11:30' }, -]; + ]; -const ListarDiasdoMes = (ano, mes) => { - const diasDaSemana = [[], [], [], [], [], [], []]; // 0: Domingo, 1: Segunda, ... - const base = dayjs(`${ano}-${mes}-01`); - const diasNoMes = base.daysInMonth(); + // Filtro da fila de espera (sem alteração) + const filteredFila = filaEsperaData.filter(item => + item.nome.toLowerCase().includes(searchTerm.toLowerCase()) || + item.email.toLowerCase().includes(searchTerm.toLowerCase()) || + item.cpf.includes(searchTerm) || + item.telefone.includes(searchTerm) + ); - for (let d = 1; d <= diasNoMes; d++) { - const data = dayjs(`${ano}-${mes}-${d}`); - const diaDaSemana = data.day(); // Retorna um número de 0 (Dom) a 6 (Sáb) - diasDaSemana[diaDaSemana].push(d); + // Lógica para filtrar os dados da AGENDA (AgendamentosMes) + const filteredAgendamentos = useMemo(() => { + if (!searchTerm.trim()) { + return AgendamentosMes; } - // Retornando apenas os dias úteis (Segunda a Sexta) - return [ - diasDaSemana[1], // Segundas - diasDaSemana[2], // Terças - diasDaSemana[3], // Quartas - diasDaSemana[4], // Quintas - diasDaSemana[5], // Sextas - ]; -}; + const lowerCaseSearchTerm = searchTerm.toLowerCase(); + const filteredData = {}; + for (const semana in AgendamentosMes) { + filteredData[semana] = {}; + for (const dia in AgendamentosMes[semana]) { + filteredData[semana][dia] = AgendamentosMes[semana][dia].filter(agendamento => + agendamento.status === 'vazio' || + (agendamento.paciente && agendamento.paciente.toLowerCase().includes(lowerCaseSearchTerm)) + ); + } + } + return filteredData; + }, [searchTerm]); -// --- COMPONENTE PRINCIPAL --- + const ListarDiasdoMes = (ano, mes) => { + let segundas = []; let tercas = []; let quartas = []; let quintas = []; let sextas = [] + const base = dayjs(`${ano}-${mes}-01`) + const DiasnoMes = base.daysInMonth() + for (let d = 1; d <= DiasnoMes; d++) { + const data = dayjs(`${ano}-${mes}-${d}`) + const dia = data.format('dddd') + switch (dia) { + case 'Monday': segundas.push(d); break + case 'Tuesday': tercas.push(d); break + case 'Wednesday': quartas.push(d); break + case 'Thursday': quintas.push(d); break + case 'Friday': sextas.push(d); break + default: break + } + } + let ListaDiasDatas = [segundas, tercas, quartas, quintas, sextas] + return ListaDiasDatas + } -const Agendamento = () => { - const [FiladeEspera, setFiladeEspera] = useState(false); - const [tabela, setTabela] = useState('diario'); - const [PageNovaConsulta, setPageConsulta] = useState(false); - const [searchTerm, setSearchTerm] = useState(''); + const handleClickAgendamento = (agendamento) => { + if (agendamento.status !== 'vazio') return + else setPageConsulta(true) + } - const filteredFila = useMemo(() => - filaEsperaData.filter(item => - item.nome.toLowerCase().includes(searchTerm.toLowerCase()) || - item.email.toLowerCase().includes(searchTerm.toLowerCase()) || - item.cpf.includes(searchTerm) || - item.telefone.includes(searchTerm) - ), [searchTerm]); + const handleClickCancel = () => setPageConsulta(false) - const handleClickAgendamento = (agendamento) => { - if (agendamento.status !== 'vazio') return; - setPageConsulta(true); - }; + return ( +
| Nome | +CPF | +Telefone | +Entrou na fila de espera | +|
|---|---|---|---|---|
| {item.nome} | +{item.email} | +{item.cpf} | +{item.telefone} | +{item.entrada} | +
Selecione uma conversa para começar.
+ {/* Adicionado uma verificação para quando a busca não encontra resultados */} + {searchTerm && filteredConversations.length === 0 ? ( +Nenhum paciente encontrado com o nome "{searchTerm}".
+ ) : ( +Selecione uma conversa para começar.
+ )}| - | {agendamentos.medico} | -
|---|
| Horário | +{} | +
|---|---|
{agendamento.horario} |
-
-
- handleClickAgendamento(agendamento)} >
-
-
- |
-
{agendamento.horario}
| Seg | -Ter | -Qua | -Qui | -Sex | -|||||
|---|---|---|---|---|---|---|---|---|---|
|
-
-
- {segundas[index]} -
- {dias.segunda.slice(0,4).map((consulta, idx) => (
-
- {dias.segunda.length > 3 ?
- + {dias.segunda.length - 3} |
-
-
-
- {tercas[index]}
-
-
- {dias.terca.slice(0,4).map((consulta, idx) => (
-
- {dias.terca.length > 3 ?
- + {dias.terca.length - 3} |
-
-
-
- {quartas[index]}
-
-
- {dias.quarta.slice(0,4).map((consulta, idx) => (
-
- {dias.quarta.length > 3 ?
- + {dias.quarta.length - 3} |
-
-
-
- {quintas[index]}
-
-
- {dias.quinta.slice(0,4).map((consulta, idx) => (
-
- {dias.quinta.length > 3 ?
- + {dias.quinta.length - 3} |
-
-
-
- {sextas[index]}
-
-
- {dias.sexta.slice(0,4).map((consulta, idx) => (
-
- {dias.sexta.length > 3 ?
- + {dias.sexta.length - 3} |
+
+ |||||
| Seg | +Ter | +Qua | +Qui | +Sex | |||||
|
+
+
+ {segundas[index]} +
+ {(dias.segunda || []).slice(0, 3).map((consulta, idx) => (
+
+ {(dias.segunda || []).length > 3 ?
+ + {(dias.segunda || []).length - 3} |
+
+ {/* Coluna de Terça-feira */}
+
+
+
+ {tercas[index]} +
+ {(dias.terca || []).slice(0, 3).map((consulta, idx) => (
+
+ {(dias.terca || []).length > 3 ?
+ + {(dias.terca || []).length - 3} |
+
+ {/* Coluna de Quarta-feira */}
+
+
+
+ {quartas[index]} +
+ {(dias.quarta || []).slice(0, 3).map((consulta, idx) => (
+
+ {(dias.quarta || []).length > 3 ?
+ + {(dias.quarta || []).length - 3} |
+
+ {/* Coluna de Quinta-feira */}
+
+
+
+ {quintas[index]} +
+ {(dias.quinta || []).slice(0, 3).map((consulta, idx) => (
+
+ {(dias.quinta || []).length > 3 ?
+ + {(dias.quinta || []).length - 3} |
+
+ {/* Coluna de Sexta-feira */}
+
+
+
+ {sextas[index]} +
+ {(dias.sexta || []).slice(0, 3).map((consulta, idx) => (
+
+ {(dias.sexta || []).length > 3 ?
+ + {(dias.sexta || []).length - 3} |
+
| Horário | +Segunda | +Terça | +Quarta | +Quinta | +Sexta | +
|---|
| - | Segunda | -Terça | -Quarta | -Quinta | -Sexta | -
|---|---|---|---|---|---|
| {consulta.horario} | - |
- |
- |
-
{modalMsg}
-+ {modalMsg} +
+{errorModalMsg || '(Erro 404).Por favor, tente novamente mais tarde'}
-