i18n vocabulaire exos (fr/pt-BR) + Web Push rappels de série
Build & Deploy / build (push) Successful in 17s
Build & Deploy / build (push) Successful in 17s
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -30,6 +30,8 @@ class ExercisesController
|
||||
->orderBy('name')
|
||||
->paginate((int) $request->query('per_page', self::DEFAULT_PER_PAGE));
|
||||
|
||||
ExerciseListResource::$locale = $this->resolveLocale($request);
|
||||
|
||||
return ExerciseListResource::collection($exercises);
|
||||
}
|
||||
|
||||
@@ -39,14 +41,24 @@ class ExercisesController
|
||||
return new ExerciseResource($exercise, $this->resolveLocale($request));
|
||||
}
|
||||
|
||||
/** GET /api/exercises/facets — valeurs distinctes pour alimenter les filtres du front. */
|
||||
public function facets(): JsonResponse
|
||||
/**
|
||||
* GET /api/exercises/facets — valeurs distinctes pour les filtres.
|
||||
* Chaque valeur = { value: anglais (canonique, envoyé au filtre), label: traduit }.
|
||||
*/
|
||||
public function facets(Request $request): JsonResponse
|
||||
{
|
||||
$locale = $this->resolveLocale($request);
|
||||
|
||||
$facet = fn (string $column) => Exercise::query()
|
||||
->whereNotNull($column)->distinct()->orderBy($column)->pluck($column)
|
||||
->map(fn ($v) => ['value' => $v, 'label' => Exercise::localizeTerm($v, $locale)])
|
||||
->values();
|
||||
|
||||
return response()->json([
|
||||
'body_parts' => Exercise::query()->whereNotNull('body_part')->distinct()->orderBy('body_part')->pluck('body_part')->values(),
|
||||
'equipments' => Exercise::query()->whereNotNull('equipment')->distinct()->orderBy('equipment')->pluck('equipment')->values(),
|
||||
'targets' => Exercise::query()->whereNotNull('target')->distinct()->orderBy('target')->pluck('target')->values(),
|
||||
'categories' => Exercise::query()->whereNotNull('category')->distinct()->orderBy('category')->pluck('category')->values(),
|
||||
'body_parts' => $facet('body_part'),
|
||||
'equipments' => $facet('equipment'),
|
||||
'targets' => $facet('target'),
|
||||
'categories' => $facet('category'),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user