/**
*
* @ApiDoc(
* resource=true,
* description="search users in username-email-tags and subjects (accepts regex inputs)",
* parameters={
* {
* "name"="q",
* "dataType"="string",
* "required"="true",
* "description"="search term"
* }
* }
* )
* @Get("/search/user")
*
* @param Request $request
* @return array
*/
public function getUsersAction(Request $request)
{
$q = $request->get('q');
$search = $this->container->get('fos_elastica.index.search.user');
$s1 = new Query\Regexp();
$s1->setValue('username', $q);
$s2 = new Query\Regexp();
$s2->setValue('subjects', $q);
$s3 = new Query\Regexp();
$s3->setValue('tags', $q);
$query = new Query\Bool();
$query->addShould($s1);
$query->addShould($s2);
$query->addShould($s3);
$results = $search->search($query);
$data = [];
foreach ($results as $result) {
$data[] = array_merge(array('id' => $result->getId()), $result->getData());
}
return $data;
}