Backend: Automatische Beitragsberechnung aus formFinal #153

Closed
opened 2026-06-30 19:00:03 +00:00 by niboer · 0 comments
Owner

Beschreibung

Beim Absenden der Formular-Antwort (submitFormFinal) und beim Ueberschreiben (overrideForm) soll das Backend automatisch den Gesamtbeitrag (contributionEuro) aus den gewaehlten Formular-Optionen berechnen und in der DB speichern.

Berechnungslogik

  • Lade formDefinition aus dem Event
  • Fuer jedes Feld mit type: 'radio': finde die gewaehlte Option via label, addiere price
  • Fuer jedes Feld mit type: 'checkbox': finde alle gewaehlten Optionen, addiere price
  • Summe in Cent → EUR: contributionEuro = totalCents / 100
  • Speichere den Wert in eventGuest.contributionEuro

Aenderungen

backend/src/routes/forms.ts

submitFormFinal (Zeile 105-129):

  • Vor dem Update: Event laden + formDefinition auslesen
  • Summe aus formFinal + formDefinition berechnen
  • contributionEuro im selben update() mitspeichern

overrideForm (Zeile 147-181):

  • Gleiche Logik wie submitFormFinal
  • contributionEuro auch beim Override neu setzen (aus formOverride berechnen)

Tests (backend/src/__tests__/forms.test.ts)

  • Neuer Test: berechnet contributionEuro aus formFinal bei gueltigen Daten
    • Mock Event mit formDefinition (radio 18000+12000, checkbox 300+500)
    • Mock formFinal mit 1 radio + 1 checkbox = 18300 Cent
    • Erwartet: contributionEuro: 183.00
  • Neuer Test: berechnet contributionEuro aus formOverride
    • Gleiche Logik wie oben, aber via overrideForm-Endpoint
## Beschreibung Beim Absenden der Formular-Antwort (`submitFormFinal`) und beim Ueberschreiben (`overrideForm`) soll das Backend automatisch den Gesamtbeitrag (`contributionEuro`) aus den gewaehlten Formular-Optionen berechnen und in der DB speichern. ### Berechnungslogik - Lade `formDefinition` aus dem Event - Fuer jedes Feld mit `type: 'radio'`: finde die gewaehlte Option via label, addiere `price` - Fuer jedes Feld mit `type: 'checkbox'`: finde alle gewaehlten Optionen, addiere `price` - Summe in Cent → EUR: `contributionEuro = totalCents / 100` - Speichere den Wert in `eventGuest.contributionEuro` ### Aenderungen #### `backend/src/routes/forms.ts` **`submitFormFinal` (Zeile 105-129):** - Vor dem Update: Event laden + `formDefinition` auslesen - Summe aus `formFinal` + `formDefinition` berechnen - `contributionEuro` im selben `update()` mitspeichern **`overrideForm` (Zeile 147-181):** - Gleiche Logik wie submitFormFinal - `contributionEuro` auch beim Override neu setzen (aus `formOverride` berechnen) ### Tests (`backend/src/__tests__/forms.test.ts`) - Neuer Test: `berechnet contributionEuro aus formFinal bei gueltigen Daten` - Mock Event mit formDefinition (radio 18000+12000, checkbox 300+500) - Mock formFinal mit 1 radio + 1 checkbox = 18300 Cent - Erwartet: `contributionEuro: 183.00` - Neuer Test: `berechnet contributionEuro aus formOverride` - Gleiche Logik wie oben, aber via overrideForm-Endpoint
Sign in to join this conversation.
No description provided.