import { NextResponse } from "next/server";

import { getEmployeDetails } from "../../../../../server/employes.server";
import { requireAuth } from "../../../../../lib/requireAuth";

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 getEmployeDetails(cos);

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

  return NextResponse.json({ message: "Employe retrieved by COS", employe: data.employe });
}
