import { eq } from "drizzle-orm";
import { NextResponse, type NextRequest } from "next/server";
import { appDb, schema } from "@/lib/appdb";
import { odemeyiSonuclandir } from "@/lib/odeme";

// DİKKAT: Bu route iyzico'dan gelen cross-site form POST'udur.
// SameSite=Lax nedeniyle session çerezi GELMEZ — kullanıcı token'dan çözülür,
// verifySession ÇAĞRILMAZ. Kredi tanımlama odemeyiSonuclandir içinde idempotenttir.
export async function POST(request: NextRequest) {
  const form = await request.formData();
  const token = form.get("token");
  const appUrl = process.env.NEXT_PUBLIC_APP_URL ?? "http://localhost:3000";

  if (typeof token !== "string" || !token) {
    return NextResponse.redirect(`${appUrl}/paket?hata=token`, 303);
  }

  const order = await appDb.query.orders.findFirst({
    where: eq(schema.orders.iyzicoToken, token),
  });
  if (!order) {
    return NextResponse.redirect(`${appUrl}/paket?hata=siparis`, 303);
  }

  await odemeyiSonuclandir(order.id);
  return NextResponse.redirect(
    `${appUrl}/odeme/sonuc?siparis=${order.id}`,
    303,
  );
}
