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

/**
 * POST /api/admin/companion/feedback
 * Submit feedback (bug report, feature request, general feedback)
 * Proxy to backend /api/feedback
 */
export async function POST(request: NextRequest) {
  try {
    const body = await request.json()

    // Validate required fields
    if (!body.type || !body.title || !body.description) {
      return NextResponse.json(
        {
          success: false,
          error: 'Missing required fields: type, title, description',
        },
        { status: 400 }
      )
    }

    // Validate feedback type
    const validTypes = ['bug', 'feature', 'feedback']
    if (!validTypes.includes(body.type)) {
      return NextResponse.json(
        {
          success: false,
          error: 'Invalid feedback type. Must be: bug, feature, or feedback',
        },
        { status: 400 }
      )
    }

    // TODO: Replace with actual backend call
    // const backendUrl = process.env.BACKEND_URL || 'http://localhost:8000'
    // const response = await fetch(`${backendUrl}/api/feedback`, {
    //   method: 'POST',
    //   headers: {
    //     'Content-Type': 'application/json',
    //     // Add auth headers
    //   },
    //   body: JSON.stringify({
    //     type: body.type,
    //     title: body.title,
    //     description: body.description,
    //     screenshot: body.screenshot,
    //     sessionId: body.sessionId,
    //     metadata: {
    //       ...body.metadata,
    //       source: 'companion',
    //       timestamp: new Date().toISOString(),
    //       userAgent: request.headers.get('user-agent'),
    //     },
    //   }),
    // })
    //
    // if (!response.ok) {
    //   throw new Error(`Backend responded with ${response.status}`)
    // }
    //
    // const data = await response.json()
    // return NextResponse.json(data)

    // Mock response - just acknowledge the submission
    const feedbackId = `fb-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`

    console.log('Feedback received:', {
      id: feedbackId,
      type: body.type,
      title: body.title,
      description: body.description.substring(0, 100) + '...',
      hasScreenshot: !!body.screenshot,
      sessionId: body.sessionId,
    })

    return NextResponse.json({
      success: true,
      message: 'Feedback submitted successfully',
      data: {
        feedbackId,
        submittedAt: new Date().toISOString(),
      },
    })
  } catch (error) {
    console.error('Submit feedback error:', error)
    return NextResponse.json(
      {
        success: false,
        error: error instanceof Error ? error.message : 'Unknown error',
      },
      { status: 500 }
    )
  }
}

/**
 * GET /api/admin/companion/feedback
 * Get feedback history (admin only)
 */
export async function GET(request: NextRequest) {
  try {
    const { searchParams } = new URL(request.url)
    const type = searchParams.get('type')
    const limit = parseInt(searchParams.get('limit') || '10')

    // TODO: Replace with actual backend call

    // Mock response - empty list for now
    return NextResponse.json({
      success: true,
      data: {
        feedback: [],
        total: 0,
        page: 1,
        limit,
      },
    })
  } catch (error) {
    console.error('Get feedback error:', error)
    return NextResponse.json(
      {
        success: false,
        error: error instanceof Error ? error.message : 'Unknown error',
      },
      { status: 500 }
    )
  }
}
