diff --git a/src/PagesMedico/DoctorAgendamentoManager.jsx b/src/PagesMedico/DoctorAgendamentoManager.jsx index d89a68f..567646c 100644 --- a/src/PagesMedico/DoctorAgendamentoManager.jsx +++ b/src/PagesMedico/DoctorAgendamentoManager.jsx @@ -1,14 +1,21 @@ -import React, { useState, useMemo, useEffect, useCallback } from 'react'; -import { useNavigate } from 'react-router-dom'; -import API_KEY from '../components/utils/apiKeys.js'; -import AgendamentoCadastroManager from '../pages/AgendamentoCadastroManager.jsx'; -import { GetAllDoctors } from '../components/utils/Functions-Endpoints/Doctor.js'; -import { useAuth } from '../components/utils/AuthProvider.js'; -import dayjs from 'dayjs'; -import 'dayjs/locale/pt-br'; -import isBetween from 'dayjs/plugin/isBetween'; -import localeData from 'dayjs/plugin/localeData'; -import { Search, ChevronLeft, ChevronRight, Edit, Trash2, CheckCircle } from 'lucide-react'; +import React, { useState, useMemo, useEffect, useCallback } from "react"; +import { useNavigate } from "react-router-dom"; +import API_KEY from "../components/utils/apiKeys.js"; +import AgendamentoCadastroManager from "../pages/AgendamentoCadastroManager.jsx"; +import { GetAllDoctors } from "../components/utils/Functions-Endpoints/Doctor.js"; +import { useAuth } from "../components/utils/AuthProvider.js"; +import dayjs from "dayjs"; +import "dayjs/locale/pt-br"; +import isBetween from "dayjs/plugin/isBetween"; +import localeData from "dayjs/plugin/localeData"; +import { + Search, + ChevronLeft, + ChevronRight, + Edit, + Trash2, + CheckCircle, +} from "lucide-react"; import "../pages/style/Agendamento.css"; import "../pages/style/FilaEspera.css"; import Spinner from "../components/Spinner.jsx"; @@ -22,8 +29,7 @@ const Agendamento = () => { const { getAuthorizationHeader, user } = useAuth(); const authHeader = getAuthorizationHeader(); - - const ID_MEDICO_ESPECIFICO = "078d2a67-b4c1-43c8-ae32-c1e75bb5b3df"; + const ID_MEDICO_ESPECIFICO = "078d2a67-b4c1-43c8-ae32-c1e75bb5b3df"; const [listaTodosAgendamentos, setListaTodosAgendamentos] = useState([]); const [selectedID, setSelectedId] = useState("0"); @@ -55,17 +61,19 @@ const Agendamento = () => { year: currentDate.year(), }); + const fetchAppointments = useCallback(async () => { + if (!authHeader) return; + setShowSpinner(true); + const myHeaders = new Headers(); + myHeaders.append("Authorization", authHeader); + myHeaders.append("apikey", API_KEY); + const requestOptions = { + method: "GET", + headers: myHeaders, + redirect: "follow", + }; - const fetchAppointments = useCallback(async () => { - if (!authHeader) return; - setShowSpinner(true); - const myHeaders = new Headers(); - myHeaders.append("Authorization", authHeader); - myHeaders.append("apikey", API_KEY); - const requestOptions = { method: 'GET', headers: myHeaders, redirect: 'follow' }; - - - const apiUrl = `https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?doctor_id=eq.${ID_MEDICO_ESPECIFICO}&select=*`; + const apiUrl = `https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?doctor_id=eq.${ID_MEDICO_ESPECIFICO}&select=*`; try { const res = await fetch(apiUrl, requestOptions); @@ -151,33 +159,33 @@ const Agendamento = () => { [updateAppointmentStatus] ); - useEffect(() => { - if(authHeader) { - fetchAppointments(); - - if (user?.role !== 'doctor') { - GetAllDoctors(authHeader).then(docs => { - if (docs) { - setListaDeMedicos(docs.map(d => ({ nomeMedico: d.full_name, idMedico: d.id }))); - } - }); - } - } - }, [authHeader, fetchAppointments, user?.role]); + useEffect(() => { + if (authHeader) { + fetchAppointments(); - useEffect(() => { - const processData = async () => { - - if (!listaTodosAgendamentos.length) { - setAgendamentosOrganizados({}); - setFilaEsperaData([]); - return; - } + if (user?.role !== "doctor") { + GetAllDoctors(authHeader).then((docs) => { + if (docs) { + setListaDeMedicos( + docs.map((d) => ({ nomeMedico: d.full_name, idMedico: d.id })) + ); + } + }); + } + } + }, [authHeader, fetchAppointments, user?.role]); + + useEffect(() => { + const processData = async () => { + if (!listaTodosAgendamentos.length) { + setAgendamentosOrganizados({}); + setFilaEsperaData([]); + return; + } setShowSpinner(true); - - const appointmentsToShow = listaTodosAgendamentos; + const appointmentsToShow = listaTodosAgendamentos; const patientIdsToFetch = new Set(); const doctorIdsToFetch = new Set(); @@ -193,16 +201,19 @@ const Agendamento = () => { const fetchPromises = []; - if (patientIdsToFetch.size > 0) { - const query = `id=in.(${Array.from(patientIdsToFetch).join(',')})`; - fetchPromises.push( - fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/patients?${query}&select=*`, { - headers: { apikey: API_KEY, Authorization: authHeader } - }).then(res => res.json()) - ); - } else { - fetchPromises.push(Promise.resolve(null)); + if (patientIdsToFetch.size > 0) { + const query = `id=in.(${Array.from(patientIdsToFetch).join(",")})`; + fetchPromises.push( + fetch( + `https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/patients?${query}&select=*`, + { + headers: { apikey: API_KEY, Authorization: authHeader }, } + ).then((res) => res.json()) + ); + } else { + fetchPromises.push(Promise.resolve(null)); + } if (doctorIdsToFetch.size > 0) { const query = `id=in.(${Array.from(doctorIdsToFetch).join(",")})`; @@ -271,10 +282,8 @@ const Agendamento = () => { setShowSpinner(false); }; - processData(); - }, [listaTodosAgendamentos, authHeader]); - - + processData(); + }, [listaTodosAgendamentos, authHeader]); const handleEditConsulta = (agendamento) => { setAgendamentoParaEdicao(agendamento); @@ -305,28 +314,54 @@ const Agendamento = () => { return grid; }; - const dateGrid = useMemo(() => generateDateGrid(), [currentDate]); - const weekDays = ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb']; - const handleDateClick = (day) => setSelectedDay(day); -const DeleteModal = () => ( -
Qual o motivo do cancelamento?
- -Qual o motivo do cancelamento?
+ +{selectedDay.format('D [de] MMMM [de] YYYY')}
Nenhuma consulta agendada.
| Nome do Paciente | -CPF | -Médico Solicitado | -Data da Solicitação | -Ações | -
|---|---|---|---|---|
| {item?.Infos?.paciente_nome} | -{item?.Infos?.paciente_cpf} | -{item?.Infos?.medico_nome} | -{dayjs(item.agendamento.scheduled_at).format('DD/MM/YYYY')} | -- - | -
|
-
- {showSpinner ?
- Nenhuma solicitação encontrada. >)} - |
- ||||
{selectedDay.format("D [de] MMMM [de] YYYY")}
+Nenhuma consulta agendada.
+| Nome do Paciente | +CPF | +Médico Solicitado | +Data da Solicitação | +Ações | +
|---|---|---|---|---|
| {item?.Infos?.paciente_nome} | +{item?.Infos?.paciente_cpf} | +{item?.Infos?.medico_nome} | ++ {dayjs( + item.agendamento.scheduled_at + ).format("DD/MM/YYYY")} + | ++ + | +
|
+
+ {showSpinner ? (
+
+ + Nenhuma solicitação encontrada. + + > + )} + |
+ ||||
{formatCurrency(summary.totalRecebido)}
+{formatCurrency(summary.totalRecebido)}
{formatCurrency(summary.totalAReceber)}
+{formatCurrency(summary.totalAReceber)}
{formatCurrency(summary.totalDescontos)}
+{formatCurrency(summary.totalDescontos)}