All checks were successful
rvr-nextgen/pipeline/pr-master This commit looks good
43 lines
1.1 KiB
PHP
43 lines
1.1 KiB
PHP
<?php namespace RVR\Controller;
|
|
|
|
use RVR\Repository\UserRepository;
|
|
use SokoWeb\Interfaces\Authorization\ISecured;
|
|
use SokoWeb\Interfaces\Request\IRequest;
|
|
use SokoWeb\Interfaces\Response\IContent;
|
|
use SokoWeb\Response\JsonContent;
|
|
|
|
class UserSearchController implements ISecured
|
|
{
|
|
private IRequest $request;
|
|
|
|
private UserRepository $userRepository;
|
|
|
|
public function __construct(IRequest $request)
|
|
{
|
|
$this->request = $request;
|
|
$this->userRepository = new UserRepository();
|
|
}
|
|
|
|
public function authorize(): bool
|
|
{
|
|
return $this->request->user() !== null;
|
|
}
|
|
|
|
public function searchUser(): IContent
|
|
{
|
|
$users = iterator_to_array($this->userRepository->searchByName($this->request->query('q')));
|
|
usort($users, function($a, $b) {
|
|
return strnatcmp($a->getDisplayName(), $b->getDisplayName());
|
|
});
|
|
|
|
$results = [];
|
|
foreach ($users as $user) {
|
|
$results[] = ['value' => $user->getId(), 'label' => $user->getFullDisplayName()];
|
|
}
|
|
|
|
return new JsonContent([
|
|
'results' => $results
|
|
]);
|
|
}
|
|
}
|