File size: 1.64Kb
<?php
declare(strict_types=1);
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
class SearchController extends Controller
{
/**
* Main page
*
* @return View
*/
public function index(): View
{
return view('users/search');
}
/**
* User search
*
* @param Request $request
*
* @return View|RedirectResponse
*/
public function search(Request $request)
{
$find = $request->input('find');
$strlen = utfStrlen($find);
if ($strlen < 2 || $strlen > 20) {
setInput($request->all());
setFlash('danger', ['find' => __('users.request_requirements')]);
return redirect('searchusers');
}
$users = User::query()
->where('login', 'like', '%' . $find . '%')
->orWhere('name', 'like', '%' . $find . '%')
->orderByDesc('point')
->paginate(setting('usersearch'))
->appends(compact('find'));
return view('users/search_result', compact('users'));
}
/**
* First letter search
*
* @param string $letter
*
* @return View
*/
public function sort(string $letter): View
{
$search = is_numeric($letter) ? "RLIKE '^[-0-9]'" : "LIKE '$letter%'";
$users = User::query()
->whereRaw('login ' . $search)
->orderByDesc('point')
->paginate(setting('usersearch'));
return view('users/search_result', compact('users'));
}
}