AdminController.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Media;
  4. use App\Profile;
  5. use App\Report;
  6. use App\Status;
  7. use App\User;
  8. use Carbon\Carbon;
  9. use Illuminate\Http\Request;
  10. use App\Http\Controllers\Admin\{
  11. AdminReportController
  12. };
  13. class AdminController extends Controller
  14. {
  15. use AdminReportController;
  16. public function __construct()
  17. {
  18. $this->middleware('admin');
  19. $this->middleware('twofactor');
  20. }
  21. public function home()
  22. {
  23. return view('admin.home');
  24. }
  25. public function users(Request $request)
  26. {
  27. $stats = [];
  28. $users = User::orderBy('id', 'desc')->paginate(10);
  29. return view('admin.users.home', compact('users', 'stats'));
  30. }
  31. public function editUser(Request $request, $id)
  32. {
  33. $user = User::find($id);
  34. $profile = $user->profile;
  35. return view('admin.users.edit', compact('user', 'profile'));
  36. }
  37. public function statuses(Request $request)
  38. {
  39. $statuses = Status::orderBy('id', 'desc')->paginate(10);
  40. return view('admin.statuses.home', compact('statuses'));
  41. }
  42. public function showStatus(Request $request, $id)
  43. {
  44. $status = Status::findOrFail($id);
  45. return view('admin.statuses.show', compact('status'));
  46. }
  47. public function media(Request $request)
  48. {
  49. $media = Status::whereHas('media')->orderby('id', 'desc')->paginate(12);
  50. return view('admin.media.home', compact('media'));
  51. }
  52. public function reports(Request $request)
  53. {
  54. $reports = Report::orderBy('created_at','desc')->paginate(12);
  55. return view('admin.reports.home', compact('reports'));
  56. }
  57. public function showReport(Request $request, $id)
  58. {
  59. $report = Report::findOrFail($id);
  60. return view('admin.reports.show', compact('report'));
  61. }
  62. protected function collectUserStats($request)
  63. {
  64. $total_duration = $request->query('total_duration') ?? '30';
  65. $new_duration = $request->query('new_duration') ?? '7';
  66. $stats = [];
  67. $stats['total'] = [
  68. 'count' => User::where('created_at', '>', Carbon::now()->subDays($total_duration))->count(),
  69. 'points' => 0//User::selectRaw('day(created_at) day, count(*) as count')->where('created_at','>', Carbon::now()->subDays($total_duration))->groupBy('day')->pluck('count')
  70. ];
  71. $stats['new'] = [
  72. 'count' => User::where('created_at', '>', Carbon::now()->subDays($new_duration))->count(),
  73. 'points' => 0//User::selectRaw('day(created_at) day, count(*) as count')->where('created_at','>', Carbon::now()->subDays($new_duration))->groupBy('day')->pluck('count')
  74. ];
  75. $stats['active'] = [
  76. 'count' => Status::groupBy('profile_id')->count()
  77. ];
  78. $stats['profile'] = [
  79. 'local' => Profile::whereNull('remote_url')->count(),
  80. 'remote' => Profile::whereNotNull('remote_url')->count()
  81. ];
  82. $stats['avg'] = [
  83. 'age' => 0,
  84. 'posts' => floor(Status::avg('profile_id'))
  85. ];
  86. return $stats;
  87. }
  88. }