user(); /** @var \Illuminate\Database\Eloquent\Builder */ $alerstQuery = $user->alerts()->whereNull('seen_at'); /** @var Collection */ $alerts = $alerstQuery->get(); $alerstQuery->update([ 'seen_at' => now(), ]); return response()->json($this->format($alerts)); } /** * All alerts */ public function all(): JsonResponse { /** @var \App\Models\User */ $user = auth()->user(); /** @var \Illuminate\Database\Eloquent\Builder */ $alerstQuery = $user->alerts(); /** @var Collection */ $alerts = $alerstQuery->get(); return response()->json($this->format($alerts)); } /** * Format * * @param Collection $alerts * @return Collection */ public function format(Collection $alerts): Collection { return $alerts->map(fn (Alert $alert) => [ 'name' => $alert->name, 'value' => $alert->value, ]); } }