JezK
Edit File: UserService.php
<?php namespace App\Services; use App\Enums\UserRole; use App\Models\User; use Illuminate\Contracts\Pagination\LengthAwarePaginator; use Illuminate\Http\UploadedFile; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Storage; class UserService { public function getPaginated(int $perPage = 15): LengthAwarePaginator { return User::withCount('articles') ->latest() ->paginate($perPage); } public function findById(int $id): ?User { return User::withCount('articles')->find($id); } public function create(array $data, ?UploadedFile $avatar = null): User { $data['password'] = Hash::make($data['password']); if ($avatar) { $data['avatar'] = $avatar->store('avatars', 'public'); } return User::create($data); } public function update(User $user, array $data, ?UploadedFile $avatar = null): User { if (!empty($data['password'])) { $data['password'] = Hash::make($data['password']); } else { unset($data['password']); } if ($avatar) { if ($user->avatar) { Storage::disk('public')->delete($user->avatar); } $data['avatar'] = $avatar->store('avatars', 'public'); } $user->update($data); return $user->fresh(); } public function delete(User $user): bool { if ($user->avatar) { Storage::disk('public')->delete($user->avatar); } return $user->delete(); } }