import { NextResponse } from "next/server";

import { requirePermission } from "@/lib/authorization";
import {
  listAvailablePayslips,
  PayslipError,
} from "@/services/fiches-paie.service";

export const runtime = "nodejs";
export const dynamic = "force-dynamic";

export async function GET(request: Request) {
  const auth = await requirePermission(request, "fiches_paie", "read");

  if (!auth.ok) return auth.response;

  const allowedEstablishments = auth.access.allEstablishments
    ? undefined
    : auth.access.establishments.map((item) => item.name);

  try {
    const items = await listAvailablePayslips(allowedEstablishments);

    return NextResponse.json(
      { items },
      {
        headers: {
          "Cache-Control": "no-store",
        },
      },
    );
  } catch (error) {
    if (error instanceof PayslipError) {
      return NextResponse.json(
        { message: error.message, code: error.code },
        { status: error.status },
      );
    }

    return NextResponse.json(
      { message: "Impossible de lire les périodes de paie disponibles." },
      { status: 500 },
    );
  }
}
