import { NextResponse, type NextRequest } from "next/server"; import { exportFilename, exportResponseHeaders, toCsv, toXlsx } from "@/lib/export"; import { exportParameter, ladeExportMitarbeiter } from "@/lib/export-auswahl"; import { baueHonestlyZeilen, honestlySpalten } from "@/lib/honestly"; import { requireHrUser } from "@/lib/auth/require-hr"; import { withUser } from "@/lib/db"; // Der Export für die Mitarbeiterbefragung bei Honestly — Spalten und feste // Werte stehen in lib/honestly.ts. // // Dieselben Personen wie im vollständigen Export daneben, mit denselben // Filtern (lib/export-auswahl.ts). Wer eine Befragung nur für einen Bereich // oder nur für Aktive will, stellt das auf der Berichtsseite ein, bevor er // exportiert. export async function GET(request: NextRequest) { const gate = await requireHrUser(); if ("denied" in gate) return gate.denied; const { format, asOf, filters } = exportParameter(request.nextUrl.searchParams); const { rows, lookups, orgMaps } = await withUser(gate.userId, (tx) => ladeExportMitarbeiter(tx, { asOf, filters })); const { zeilen, tiefe } = baueHonestlyZeilen(rows, orgMaps, lookups.locationName); const spalten = honestlySpalten(tiefe); const filename = exportFilename("honestly-export", format); const body = format === "xlsx" ? await toXlsx(zeilen, spalten, "Honestly") : toCsv(zeilen, spalten); // Derselbe Umweg über Blob wie im vollständigen Export (TS#59417). return new NextResponse(new Blob([body as BlobPart]), { headers: exportResponseHeaders(filename, format) }); }