"use client"; import { useAuth } from "@/contexts/AuthContext"; import { useRouter } from "next/navigation"; import { useState, useEffect } from "react"; import { UserRole } from "@/types/auth"; import { UserRoundCog, Rocket, Crown } from "lucide-react"; import Header from "@/components/Header"; import { useDashboardData } from "@/hooks/useDashboardData"; import { CadastroSuperadminModal } from "./components"; const Dashboard = () => { const { user: authUser, userRole, isAuthenticated } = useAuth(); const router = useRouter(); const [loading, setLoading] = useState(true); const [showCadastroSuperadminModal, setShowCadastroSuperadminModal] = useState(false); // Estado para controlar exibição rápida das ações const [showQuickActions, setShowQuickActions] = useState(false); // Estados para controle do registro completo const [registroIncompleto, setRegistroIncompleto] = useState(false); const [userData, setUserData] = useState(null); // Obter ID da empresa do usuário (se não for superadmin) const empresaId = (authUser as any)?.empresas?.[0] || null; // Hook para buscar dados reais do dashboard const { stats, atividades, pedidosPendentes, loading: dashboardLoading, error: dashboardError, } = useDashboardData({ userRole: userRole || "", empresaId: empresaId || undefined, }); // Verificar autenticação simples useEffect(() => { const checkAuth = async () => { try { // Verificar se há token armazenado const storedToken = localStorage.getItem('access_token'); if (!storedToken) { router.push("/login"); return; } // Buscar dados do usuário da API const response = await fetch(`${process.env.NEXT_PUBLIC_BFF_API_URL}/auth/me`, { method: "GET", headers: { "accept": "application/json", "Authorization": `Bearer ${storedToken}`, }, }); if (response.ok) { const userData = await response.json(); setUserData(userData); // Verificar se registro-completo é false if (userData["registro-completo"] === false) { setRegistroIncompleto(true); } } else { localStorage.removeItem('access_token'); router.push("/login"); return; } setShowQuickActions(true); } catch (error) { console.error("Erro ao verificar autenticação:", error); router.push("/login"); } finally { setLoading(false); } }; checkAuth(); }, [router]); // Funções para lidar com o banner de registro completo const handleCompletarCadastro = () => { setRegistroIncompleto(false); router.push("/completar-registro"); }; const handleFecharBanner = () => { setRegistroIncompleto(false); }; // Se ainda está carregando, mostrar loading if (loading) { return (

Carregando...

); } return (
{/* Header unificado */}
{/* Conteúdo principal com espaçamento adequado */}
{/* Seção de boas-vindas */}

Bem-vindo,{" "} {userData?.nome || userData?.["nome-civil"] || userData?.["nome-social"] || authUser?.["nome-civil"] || authUser?.["nome-social"] || "Usuário"} {userRole === UserRole.SUPERADMIN && " (Super Admin)"} {userRole === UserRole.ADMIN && " (Admin)"} {userRole === UserRole.COLABORADOR && " (Colaborador)"}

Gerencie seus medicamentos próximos ao vencimento e conecte-se com outras farmácias. {userRole === UserRole.COLABORADOR && " Acesse suas entregas através do menu."}

{/* Banner de Registro Incompleto */} {registroIncompleto && (

🚀 Complete seu cadastro

Seu cadastro ainda não está completo. Para ter acesso a todas as funcionalidades da plataforma SaveInMed, você precisa finalizar seu registro com algumas informações adicionais.

)} {/* Cards de estatísticas B2B - Ocultos para usuários ADMIN */} {(userRole === UserRole.SUPERADMIN || userRole === UserRole.COLABORADOR) && stats && (
{/* Medicamentos Disponíveis */}

Medicamentos Disponíveis

{stats.medicamentosDisponiveis}

{stats.medicamentosVencimento} {" "} próximos ao vencimento

{/* Pedidos Recebidos - Apenas para SUPERADMIN */} {userRole === UserRole.SUPERADMIN && (

Pedidos Recebidos

{stats.pedidosRecebidos}

{stats.pedidosPendentes} {" "} pendentes

)} {/* Vendas do Mês - Apenas para SUPERADMIN */} {userRole === UserRole.SUPERADMIN && (

Vendas do Mês

{stats.vendasMes}

+{stats.crescimentoVendas}% {" "} vs mês anterior

)} {/* Economia Gerada - Apenas para SUPERADMIN */} {userRole === UserRole.SUPERADMIN && (

Economia Gerada

R$ {stats.economiaGerada.toLocaleString()}

Recuperação de investimento

)}
)}{" "} {/* Seções do Dashboard - Layout Responsivo */} {(userRole === UserRole.SUPERADMIN || userRole === UserRole.ADMIN) && (
{/* Atividade Recente */}

Atividade Recente{" "} {userRole === UserRole.SUPERADMIN ? "Global" : "da Empresa"}

{dashboardLoading ? (
) : atividades.length > 0 ? (
{atividades.map((atividade) => (

{atividade.titulo}

{new Date(atividade.data).toLocaleDateString("pt-BR")}{" "} - {atividade.descricao}

{atividade.status === "novo" ? "Novo" : atividade.status === "atualizado" ? "Atualizado" : atividade.status}
))}
) : (

Nenhuma atividade recente encontrada

)}
{/* Pedidos Pendentes */}

Pedidos Pendentes

{dashboardLoading ? (
) : pedidosPendentes.length > 0 ? (
{pedidosPendentes.map((pedido) => (

{pedido.numero}

R${" "} {Number.isFinite(pedido.valor) ? pedido.valor.toFixed(2) : "0.00"}{" "} - {pedido.comprador}

{pedido.status}
))}
) : (

Nenhum pedido pendente encontrado

)}
)} {/* Indicador de erro se houver */} {dashboardError && (

⚠️ Erro ao carregar dados do dashboard: {dashboardError}

)} {/* 🚀 Seção de Ações Rápidas - Carregamento rápido para melhor UX */} {showQuickActions && (

Ações Rápidas

{/* Gestão de Produtos Venda - Oculto para colaborador */} {/* Produtos Venda */} {/* Cadastrar Medicamento */} {/* Catálogo de Produtos - Oculto para colaborador e admin (não superadmin) */} {userData?.nivel !== "colaborador" && !(userData?.nivel === "admin" && userData?.superadmin === false) && ( )} {/* Usuários Pendentes - Apenas para superadmins */} {userData?.superadmin === true && ( )} {/* Cadastrar Superadmin - Apenas para superadmins */} {userData?.superadmin === true && ( )} {/* Entregas - Visível para todos os roles */} {/* Gestão de Pedidos - Oculto para colaborador */} {userData?.nivel !== "colaborador" && ( )} {/* Relatórios - Oculto para colaborador */} {userData?.nivel !== "colaborador" && ( )} {/* Gestão de Usuários - Oculto para colaborador e admin (não superadmin) */} {userData?.nivel !== "colaborador" && !(userData?.nivel === "admin" && userData?.superadmin === false) && ( )} {/* Gestão de Colaboradores - Oculto para colaborador */} {userData?.nivel !== "colaborador" && ( )} {/* Gestão de Laboratórios - Oculto para colaborador e admin (não superadmin) */} {userData?.nivel !== "colaborador" && !(userData?.nivel === "admin" && userData?.superadmin === false) && ( )}
)}
{/* Modal de Cadastro de Superadmin */} setShowCadastroSuperadminModal(false)} onSuccess={() => { setShowCadastroSuperadminModal(false); }} />
); }; export default Dashboard;