import { NextRequest, NextResponse } from 'next/server';

const BACKEND_URL = process.env.API_INTERNAL_URL || 'http://aggios-backend:8080';

export async function POST(request: NextRequest) {
    try {
        console.log('🔵 [Next.js] Logo upload route called');

        const authorization = request.headers.get('authorization');

        if (!authorization) {
            console.log('❌ [Next.js] No authorization header');
            return NextResponse.json(
                { error: 'Unauthorized' },
                { status: 401 }
            );
        }

        console.log('✅ [Next.js] Authorization header present');

        // Get form data from request
        const formData = await request.formData();
        const logo = formData.get('logo');
        const type = formData.get('type');

        console.log('📦 [Next.js] FormData received:', {
            hasLogo: !!logo,
            logoType: logo ? (logo as File).type : null,
            logoSize: logo ? (logo as File).size : null,
            type: type
        });

        console.log('🚀 [Next.js] Forwarding to backend:', BACKEND_URL);

        // Forward to backend
        const response = await fetch(`${BACKEND_URL}/api/agency/logo`, {
            method: 'POST',
            headers: {
                'Authorization': authorization,
            },
            body: formData,
        });

        console.log('📡 [Next.js] Backend response status:', response.status);

        if (!response.ok) {
            const errorText = await response.text();
            console.error('Backend error:', errorText);
            return NextResponse.json(
                { error: errorText || 'Failed to upload logo' },
                { status: response.status }
            );
        }

        const data = await response.json();
        return NextResponse.json(data);
    } catch (error) {
        console.error('Logo upload error:', error);
        return NextResponse.json(
            { error: 'Internal server error: ' + (error instanceof Error ? error.message : String(error)) },
            { status: 500 }
        );
    }
}
