query('q')); $results = mb_strlen($q) >= 2 ? $this->results($q) : []; if ($request->expectsJson() || $request->ajax() || $request->wantsJson()) { return response()->json(['results' => $results]); } return view('search.index', [ 'query' => $q, 'results' => $results, ]); } /** @return list */ private function results(string $q): array { $like = '%'.$q.'%'; return ladill_account()->qrCodes() ->whereIn('type', QrTypeCatalog::eventsTypes()) ->where(function ($query) use ($like): void { $query->where('label', 'like', $like) ->orWhere('short_code', 'like', $like) ->orWhere('destination_url', 'like', $like); }) ->orderByDesc('updated_at') ->limit(15) ->get() ->map(function (QrCode $code): array { $content = $code->content(); return [ 'type' => $code->type === QrCode::TYPE_EVENT ? 'event' : 'programme', 'title' => $content['name'] ?? $code->label, 'subtitle' => $code->typeLabel().' ยท '.$code->publicUrl(), 'url' => route('events.show', $code), ]; }) ->all(); } }