<?php namespace App\Http\Resources\User; use App\Enums\RoleEnum; use App\Enums\RolePermissionsEnum; use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\JsonResource; class UserShowResource extends JsonResource { public function toArray(Request $request): array { return [ 'id' => $this->id, 'first_name' => $this->first_name, 'last_name' => $this->last_name, 'email' => $this->email, 'start_page' => $this->start_page, 'is_blocked' => $this->is_blocked, 'image' => !empty($this->getFirstMediaUrl('avatars')) ? $this->getFirstMediaUrl('avatars') : null, 'models' => $this->roles->map(function ($role) { $roleEnum = RoleEnum::tryFrom($role->role); $enumPermissions = null; if ($role->permissions) { $permissionsValue = is_array($role->permissions) ? implode(',', $role->permissions) : $role->permissions; $enumPermissions = RolePermissionsEnum::fromCommaSeparated($permissionsValue); } return [ 'name' => $role->model->name ?? null, 'role' => $roleEnum ? RoleEnum::options()[$roleEnum->value] : null, 'permissions' => $enumPermissions ?? null, ]; }), ]; } }