import { NextRequest, NextResponse } from "next/server";
import { AFFILIATION_COOKIE, trackAffiliateClick } from "@/server/affiliation/service";
import { env, isProductionRuntime } from "@/server/env";

export async function GET(request: NextRequest, { params }: { params: Promise<{ code: string }> }) {
  const { code } = await params;
  const link = await trackAffiliateClick(code, request);
  const target = new URL(link?.landingPath ?? "/", request.url);
  const response = NextResponse.redirect(target);

  if (link) {
    const config = env();
    response.cookies.set(AFFILIATION_COOKIE, link.code, {
      httpOnly: true,
      sameSite: "lax",
      secure: isProductionRuntime(config),
      path: "/",
      maxAge: 30 * 24 * 60 * 60,
      domain: config.COOKIE_DOMAIN === "localhost" ? undefined : config.COOKIE_DOMAIN
    });
  }

  return response;
}
