import { NextResponse } from "next/server";
import { callPortalBackend } from "@/lib/backend";

export const dynamic = "force-dynamic";

type RouteContext = { params: Promise<{ token: string }> };

export async function GET(_request: Request, context: RouteContext) {
  try {
    const { token } = await context.params;
    if (!/^[a-f0-9]{40,64}$/i.test(token)) {
      return NextResponse.json({ ok: false, error: "Lien de dossier invalide." }, { status: 404 });
    }

    if (process.env.NODE_ENV !== "production" && token === "000000000000000000000000000000000000000000000000") {
      return NextResponse.json({
        ok: true,
        data: {
          reference: "ENR-2026-0001",
          firstName: "Client",
          lastName: "Test ENRGETIC",
          city: "VILLE TEST",
          projectType: "Maison neuve",
          projectDetail: "Maison individuelle",
          createdSurface: 100,
          daactCode: "PPR",
          status: "Pièces en cours",
          piecesReceived: 2,
          piecesExpected: 25,
          lastUpdate: new Date().toISOString(),
          uploads: [
            { checklistItemId: "COMMON_PC_DP_ORDER", fileName: "arrete-test.pdf", uploadedAt: new Date().toISOString(), status: "En vérification" },
            { checklistItemId: "COMMON_PERMIT_PLANS", fileName: "plans-test.pdf", uploadedAt: new Date().toISOString(), status: "En vérification" },
          ],
        },
      });
    }

    const data = await callPortalBackend<unknown>({ action: "get_dossier", token });
    return NextResponse.json(
      { ok: true, data },
      { headers: { "cache-control": "no-store, max-age=0" } },
    );
  } catch (error) {
    const message = error instanceof Error ? error.message : "Dossier inaccessible.";
    const status = /introuvable|invalide|refusé/i.test(message) ? 404 : 502;
    return NextResponse.json({ ok: false, error: message }, { status });
  }
}
