38 lines
1.5 KiB
PHP
38 lines
1.5 KiB
PHP
<?php
|
|||
|
|
|
||
|
|
namespace App\Http\Resources;
|
||
|
|
|
||
|
|
use Illuminate\Http\Request;
|
||
|
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||
|
|
|
||
|
|
class ExerciseResource extends JsonResource
|
||
|
|
{
|
||
|
|
public function toArray(Request $request): array
|
||
|
|
{
|
||
|
|
return [
|
||
|
|
'id' => $this->id,
|
||
|
|
'name' => $this->display_name,
|
||
|
|
'original_name' => $this->name,
|
||
|
|
'slug' => $this->slug,
|
||
|
|
'gif_url' => $this->gif_url,
|
||
|
|
'poster_url' => $this->poster_url,
|
||
|
|
'instructions' => $this->instructions,
|
||
|
|
'body_parts' => $this->whenLoaded('bodyParts', fn () => $this->bodyParts->map(fn ($m) => [
|
||
|
|
'id' => $m->id, 'name' => $m->name, 'slug' => $m->slug,
|
||
|
|
])),
|
||
|
|
'target_muscles' => $this->whenLoaded('targetMuscles', fn () => $this->targetMuscles->map(fn ($m) => [
|
||
|
|
'id' => $m->id, 'name' => $m->name, 'slug' => $m->slug,
|
||
|
|
])),
|
||
|
|
'secondary_muscles' => $this->whenLoaded('secondaryMuscles', fn () => $this->secondaryMuscles->map(fn ($m) => [
|
||
|
|
'id' => $m->id, 'name' => $m->name, 'slug' => $m->slug,
|
||
|
|
])),
|
||
|
|
'equipments' => $this->whenLoaded('equipments', fn () => $this->equipments->map(fn ($m) => [
|
||
|
|
'id' => $m->id, 'name' => $m->name, 'slug' => $m->slug,
|
||
|
|
])),
|
||
|
|
'is_favorited' => $request->user()
|
||
|
|
? $request->user()->favoriteExercises()->where('exercise_id', $this->id)->exists()
|
||
|
|
: false,
|
||
|
|
];
|
||
|
|
}
|
||
|
|
}
|