loads of progress
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Exercise;
|
||||
use App\Models\ExerciseAlias;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class ExerciseAliasController extends Controller
|
||||
{
|
||||
public function store(Request $request, Exercise $exercise): RedirectResponse
|
||||
{
|
||||
// Auth is enforced at the route level. Extra guard below for safety.
|
||||
if (!Auth::check()) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
$data = $request->validate([
|
||||
'name' => ['nullable', 'string', 'max:255'],
|
||||
]);
|
||||
|
||||
$name = trim((string) ($data['name'] ?? ''));
|
||||
$userId = Auth::id();
|
||||
|
||||
if ($name === '') {
|
||||
// Clear alias
|
||||
ExerciseAlias::where('user_id', $userId)->where('exercise_id', $exercise->id)->delete();
|
||||
return back()->with('status', __('app.exercises.rename_cleared'));
|
||||
}
|
||||
|
||||
ExerciseAlias::updateOrCreate(
|
||||
['user_id' => $userId, 'exercise_id' => $exercise->id],
|
||||
['name' => $name]
|
||||
);
|
||||
|
||||
return back()->with('status', __('app.exercises.renamed_success'));
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ use App\Models\Equipment;
|
||||
use App\Models\Exercise;
|
||||
use App\Models\Muscle;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class ExerciseController extends Controller
|
||||
{
|
||||
@@ -20,7 +21,8 @@ class ExerciseController extends Controller
|
||||
if ($perPage < 6 || $perPage > 60) { $perPage = 12; }
|
||||
|
||||
$query = Exercise::query()
|
||||
->with(['bodyParts:id,name,slug', 'targetMuscles:id,name,slug', 'secondaryMuscles:id,name,slug', 'equipments:id,name,slug'])
|
||||
->with(['bodyParts:id,name,slug', 'targetMuscles:id,name,slug', 'secondaryMuscles:id,name,slug', 'equipments:id,name,slug']
|
||||
+ (Auth::check() ? ['aliases' => function($rel){ $rel->where('user_id', Auth::id()); }] : []))
|
||||
->when($q !== '', function ($qBuilder) use ($q) {
|
||||
$qBuilder->where(function ($sub) use ($q) {
|
||||
$sub->where('name', 'like', "%{$q}%")
|
||||
@@ -68,7 +70,8 @@ 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']);
|
||||
$exercise->load(['bodyParts:id,name,slug', 'targetMuscles:id,name,slug', 'secondaryMuscles:id,name,slug', 'equipments:id,name,slug']
|
||||
+ (Auth::check() ? ['aliases' => function($rel){ $rel->where('user_id', Auth::id()); }] : []));
|
||||
|
||||
// Find similar exercises by shared target muscles, body parts, or equipment
|
||||
$targetIds = $exercise->targetMuscles->pluck('id')->all();
|
||||
@@ -76,7 +79,8 @@ class ExerciseController extends Controller
|
||||
$equipmentIds = $exercise->equipments->pluck('id')->all();
|
||||
|
||||
$similarQuery = Exercise::query()
|
||||
->with(['bodyParts:id,name,slug', 'targetMuscles:id,name,slug', 'equipments:id,name,slug'])
|
||||
->with(['bodyParts:id,name,slug', 'targetMuscles:id,name,slug', 'equipments:id,name,slug']
|
||||
+ (Auth::check() ? ['aliases' => function($rel){ $rel->where('user_id', Auth::id()); }] : []))
|
||||
->where('id', '!=', $exercise->id)
|
||||
->where(function ($q) use ($targetIds, $bodyPartIds, $equipmentIds) {
|
||||
if (!empty($targetIds)) {
|
||||
|
||||
Reference in New Issue
Block a user