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

Размер файла: 2.19Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Http\Controllers\Load;
  6.  
  7. use App\Http\Controllers\Controller;
  8. use App\Models\Down;
  9. use App\Models\Load;
  10. use Illuminate\Http\Request;
  11. use Illuminate\View\View;
  12.  
  13. class LoadController extends Controller
  14. {
  15. /**
  16. * Главная страница
  17. *
  18. * @return View
  19. */
  20. public function index(): View
  21. {
  22. $categories = Load::query()
  23. ->where('parent_id', 0)
  24. ->with('children', 'new', 'children.new')
  25. ->orderBy('sort')
  26. ->get();
  27.  
  28. if ($categories->isEmpty()) {
  29. abort(200, __('loads.empty_loads'));
  30. }
  31.  
  32. return view('loads/index', compact('categories'));
  33. }
  34.  
  35. /**
  36. * Список файлов в категории
  37. *
  38. * @param int $id
  39. * @param Request $request
  40. *
  41. * @return View
  42. */
  43. public function load(int $id, Request $request): View
  44. {
  45. /** @var Load $category */
  46. $category = Load::query()->with('parent')->find($id);
  47.  
  48. if (! $category) {
  49. abort(404, __('loads.load_not_exist'));
  50. }
  51.  
  52. $sort = check($request->input('sort', 'time'));
  53.  
  54. switch ($sort) {
  55. case 'rating':
  56. $order = 'rating';
  57. break;
  58. case 'comments':
  59. $order = 'count_comments';
  60. break;
  61. case 'loads':
  62. $order = 'loads';
  63. break;
  64. default:
  65. $order = 'created_at';
  66. }
  67.  
  68. $downs = Down::query()
  69. ->where('category_id', $category->id)
  70. ->where('active', 1)
  71. ->orderByDesc($order)
  72. ->paginate(setting('downlist'))
  73. ->appends(['sort' => $sort]);
  74.  
  75. return view('loads/load', compact('category', 'downs', 'order'));
  76. }
  77.  
  78. /**
  79. * RSS всех файлов
  80. *
  81. * @return View
  82. */
  83. public function rss(): View
  84. {
  85. $downs = Down::query()
  86. ->orderByDesc('created_at')
  87. ->limit(15)
  88. ->get();
  89.  
  90. if ($downs->isEmpty()) {
  91. abort(200, __('loads.downs_not_found'));
  92. }
  93.  
  94. return view('loads/rss', compact('downs'));
  95. }
  96. }