import { NextResponse } from "next/server";
import { prisma } from "@/lib/prisma";
import { verifyUnsubscribeToken } from "@/lib/newsletter-admin";

export async function GET(request: Request) {
  const url = new URL(request.url);
  const email = (url.searchParams.get("email") ?? "").trim().toLowerCase();
  const token = url.searchParams.get("token") ?? "";
  const base = (process.env.NEXT_PUBLIC_SITE_URL ?? "https://toolaro.org").replace(/\/$/, "");

  if (!email || !token || !verifyUnsubscribeToken(email, token)) {
    return NextResponse.redirect(`${base}/newsletter-unsubscribed?status=invalid`);
  }

  await prisma.newsletterSubscription.create({
    data: {
      email,
      source: "unsubscribe_link",
      status: "unsubscribed",
      unsubscribedAt: new Date(),
    },
  });
  await prisma.user.updateMany({
    where: { email },
    data: { newsletterOptIn: false },
  });

  return NextResponse.redirect(`${base}/newsletter-unsubscribed?status=success`);
}
