api/app/Http/Controllers/PublicUserProfileController...

44 lines
1.4 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Enums\MealPostVisibility;
use App\Http\Resources\MealPostsResource;
use App\Models\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
class PublicUserProfileController extends Controller
{
public function show(Request $request, User $user): JsonResponse
{
$meals = $user->mealPosts()
->where('visibility', MealPostVisibility::Public->value)
->with('user:id,name,avatar_url,account_verified_at')
->latest('eaten_at')
->limit(18)
->get();
return response()->json([
'data' => [
'user' => [
'id' => $user->id,
'name' => $user->name,
'bio' => $user->bio,
'avatarUrl' => $user->avatar_url
? asset(Storage::url($user->avatar_url))
: null,
'accountVerified' => $user->account_verified_at !== null,
],
'stats' => [
'mealsCount' => $user->mealPosts()
->where('visibility', MealPostVisibility::Public->value)
->count(),
],
'meals' => MealPostsResource::collection($meals)->resolve($request),
],
]);
}
}