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"); // REMOVIDO: const [filtroVIP, setFiltroVIP] = useState(false); const [filtroAniversariante, setFiltroAniversariante] = useState(false); // Estados para filtros avançados 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(""); // estados do modal const [showDeleteModal, setShowDeleteModal] = useState(false); const [selectedDoctorId, setSelectedDoctorId] = useState(null); // Função para excluir médicos 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); } }; // Função para verificar se hoje é aniversário 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() ); }; // Função para calcular idade a partir da data de nascimento 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; }; <<<<<<< HEAD // Função para limpar todos os filtros const limparFiltros = () => { setSearch(""); setFiltroEspecialidade("Todos"); // REMOVIDO: setFiltroVIP(false); setFiltroAniversariante(false); setShowFiltrosAvancados(false); // Adicionado para fechar os avançados setFiltroCidade(""); setFiltroEstado(""); setIdadeMinima(""); setIdadeMaxima(""); setDataInicial(""); setDataFinal(""); }; ======= 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)); }, []); >>>>>>> main // Buscar médicos da API 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)) .catch(error => console.log('error', error)); }, [isAuthenticated, getAuthorizationHeader]); // ✨ FILTRO CORRIGIDO - Baseado na estrutura real dos dados const medicosFiltrados = Array.isArray(medicos) ? medicos.filter((medico) => { // Filtro por nome OU CPF - usando campos reais da API 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; // Filtro por especialidade - ajustando para campo real const passaEspecialidade = filtroEspecialidade === "Todos" || medico.specialty === filtroEspecialidade; // REMOVIDO: Filtro VIP - Não é mais utilizado // const passaVIP = filtroVIP ? medico.vip === true : true; // Filtro aniversariante const passaAniversario = filtroAniversariante ? ehAniversariante(medico.birth_date) : true; // Filtros avançados - ajustando para campos reais const passaCidade = filtroCidade ? medico.city?.toLowerCase().includes(filtroCidade.toLowerCase()) : true; const passaEstado = filtroEstado ? medico.state?.toLowerCase().includes(filtroEstado.toLowerCase()) : true; // Filtro por idade - usando birth_date const idade = calcularIdade(medico.birth_date); const passaIdadeMinima = idadeMinima ? idade >= parseInt(idadeMinima) : true; const passaIdadeMaxima = idadeMaxima ? idade <= parseInt(idadeMaxima) : true; // Filtro por data de cadastro - usando created_at ou similar 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; // Combinação de todos os filtros (passaVIP removido) const resultado = passaBusca && passaEspecialidade && passaAniversario && passaCidade && passaEstado && passaIdadeMinima && passaIdadeMaxima && passaDataInicial && passaDataFinal; return resultado; }) : []; // Contador de médicos filtrados 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) && (
)}
{/* REMOVIDO: Badge VIP
{medico.vip && (
VIP
)} */}
|
{medico.cpf} | {medico.specialty || 'Não informado'} | {medico.email || 'Não informado'} |
|
| Nenhum médico encontrado. | ||||
Tem certeza que deseja excluir este médico?