import { NextResponse } from "next/server";

import { requireAuth } from "../../../../../lib/requireAuth";
import { getAbsenceBySalarieFeed } from "../../../../../server/absences.server";

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

function parseCos(cosParam: string) {
  const cos = Number(cosParam);

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

  return cos;
}

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

  if (authError) {
    return authError;
  }

  const { cos: cosParam } = await params;
  const cos = parseCos(cosParam);

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

  const data = await getAbsenceBySalarieFeed(cos);

  return NextResponse.json({
    message: "Absences retrieved successfully",
    ...data,
  });
}