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

export async function GET(request: Request) {
  try {
    const { searchParams } = new URL(request.url);
    const search = searchParams.get('search')?.toLowerCase() || '';
    const farmId = searchParams.get('farmId') || '';
    const itemCode = searchParams.get('itemCode')?.toLowerCase() || '';
    const customer = searchParams.get('customer')?.toLowerCase() || '';

    const where: any = {};
    if (farmId) where.farmId = farmId;
    if (itemCode) where.itemCode = { contains: itemCode };

    const cancelledLabels = await prisma.cancelledLabel.findMany({
      where,
      orderBy: { cancelledAt: 'desc' }
    });

    const filtered = cancelledLabels.filter((l: any) => {
      if (customer) {
        const c = (l.customerName || '').toLowerCase();
        const p = (l.po || '').toLowerCase();
        if (!c.includes(customer) && !p.includes(customer)) return false;
      }
      if (search) {
        const haystack = `${l.uniqueCode} ${l.boxNumber} ${l.itemCode} ${l.productName} ${l.farmName || ''} ${l.customerName || ''} ${l.po || ''} ${l.airwayBill || ''} ${l.agency || ''}`.toLowerCase();
        if (!haystack.includes(search)) return false;
      }
      return true;
    });

    return NextResponse.json({
      success: true,
      total: filtered.length,
      cancelledLabels: filtered
    });
  } catch (error: any) {
    console.error('Error fetching cancelled labels:', error);
    return NextResponse.json({ error: error.message || 'Error fetching cancelled labels' }, { status: 500 });
  }
}
