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 ( <>
| Nome | CPF | Especialidade | 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. | ||||
Tem certeza que deseja excluir este médico?