import React, { useState, useEffect } from "react"; import { Link } from "react-router-dom"; import API_KEY from "../components/utils/apiKeys"; import { useAuth } from "../components/utils/AuthProvider"; function TablePaciente({ setCurrentPage, setPatientID }) { const {getAuthorizationHeader, isAuthenticated} = useAuth(); const [pacientes, setPacientes] = useState([]); const [search, setSearch] = useState(""); const [filtroConvenio, setFiltroConvenio] = useState("Todos"); const [filtroVIP, setFiltroVIP] = useState(false); const [filtroAniversariante, setFiltroAniversariante] = useState(false); // estados do modal const [showDeleteModal, setShowDeleteModal] = useState(false); const [selectedPatientId, setSelectedPatientId] = useState(null); const GetAnexos = async (id) => { var myHeaders = new Headers(); myHeaders.append("Authorization", "Bearer "); var requestOptions = { method: "GET", headers: myHeaders, redirect: "follow", }; try { const response = await fetch( `https://mock.apidog.com/m1/1053378-0-default/pacientes/${id}/anexos`, requestOptions ); const result = await response.json(); return result.data; } catch (error) { console.log("error", error); return []; } }; const DeleteAnexo = async (patientID) => { const RespostaGetAnexos = await GetAnexos(patientID); for (let i = 0; i < RespostaGetAnexos.length; i++) { const idAnexo = RespostaGetAnexos[i].id; console.log("anexos", RespostaGetAnexos); var myHeaders = new Headers(); myHeaders.append("Authorization", "Bearer "); var requestOptions = { method: "DELETE", headers: myHeaders, redirect: "follow", }; fetch( `https://mock.apidog.com/m1/1053378-0-default/pacientes/${patientID}/anexos/${idAnexo}`, requestOptions ) .then((response) => response.text()) .then((result) => console.log("anexo excluido com sucesso", result)) .catch((error) => console.log("error", error)); } }; // função de exclusão atualizada const deletePatient = async (id) => { const authHeader = getAuthorizationHeader() console.log(id) var myHeaders = new Headers(); myHeaders.append('apikey', API_KEY); myHeaders.append("Authorization", authHeader) var requestOptions = { method: "DELETE", redirect: "follow", headers:myHeaders }; try { const result = await fetch( `https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/patients?id=eq.${id}`, requestOptions ); setPacientes((prev) => prev.filter((p) => p.id !== id)); console.log(result) } catch (error) { console.log("Deu problema", error); } finally { setShowDeleteModal(false); } }; // Requisição inicial para buscar pacientes useEffect(() => { const authHeader = getAuthorizationHeader() console.log(authHeader, 'aqui autorização') var myHeaders = new Headers(); myHeaders.append("apikey", API_KEY); myHeaders.append("Authorization", `${authHeader}`); var requestOptions = { method: 'GET', headers: myHeaders, redirect: 'follow' }; fetch("https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/patients", requestOptions) .then(response => response.json()) .then(result => setPacientes(result)) .catch(error => console.log('error', error)); }, [isAuthenticated, getAuthorizationHeader]); // Função para verificar se hoje é aniversário do paciente const ehAniversariante = (dataNascimento) => { if (!dataNascimento) return false; const hoje = new Date(); const nascimento = new Date(dataNascimento); return ( hoje.getDate() === nascimento.getDate() && hoje.getMonth() === nascimento.getMonth() ); }; const pacientesFiltrados = pacientes.filter((paciente) => { const textoCompletoPaciente = `${paciente.nome} ${paciente.cpf} ${paciente.email} ${paciente.telefone}`.toLowerCase(); const passaBusca = textoCompletoPaciente.includes(search.toLowerCase()); const passaVIP = filtroVIP ? paciente.vip === true : true; const passaConvenio = filtroConvenio === "Todos" || paciente.convenio === filtroConvenio; const passaAniversario = filtroAniversariante ? ehAniversariante(paciente.data_nascimento) : true; return passaBusca && passaVIP && passaConvenio && passaAniversario; }); return ( <>

Lista de Pacientes

Pacientes Cadastrados

{" "} Filtros
setSearch(e.target.value)} style={{ minWidth: 250, maxWidth: 300, width: 260, flex: "0 0 auto", }} />
{pacientesFiltrados.length > 0 ? ( pacientesFiltrados.map((paciente) => ( )) ) : ( )}
Nome CPF Email Telefone Ações
{paciente.full_name} {paciente.cpf} {paciente.email} {paciente.telefone} {paciente.ativo}
{/* Botão que abre o modal */}
Nenhum paciente encontrado.
{/* Modal de confirmação */} {showDeleteModal && (
e.target.classList.contains("modal") && setShowDeleteModal(false) } >
Confirmação de Exclusão

Tem certeza que deseja excluir este paciente?

)} ); } export default TablePaciente;