id) ->orderBy('read', 'asc') ->orderBy('created_at', 'desc') ->limit(50) ->get() ->map(function ($notification) { return [ 'id' => $notification->id, 'title' => $notification->title, 'description' => $notification->description, 'origin' => $notification->origin, 'origin_id' => $notification->origin_id, 'type' => $notification->type, 'read' => $notification->read, 'time' => Carbon::parse( $notification->created_at )->diffForHumans(), ]; }); return $this->successResponse( payload: $notifications ); } public function markAsRead(int $id): JsonResponse { $notification = Notification::where('id', $id) ->where('user_id', Auth::id()) ->firstOrFail(); $notification->update([ 'read' => true, 'read_at' => now(), ]); return $this->successResponse( message: __('messages.updated') ); } public function markAllAsRead(): JsonResponse { Notification::where('user_id', Auth::id()) ->where('read', false) ->update([ 'read' => true, 'read_at' => now(), ]); return $this->successResponse( message: __('messages.updated') ); } }