added yoga stuff, i18n, workout tracking and a dashboard to track progress

This commit is contained in:
2025-10-04 17:55:30 +03:00
parent 1ed9235451
commit d1bc362fab
32 changed files with 1790 additions and 63 deletions
@@ -69,8 +69,40 @@ class ExerciseController extends Controller
public function show(Exercise $exercise)
{
$exercise->load(['bodyParts:id,name,slug', 'targetMuscles:id,name,slug', 'secondaryMuscles:id,name,slug', 'equipments:id,name,slug']);
// Find similar exercises by shared target muscles, body parts, or equipment
$targetIds = $exercise->targetMuscles->pluck('id')->all();
$bodyPartIds = $exercise->bodyParts->pluck('id')->all();
$equipmentIds = $exercise->equipments->pluck('id')->all();
$similarQuery = Exercise::query()
->with(['bodyParts:id,name,slug', 'targetMuscles:id,name,slug', 'equipments:id,name,slug'])
->where('id', '!=', $exercise->id)
->where(function ($q) use ($targetIds, $bodyPartIds, $equipmentIds) {
if (!empty($targetIds)) {
$q->orWhereHas('targetMuscles', function ($rel) use ($targetIds) {
$rel->whereIn('id', $targetIds);
});
}
if (!empty($bodyPartIds)) {
$q->orWhereHas('bodyParts', function ($rel) use ($bodyPartIds) {
$rel->whereIn('id', $bodyPartIds);
});
}
if (!empty($equipmentIds)) {
$q->orWhereHas('equipments', function ($rel) use ($equipmentIds) {
$rel->whereIn('id', $equipmentIds);
});
}
})
->orderBy('name')
->limit(9);
$similarExercises = $similarQuery->get();
return view('exercises.show', [
'exercise' => $exercise,
'similarExercises' => $similarExercises,
]);
}
}