43 lines
1.1 KiB
PHP
43 lines
1.1 KiB
PHP
<?php namespace RVR\Controller;
|
|
|
|
use RVR\Repository\UserRepository;
|
|
use SokoWeb\Interfaces\Authentication\IAuthenticationRequired;
|
|
use SokoWeb\Interfaces\Request\IRequest;
|
|
use SokoWeb\Interfaces\Response\IContent;
|
|
use SokoWeb\Response\JsonContent;
|
|
|
|
class UserSearchController implements IAuthenticationRequired
|
|
{
|
|
private IRequest $request;
|
|
|
|
private UserRepository $userRepository;
|
|
|
|
public function __construct(IRequest $request)
|
|
{
|
|
$this->request = $request;
|
|
$this->userRepository = new UserRepository();
|
|
}
|
|
|
|
public function isAuthenticationRequired(): bool
|
|
{
|
|
return true;
|
|
}
|
|
|
|
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
|
|
]);
|
|
}
|
|
}
|