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

// POST /api/orders/assign-tracking
// Body: { lines: [{ lineId, trackingNumber, airwayBill? }] }
export async function POST(request: Request) {
  try {
    const body = await request.json();
    const { lines } = body;
    if (!lines || !Array.isArray(lines) || lines.length === 0) {
      return NextResponse.json({ error: 'No se enviaron líneas de tracking' }, { status: 400 });
    }

    const results = await Promise.allSettled(
      lines.map(async (l: { lineId: string; trackingNumber: string; airwayBill?: string }) => {
        return prisma.orderLine.update({
          where: { id: l.lineId },
          data: {
            trackingNumber: l.trackingNumber?.trim() || null,
            airwayBill: l.airwayBill?.trim() || null,
            status: l.trackingNumber ? 'SHIPPED' : undefined,
          },
        });
      })
    );

    const succeeded = results.filter(r => r.status === 'fulfilled').length;
    const failed = results.filter(r => r.status === 'rejected').length;
    return NextResponse.json({ succeeded, failed });
  } catch {
    return NextResponse.json({ error: 'Error al asignar trackings' }, { status: 500 });
  }
}
