Mijn Lessen (Trainer)
Rol: trainer
De “Mijn Lessen”-tab is de trainersvariant van de Trainingen-tab. In plaats van alle trainingen te tonen, filtert deze weergave op sessies waaraan de ingelogde trainer is gekoppeld via het trainer-veld. Trainers kunnen nieuwe sessies aanmaken en bestaande sessies bewerken; het verwijderen van trainingen is voorbehouden aan de eigenaar.
Flow
Verschil met de Trainingen-tab (lid)
| Aspect | Lid — Trainingen-tab | Trainer — Mijn Lessen-tab |
|---|---|---|
| Scope | Alle trainingen | Alleen eigen trainingen (trainer = user) |
| Inschrijving | Inschrijfknop aanwezig | Niet van toepassing |
| Aanmaken | Niet mogelijk | Ja, via formulier |
| Bewerken | Niet mogelijk | Ja, via formulier |
| Verwijderen | Niet mogelijk | Niet mogelijk (alleen eigenaar) |
| Deelnemerslijst | Niet zichtbaar | Zichtbaar per training |
Onderliggende collectie
De “Mijn Lessen”-tab gebruikt dezelfde trainings-collectie als de Trainingen-tab voor leden. Het enige verschil is de filterparameter ?filter=trainer='<userId>' die de PocketBase-aanroep beperkt tot eigen sessies.
Trainingen aangemaakt door trainers of de eigenaar. Leden kunnen zich inschrijven.
| Veld | Type | Verplicht | Beschrijving | Beperkingen |
|---|---|---|---|---|
name | text | ✓ | Naam van de training | — |
description | text | — | Uitgebreide beschrijving | — |
date | date | ✓ | Datum van de training | — |
startTime | text | ✓ | Starttijd als HH:MM string | — |
endTime | text | ✓ | Eindtijd als HH:MM string | — |
court | text | ✓ | Baanidentificatie (bv. baan1) | — |
capacity | number | ✓ | Maximum aantal deelnemers | min 1 |
level | select | — | Niveau van de training | beginner | intermediate | advanced | kids | competition |
trainer | relation | — | Verantwoordelijke trainer | → users (max 1) |
isRecurring | bool | — | Geeft aan of de training wekelijks terugkeert | — |
recurringDay | select | — | Weekdag voor terugkerende trainingen | MA | DI | WO | DO | VR | ZA | ZO |
Toegangsregels
| Regel | Expressie |
|---|---|
list | @request.auth.id != '' |
view | @request.auth.id != '' |
create | @request.auth.role = 'trainer' || @request.auth.role = 'eigenaar' |
update | @request.auth.role = 'trainer' || @request.auth.role = 'eigenaar' |
delete | @request.auth.role = 'eigenaar' |
Ontwerpkeuzes
Één collectie, twee views
Het gebruik van dezelfde trainings-collectie voor zowel de lid- als de trainersweergave voorkomt gegevensconsistentieproblemen. Er is geen aparte “trainer_trainings”-collectie — de trainer-relatie in het schema is de enige differentiator.
Trainer mag niet verwijderen
Een trainer die een sessie verwijdert, verwijdert ook alle bijbehorende inschrijvingen (cascade delete). De eigenaar als enige verwijderautorisatie beschermt ledengegevens en voorkomt onbedoeld verlies van inschrijvingshistorie. Dit is afgedwongen via de PocketBase deleteRule: @request.auth.role = 'eigenaar'.
Deelnemerslijst zichtbaar voor trainer
De trainer kan per training de lijst van ingeschreven leden inzien (via de training_enrollments-collectie, gefilterd op de training). Dit helpt de trainer zich voor te bereiden op de sessie.