1import { NextRequest, NextResponse } from 'next/server';
2import { fieldpineServerApi } from '@/lib/server/fieldpineApi';
3import { getRequestContext } from '@/lib/server/sessionUtils';
6 * Daily Sales Statistics (Day of Week)
7 * ELINK: retailmax.elink.sale.cube with dispmode=dow
8 * Returns sales aggregated by day of week
10export async function GET(request: NextRequest) {
12 const context = await getRequestContext(request);
13 if (!context?.session) {
14 return NextResponse.json(
15 { error: 'Authentication required' },
20 const { searchParams } = new URL(request.url);
21 const startDate = searchParams.get('startDate');
22 const endDate = searchParams.get('endDate');
23 const location = searchParams.get('location');
25 // Build BUCK request parameters for day-of-week cube
26 const buckParams: Record<string, string> = {
27 "3": "retailmax.elink.sale.cube",
28 "12": "dow" // Display mode: day of week
31 // Add date filters if provided
33 buckParams["9"] = `f110,4,${startDate}`;
36 // Add as second date filter
37 const key = startDate ? "9.1" : "9";
38 buckParams[key] = `f110,1,${endDate}`;
41 // Add location filter if provided
42 if (location && location !== '0') {
43 buckParams["7"] = location;
46 const data = await fieldpineServerApi.buckApiCall(buckParams, context.session.apiKey);
48 return NextResponse.json(data);
49 } catch (error: any) {
50 console.error('Error fetching daily sales:', error);
51 return NextResponse.json(
52 { error: error.message || 'Failed to fetch daily sales' },