import { z } from 'zod';
import { prisma } from '@/lib/db';
import { agentGuard } from '@/lib/agentRoute';
import { log } from '@/lib/http';
export const dynamic = 'force-dynamic';
/** İmzalı test temizliği: yalnızca qa+<sayı>@kreatif.tr hesaplarını ve onlara ait sipariş/ödeme/paylaşım kayıtlarını siler. */
const QA = /^qa\+\d+@kreatif\.tr$/;
const Body = z.object({ email: z.string().email().optional(), list: z.boolean().optional() });
export async function POST(req: Request) {
  const bad = await agentGuard(req); if (bad) return bad;
  const p = Body.safeParse(await req.json().catch(() => null));
  if (!p.success) return Response.json({ error: 'hatalı istek' }, { status: 400 });
  if (p.data.list) {
    const users = await prisma.user.findMany({ where: { email: { startsWith: 'qa+', endsWith: '@kreatif.tr' } }, select: { email: true } });
    return Response.json({ emails: users.map((u) => u.email).filter((e) => QA.test(e)) });
  }
  const email = (p.data.email || '').toLowerCase();
  if (!QA.test(email)) return Response.json({ error: 'yalnızca qa+ test hesapları' }, { status: 403 });
  const u = await prisma.user.findUnique({ where: { email } });
  if (!u) return Response.json({ ok: true, deleted: 0 });
  const orders = await prisma.order.findMany({ where: { userId: u.id }, select: { id: true } });
  const ids = orders.map((o) => o.id);
  await prisma.$transaction([
    prisma.job.deleteMany({ where: { orderId: { in: ids } } }),
    prisma.order.deleteMany({ where: { id: { in: ids } } }),
    prisma.payment.deleteMany({ where: { userId: u.id } }),
    prisma.user.updateMany({ where: { referredById: u.id }, data: { referredById: null } }),
    prisma.user.delete({ where: { id: u.id } }),
  ]);
  log('info', 'qa_cleanup', { userId: u.id, orders: ids.length });
  return Response.json({ ok: true, deleted: 1, orders: ids.length });
}
