Template-Seed: Preisoptionen (Radio/Checkbox) #149

Closed
opened 2026-06-30 18:30:37 +00:00 by niboer · 1 comment
Owner

Beschreibung

Das vorhandene Template in backend/prisma/seed.ts ("Standard-Anmeldeformular") soll durch ein Template ersetzt werden, das die neuen radio- und checkbox-Feld-Typen mit bepreisten Optionen nutzt (siehe #133/#135).

Altes Template (ersetzen)

Aktuell:

formDefinition: [
  { type: 'text', label: 'Vorname', required: true, key: 'firstName' },
  { type: 'text', label: 'Nachname', required: true, key: 'lastName' },
  { type: 'textarea', label: 'Bemerkungen', required: false, key: 'comments' },
]

Neues Template

formDefinition: [
  {
    type: 'radio',
    label: 'Zimmer',
    required: true,
    options: [
      { label: 'Zimmer Single Fr - So', price: 18000 },
      { label: 'Zimmer Single Sa - So', price: 12000 },
      { label: 'Zimmer Doppel Fr - So', price: 30000 },
      { label: 'Zimmer Doppel Sa - So', price: 30000 },
    ],
  },
  {
    type: 'checkbox',
    label: 'Extras',
    required: false,
    options: [
      { label: 'Bettwaesche', price: 300 },
      { label: 'Handtuecher', price: 500 },
    ],
  },
]

Preis-Format: Integer-Cents (18000 = EUR 180,00). Die Umrechnung erfolgt im Frontend via formatEuro(cents / 100).

Akzeptanzkriterien

  1. Das Template ist nach dem Seeding in der Datenbank vorhanden
  2. Es kann im Formular-Editor als Vorlage geladen werden
  3. Die radio-Optionen erscheinen als Radiobuttons mit Preisangaben
  4. Die checkbox-Optionen erscheinen als Checkboxen mit Preisangaben und Gesamtsumme
  5. Bestehender Seed (personen, events, gruppen) bleibt unveraendert

Aufgaben

  • backend/prisma/seed.ts: formDefinition des Templates ersetzen
  • backend/src/__tests__/seed.test.ts: Test anpassen falls auf alte Struktur referenziert
  • Manuell verifizieren: npm run build && npm test im Backend

Abhaengigkeit

  • Setzt die neuen Feld-Typen radio/checkbox mit FormFieldOption-Struktur aus #133 voraus
## Beschreibung Das vorhandene Template in `backend/prisma/seed.ts` ("Standard-Anmeldeformular") soll durch ein Template ersetzt werden, das die neuen `radio`- und `checkbox`-Feld-Typen mit bepreisten Optionen nutzt (siehe #133/#135). ### Altes Template (ersetzen) Aktuell: ```typescript formDefinition: [ { type: 'text', label: 'Vorname', required: true, key: 'firstName' }, { type: 'text', label: 'Nachname', required: true, key: 'lastName' }, { type: 'textarea', label: 'Bemerkungen', required: false, key: 'comments' }, ] ``` ### Neues Template ```typescript formDefinition: [ { type: 'radio', label: 'Zimmer', required: true, options: [ { label: 'Zimmer Single Fr - So', price: 18000 }, { label: 'Zimmer Single Sa - So', price: 12000 }, { label: 'Zimmer Doppel Fr - So', price: 30000 }, { label: 'Zimmer Doppel Sa - So', price: 30000 }, ], }, { type: 'checkbox', label: 'Extras', required: false, options: [ { label: 'Bettwaesche', price: 300 }, { label: 'Handtuecher', price: 500 }, ], }, ] ``` **Preis-Format:** Integer-Cents (18000 = EUR 180,00). Die Umrechnung erfolgt im Frontend via `formatEuro(cents / 100)`. ### Akzeptanzkriterien 1. Das Template ist nach dem Seeding in der Datenbank vorhanden 2. Es kann im Formular-Editor als Vorlage geladen werden 3. Die `radio`-Optionen erscheinen als Radiobuttons mit Preisangaben 4. Die `checkbox`-Optionen erscheinen als Checkboxen mit Preisangaben und Gesamtsumme 5. Bestehender Seed (`personen`, `events`, `gruppen`) bleibt unveraendert ### Aufgaben - [ ] `backend/prisma/seed.ts`: `formDefinition` des Templates ersetzen - [ ] `backend/src/__tests__/seed.test.ts`: Test anpassen falls auf alte Struktur referenziert - [ ] Manuell verifizieren: `npm run build && npm test` im Backend ### Abhaengigkeit - Setzt die neuen Feld-Typen `radio`/`checkbox` mit `FormFieldOption`-Struktur aus #133 voraus
Author
Owner

Umsetzung erfolgt in Session 2026-06-30: Template in backend/prisma/seed.ts auf Radio/Checkbox mit Cent-Preisen aktualisiert.

Umsetzung erfolgt in Session 2026-06-30: Template in `backend/prisma/seed.ts` auf Radio/Checkbox mit Cent-Preisen aktualisiert.
Sign in to join this conversation.
No description provided.