import { SignOutButton } from "@/components/auth/sign-out-button"; import { DashboardControls } from "@/components/dashboard/dashboard-controls"; import { getServerAgencyContextOrRedirect } from "@/lib/agency"; import type { Database } from "@/lib/types"; import { createSupabaseServerClient } from "@/lib/supabase/server"; type AgencySummary = Pick< Database["public"]["Tables"]["agencies"]["Row"], "id" | "name" >; type BillingSummary = Pick< Database["public"]["Tables"]["billing_accounts"]["Row"], "subscription_status" | "plan_id" | "current_period_end" >; type ActionLogSummary = Pick< Database["public"]["Tables"]["actions_log"]["Row"], "target_id" | "status" | "action" | "created_at" | "error_message" >; export default async function DashboardPage() { const context = await getServerAgencyContextOrRedirect(); const supabase = createSupabaseServerClient() as any; const [ { data: agency }, { data: instances, error: instancesError }, { data: subscriptions }, { data: domains }, { data: billing }, { data: autoSyncLogs }, ] = (await Promise.all([ supabase .from("agencies") .select("id, name") .eq("id", context.agencyId) .maybeSingle(), supabase .from("plesk_instances") .select( "id, name, base_url, auth_type, status, error_message, last_connected_at, last_sync_at, last_sync_status, last_sync_error, last_sync_subscriptions, last_sync_domains", ) .eq("agency_id", context.agencyId) .order("created_at", { ascending: false }), supabase .from("plesk_subscriptions") .select("id, name, status, plesk_subscription_id, plesk_instance_id") .eq("agency_id", context.agencyId) .order("updated_at", { ascending: false }) .limit(10), supabase .from("plesk_domains") .select( "id, plesk_instance_id, subscription_id, status, domain_name, hosting_type, source_created_at, aliases_count, updated_at", ) .eq("agency_id", context.agencyId) .order("updated_at", { ascending: false }) .limit(500), supabase .from("billing_accounts") .select("subscription_status, plan_id, current_period_end") .eq("agency_id", context.agencyId) .maybeSingle(), supabase .from("actions_log") .select("target_id, status, action, created_at, error_message") .eq("agency_id", context.agencyId) .eq("target_type", "plesk_instance") .eq("action", "plesk_sync_auto") .order("created_at", { ascending: false }) .limit(200), ])) as [ { data: AgencySummary | null }, { data: Array<{ id: string; name: string; base_url: string; auth_type: "api_key" | "basic"; status: string; error_message: string | null; last_connected_at: string | null; last_sync_at: string | null; last_sync_status: string | null; last_sync_error: string | null; last_sync_subscriptions: number; last_sync_domains: number; }> | null; error: { message: string } | null; }, { data: Array<{ id: string; name: string | null; status: string | null; plesk_subscription_id: string; plesk_instance_id: string; }> | null; }, { data: Array<{ id: string; plesk_instance_id: string; subscription_id: string | null; domain_name: string; status: string | null; hosting_type: string | null; source_created_at: string | null; aliases_count: number | null; updated_at: string; }> | null; }, { data: BillingSummary | null }, { data: ActionLogSummary[] | null }, ]; const domainSubscriptionIds = Array.from( new Set( (domains ?? []) .map((domain) => domain.subscription_id) .filter((id): id is string => Boolean(id)), ), ); const { data: domainSubscriptions } = domainSubscriptionIds.length > 0 ? await supabase .from("plesk_subscriptions") .select("id, status") .eq("agency_id", context.agencyId) .in("id", domainSubscriptionIds) : { data: [] }; const subscriptionStatusById = new Map( (domainSubscriptions ?? []).map((subscription: any) => [ String(subscription.id), subscription?.status ? String(subscription.status) : null, ]), ); const autoSyncByInstance = new Map< string, { status: string; created_at: string; error_message: string | null } >(); for (const log of autoSyncLogs ?? []) { if (!log.target_id || autoSyncByInstance.has(log.target_id)) continue; autoSyncByInstance.set(log.target_id, { status: log.status, created_at: log.created_at, error_message: log.error_message, }); } return (

{agency?.name ?? "Agency"} Dashboard

Role: {context.role}

Plesk Instances

{instances?.length ?? 0}

Tracked Subscriptions

{subscriptions?.length ?? 0}

Billing Status

{billing?.subscription_status ?? "none"}

{instancesError ? (
Instances query failed: {instancesError.message}
) : null} { const joinedStatus = domain.subscription_id ? subscriptionStatusById.get(domain.subscription_id) : null; return { ...domain, status: joinedStatus ?? "unknown", }; })} autoSyncByInstance={Object.fromEntries(autoSyncByInstance.entries())} />
); }