Cas d'utilisation — Clubs & Terrains
Ce document détaille les cas d'utilisation du domaine Clubs.
CU-CLUB-01 — Inscrire un nouveau club
| Élément | Détail |
| Acteur | Utilisateur authentifié (player ou club_manager) |
| Objectif | Enregistrer un nouveau club de padel sur la plateforme |
| Précondition | L'utilisateur est connecté |
Scénario principal
- L'utilisateur accède au formulaire d'inscription de club.
- Il renseigne le nom, l'adresse et la ville (obligatoires), ainsi que les champs optionnels (téléphone, email, site web, description).
- Le système crée le club avec le statut
pending. - Si l'utilisateur est
player, son rôle passe à club_manager. - Les administrateurs reçoivent une notification
club_registration_received. - L'utilisateur est redirigé vers la page de gestion de son club.
Scénario alternatif — Validation échouée
- Si des champs obligatoires sont manquants ou invalides, le formulaire affiche les erreurs de validation (422).
CU-CLUB-02 — Revendiquer un club existant
| Élément | Détail |
| Acteur | Utilisateur authentifié |
| Objectif | Devenir propriétaire d'un club sans gestionnaire |
| Précondition | Le club n'a pas de propriétaire (owner_id IS NULL) |
Scénario principal
- L'utilisateur recherche dans la liste des clubs sans propriétaire.
- Il sélectionne un club et le revendique.
- Le système attribue le club à l'utilisateur et passe le statut à
pending. - Les administrateurs sont notifiés.
Scénario alternatif — Club déjà revendiqué
- Si le club a déjà un propriétaire, le système retourne une erreur 409 (Conflict).
CU-CLUB-03 — Consulter la fiche d'un club
| Élément | Détail |
| Acteur | Tout utilisateur (authentifié ou non) |
| Objectif | Voir les détails d'un club et ses terrains |
| Précondition | Le club existe |
Scénario principal
- L'utilisateur ouvre la fiche d'un club depuis la liste ou un lien.
- Le système affiche les informations du club, ses coordonnées et ses terrains actifs.
- L'utilisateur peut naviguer entre les onglets : Infos, Terrains, Parties.
- Si authentifié, il peut ajouter/retirer le club de ses favoris.
CU-CLUB-04 — Gérer les terrains d'un club
| Élément | Détail |
| Acteur | Propriétaire du club (club_manager) |
| Objectif | Ajouter, modifier ou supprimer des terrains |
| Précondition | L'utilisateur est propriétaire du club |
Scénario principal — Ajouter un terrain
- Le gestionnaire accède à la page Terrains de son club.
- Il clique sur le bouton d'ajout (+).
- Il renseigne le nom, le type, la description, le prix horaire et le statut actif.
- Le système enregistre le terrain et rafraîchit la liste.
Scénario principal — Modifier un terrain
- Le gestionnaire clique sur « Modifier » sur un terrain existant.
- Il modifie les informations souhaitées.
- Le système enregistre les modifications.
Scénario principal — Supprimer un terrain
- Le gestionnaire clique sur « Supprimer » sur un terrain.
- Une confirmation est demandée.
- Le système supprime le terrain définitivement.
Scénario alternatif — Non autorisé
- Si l'utilisateur n'est pas le propriétaire du club, le système retourne une erreur 403.
CU-CRENEAU-01 — Gérer les créneaux horaires du club
| Élément | Détail |
| Acteur | Propriétaire du club (club_manager) |
| Objectif | Définir le planning hebdomadaire des plages horaires disponibles |
| Précondition | L'utilisateur est propriétaire d'un club validé |
Scénario principal — Ajouter un créneau
- Le gestionnaire accède à la page Créneaux de son club.
- Il sélectionne un jour de la semaine (0=Lundi … 6=Dimanche).
- Il remplit le formulaire : heure de début, heure de fin, durée, terrain optionnel.
- Le système enregistre le créneau et l'affiche dans le planning.
Scénario principal — Modifier un créneau
- Le gestionnaire clique sur l'icône de modification d'un créneau existant.
- Il modifie les informations souhaitées.
- Le système enregistre les modifications.
Scénario principal — Marquer indisponible
- Le gestionnaire bascule le toggle disponibilité sur un créneau.
- Le système passe
is_available à false. - Le créneau n'est plus proposé à la réservation.
Scénario principal — Supprimer un créneau
- Le gestionnaire clique sur l'icône de suppression.
- Une confirmation est demandée.
- Le système supprime le créneau définitivement.
Scénario alternatif — Non autorisé
- Si l'utilisateur n'est pas le propriétaire du club, le système retourne une erreur 403.
CU-CRENEAU-02 — Consulter les créneaux d'un club
| Élément | Détail |
| Acteur | Tout utilisateur (authentifié ou non) |
| Objectif | Voir les créneaux disponibles d'un club |
| Précondition | Le club existe |
Scénario principal
- L'utilisateur accède à la fiche d'un club.
- Le système retourne les créneaux (
GET /api/v1/clubs/{club}/creneaux). - L'utilisateur peut filtrer par jour de la semaine.
CU-RESERVATION-01 — Créer une demande de réservation
| Élément | Détail |
| Acteur | Joueur authentifié |
| Objectif | Réserver un créneau sur un terrain d'un club |
| Précondition | L'utilisateur est authentifié ; le club est validé |
Scénario principal
- Le joueur sélectionne un terrain et une plage horaire.
- Il soumet le formulaire (
POST /api/v1/clubs/{club}/reservations). - Le système vérifie l'absence de conflit (aucune réservation pending/accepted sur le même terrain au même horaire).
- La réservation est créée avec le statut
pending. - Le gestionnaire reçoit une notification.
Scénario alternatif — Conflit détecté
- Si un conflit existe, le système retourne une erreur 409.
CU-RESERVATION-02 — Traiter une demande de réservation (gestionnaire)
| Élément | Détail |
| Acteur | Propriétaire du club |
| Objectif | Accepter ou refuser une réservation en attente |
| Précondition | La réservation a le statut pending ; l'utilisateur est propriétaire |
Scénario principal — Accepter
- Le gestionnaire consulte la liste des réservations (filtrée sur
pending). - Il clique sur « Accepter » pour une réservation.
- Le système passe le statut à
accepted. - Le joueur reçoit une notification
reservation_accepted.
Scénario principal — Refuser
- Le gestionnaire clique sur « Refuser » pour une réservation.
- Un formulaire demande le motif de refus (obligatoire).
- Il saisit le motif et confirme.
- Le système passe le statut à
rejected et enregistre le motif. - Le joueur reçoit une notification
reservation_rejected avec le motif.
CU-RESERVATION-03 — Annuler une réservation
| Élément | Détail |
| Acteur | Joueur (ses propres réservations) ou Propriétaire du club (toutes) |
| Objectif | Annuler une réservation pending ou accepted |
Scénario principal
- L'acteur sélectionne la réservation à annuler.
- Il confirme l'annulation.
- Le système passe le statut à
cancelled.
Scénario alternatif — Non autorisé
- Si l'utilisateur n'est ni le joueur concerné ni le propriétaire du club, le système retourne une erreur 403.
CU-RESERVATION-04 — Consulter l'historique des réservations
| Élément | Détail |
| Acteur | Joueur authentifié (ses réservations) ou Gestionnaire (réservations du club) |
| Objectif | Voir l'historique des réservations avec filtrage par statut |
Scénario principal — Joueur
- Le joueur accède à « Mes réservations » (
GET /api/v1/reservations/my). - Il peut filtrer par statut : pending, accepted, rejected, cancelled.
- Il peut annuler une réservation avec le statut
pending.
Scénario principal — Gestionnaire
- Le gestionnaire accède à la page Réservations de son club.
- Le système liste toutes les réservations (
GET /api/v1/clubs/{club}/reservations). - Il peut filtrer par statut et traiter les demandes en attente.