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

Размер файла: 1.6Kb
  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.  
  50. return view('users/search_result', compact('users'));
  51. }
  52.  
  53. /**
  54. * First letter search
  55. *
  56. * @param string $letter
  57. *
  58. * @return View
  59. */
  60. public function sort(string $letter): View
  61. {
  62. $search = is_numeric($letter) ? "RLIKE '^[-0-9]'" : "LIKE '$letter%'";
  63.  
  64. $users = User::query()
  65. ->whereRaw('login ' . $search)
  66. ->orderByDesc('point')
  67. ->paginate(setting('usersearch'));
  68.  
  69. return view('users/search_result', compact('users'));
  70. }
  71. }