import { NextResponse } from "next/server";

import { getAvenantsByContratIdFeed } from "../../../../../server/avenants.server";
import { requireAuth } from "../../../../../lib/requireAuth";

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

function parseId(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 { id: idParam } = await params;
  const id = parseId(idParam);

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

  const data = await getAvenantsByContratIdFeed(id);

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

  return NextResponse.json({
    message: "Avenants by contrat retrieved successfully",
    items: data.items,
    count: data.count,
  });
}
