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

const DEFAULT_SETTINGS = {
  defaultPhaseDurations: {
    einstieg: 8,
    erarbeitung: 20,
    sicherung: 10,
    transfer: 7,
    reflexion: 5,
  },
  preferredLessonLength: 45,
  autoAdvancePhases: true,
  soundNotifications: true,
  showKeyboardShortcuts: true,
  highContrastMode: false,
  onboardingCompleted: false,
}

/**
 * GET /api/admin/companion/settings
 * Get teacher settings
 * Proxy to backend /api/teacher/settings
 */
export async function GET() {
  try {
    // TODO: Replace with actual backend call
    // const backendUrl = process.env.BACKEND_URL || 'http://localhost:8000'
    // const response = await fetch(`${backendUrl}/api/teacher/settings`, {
    //   method: 'GET',
    //   headers: {
    //     'Content-Type': 'application/json',
    //     // Add auth headers
    //   },
    // })
    //
    // if (!response.ok) {
    //   throw new Error(`Backend responded with ${response.status}`)
    // }
    //
    // const data = await response.json()
    // return NextResponse.json(data)

    // Mock response - return default settings
    return NextResponse.json({
      success: true,
      data: DEFAULT_SETTINGS,
    })
  } catch (error) {
    console.error('Get settings error:', error)
    return NextResponse.json(
      {
        success: false,
        error: error instanceof Error ? error.message : 'Unknown error',
      },
      { status: 500 }
    )
  }
}

/**
 * PUT /api/admin/companion/settings
 * Update teacher settings
 */
export async function PUT(request: NextRequest) {
  try {
    const body = await request.json()

    // Validate the settings structure
    if (!body || typeof body !== 'object') {
      return NextResponse.json(
        { success: false, error: 'Invalid settings data' },
        { status: 400 }
      )
    }

    // TODO: Replace with actual backend call
    // const backendUrl = process.env.BACKEND_URL || 'http://localhost:8000'
    // const response = await fetch(`${backendUrl}/api/teacher/settings`, {
    //   method: 'PUT',
    //   headers: {
    //     'Content-Type': 'application/json',
    //     // Add auth headers
    //   },
    //   body: JSON.stringify(body),
    // })
    //
    // 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 save
    return NextResponse.json({
      success: true,
      message: 'Settings saved',
      data: body,
    })
  } catch (error) {
    console.error('Save settings error:', error)
    return NextResponse.json(
      {
        success: false,
        error: error instanceof Error ? error.message : 'Unknown error',
      },
      { status: 500 }
    )
  }
}

/**
 * PATCH /api/admin/companion/settings
 * Partially update teacher settings
 */
export async function PATCH(request: NextRequest) {
  try {
    const body = await request.json()

    // TODO: Replace with actual backend call

    return NextResponse.json({
      success: true,
      message: 'Settings updated',
      data: body,
    })
  } catch (error) {
    console.error('Update settings error:', error)
    return NextResponse.json(
      {
        success: false,
        error: error instanceof Error ? error.message : 'Unknown error',
      },
      { status: 500 }
    )
  }
}
