import { z } from 'zod';
import { prisma } from '@/lib/db';
import { agentGuard } from '@/lib/agentRoute';
import { log } from '@/lib/http';
export const dynamic = 'force-dynamic';
const Body = z.object({ email: z.string().email(), credits: z.number().int().min(1).max(20), note: z.string().max(80).optional() });
/** İmzalı yönetim çağrısı: kullanıcıya ücretsiz kredi tanımlar (test/ikram). Ödeme kaydı tutar 0 ile "admin" planı olarak yazılır. */
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 });
  const u = await prisma.user.findUnique({ where: { email: p.data.email.toLowerCase() } });
  if (!u) return Response.json({ error: 'kullanıcı yok' }, { status: 404 });
  const [user] = await prisma.$transaction([
    prisma.user.update({ where: { id: u.id }, data: { credits: { increment: p.data.credits } }, select: { credits: true } }),
    prisma.payment.create({ data: { userId: u.id, plan: 'admin', credits: p.data.credits, amount: 0, status: 'succeeded' } }),
  ]);
  log('info', 'admin_credit', { userId: u.id, credits: p.data.credits, note: p.data.note });
  return Response.json({ ok: true, credits: user.credits });
}
