"use client"; import { useSession } from "next-auth/react"; import { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Building2, Users, Database, Activity, Plus, Settings, BarChart3 } from "lucide-react"; interface Company { id: string; name: string; status: string; createdAt: string; _count: { users: number; sessions: number; imports: number; }; } interface DashboardData { companies: Company[]; pagination: { total: number; pages: number; }; } export default function PlatformDashboard() { const { data: session, status } = useSession(); const router = useRouter(); const [dashboardData, setDashboardData] = useState(null); const [isLoading, setIsLoading] = useState(true); useEffect(() => { if (status === "loading") return; if (!session?.user?.isPlatformUser) { router.push("/platform/login"); return; } fetchDashboardData(); }, [session, status, router]); const fetchDashboardData = async () => { try { const response = await fetch("/api/platform/companies"); if (response.ok) { const data = await response.json(); setDashboardData(data); } } catch (error) { console.error("Failed to fetch dashboard data:", error); } finally { setIsLoading(false); } }; const getStatusBadgeVariant = (status: string) => { switch (status) { case "ACTIVE": return "default"; case "TRIAL": return "secondary"; case "SUSPENDED": return "destructive"; case "ARCHIVED": return "outline"; default: return "default"; } }; if (status === "loading" || isLoading) { return (
Loading platform dashboard...
); } if (!session?.user?.isPlatformUser) { return null; } const totalCompanies = dashboardData?.pagination?.total || 0; const totalUsers = dashboardData?.companies?.reduce((sum, company) => sum + company._count.users, 0) || 0; const totalSessions = dashboardData?.companies?.reduce((sum, company) => sum + company._count.sessions, 0) || 0; return (

Platform Dashboard

Welcome back, {session.user.name || session.user.email}

{/* Stats Overview */}
Total Companies
{totalCompanies}
Total Users
{totalUsers}
Total Sessions
{totalSessions}
Active Companies
{dashboardData?.companies?.filter(c => c.status === "ACTIVE").length || 0}
{/* Companies List */} Companies
{dashboardData?.companies?.map((company) => (

{company.name}

{company.status}
{company._count.users} users {company._count.sessions} sessions {company._count.imports} imports Created {new Date(company.createdAt).toLocaleDateString()}
))} {!dashboardData?.companies?.length && (
No companies found. Create your first company to get started.
)}
); }