diff --git a/src/app/api/export/confluence/route.ts b/src/app/api/export/confluence/route.ts new file mode 100644 index 0000000..5de9703 --- /dev/null +++ b/src/app/api/export/confluence/route.ts @@ -0,0 +1,39 @@ +import { NextRequest, NextResponse } from "next/server"; +import { prisma } from "@/lib/db"; +import { evaluationToConfluenceMarkup } from "@/lib/export-utils"; + +export async function GET(req: NextRequest) { + try { + const { searchParams } = new URL(req.url); + const id = searchParams.get("id"); + if (!id) { + return NextResponse.json({ error: "Evaluation id required" }, { status: 400 }); + } + + const evaluation = await prisma.evaluation.findUnique({ + where: { id }, + include: { + template: true, + dimensionScores: { include: { dimension: true } }, + }, + }); + + if (!evaluation) { + return NextResponse.json({ error: "Evaluation not found" }, { status: 404 }); + } + + const markup = evaluationToConfluenceMarkup( + evaluation as Parameters[0] + ); + + return new NextResponse(markup, { + headers: { + "Content-Type": "text/plain; charset=utf-8", + "Content-Disposition": `attachment; filename="guide-entretien-${id}.md"`, + }, + }); + } catch (e) { + console.error(e); + return NextResponse.json({ error: "Export failed" }, { status: 500 }); + } +} diff --git a/src/components/EvaluationEditor.tsx b/src/components/EvaluationEditor.tsx index 715d57b..9017b98 100644 --- a/src/components/EvaluationEditor.tsx +++ b/src/components/EvaluationEditor.tsx @@ -1,7 +1,6 @@ "use client"; import { useState, useEffect, useCallback } from "react"; -import Link from "next/link"; import { useRouter } from "next/navigation"; import { updateEvaluation, deleteEvaluation, fetchEvaluation } from "@/actions/evaluations"; import { CandidateForm } from "@/components/CandidateForm"; diff --git a/src/components/ExportModal.tsx b/src/components/ExportModal.tsx index 982b3f9..7dfc02b 100644 --- a/src/components/ExportModal.tsx +++ b/src/components/ExportModal.tsx @@ -12,6 +12,7 @@ export function ExportModal({ isOpen, onClose, evaluationId }: ExportModalProps) const base = typeof window !== "undefined" ? window.location.origin : ""; const csvUrl = `${base}/api/export/csv?id=${evaluationId}`; const pdfUrl = `${base}/api/export/pdf?id=${evaluationId}`; + const confluenceUrl = `${base}/api/export/confluence?id=${evaluationId}`; return ( <> @@ -37,6 +38,14 @@ export function ExportModal({ isOpen, onClose, evaluationId }: ExportModalProps) > pdf + + confluence +