StreakFit: exercices planifiés dans la séance + filtre matériel + config matos profil
Build & Deploy / build (push) Successful in 25s

- BUG: une séance issue d'une routine était vide -> WorkoutSessionResource expose planned_exercises (eager-load routine.routineExercises.exercise), pre-rempli cote front
- profil: champ users.available_equipment (json), PATCH /api/me (UpdateProfileRequest), expose dans /api/me
- exercises: filtre equipment accepte une liste CSV (whereIn) -> filtre 'mon matos'

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-21 13:27:44 +02:00
co-authored by Claude Opus 4.8
parent d629d60cba
commit 29bda37948
8 changed files with 127 additions and 5 deletions
@@ -24,7 +24,12 @@ class ExercisesController
$exercises = Exercise::query()
->search($request->query('search'))
->when($request->query('body_part'), fn ($query, $bodyPart) => $query->where('body_part', $bodyPart))
->when($request->query('equipment'), fn ($query, $equipment) => $query->where('equipment', $equipment))
->when($request->query('equipment'), function ($query, $equipment) {
// Accepte une valeur unique ou une liste séparée par des virgules ("dumbbell,barbell")
// → filtre "mon matériel" (plusieurs équipements possédés).
$values = array_values(array_filter(is_array($equipment) ? $equipment : explode(',', (string) $equipment)));
$query->whereIn('equipment', $values);
})
->when($request->query('target'), fn ($query, $target) => $query->where('target', $target))
->when($request->query('category'), fn ($query, $category) => $query->where('category', $category))
->orderBy('name')