import type { NextApiRequest, NextApiResponse } from 'next' import { prisma } from '@/lib/prisma' import { requireAuth, logAction } from '@/lib/auth' export default async function handler(req: NextApiRequest, res: NextApiResponse) { const user = await requireAuth(req, res, ['ADMIN']) if (!user) return if (req.method !== 'POST') return res.status(405).end() const { id } = req.query as { id: string } const source = await prisma.buildForm.findUnique({ where: { id }, include: { fields: { orderBy: { order: 'asc' } } }, }) if (!source) return res.status(404).json({ error: 'Form not found' }) const clone = await prisma.buildForm.create({ data: { name: `${source.name} (Copy)`, product: source.product, description: source.description, minSubmissions: source.minSubmissions, status: 'DRAFT', createdById: user.id, clonedFromId: source.id, clonedFromName: source.name, fields: { create: source.fields.map(f => ({ label: f.label, type: f.type, hint: f.hint, options: f.options, required: f.required, trackStd: f.trackStd, order: f.order, })), }, }, include: { fields: { orderBy: { order: 'asc' } }, _count: { select: { submissions: true, fields: true } }, }, }) await logAction(user.id, 'CREATE', 'BuildForm', clone.id, null, { clonedFrom: source.id, name: clone.name }) return res.status(201).json({ data: clone }) }