import { notFound } from "next/navigation";

import { MacroAssetClassForm } from "../_components/macro-asset-class-form/macro-asset-class-form";
import {
  fetchBackendMacroAssetClassById,
  fetchMacroFormUsage,
  fetchMacroTypeOptions,
} from "../_lib/macro-asset-class-server-api";

type PageProps = {
  params: Promise<{ id: string }>;
};

export default async function MacroAssetClassUpdatePage({ params }: PageProps) {
  const { id } = await params;
  const recordId = Number(id);

  if (!Number.isFinite(recordId)) {
    notFound();
  }

  const [{ macroAssetClass }, formUsage, { catalog }] = await Promise.all([
    fetchBackendMacroAssetClassById(recordId),
    fetchMacroFormUsage(recordId),
    fetchMacroTypeOptions(),
  ]);

  if (!macroAssetClass) {
    notFound();
  }

  return (
    <MacroAssetClassForm
      mode="update"
      initial={macroAssetClass}
      formUsage={formUsage}
      typeOptions={{
        assetTypes: catalog.assetTypes.map((item) => ({
          id: item.id,
          name: item.name,
          parentName: item.parentName,
        })),
        productTypes: catalog.productTypes,
      }}
    />
  );
}
