import React, { useState, useEffect } from "react"; import API_KEY from "../components/utils/apiKeys"; import { useAuth } from "../components/utils/AuthProvider"; import { Link } from "react-router-dom"; import "./style/TableDoctor.css"; function TableDoctor() { const { getAuthorizationHeader, isAuthenticated } = useAuth(); const [medicos, setMedicos] = useState([]); const [search, setSearch] = useState(""); const [filtroEspecialidade, setFiltroEspecialidade] = useState("Todos"); const [filtroAniversariante, setFiltroAniversariante] = useState(false); const [showFiltrosAvancados, setShowFiltrosAvancados] = useState(false); const [filtroCidade, setFiltroCidade] = useState(""); const [filtroEstado, setFiltroEstado] = useState(""); const [idadeMinima, setIdadeMinima] = useState(""); const [idadeMaxima, setIdadeMaxima] = useState(""); const [dataInicial, setDataInicial] = useState(""); const [dataFinal, setDataFinal] = useState(""); const [showDeleteModal, setShowDeleteModal] = useState(false); const [selectedDoctorId, setSelectedDoctorId] = useState(null); const limparFiltros = () => { setSearch(""); setFiltroEspecialidade("Todos"); setFiltroAniversariante(false); setShowFiltrosAvancados(false); setFiltroCidade(""); setFiltroEstado(""); setIdadeMinima(""); setIdadeMaxima(""); setDataInicial(""); setDataFinal(""); }; const deleteDoctor = async (id) => { const authHeader = getAuthorizationHeader() console.log(id, 'teu 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/doctors?id=eq.${id}`, requestOptions ); setMedicos((prev) => prev.filter((p) => p.id !== id)); console.log(result) } catch (error) { console.log("Deu problema", error); } finally { setShowDeleteModal(false); } }; 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 calcularIdade = (dataNascimento) => { if (!dataNascimento) return 0; const hoje = new Date(); const nascimento = new Date(dataNascimento); let idade = hoje.getFullYear() - nascimento.getFullYear(); const mes = hoje.getMonth() - nascimento.getMonth(); if (mes < 0 || (mes === 0 && hoje.getDate() < nascimento.getDate())) { idade--; } return idade; }; 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/doctors", requestOptions) .then(response => response.json()) .then(result => {setMedicos(result); console.log(result)}) .catch(error => console.log('error', error)); }, [isAuthenticated, getAuthorizationHeader]); const medicosFiltrados = Array.isArray(medicos) ? medicos.filter((medico) => { const buscaNome = medico.full_name?.toLowerCase().includes(search.toLowerCase()); const buscaCPF = medico.cpf?.toLowerCase().includes(search.toLowerCase()); const buscaEmail = medico.email?.toLowerCase().includes(search.toLowerCase()); const passaBusca = search === "" || buscaNome || buscaCPF || buscaEmail; const passaEspecialidade = filtroEspecialidade === "Todos" || medico.specialty === filtroEspecialidade; const passaAniversario = filtroAniversariante ? ehAniversariante(medico.birth_date) : true; const passaCidade = filtroCidade ? medico.city?.toLowerCase().includes(filtroCidade.toLowerCase()) : true; const passaEstado = filtroEstado ? medico.state?.toLowerCase().includes(filtroEstado.toLowerCase()) : true; const idade = calcularIdade(medico.birth_date); const passaIdadeMinima = idadeMinima ? idade >= parseInt(idadeMinima) : true; const passaIdadeMaxima = idadeMaxima ? idade <= parseInt(idadeMaxima) : true; const passaDataInicial = dataInicial ? medico.created_at && new Date(medico.created_at) >= new Date(dataInicial) : true; const passaDataFinal = dataFinal ? medico.created_at && new Date(medico.created_at) <= new Date(dataFinal) : true; const resultado = passaBusca && passaEspecialidade && passaAniversario && passaCidade && passaEstado && passaIdadeMinima && passaIdadeMaxima && passaDataInicial && passaDataFinal; return resultado; }) : []; useEffect(() => { console.log(` Médicos totais: ${medicos.length}, Filtrados: ${medicosFiltrados.length}`); }, [medicos, medicosFiltrados, search]); return ( <>

Lista de Médicos

Médicos Cadastrados

{" "} Filtros
setSearch(e.target.value)} /> Digite o nome completo ou número do CPF
{showFiltrosAvancados && (
Filtros Avançados
setFiltroCidade(e.target.value)} />
setFiltroEstado(e.target.value)} />
setIdadeMinima(e.target.value)} min="0" max="150" />
setIdadeMaxima(e.target.value)} min="0" max="150" />
{/* Data de Cadastro */}
setDataInicial(e.target.value)} />
setDataFinal(e.target.value)} />
)}
{(search || filtroEspecialidade !== "Todos" || filtroAniversariante || // filtroVIP removido filtroCidade || filtroEstado || idadeMinima || idadeMaxima || dataInicial || dataFinal) && (
Filtros ativos:
{search && Busca: "{search}"} {filtroEspecialidade !== "Todos" && Especialidade: {filtroEspecialidade}} {filtroAniversariante && Aniversariantes} {filtroCidade && Cidade: {filtroCidade}} {filtroEstado && Estado: {filtroEstado}} {idadeMinima && Idade mín: {idadeMinima}} {idadeMaxima && Idade máx: {idadeMaxima}} {dataInicial && Data inicial: {dataInicial}} {dataFinal && Data final: {dataFinal}}
)}
{medicosFiltrados.length} de {medicos.length} médicos encontrados
{medicosFiltrados.length > 0 ? ( medicosFiltrados.map((medico) => ( )) ) : ( )}
Nome CPF Especialidade Email Ações
{medico.full_name} {ehAniversariante(medico.birth_date) && ( )}
{medico.cpf} {medico.specialty || 'Não informado'} {medico.email || 'Não informado'}
Nenhum médico encontrado.
{showDeleteModal && (
e.target.classList.contains("modal") && setShowDeleteModal(false) } >
Confirmação de Exclusão

Tem certeza que deseja excluir este médico?

)} ); } export default TableDoctor;