import { AppShell } from '@/components/app/app-shell'
import { requireRoleRoute } from '@/lib/role-route'
import { loadBrokerPage, loadCompanyStatus, loadDashboardBase } from '@/lib/data/dashboard'
import { loadBrokerCompanyInfo } from '@/lib/data/broker-company'
import { BrokerDashboard } from './broker-dashboard'
import { filterFromSlug } from './filters'

/** Freight Broker Dashboard (FB) — freight brokers only. */
export default async function BrokerDashboardPage({
  searchParams,
}: {
  /** `?tab=company-info` opens the Broker Company chip; `?company=<id>` is the HeavyHaul admin's picker. */
  searchParams: Promise<{ tab?: string; company?: string }>
}) {
  const { user, profile } = await requireRoleRoute('broker')
  const { tab, company } = await searchParams
  const [base, brokerPage, companyStatus, companyInfo] = await Promise.all([
    loadDashboardBase(user),
    loadBrokerPage(user),
    loadCompanyStatus(user),
    loadBrokerCompanyInfo(user, { companyId: company ?? null, profile: { full_name: profile.full_name, phone: profile.phone } }),
  ])
  return (
    <AppShell profile={profile}>
      <BrokerDashboard
        trips={base.trips}
        warnings={base.warnings}
        brokerPage={brokerPage}
        permits={base.permits}
        drivers={base.drivers}
        pilots={base.pilots}
        userId={user.id}
        completions={base.completions}
        companyStatus={companyStatus}
        companyInfo={companyInfo}
        viewer={{ name: profile.full_name || user.name, email: user.email }}
        initialFilter={filterFromSlug(tab)}
      />
    </AppShell>
  )
}
