// Caminho: manager/dashboard/page.tsx (Refatorado) "use client"; import ManagerLayout from "@/components/manager-layout"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Calendar, Clock, Plus, User } from "lucide-react"; import Link from "next/link"; import React, { useState, useEffect } from "react"; import { usuariosService } from "@/services/usuariosApi"; // Alterado import { perfisService } from "@/services/perfisApi"; // Adicionado import { doctorsService } from "@/services/medicosApi"; 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 useEffect(() => { async function fetchFirstUser() { try { // Passo 1: Buscar a lista de papéis/usuários const rolesData = await usuariosService.listRoles(); // Alterado if (Array.isArray(rolesData) && rolesData.length > 0) { const firstRole = rolesData[0]; // Passo 2: Usar o user_id do primeiro papel para buscar o perfil completo const profileData = await perfisService.getById(firstRole.user_id); // Alterado setFirstUser(profileData); // Armazena o perfil que contém nome, email, etc. } } catch (error) { console.error("Erro ao carregar usuário:", error); } finally { setLoadingUser(false); } } fetchFirstUser(); }, []); // 🔹 Buscar 3 primeiros médicos (sem alterações aqui) useEffect(() => { async function fetchDoctors() { try { const data = await doctorsService.list(); if (Array.isArray(data)) { setDoctors(data.slice(0, 3)); } } catch (error) { console.error("Erro ao carregar médicos:", error); } finally { setLoadingDoctors(false); } } fetchDoctors(); }, []); return ( {/* O JSX restante permanece exatamente o mesmo */}

Dashboard

Bem-vindo ao seu portal de consultas médicas

RelatĂłrios gerenciais
0

RelatĂłrios disponĂ­veis

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
)}
Perfil
100%

Dados completos

Ações Rápidas Acesse rapidamente as principais funcionalidades 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"}

))}
)}
); }