1import { NextRequest, NextResponse } from 'next/server';
2import { fieldpineServerApi } from '@/lib/server/fieldpineApi';
3import { getStoredAuth } from '@/lib/server/auth';
5export async function GET(request: NextRequest) {
7 const authData = await getStoredAuth();
8 if (!authData || !authData.authenticated) {
9 return NextResponse.json(
10 { error: 'Unauthorized' },
15 const { searchParams } = new URL(request.url);
16 const limit = parseInt(searchParams.get('limit') || '50');
17 const skip = parseInt(searchParams.get('skip') || '0');
19 // Use BUCK API to get recent sales
20 const buckParams: Record<string, string> = {
21 '3': 'retailmax.elink.sale.list',
22 '10': '102,131,132,140,141,210,211,212,213,214,300,301,302,303,304,305', // Sale fields
23 '13': 'completeddt', // Sort by date
24 '20': limit.toString(),
28 const result = await fieldpineServerApi.buckApiCall(buckParams, authData.apiKey);
30 console.log('[Recent Sales] BUCK result:', {
31 hasDats: !!result.DATS,
32 datsLength: result.DATS?.length,
33 resultKeys: Object.keys(result)
36 // Parse DATS array into sale objects
37 let sales: any[] = [];
38 if (result && result.DATS && Array.isArray(result.DATS)) {
39 sales = result.DATS.map((sale: any) => ({
40 sid: sale.f102_E || 0,
41 externalId: sale.f140_s || sale.f141_s || null,
42 completedDt: sale.f131_DT || sale.f132_DT || null,
43 total: parseFloat(sale.f210_$) || 0,
44 phase: parseInt(sale.f300_E) || 0,
45 customerId: sale.f301_s || null,
46 customerName: sale.f302_s || null,
47 locationId: parseInt(sale.f303_E) || null,
48 locationName: sale.f304_s || null,
49 createDt: sale.f305_DT || null
53 return NextResponse.json({
60 console.error('Recent sales API error:', error);
61 return NextResponse.json({
63 error: error instanceof Error ? error.message : 'Unknown error',