Просмотр файла app/Http/Controllers/User/SearchController.php

Размер файла: 1.64Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Http\Controllers\User;
  6.  
  7. use App\Http\Controllers\Controller;
  8. use App\Models\User;
  9. use Illuminate\Http\RedirectResponse;
  10. use Illuminate\Http\Request;
  11. use Illuminate\View\View;
  12.  
  13. class SearchController extends Controller
  14. {
  15. /**
  16. * Main page
  17. *
  18. * @return View
  19. */
  20. public function index(): View
  21. {
  22. return view('users/search');
  23. }
  24.  
  25. /**
  26. * User search
  27. *
  28. * @param Request $request
  29. *
  30. * @return View|RedirectResponse
  31. */
  32. public function search(Request $request)
  33. {
  34. $find = $request->input('find');
  35. $strlen = utfStrlen($find);
  36.  
  37. if ($strlen < 2 || $strlen > 20) {
  38. setInput($request->all());
  39. setFlash('danger', ['find' => __('users.request_requirements')]);
  40.  
  41. return redirect('searchusers');
  42. }
  43.  
  44. $users = User::query()
  45. ->where('login', 'like', '%' . $find . '%')
  46. ->orWhere('name', 'like', '%' . $find . '%')
  47. ->orderByDesc('point')
  48. ->paginate(setting('usersearch'))
  49. ->appends(compact('find'));
  50.  
  51. return view('users/search_result', compact('users'));
  52. }
  53.  
  54. /**
  55. * First letter search
  56. *
  57. * @param string $letter
  58. *
  59. * @return View
  60. */
  61. public function sort(string $letter): View
  62. {
  63. $search = is_numeric($letter) ? "RLIKE '^[-0-9]'" : "LIKE '$letter%'";
  64.  
  65. $users = User::query()
  66. ->whereRaw('login ' . $search)
  67. ->orderByDesc('point')
  68. ->paginate(setting('usersearch'));
  69.  
  70. return view('users/search_result', compact('users'));
  71. }
  72. }