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

Размер файла: 3.24Kb
  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\Advert;
  9. use Illuminate\Http\RedirectResponse;
  10. use Illuminate\Http\Request;
  11. use Illuminate\View\View;
  12.  
  13. class AdvertController extends AdminController
  14. {
  15. /**
  16. * Главная страница
  17. *
  18. * @return View
  19. */
  20. public function index(): View
  21. {
  22. $records = Advert::query()
  23. ->where('deleted_at', '>', SITETIME)
  24. ->orderByDesc('deleted_at')
  25. ->with('user')
  26. ->paginate(setting('rekuserpost'));
  27.  
  28. return view('admin/adverts/index', compact('records'));
  29. }
  30.  
  31. /**
  32. * Редактирование ссылки
  33. *
  34. * @param int $id
  35. * @param Request $request
  36. * @param Validator $validator
  37. *
  38. * @return View|RedirectResponse
  39. */
  40. public function edit(int $id, Request $request, Validator $validator)
  41. {
  42. $page = int($request->input('page', 1));
  43. $link = Advert::query()->find($id);
  44.  
  45. if (! $link) {
  46. abort(404, __('main.record_not_found'));
  47. }
  48.  
  49. if ($request->isMethod('post')) {
  50. $site = $request->input('site');
  51. $name = $request->input('name');
  52. $color = $request->input('color');
  53. $bold = empty($request->input('bold')) ? 0 : 1;
  54.  
  55. $validator->equal($request->input('_token'), csrf_token(), __('validator.token'))
  56. ->regex($site, '|^https?://([а-яa-z0-9_\-\.])+(\.([а-яa-z0-9\/\-?_=#])+)+$|iu', ['site' => __('validator.url')])
  57. ->length($site, 5, 50, ['site' => __('validator.url_text')])
  58. ->length($name, 5, 35, ['name' => __('validator.text')])
  59. ->regex($color, '|^#+[A-f0-9]{6}$|', ['color' => __('validator.color')], false);
  60.  
  61. if ($validator->isValid()) {
  62. $link->update([
  63. 'site' => $site,
  64. 'name' => $name,
  65. 'color' => $color,
  66. 'bold' => $bold,
  67. ]);
  68.  
  69. clearCache('adverts');
  70. setFlash('success', __('main.record_changed_success'));
  71.  
  72. return redirect('admin/adverts?page=' . $page);
  73. }
  74.  
  75. setInput($request->all());
  76. setFlash('danger', $validator->getErrors());
  77. }
  78.  
  79. return view('admin/adverts/edit', compact('link', 'page'));
  80. }
  81.  
  82. /**
  83. * Удаление записей
  84. *
  85. * @param Request $request
  86. * @param Validator $validator
  87. *
  88. * @return RedirectResponse
  89. */
  90. public function delete(Request $request, Validator $validator): RedirectResponse
  91. {
  92. $page = int($request->input('page', 1));
  93. $del = intar($request->input('del'));
  94.  
  95. $validator->equal($request->input('_token'), csrf_token(), __('validator.token'))
  96. ->true($del, __('validator.deletion'));
  97.  
  98. if ($validator->isValid()) {
  99. Advert::query()->whereIn('id', $del)->delete();
  100.  
  101. clearCache('adverts');
  102. setFlash('success', __('main.records_deleted_success'));
  103. } else {
  104. setFlash('danger', $validator->getErrors());
  105. }
  106.  
  107. return redirect('admin/adverts?page=' . $page);
  108. }
  109. }