"use client"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Clock, Plus, User } from "lucide-react"; // Removi 'Calendar' que não estava sendo usado import Link from "next/link"; import React, { useState, useEffect } from "react"; import { usersService } from "services/usersApi.mjs"; import { doctorsService } from "services/doctorsApi.mjs"; import Sidebar from "@/components/Sidebar"; import { api } from "services/api.mjs"; // <-- ADICIONEI ESTE IMPORT export default function ManagerDashboard() { // 🔹 Estados para usuários const [firstUser, setFirstUser] = useState(null); const [loadingUser, setLoadingUser] = useState(true); // 🔹 Estados para médicos const [doctors, setDoctors] = useState([]); const [loadingDoctors, setLoadingDoctors] = useState(true); // 🔹 Buscar primeiro usuário (LÓGICA ATUALIZADA) useEffect(() => { async function fetchFirstUser() { setLoadingUser(true); // Garante que o estado de loading inicie como true try { // 1. Busca a lista de usuários com seus cargos (roles) const rolesData = await usersService.list_roles(); // 2. Verifica se a lista não está vazia if (Array.isArray(rolesData) && rolesData.length > 0) { const firstUserRole = rolesData[0]; const firstUserId = firstUserRole.user_id; if (!firstUserId) { throw new Error("O primeiro usuário da lista não possui um ID válido."); } // 3. Usa o ID para buscar o perfil (com nome e email) do usuário const profileData = await api.get( `/rest/v1/profiles?select=full_name,email&id=eq.${firstUserId}` ); // 4. Verifica se o perfil foi encontrado if (Array.isArray(profileData) && profileData.length > 0) { const userProfile = profileData[0]; // 5. Combina os dados do cargo e do perfil e atualiza o estado setFirstUser({ ...firstUserRole, ...userProfile }); } else { // Se não encontrar o perfil, exibe os dados que temos setFirstUser(firstUserRole); } } } catch (error) { console.error("Erro ao carregar usuário:", error); setFirstUser(null); // Limpa o usuário em caso de erro } finally { setLoadingUser(false); } } fetchFirstUser(); }, []); // 🔹 Buscar 3 primeiros médicos useEffect(() => { async function fetchDoctors() { try { const data = await doctorsService.list(); // ajuste se seu service tiver outro método if (Array.isArray(data)) { setDoctors(data.slice(0, 3)); // pega os 3 primeiros } } catch (error) { console.error("Erro ao carregar médicos:", error); } finally { setLoadingDoctors(false); } } fetchDoctors(); }, []); return (
{/* Cabeçalho */}

Dashboard

Bem-vindo ao seu portal de consultas médicas

{/* Cards principais */}
{/* Card 2 — Gestão de usuários */} Gestão de usuários {loadingUser ? (
Carregando usuário...
) : firstUser ? ( <>
{firstUser.full_name || "Sem nome"}

{firstUser.email || "Sem e-mail cadastrado"}

) : (
Nenhum usuário encontrado
)}
{/* Card 3 — Perfil */} Perfil
100%

Dados completos

{/* Cards secundários */}
{/* Card — Ações rápidas */} Ações Rápidas Acesse rapidamente as principais funcionalidades {/* Card — Gestão de Médicos */} Gestão de Médicos Médicos cadastrados recentemente {loadingDoctors ? (

Carregando médicos...

) : doctors.length === 0 ? (

Nenhum médico cadastrado.

) : (
{doctors.map((doc, index) => (

{doc.full_name || "Sem nome"}

{doc.specialty || "Sem especialidade"}

{doc.active ? "Ativo" : "Inativo"}

))}
)}
); }