import { getSessionUser } from "@/lib/auth";
import { resolveMailBillingProvider } from "@/lib/billing-region-server";
import { createPolarCustomerPortalForOwnerEmail } from "@/lib/polar-billing";

export const runtime = "nodejs";
export const dynamic = "force-dynamic";

const NO_STORE_HEADERS = { "Cache-Control": "no-store, max-age=0" };

export async function POST(request: Request) {
  const user = await getSessionUser();

  if (!user) {
    return Response.json(
      { error: "unauthorized", message: "로그인이 필요합니다." },
      { status: 401, headers: NO_STORE_HEADERS },
    );
  }

  if (resolveMailBillingProvider(request.headers, user.preferredLocale) !== "polar") {
    return Response.json(
      {
        error: "polar-billing-unavailable",
        message: "국내 접속에서는 토스페이 결제 관리를 이용해주세요.",
      },
      { status: 403, headers: NO_STORE_HEADERS },
    );
  }

  try {
    const portal = await createPolarCustomerPortalForOwnerEmail(user.email);
    return Response.json({ ok: true, portal }, { headers: NO_STORE_HEADERS });
  } catch (error) {
    const code = error instanceof Error ? error.message : "polar-portal-failed";
    const status = code === "billing-management-forbidden" ? 403 : 502;

    return Response.json(
      {
        error: code,
        message:
          code === "billing-management-forbidden"
            ? "대표 관리자 계정에서만 결제를 관리할 수 있습니다."
            : "Polar 결제 관리 화면을 열지 못했습니다. 잠시 후 다시 시도해주세요.",
      },
      { status, headers: NO_STORE_HEADERS },
    );
  }
}
