import { NextResponse } from "next/server";

import { requirePermission } from "@/lib/authorization";
import {
  DocumentTemplateBatchError,
  importDocumentTemplateBatch,
} from "@/services/modeles-documents.service";

export const runtime = "nodejs";

export async function POST(request: Request) {
  const auth = await requirePermission(request, "impressions", "write");
  if (!auth.ok) return auth.response;

  let form: FormData;
  try {
    form = await request.formData();
  } catch {
    return NextResponse.json({ message: "INVALID_MULTIPART_BODY" }, { status: 400 });
  }

  const file = form.get("file");
  if (!(file instanceof File)) {
    return NextResponse.json({ message: "ZIP_REQUIRED" }, { status: 400 });
  }

  try {
    const report = await importDocumentTemplateBatch(file);
    return NextResponse.json(report, { status: 200 });
  } catch (error) {
    if (error instanceof DocumentTemplateBatchError) {
      return NextResponse.json({ message: error.code }, { status: 422 });
    }
    console.error("Document template batch import failed", error);
    return NextResponse.json({ message: "BATCH_IMPORT_FAILED" }, { status: 500 });
  }
}
