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

Размер файла: 2.95Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Http\Controllers\Admin;
  6.  
  7. use App\Classes\Validator;
  8. use App\Models\Antimat;
  9. use App\Models\User;
  10. use Exception;
  11. use Illuminate\Http\RedirectResponse;
  12. use Illuminate\Http\Request;
  13. use Illuminate\View\View;
  14.  
  15. class AntimatController extends AdminController
  16. {
  17. /**
  18. * Главная страница
  19. *
  20. * @param Request $request
  21. * @param Validator $validator
  22. *
  23. * @return View|RedirectResponse
  24. */
  25. public function index(Request $request, Validator $validator)
  26. {
  27. if ($request->isMethod('post')) {
  28. $word = utfLower($request->input('word'));
  29.  
  30. $validator
  31. ->equal($request->input('_token'), csrf_token(), __('validator.token'))
  32. ->notEmpty($word, __('admin.antimat.not_enter_word'));
  33.  
  34. $duplicate = Antimat::query()->where('string', $word)->first();
  35. $validator->empty($duplicate, __('admin.antimat.word_listed'));
  36.  
  37. if ($validator->isValid()) {
  38. Antimat::query()->create([
  39. 'string' => $word
  40. ]);
  41.  
  42. setFlash('success', __('main.record_added_success'));
  43.  
  44. return redirect('admin/antimat');
  45. }
  46.  
  47. setInput($request->all());
  48. setFlash('danger', $validator->getErrors());
  49. }
  50.  
  51. $words = Antimat::query()->get();
  52.  
  53. return view('admin/antimat/index', compact('words'));
  54. }
  55.  
  56. /**
  57. * Удаление слова из списка
  58. *
  59. * @param Request $request
  60. * @param Validator $validator
  61. *
  62. * @return RedirectResponse
  63. * @throws Exception
  64. */
  65. public function delete(Request $request, Validator $validator): RedirectResponse
  66. {
  67. $id = int($request->input('id'));
  68.  
  69. $validator->equal($request->input('_token'), csrf_token(), __('validator.token'));
  70.  
  71. $word = Antimat::query()->find($id);
  72. $validator->notEmpty($word, __('main.record_not_found'));
  73.  
  74. if ($validator->isValid()) {
  75. $word->delete();
  76.  
  77. setFlash('success', __('main.record_deleted_success'));
  78. } else {
  79. setFlash('danger', $validator->getErrors());
  80. }
  81.  
  82. return redirect('admin/antimat');
  83. }
  84.  
  85. /**
  86. * Очистка списка слов
  87. *
  88. * @param Request $request
  89. * @param Validator $validator
  90. *
  91. * @return RedirectResponse
  92. */
  93. public function clear(Request $request, Validator $validator): RedirectResponse
  94. {
  95. $validator
  96. ->equal($request->input('_token'), csrf_token(), __('validator.token'))
  97. ->true(isAdmin(User::BOSS), __('main.page_only_owner'));
  98.  
  99. if ($validator->isValid()) {
  100. Antimat::query()->truncate();
  101.  
  102. setFlash('success', __('main.records_cleared_success'));
  103. } else {
  104. setFlash('danger', $validator->getErrors());
  105. }
  106.  
  107. return redirect('admin/antimat');
  108. }
  109. }