attributes->get('user'); $states = $request->query('state') ? [$request->query('state')] : EventState::nonTerminalValues(); $events = $user->events()->whereIn('state', $states)->orderBy('due_date')->orderBy('due_instant')->get(); return response()->json(['events' => $events->map(fn (Event $e) => ApiPresenter::present($e) + ['source' => $e->source->name])->values()]); } public function ack(Request $request, int $event): JsonResponse { $model = $this->own($request, $event); $this->actions->ack($model); return response()->json(ApiPresenter::present($model->fresh())); } public function done(Request $request, int $event): JsonResponse { $model = $this->own($request, $event); $this->actions->done($model); return response()->json(ApiPresenter::present($model->fresh())); } private function own(Request $request, int $id): Event { /** @var User $user */ $user = $request->attributes->get('user'); return $user->events()->whereKey($id)->firstOrFail(); } }