import { benutzerNachId } from '@/lib/repos/benutzer'; import { inhalte } from '@/lib/inhalte'; import { inhaltVon } from '@/lib/repos/feedback'; import { feedbackPdf } from '@/lib/pdf/feedback'; import { alsDatumText, alsZeitpunktText } from '@/lib/zeit'; import { gespraechZumLesen } from '../../aktionen'; export const dynamic = 'force-dynamic'; /** Das Feedbackgespräch als PDF. Rechteprüfung über `gespraechZumLesen`. */ export async function GET(_anfrage: Request, kontext: { params: Promise<{ gespraechId: string }> }) { const { gespraechId } = await kontext.params; const gelesen = await gespraechZumLesen(gespraechId); if (!gelesen) return new Response('Nicht gefunden.', { status: 404 }); const { gespraech, ausbildung } = gelesen; const azubi = benutzerNachId(ausbildung.azubiId); const ausbilder = benutzerNachId(ausbildung.ausbilderId); const pdf = await feedbackPdf({ datum: alsDatumText(gespraech.datum), azubi: azubi?.name ?? 'unbekannt', ausbilder: ausbilder?.name ?? '', beruf: ausbildung.beruf, inhalt: inhaltVon(gespraech, inhalte().feedback), bestaetigtAzubiAm: gespraech.bestaetigtAzubiAm ? alsZeitpunktText(gespraech.bestaetigtAzubiAm) : null, bestaetigtAusbilderAm: gespraech.bestaetigtAusbilderAm ? alsZeitpunktText(gespraech.bestaetigtAusbilderAm) : null, }); const dateiname = `Feedbackgespraech_${gespraech.datum}.pdf`; return new Response(new Uint8Array(pdf), { headers: { 'Content-Type': 'application/pdf', 'Content-Length': String(pdf.byteLength), 'Content-Disposition': `inline; filename="${dateiname}"`, 'Cache-Control': 'private, no-store', 'X-Content-Type-Options': 'nosniff', }, }); }