"use client";
import { useQuery } from "@tanstack/react-query";
import Link from "next/link";
import { sportsCenterApi } from "@/modules/sports-center/services/sports-center-api";
import { useTenantId } from "@/hooks/useTenantId";
import { useSportsCenterCapabilities } from "@/modules/sports-center/hooks/useSportsCenterCapabilities";
import { SportsCenterPageLoader, SportsCenterPageError } from "@/modules/sports-center/pages/shared";
import { PageHeader, StatCard, Card, CardContent, Button, Badge } from "@/components/ds";
import { SportsCenterBreadcrumbs } from "@/modules/sports-center/components/SportsCenterBreadcrumbs";
export function OwnerDashboard() {
const { tenantId } = useTenantId();
const caps = useSportsCenterCapabilities();
const countsQ = useQuery({
queryKey: ["sports-center", tenantId, "dashboard-counts"],
queryFn: async () => {
const [members, memberships, coaches, sessions, attendance] = await Promise.all([
sportsCenterApi.members.list(tenantId!, { page: 1, page_size: 500 }),
sportsCenterApi.memberships.list(tenantId!, { page: 1, page_size: 500 }),
sportsCenterApi.coaches.list(tenantId!, { page: 1, page_size: 500 }),
caps.data?.features?.booking_engine
? sportsCenterApi.sessions.list(tenantId!, { sports_center_id: "", page: 1, page_size: 500 }).catch(() => [])
: Promise.resolve([]),
Promise.resolve([]),
]);
const activeMembers = members.filter((m) => m.status === "active").length;
const activeMemberships = memberships.filter((m) => m.status === "active").length;
return {
members: members.length,
activeMembers,
memberships: memberships.length,
activeMemberships,
coaches: coaches.length,
sessions: sessions.length,
attendance: attendance.length,
};
},
enabled: !!tenantId && !caps.isLoading,
});
if (!tenantId || countsQ.isLoading || caps.isLoading) return ;
if (countsQ.error) return countsQ.refetch()} />;
const c = countsQ.data!;
return (
v{caps.data?.version}}
/>
);
}
export default OwnerDashboard;