import { NextRequest, NextResponse } from 'next/server' import { cookies } from 'next/headers' import pool from '@/lib/db' // GET /api/referral-points - Get current user's referral points and settings export async function GET(request: NextRequest) { try { const cookieStore = await cookies() const buyerIdCookie = cookieStore.get('buyer_id')?.value if (!buyerIdCookie) { return NextResponse.json( { error: 'Authentication required' }, { status: 401 } ) } const buyer_id = parseInt(buyerIdCookie, 10) // Get buyer's referral points const [buyerRows] = await pool.execute( 'SELECT referral_points FROM buyers WHERE id = ?', [buyer_id] ) const buyers = buyerRows as any[] if (buyers.length === 0) { return NextResponse.json( { error: 'Buyer not found' }, { status: 404 } ) } const referralPoints = parseFloat(buyers[0].referral_points) || 0 // Get referral settings const [settingsRows] = await pool.execute( 'SELECT setting_key, setting_value FROM referral_settings' ) const settings = settingsRows as any[] // Get EUR-based settings (preferred) let pointsToEur = parseFloat( settings.find(s => s.setting_key === 'points_to_eur')?.setting_value || '0' ) let pointsPerEur = parseFloat( settings.find(s => s.setting_key === 'points_per_eur')?.setting_value || '0' ) // Get CHF-based settings (for backward compatibility) const pointsToChf = parseFloat( settings.find(s => s.setting_key === 'points_to_chf')?.setting_value || '100' ) const pointsPerChf = parseFloat( settings.find(s => s.setting_key === 'points_per_chf')?.setting_value || '10' ) // If EUR settings not found, convert from CHF (1 CHF ≈ 1.0309 EUR) const chfToEurRate = 1.030927835 if (pointsToEur === 0) { pointsToEur = pointsToChf / chfToEurRate } if (pointsPerEur === 0) { pointsPerEur = pointsPerChf * chfToEurRate } const pointsToCryptoChf = parseFloat( settings.find(s => s.setting_key === 'points_to_crypto_chf')?.setting_value || '100' ) const minRedemptionPoints = parseFloat( settings.find(s => s.setting_key === 'min_redemption_points')?.setting_value || '1000' ) // Calculate maximum discount available (in EUR, then convert to CHF for display) const maxDiscountEur = referralPoints / pointsToEur const maxDiscountChf = maxDiscountEur * 0.97 // Convert EUR to CHF return NextResponse.json({ referral_points: referralPoints, points_to_eur: pointsToEur, points_per_eur: pointsPerEur, points_to_chf: pointsToChf, // Keep for backward compatibility points_per_chf: pointsPerChf, // Keep for backward compatibility points_to_crypto_chf: pointsToCryptoChf, min_redemption_points: minRedemptionPoints, max_discount_eur: maxDiscountEur, max_discount_chf: maxDiscountChf, }) } catch (error) { console.error('Error fetching referral points:', error) return NextResponse.json( { error: 'Failed to fetch referral points' }, { status: 500 } ) } }