import { isAdminVerified } from '../../utils/mobileReleases'
import { removeFromBlacklist, isValidBlacklistNumber } from '../../utils/telephony/blacklist'

/**
 * DELETE /api/telephony/blacklist  { number }
 *
 * Admin-only. Removes `number` from the FreePBX Blacklist (astdb DBDel) — effective
 * immediately, the dialplan reads astdb on every inbound call.
 */
export default defineEventHandler(async (event) => {
  const config = useRuntimeConfig()
  if ((config as any).asterisk?.enabled !== true) return { status: 503, message: 'Telefonanlage nicht aktiviert' }

  const token = await getTokenHelper(event)
  if (!token) throw createError({ statusCode: 401, statusMessage: 'Unauthorized' })
  const admin = await isAdminVerified(event, token)
  if (!admin) throw createError({ statusCode: 403, statusMessage: 'Nur für Administratoren' })

  const body: any = await readBody(event).catch(() => ({}))
  const number = String(body?.number || '').trim()
  if (!isValidBlacklistNumber(number)) return { status: 400, message: 'Ungültige Telefonnummer' }

  try {
    await removeFromBlacklist(number)
    return { status: 200, number }
  } catch (err: any) {
    console.warn('[blacklist] remove failed:', err?.statusMessage || err?.message || err)
    return { status: Number(err?.statusCode || 502), message: err?.statusMessage || 'Entsperren fehlgeschlagen' }
  }
})
