import type { CollectionBeforeChangeHook } from 'payload'

interface FormWithTenant {
  id: number | string
  tenant?: { id: number } | number | null
}

/**
 * Hook: Kopiert den Tenant vom übergeordneten Formular auf die Einsendung.
 * Wird als beforeChange auf form-submissions ausgeführt.
 */
export const setSubmissionTenant: CollectionBeforeChangeHook = async ({
  data,
  req,
  operation,
}) => {
  // Nur bei neuen Einsendungen den Tenant setzen
  if (operation !== 'create') return data

  const formId = data.form
  if (!formId) return data

  try {
    const form = (await req.payload.findByID({
      collection: 'forms',
      id: formId,
      depth: 0,
      overrideAccess: true,
    })) as unknown as FormWithTenant

    if (form?.tenant) {
      const tenantId = typeof form.tenant === 'object' ? form.tenant.id : form.tenant
      return { ...data, tenant: tenantId }
    }
  } catch (error) {
    console.error('[Forms] Error reading tenant from form:', error)
  }

  return data
}
