/**
 * POST /api/settings/software-catalog/save  (staff only)
 * Body: { plans: CatalogPlan[], features: CatalogFeature[], addons: CatalogAddon[],
 *         deleted?: { plans: number[], items: number[] } }
 * Persists a whole catalog edit from the settings page (upsert + delete) into
 * CUST_SoftwarePlan / CUST_SoftwareCatalogItem and returns the fresh catalog.
 */
import { gateFromEvent } from '../../../utils/chatAccess'
import { saveSoftwareCatalog } from '../../../utils/offers/softwareCatalog'

export default defineEventHandler(async (event) => {
  const { token } = await gateFromEvent(event, { requireChat: false })
  const body = await readBody(event)
  try {
    const { catalog, warnings } = await saveSoftwareCatalog(event, token, body)
    return { status: 200, catalog, warnings }
  } catch (err: any) {
    const status = Number(err?.statusCode ?? err?.status ?? err?.response?.status) || 500
    const message = err?.statusMessage || err?.data?.detail || err?.data?.title || err?.message || 'Speichern fehlgeschlagen'
    return { status, message }
  }
})
