import { notFound } from "next/navigation";

import { Card, CardContent } from "@/components/ui/card";
import { ListPageCard } from "@/app/dashboard/_components";
import { ScrollText } from "lucide-react";

import { OrderBlotterStepForm } from "../_components/order-blotter-step-form";
import { fetchBackendOrderBlotterCreateDraft } from "../_lib/order-blotter-server-api";
import {
  decodeCorporateDbSlugFromUrl,
  decodeRouteIntParam,
} from "@/lib/order-blotter/route-params";

type PageProps = {
  searchParams: Promise<{
    transaction_id?: string;
    customer_id?: string;
    corporate_db?: string;
  }>;
};

export default async function OrderBlotterCreatePage({ searchParams }: PageProps) {
  const q = await searchParams;
  const transactionId = decodeRouteIntParam(q.transaction_id ?? "");
  if (transactionId <= 0) {
    notFound();
  }

  const customerIdRaw = decodeRouteIntParam(q.customer_id ?? "");
  const customerId = customerIdRaw > 0 ? customerIdRaw : null;
  const corporateDb = q.corporate_db ? decodeCorporateDbSlugFromUrl(q.corporate_db) || null : null;
  const { detail, errorMessage, prefilled } = await fetchBackendOrderBlotterCreateDraft({
    transactionId,
    customerId,
    corporateDb,
  });

  if (!detail) {
    return (
      <ListPageCard
        icon={ScrollText}
        title="Create order blotter"
        breadcrumb={[
          { label: "Order blotter", href: "/dashboard/order-blotter" },
          { label: "Create" },
        ]}
      >
        <p className="text-destructive text-sm">
          {errorMessage ?? "Could not prefill order blotter from this transaction."}
        </p>
      </ListPageCard>
    );
  }

  return (
    <ListPageCard
      icon={ScrollText}
      title={
        prefilled
          ? `New order blotter from transaction #${transactionId}`
          : "New order blotter"
      }
      breadcrumb={[
        { label: "Order blotter", href: "/dashboard/order-blotter" },
        { label: "Create" },
      ]}
    >
      <Card>
        <CardContent className="pt-6">
          <OrderBlotterStepForm
            detail={detail}
            isCreate
            prefilledFromTransaction={prefilled}
            transactionId={transactionId}
          />
        </CardContent>
      </Card>
    </ListPageCard>
  );
}
