1import { NextRequest, NextResponse } from 'next/server';
2import { fieldpineServerApi } from '@/lib/server/fieldpineApi';
3import { getRequestContext } from '@/lib/server/sessionUtils';
5export async function POST(request: NextRequest) {
7 const context = await getRequestContext(request);
8 if (!context?.isAuthenticated || !context?.session?.apiKey) {
9 return NextResponse.json(
10 { error: 'Unauthorized' },
16 const clientId = request.headers.get('x-forwarded-for') ||
17 request.headers.get('x-real-ip') ||
18 context.session.userId ||
20 if (!fieldpineServerApi.checkClientRateLimit(clientId)) {
21 return NextResponse.json(
22 { error: 'Rate limit exceeded' },
27 const saleData = await request.json();
28 console.log('Sale data received:', JSON.stringify(saleData, null, 2));
30 // Use authenticated API call with store-specific URL
31 const result = await fieldpineServerApi.createSale(saleData, context.session.apiKey, context.store.url);
32 console.log('Sale created successfully:', result);
34 return NextResponse.json({ success: true, data: result });
37 console.error('Sales API error:', error);
38 console.error('Error details:', error instanceof Error ? error.message : 'Unknown error');
40 // For now, simulate success since the API might not be fully implemented
41 // TODO: Implement proper DATI-based sale creation for Fieldpine
42 return NextResponse.json({
45 saleId: `DEMO_SALE_${Date.now()}`,
47 warning: 'Sale was not sent to Fieldpine - demo mode active',
48 note: 'API endpoint returned 400 - payload format may be incorrect'