import Link from "next/link";
import type { Metadata } from "next";
import { prisma } from "@/lib/db";
import { hashToken } from "@/lib/auth/tokens";

export const metadata: Metadata = {
  title: "E-posta Doğrulama",
  robots: { index: false, follow: false },
};

async function verifyEmailToken(token: string) {
  const authToken = await prisma.authToken.findUnique({
    where: { tokenHash: hashToken(token) },
  });

  if (
    !authToken ||
    authToken.type !== "EMAIL_VERIFY" ||
    authToken.usedAt ||
    authToken.expiresAt < new Date()
  ) {
    return false;
  }

  await prisma.$transaction([
    prisma.user.update({
      where: { id: authToken.userId },
      data: { emailVerifiedAt: new Date() },
    }),
    prisma.authToken.update({
      where: { id: authToken.id },
      data: { usedAt: new Date() },
    }),
  ]);

  return true;
}

export default async function VerifyEmailPage({
  params,
}: {
  params: Promise<{ token: string }>;
}) {
  const { token } = await params;
  const success = await verifyEmailToken(token);

  return (
    <div className="mx-auto flex min-h-[calc(100vh-73px)] max-w-md flex-col items-center justify-center px-6 text-center">
      <div
        className={`mb-6 flex h-16 w-16 items-center justify-center rounded-full ${
          success ? "bg-accent/10 text-accent" : "bg-text-muted/10 text-text-muted"
        }`}
      >
        {success ? (
          <svg width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth={2} strokeLinecap="round" strokeLinejoin="round">
            <path d="M5 12l4 4 10-10" />
          </svg>
        ) : (
          <svg width="30" height="30" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth={2} strokeLinecap="round" strokeLinejoin="round">
            <path d="M6 6l12 12M18 6L6 18" />
          </svg>
        )}
      </div>
      <h1 className="text-[26px]">{success ? "E-posta Doğrulandı" : "Bağlantı Geçersiz"}</h1>
      <p className="mt-3 text-[14.5px] leading-relaxed text-text-muted">
        {success
          ? "Hesabın aktifleştirildi. Artık giriş yapabilirsin."
          : "Bu doğrulama bağlantısının süresi dolmuş veya daha önce kullanılmış olabilir."}
      </p>
      <Link href="/giris" className="mt-7 rounded-full bg-accent px-7 py-3 text-[14.5px] font-semibold text-white hover:bg-accent-dark">
        Giriş sayfasına git
      </Link>
    </div>
  );
}
