Changeset View
Changeset View
Standalone View
Standalone View
src/app/Http/Controllers/API/V4/UsersController.php
Show First 20 Lines • Show All 70 Lines • ▼ Show 20 Lines | class UsersController extends Controller | ||||
* | * | ||||
* The user-entitlements billed to the current user wallet(s) | * The user-entitlements billed to the current user wallet(s) | ||||
* | * | ||||
* @return \Illuminate\Http\JsonResponse | * @return \Illuminate\Http\JsonResponse | ||||
*/ | */ | ||||
public function index() | public function index() | ||||
{ | { | ||||
$user = $this->guard()->user(); | $user = $this->guard()->user(); | ||||
$search = trim(request()->input('search')); | |||||
$page = intval(request()->input('page')) ?: 1; | |||||
$pageSize = 20; | |||||
$hasMore = false; | |||||
$result = $user->users(); | |||||
// Search by user email, alias or name | |||||
if (strlen($search) > 0) { | |||||
// thanks to cloning we skip some extra queries in $user->users() | |||||
$allUsers1 = clone $result; | |||||
$allUsers2 = clone $result; | |||||
$result->whereLike('email', $search) | |||||
->union( | |||||
$allUsers1->join('user_aliases', 'users.id', '=', 'user_aliases.user_id') | |||||
->whereLike('alias', $search) | |||||
) | |||||
->union( | |||||
$allUsers2->join('user_settings', 'users.id', '=', 'user_settings.user_id') | |||||
->whereLike('value', $search) | |||||
->whereIn('key', ['first_name', 'last_name']) | |||||
); | |||||
} | |||||
$result = $result->orderBy('email') | |||||
->limit($pageSize + 1) | |||||
->offset($pageSize * ($page - 1)) | |||||
->get(); | |||||
if (count($result) > $pageSize) { | |||||
$result->pop(); | |||||
$hasMore = true; | |||||
} | |||||
$result = $user->users()->orderBy('email')->get()->map(function ($user) { | // Process the result | ||||
$result = $result->map( | |||||
function ($user) { | |||||
$data = $user->toArray(); | $data = $user->toArray(); | ||||
$data = array_merge($data, self::userStatuses($user)); | $data = array_merge($data, self::userStatuses($user)); | ||||
return $data; | return $data; | ||||
}); | } | ||||
); | |||||
$result = [ | |||||
'list' => $result, | |||||
'count' => count($result), | |||||
'hasMore' => $hasMore, | |||||
]; | |||||
return response()->json($result); | return response()->json($result); | ||||
} | } | ||||
/** | /** | ||||
* Set user config. | * Set user config. | ||||
* | * | ||||
* @param int $id The user | * @param int $id The user | ||||
▲ Show 20 Lines • Show All 743 Lines • Show Last 20 Lines |