import React from 'react' import "./style.css" import CardConsultaPaciente from './CardConsultaPaciente' import { useNavigate } from 'react-router-dom' import { useEffect, useState, useMemo } from 'react' import API_KEY from '../components/utils/apiKeys' import { useAuth } from '../components/utils/AuthProvider' import { GetPatientByID } from '../components/utils/Functions-Endpoints/Patient' import { GetDoctorByID } from '../components/utils/Functions-Endpoints/Doctor' import { UserInfos } from '../components/utils/Functions-Endpoints/General' import dayjs from 'dayjs' import TabelaAgendamentoDia from "../components/AgendarConsulta/TabelaAgendamentoDia" const ConsultasPaciente = ({ setDictInfo }) => { const { getAuthorizationHeader } = useAuth() const [agendamentosOrganizados, setAgendamentosOrganizados] = useState({}) const [listaTodasConsultas, setListaTodasConsultas] = useState([]) const [patientID, setPatientID] = useState("") const [showDeleteModal, setShowDeleteModal] = useState(false) const [selectedID, setSelectedId] = useState("") let authHeader = getAuthorizationHeader() const [motivoCancelamento, setMotivoCancelamento] = useState("") const [consultas, setConsultas] = useState([]) const [consultasOrganizadas, setConsultasOrganizadas] = useState({}) const [filaDeEspera, setFilaDeEspera] = useState([]) const [viewFila, setViewFila] = useState(false) const [listaConsultasID, setListaConsultaID] = useState([]) const [coresConsultas,setCoresConsultas] = useState([]) const [showConfirmModal, setShowConfirmModal] = useState(false) useEffect(() => { console.log(listaConsultasID, coresConsultas, "ojwhdofigewfey7few0fr74r") }, [coresConsultas, listaConsultasID]) useMemo(() => { let conjuntoConsultas = {} let filaEspera = [] const fetchInfosConsultas = async (consulta) => { //console.log(doctor, "PACIENTE TRAZIDO PELO ") //let consultaMelhorada = {...consulta, paciente_nome:paciente[0].full_name, medico_nome:doctor[0].full_name } //console.log(consultaMelhorada,"ID DO MEDICO") for(let i = 0; listaTodasConsultas.length > i; i++){ let consulta = listaTodasConsultas[i] let doctor = await GetDoctorByID(consulta.doctor_id, authHeader) let paciente = await GetPatientByID(consulta.patient_id, authHeader) consulta = {...consulta, medico_nome:doctor[0]?.full_name, paciente_nome:paciente[0]?.full_name} if(consulta.status === "requested"){ filaEspera.push(consulta) }else{ let data = consulta.scheduled_at.split("T")[0] let chavesConsultas = Object.keys(conjuntoConsultas) if(chavesConsultas.includes(data)){ let lista = conjuntoConsultas[data] lista.push(consulta) conjuntoConsultas = {...conjuntoConsultas, [data]:lista} }else{ conjuntoConsultas = {...conjuntoConsultas, [data]:[consulta] } } } } setConsultasOrganizadas(conjuntoConsultas) setFilaDeEspera(filaEspera) } console.log("so muda") if(!listaTodasConsultas.length) return console.log(filaEspera, "fila de espera") fetchInfosConsultas(); }, [listaTodasConsultas]) useEffect(() => { let userInfos = UserInfos(authHeader) const fetchConsultas = async () => { try { const myHeaders = new Headers(); myHeaders.append("Authorization", authHeader); myHeaders.append("apikey", API_KEY) const requestOptions = { method: 'GET', headers: myHeaders, redirect: 'follow' }; const response = await fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?patient_id=eq.${"6e7f8829-0574-42df-9290-8dbb70f75ada"}`, requestOptions); const result = await response.json(); setListaTodasConsultas(result); } catch (error) { console.log('error', error); } }; fetchConsultas(); }, []); const navigate = useNavigate() const confirmConsulta = (selectedPatientId) => { var myHeaders = new Headers(); myHeaders.append("Content-Type", "application/json"); myHeaders.append('apikey', API_KEY) myHeaders.append("authorization", authHeader) var raw = JSON.stringify({ "status":"confirmed" }); var requestOptions = { method: 'PATCH', headers: myHeaders, body: raw, redirect: 'follow' }; fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?id=eq.${selectedPatientId}`, requestOptions) .then(response => {if(response.status !== 200)(console.log(response))}) .then(result => console.log(result)) .catch(error => console.log('error', error)); } const deleteConsulta = async (ID) => { try { const myHeaders = new Headers(); myHeaders.append("Content-Type", "application/json"); myHeaders.append('apikey', API_KEY); myHeaders.append("authorization", authHeader); const raw = JSON.stringify({ "status": "cancelled", "cancellation_reason":motivoCancelamento }); const requestOptions = { method: 'PATCH', headers: myHeaders, body: raw, redirect: 'follow' }; const response = await fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/appointments?id=eq.${ID}`, requestOptions); if (!response.ok) { const errorText = await response.text(); throw new Error(`Falha ao cancelar consulta: ${response.status} - ${errorText}`); } setConsultas(prevConsultas => prevConsultas.filter(consulta => consulta.id !== ID)); console.log("Consulta cancelada com sucesso!"); alert("Consulta cancelada com sucesso!"); } catch (error) { console.error('Erro ao cancelar a consulta:', error); alert('Erro ao cancelar a consulta. Veja o console.'); } } return (
| Nome do Paciente | {/* Ajustado o cabeçalho */}CPF | {/* Ajustado o cabeçalho */}Médico Solicitado | {/* Ajustado o cabeçalho */}Data da Solicitação | {/* Ajustado o cabeçalho */}Ações |
|---|---|---|---|---|
| {item?.paciente_nome} |
{item?.paciente_cpf} |
{item?.medico_nome} |
{dayjs(item?.created_at).format('DD/MM/YYYY HH:mm')} | |
Qual o motivo do cancelamento?
Tem certeza que deseja retirar o cancelamento ?