import { readSubscribers, writeSubscribers } from '../../utils/newsletter.js'

export default defineEventHandler(async (event) => {
  try {
    const query = getQuery(event)
    const token = query.token

    if (!token) {
      throw createError({
        statusCode: 400,
        statusMessage: 'Bestätigungstoken fehlt'
      })
    }

    const subscribers = await readSubscribers()
    const subscriber = subscribers.find(s => s.confirmationToken === token)

    if (!subscriber) {
      throw createError({
        statusCode: 404,
        statusMessage: 'Ungültiger Bestätigungstoken'
      })
    }

    if (subscriber.confirmed) {
      // Bereits bestätigt
      return {
        success: true,
        alreadyConfirmed: true,
        message: 'Newsletter-Anmeldung wurde bereits bestätigt'
      }
    }

    // Bestätigung durchführen
    subscriber.confirmed = true
    subscriber.confirmedAt = new Date().toISOString()
    subscriber.confirmationToken = null
    
    // Stelle sicher, dass groupIds existiert (für Rückwärtskompatibilität)
    if (!subscriber.groupIds) {
      subscriber.groupIds = []
    }

    await writeSubscribers(subscribers)

    return {
      success: true,
      alreadyConfirmed: false,
      message: 'Newsletter-Anmeldung erfolgreich bestätigt'
    }
  } catch (error) {
    console.error('Fehler bei Newsletter-Bestätigung:', error)
    if (error.statusCode) {
      throw error
    }
    throw createError({
      statusCode: 500,
      statusMessage: 'Fehler bei der Newsletter-Bestätigung'
    })
  }
})

