import { NextResponse } from "next/server";

import { getContratByBusinessIdFeed } from "../../../../../server/contrats.server";
import { requireAuth } from "../../../../../lib/requireAuth";

type RouteContext = {
  params: Promise<{
    externalId: string;
  }>;
};

function parseExternalId(idParam: string) {
  const id = Number(idParam);

  if (!Number.isInteger(id)) {
    return null;
  }

  return id;
}

export async function GET(_request: Request, { params }: RouteContext) {
  const authError = requireAuth(_request);

  if (authError) {
    return authError;
  }

  const { externalId } = await params;
  const external = parseExternalId(externalId);

  if (external === null) {
    return NextResponse.json({ message: "Invalid external ID parameter" }, { status: 400 });
  }

  const data = await getContratByBusinessIdFeed(external);

  if (!data.contrat) {
    return NextResponse.json({ message: "Contrat not found" }, { status: 404 });
  }

  return NextResponse.json({ message: "Contrat retrieved by external ID", contrat: data.contrat });
}
