import { NextResponse } from 'next/server'; import { prisma } from '@/lib/prisma'; import { sendDesignReadyForReview } from '@/lib/mail'; export async function POST( req: Request, { params }: { params: Promise<{ id: string }> } ) { try { const { id } = await params; const { designPreviewUrl, designPreviewUrlBack, placementPreviewUrl, placementPreviewUrlBack } = await req.json().catch(() => ({})); const design = await prisma.designApproval.findUnique({ where: { id: id }, include: { product: true }, }); if (!design) { return NextResponse.json({ error: 'Design not found' }, { status: 404 }); } // Update status to IN_REVIEW and save new preview if provided const updateData: any = { status: 'IN_REVIEW' }; if (designPreviewUrl) updateData.designPreviewUrl = designPreviewUrl; if (designPreviewUrlBack) updateData.designPreviewUrlBack = designPreviewUrlBack; if (placementPreviewUrl) updateData.placementPreviewUrl = placementPreviewUrl; if (placementPreviewUrlBack) updateData.placementPreviewUrlBack = placementPreviewUrlBack; const updated = await prisma.designApproval.update({ where: { id: id }, data: updateData, include: { product: true, messages: { orderBy: { createdAt: 'asc' } } }, }); // Send email to customer await sendDesignReadyForReview({ customerName: design.customerName || 'Customer', customerEmail: design.customerEmail, productName: design.product.name, reviewLink: `${process.env.NEXT_PUBLIC_SITE_URL || 'http://localhost:3000'}/designs/${id}/review`, }); return NextResponse.json(updated); } catch (err) { console.error('Error sending design to customer:', err); return NextResponse.json( { error: 'Failed to send design' }, { status: 500 } ); } }