allowedFilters(['first_name', 'last_name', 'email']) ->allowedIncludes($this->allowedIncludes(self::INCLUDES)) ->allowedSorts(['id', 'first_name', 'last_name', 'email', 'created_at']) ->simplePaginate(request('per_page', 15)); // Return the users as a JSON response return UserResource::collection($users); } /** * Create a new user */ public function store(CreateUserRequest $request) { // Validate and create the user $user = User::create($request->validated()); // Return the created user as a JSON response return new UserResource($user); } /** * Show a specific user */ public function show(GetUserRequest $request, User $user) { $user = QueryBuilder::for(User::class) ->allowedIncludes($this->allowedIncludes(self::INCLUDES)) ->findOrFail($user->id); // Return the user as a JSON response return new UserResource($user); } /** * Update a specific user */ public function update(UpdateUserRequest $request, User $user) { // Validate and update the user $user->update($request->validated()); // Return the updated user as a JSON response return new UserResource($user); } /** * Delete a specific user */ public function destroy(DeleteUserRequest $request, User $user) { // Delete the user $user->delete(); return $this->returnNoContent(); } }