. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\SearchService; use Fisharebest\Webtrees\Submitter; use Fisharebest\Webtrees\Tree; use Illuminate\Support\Collection; use function array_filter; use function explode; use function view; /** * Autocomplete for submitters. */ class TomSelectSubmitter extends AbstractTomSelectHandler { protected SearchService $search_service; /** * @param SearchService $search_service */ public function __construct( SearchService $search_service ) { $this->search_service = $search_service; } /** * Perform the search * * @param Tree $tree * @param string $query * @param int $offset * @param int $limit * @param string $at * * @return Collection */ protected function search(Tree $tree, string $query, int $offset, int $limit, string $at): Collection { // Search by XREF $submitter = Registry::submitterFactory()->make($query, $tree); if ($submitter instanceof Submitter) { $results = new Collection([$submitter]); } else { $search = array_filter(explode(' ', $query)); $results = $this->search_service->searchSubmitters([$tree], $search, $offset, $limit); } return $results->map(static function (Submitter $submitter) use ($at): array { return [ 'text' => view('selects/submitter', ['submitter' => $submitter]), 'value' => $at . $submitter->xref() . $at, ]; }); } }