import { NextResponse } from 'next/server';
import { prisma } from '@/lib/prisma';

export async function PUT(request: Request, props: { params: Promise<{ id: string }> }) {
  try {
    const { id } = await props.params;
    const data = await request.json();

    const cleanRuc = data.ruc?.toString().trim();
    if (cleanRuc) {
      const existing = await prisma.farm.findFirst({
        where: {
          ruc: cleanRuc,
          NOT: { id }
        }
      });
      if (existing) {
        return NextResponse.json({
          error: `Ya existe otra finca registrada con el RUC ${cleanRuc} (${existing.name}). El número de RUC es único.`
        }, { status: 400 });
      }
      data.ruc = cleanRuc;
    }

    const item = await prisma.farm.update({
      where: { id },
      data
    });
    return NextResponse.json(item);
  } catch (error: any) {
    return NextResponse.json({ error: error.message || 'Error updating farm' }, { status: 500 });
  }
}

export async function DELETE(request: Request, props: { params: Promise<{ id: string }> }) {
  try {
    const { id } = await props.params;
    await prisma.farm.delete({ where: { id } });
    return NextResponse.json({ success: true });
  } catch (error) {
    return NextResponse.json({ error: 'Error deleting farm' }, { status: 500 });
  }
}
