Backend: Recalculate-Endpoint fuer Beitrags-Neuberechnung #154

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

Beschreibung

Organisatoren brauchen die Moeglichkeit, alle contributionEuro-Werte nach einer Aenderung der formDefinition-Preise neu zu berechnen. Dafuer wird ein neuer Endpoint POST /api/v1/events/{event_id}/recalculate benoetigt.

Endpoint

POST /api/v1/events/{event_id}/recalculate
Authorization: Bearer <token>

Berechtigung: requireOrganizer

Logik

  1. Event mit formDefinition laden
  2. Alle Gaeste mit formFinal (not null) laden
  3. Fuer jeden Gast: formFinal gegen formDefinition rechnen
  4. Nur wenn sich contributionEuro geaendert hat: Update
  5. Response: { updated: number, total: number }

Aenderungen

backend/openapi.yaml

Neuen Endpoint dokumentieren + Response-Schema:

RecalculateResponse:
  type: object
  properties:
    updated: { type: integer, description: Anzahl aktualisierter Gaeste }
    total: { type: integer, description: Anzahl Gaeste mit formFinal }
  required: [updated, total]
/api/v1/events/{event_id}/recalculate:
  post:
    tags: [Forms]
    summary: Beitragssummen aller Gaeste neu berechnen
    operationId: recalculateContributions
    parameters:
      - name: event_id
        in: path
        required: true
        schema: { type: string, format: uuid }
    security: [oauth2: [openid, profile]]
    responses:
      '200':
        description: Summen aktualisiert
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecalculateResponse'
      '401': { $ref: '#/components/responses/Unauthorized' }
      '403': { $ref: '#/components/responses/Forbidden' }
      '404': { $ref: '#/components/responses/NotFound' }

backend/src/routes/forms.ts

Neuen POST /api/v1/events/:event_id/recalculate-Handler hinzufuegen.

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

  • 401 ohne Token
  • 403 ohne Organisator
  • 404 bei unbekanntem Event
  • 200: 3 Gaeste mit formFinal, 2 mit geaenderter Summe → { updated: 2, total: 2 }
## Beschreibung Organisatoren brauchen die Moeglichkeit, alle `contributionEuro`-Werte nach einer Aenderung der `formDefinition`-Preise neu zu berechnen. Dafuer wird ein neuer Endpoint `POST /api/v1/events/{event_id}/recalculate` benoetigt. ### Endpoint ```http POST /api/v1/events/{event_id}/recalculate Authorization: Bearer <token> ``` Berechtigung: `requireOrganizer` ### Logik 1. Event mit `formDefinition` laden 2. Alle Gaeste mit `formFinal` (not null) laden 3. Fuer jeden Gast: `formFinal` gegen `formDefinition` rechnen 4. Nur wenn sich `contributionEuro` geaendert hat: Update 5. Response: `{ updated: number, total: number }` ### Aenderungen #### `backend/openapi.yaml` Neuen Endpoint dokumentieren + Response-Schema: ```yaml RecalculateResponse: type: object properties: updated: { type: integer, description: Anzahl aktualisierter Gaeste } total: { type: integer, description: Anzahl Gaeste mit formFinal } required: [updated, total] ``` ```yaml /api/v1/events/{event_id}/recalculate: post: tags: [Forms] summary: Beitragssummen aller Gaeste neu berechnen operationId: recalculateContributions parameters: - name: event_id in: path required: true schema: { type: string, format: uuid } security: [oauth2: [openid, profile]] responses: '200': description: Summen aktualisiert content: application/json: schema: $ref: '#/components/schemas/RecalculateResponse' '401': { $ref: '#/components/responses/Unauthorized' } '403': { $ref: '#/components/responses/Forbidden' } '404': { $ref: '#/components/responses/NotFound' } ``` #### `backend/src/routes/forms.ts` Neuen `POST /api/v1/events/:event_id/recalculate`-Handler hinzufuegen. ### Tests (`backend/src/__tests__/forms.test.ts`) - 401 ohne Token - 403 ohne Organisator - 404 bei unbekanntem Event - 200: 3 Gaeste mit formFinal, 2 mit geaenderter Summe → `{ updated: 2, total: 2 }`
Sign in to join this conversation.
No description provided.