import { DashboardPage } from "@/components/layout/dashboard-page";
import { getDashboardRole } from "@/lib/auth/dashboard-role";
import { PageHeader } from "@/components/shared/page";
import { ChargingPricing } from "@/features/pricing/charging";
import {
  getChargingPricingPageData,
  type PricingPageData,
} from "@/features/pricing/pricing-server";
export const metadata = { title: "Charging Pricing" };
function selectedDetail(query: Record<string, string | string[] | undefined>) {
  const scheduleId = Array.isArray(query.schedule) ? query.schedule[0] : query.schedule;
  const targetId = Array.isArray(query.target) ? query.target[0] : query.target;
  if (scheduleId) return { kind: "schedule" as const, id: scheduleId };
  if (targetId) return { kind: "target" as const, id: targetId };
  return undefined;
}

function selectedAssignments(query: Record<string, string | string[] | undefined>) {
  const tariffId = Array.isArray(query.assignments)
    ? query.assignments[0]
    : query.assignments;
  return tariffId || undefined;
}

function Page({
  data,
}: {
  data: PricingPageData;
}) {
  return (
    <>
      <PageHeader title="Charging Pricing" />
      <ChargingPricing data={data} />
    </>
  );
}

export default async function DashboardRoute(props: {
  searchParams: Promise<Record<string, string | string[] | undefined>>;
}) {
  const query = await props.searchParams;
  const role = await getDashboardRole(
    Array.isArray(query.role) ? query.role[0] : query.role,
  );
  const detail = selectedDetail(query);
  const assignments = selectedAssignments(query);
  const pricingData = await getChargingPricingPageData(detail, assignments);
  return (
    <DashboardPage role={role}>
      <Page data={pricingData} />
    </DashboardPage>
  );
}
