Skip to content

fix: Centralize attended status logic and improve role documentation#175

Open
Lionhunt3r wants to merge 2 commits into
masterfrom
fix-issues-165-166
Open

fix: Centralize attended status logic and improve role documentation#175
Lionhunt3r wants to merge 2 commits into
masterfrom
fix-issues-165-166

Conversation

@Lionhunt3r

Copy link
Copy Markdown
Owner

Summary

Issues Fixed

#165: Inkonsistenter Status-Check bei 'attended' Definition ✅

Problem: Die Extension-Methode countsAsPresent existierte bereits, wurde aber nur an einer Stelle genutzt. Alle anderen Stellen verwendeten duplizierte manuelle Checks.

Lösung:

  • person_detail_page.dart: Ersetzte hardcoded integer checks (status == 1 || 3 || 5) mit countsAsPresent
  • sign_in_out_repository.dart: attended getter nutzt countsAsPresent
  • parents_providers.dart: attended getter nutzt countsAsPresent
  • statistics_providers.dart: 2x duplizierte Enum-Checks ersetzt
  • attendance_grid.dart: presentCount nutzt countsAsPresent

Impact: Einheitliche, wartbare Logik für "attended" Status über die gesamte App.


#166: Role.canSeeMembersTab Logik undokumentiert ✅

Problem: Es war nicht dokumentiert, warum APPLICANT von canSeeMembersTab ausgeschlossen ist, obwohl isPlayerRole es einschließt.

Lösung: Erweiterte Dokumentation in enums.dart:

  • isPlayerRole: Erklärt dass APPLICANT für UI-Routing inkludiert ist
  • canSeeMembersTab: Erklärt dass APPLICANT aus Datenschutzgründen exkludiert ist (Bewerber im Wartebereich sollten Mitgliederliste nicht sehen)
  • Dokumentiert dass Role.none als Fallback inkludiert ist

Impact: Code ist jetzt selbstdokumentierend und verhindert künftige Verwirrung.

Test Plan

  • Alle 348 Tests bestehen
  • dart analyze ohne Warnings
  • Keine Regressionen

Changes

  • 6 files changed
  • 18 insertions, 18 deletions

Closes #165, #166

Leon Jaeger added 2 commits March 3, 2026 12:55
- people_list_page.dart: Check tenant.id != null before .eq() query
- person_detail_page.dart: Check tenant.id != null in personProvider
- person_detail_page.dart: Extract criticalRules to local variable for clarity
- late_warning_card.dart: Extract criticalRules to local variable for clarity

Prevents potential crash when tenant.id is null.
Closes #162
## Issue #165: Inkonsistenter Status-Check bei 'attended' Definition

- Root Cause: countsAsPresent extension existiert, wird aber nicht überall genutzt
- Solution: Migrate alle manuellen Status-Checks zu countsAsPresent
  - person_detail_page.dart: Ersetze hardcoded integer checks (status == 1 || 3 || 5)
  - sign_in_out_repository.dart: attended getter nutzt countsAsPresent
  - parents_providers.dart: attended getter nutzt countsAsPresent
  - statistics_providers.dart: Ersetze 2x duplizierte Enum-Checks
  - attendance_grid.dart: presentCount nutzt countsAsPresent
- Tests: Alle 348 Tests bestehen

## Issue #166: Role.canSeeMembersTab Logik undokumentiert

- Root Cause: Dokumentation fehlt - Verhalten ist by design
- Solution: Erweiterte Dokumentation für isPlayerRole und canSeeMembersTab
  - Erklärt warum APPLICANT in isPlayerRole (für Routing) aber nicht in canSeeMembersTab (Datenschutz)
  - Dokumentiert dass Role.none als Fallback inkludiert ist
- Tests: dart analyze ohne Warnings

Closes #165, #166
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BL-003: Inkonsistenter Status-Check bei 'attended' Definition

1 participant