import { NextResponse } from 'next/server'
import { getCurrentUser } from '@/lib/auth'
import { getCharacterById, getCharactersByDiscordId } from '@/lib/services/character-service'
import { getCharacterInventory } from '@/lib/services/inventory-adapters'

export const dynamic = 'force-dynamic'

export async function GET(
  request: Request,
  { params }: { params: Promise<{ id: string }> }
) {
  try {
    const user = await getCurrentUser()
    
    if (!user) {
      return NextResponse.json({ error: 'Unauthorized' }, { status: 401 })
    }

    const { id: characterId } = await params

    // Get the character
    const character = await getCharacterById(characterId)
    
    if (!character) {
      return NextResponse.json(
        { error: 'Character not found' },
        { status: 404 }
      )
    }

    // Security check: Verify the user owns this character (by Discord ID)
    // Only allow if user is admin/superadmin OR owns the character
    const isAdmin = user.role === 'ADMIN' || user.role === 'SUPERADMIN'
    
    if (!isAdmin) {
      const userCharacters = await getCharactersByDiscordId(user.discordId)
      const ownsCharacter = userCharacters.some(
        c => c.id === characterId || c.citizenid === characterId
      )
      
      if (!ownsCharacter) {
        return NextResponse.json(
          { error: 'Access denied' },
          { status: 403 }
        )
      }
    }

    // Get character's inventory using citizenid
    const inventoryId = character.citizenid || characterId
    console.log('[Character API] Loading inventory for:', inventoryId)
    
    const inventory = await getCharacterInventory(inventoryId)
    
    console.log('[Character API] Inventory result:', {
      itemCount: inventory?.items?.length || 0,
      inventoryType: inventory?.inventoryType,
      maxWeight: inventory?.maxWeight
    })

    return NextResponse.json({
      character,
      inventory,
    })
  } catch (error) {
    console.error('[API] Error fetching character:', error)
    return NextResponse.json(
      { error: 'Failed to fetch character' },
      { status: 500 }
    )
  }
}
