Frontend: Self-Service-Tabs (Meine Antwort, Mein Zahlungsstatus) mit Haushalts-Scope #157

Closed
opened 2026-06-30 21:37:20 +02:00 by niboer · 0 comments
Owner

Beschreibung

Die Event-Detailseite (/app/events/[eventId]) bekommt Self-Service-Tabs fuer Gaeste (nur sichtbar bei published):

  • Meine Antwort — Eigene Formularantwort anzeigen oder "Antworten"-Button
  • Mein Zahlungsstatus — Eigener Zahlungsstatus + Haushalts-Uebersicht (read-only)

Organisatoren sehen zusaetzlich alle Management-Tabs.

Tab-Reihenfolge

Meine Antwort | Mein Zahlungsstatus | Details | Gaesteliste | Antworten | Zahlungsabgleich | Berechtigungen | Formular

Sichtbarkeit

Tabs planning published
Meine Antwort / Mein Zahlungsstatus ausgeblendet alle User
Details / Gaesteliste etc. ausgeblendet (ausser Organisatoren) nur Organisatoren

Aenderungen

frontend/src/routes/app/events/[eventId]/+page.server.ts

  • isOrganizer ermitteln (via eventRoles + event.createdBy + eigener Guest-Rolle)
  • selfGuest ueber GET /api/v1/events/{eventId}/guests/me laden
  • householdMembers ueber GET /api/v1/groups/{groupId}/members laden
  • isGuest = selfGuest != null

frontend/src/routes/app/events/[eventId]/+page.svelte

  • Tab-Navigation: Self-Service-Tabs nur bei published, Organizer-Tabs nur wenn isOrganizer
  • Tab "meine-antwort":
    • Wenn selfGuest.formFinal existiert → formatierte Antwort + Haushaltsmitglieder-Antworten
    • Sonst → Button "Antworten"
    • Button oeffnet Formular als Inline-Bereich
  • Antwort-Formular:
    • Titel: "Antwort fuer : "
    • Drei Radio-Buttons oben: "Nur fuer mich" | "Alle im Haushalt gleich" | "Jeden im Haushalt einzeln"
    • Buttons "Zwischenspeichern" und "Absenden" oben und unten
    • Bei Option 3: Formular wird n-mal untereinander angezeigt (einmal pro Haushaltsmitglied)
  • Tab "mein-zahlungsstatus":
    • Eigener Status: Badge + Beitrag
    • Haushaltsmitglieder-Tabelle: Name | Status | Beitrag (read-only)

Neue Actions

  • saveDraftSelf: Speichert Entwurf (optional fuer alle Haushaltsmitglieder bei Option 2)
  • submitFinalSelf: Sendet finale Antwort (fuer aktuellen oder alle Haushaltsmitglieder)

Abhaengig von

  • #156: Backend-Endpunkt GET /guests/me
## Beschreibung Die Event-Detailseite (`/app/events/[eventId]`) bekommt Self-Service-Tabs fuer Gaeste (nur sichtbar bei `published`): - **Meine Antwort** — Eigene Formularantwort anzeigen oder "Antworten"-Button - **Mein Zahlungsstatus** — Eigener Zahlungsstatus + Haushalts-Uebersicht (read-only) Organisatoren sehen zusaetzlich alle Management-Tabs. ### Tab-Reihenfolge ``` Meine Antwort | Mein Zahlungsstatus | Details | Gaesteliste | Antworten | Zahlungsabgleich | Berechtigungen | Formular ``` ### Sichtbarkeit | Tabs | planning | published | |------|----------|-----------| | Meine Antwort / Mein Zahlungsstatus | **ausgeblendet** | **alle User** | | Details / Gaesteliste etc. | **ausgeblendet** (ausser Organisatoren) | nur Organisatoren | ### Aenderungen #### `frontend/src/routes/app/events/[eventId]/+page.server.ts` - `isOrganizer` ermitteln (via `eventRoles` + `event.createdBy` + eigener Guest-Rolle) - `selfGuest` ueber `GET /api/v1/events/{eventId}/guests/me` laden - `householdMembers` ueber `GET /api/v1/groups/{groupId}/members` laden - `isGuest` = `selfGuest != null` #### `frontend/src/routes/app/events/[eventId]/+page.svelte` - **Tab-Navigation:** Self-Service-Tabs nur bei `published`, Organizer-Tabs nur wenn `isOrganizer` - **Tab "meine-antwort":** - Wenn `selfGuest.formFinal` existiert → formatierte Antwort + Haushaltsmitglieder-Antworten - Sonst → Button "Antworten" - Button oeffnet Formular als Inline-Bereich - **Antwort-Formular:** - Titel: "Antwort fuer <Eventname>: <User Komplettname>" - Drei Radio-Buttons oben: "Nur fuer mich" | "Alle im Haushalt gleich" | "Jeden im Haushalt einzeln" - Buttons "Zwischenspeichern" und "Absenden" **oben und unten** - Bei Option 3: Formular wird n-mal untereinander angezeigt (einmal pro Haushaltsmitglied) - **Tab "mein-zahlungsstatus":** - Eigener Status: Badge + Beitrag - Haushaltsmitglieder-Tabelle: Name | Status | Beitrag (read-only) ### Neue Actions - `saveDraftSelf`: Speichert Entwurf (optional fuer alle Haushaltsmitglieder bei Option 2) - `submitFinalSelf`: Sendet finale Antwort (fuer aktuellen oder alle Haushaltsmitglieder) ### Abhaengig von - #156: Backend-Endpunkt `GET /guests/me`
Sign in to join this conversation.
No description provided.