Update admin dashboard

This commit is contained in:
Daniel Supernault 2020-02-18 00:22:47 -07:00
parent 81f4ccf979
commit 9a0c5bc8ae
No known key found for this signature in database
GPG key ID: 0DEF1C662C9033F7
5 changed files with 258 additions and 32 deletions

View file

@ -21,7 +21,8 @@ use App\Http\Controllers\Admin\{
AdminReportController,
AdminMediaController,
AdminSettingsController,
AdminSupportController
AdminSupportController,
AdminUserController
};
use Illuminate\Validation\Rule;
use App\Services\AdminStatsService;
@ -32,11 +33,13 @@ class AdminController extends Controller
AdminDiscoverController,
AdminMediaController,
AdminSettingsController,
AdminInstanceController;
AdminInstanceController,
AdminUserController;
public function __construct()
{
$this->middleware('admin');
$this->middleware('dangerzone');
$this->middleware('twofactor');
}
@ -46,25 +49,6 @@ class AdminController extends Controller
return view('admin.home', compact('data'));
}
public function users(Request $request)
{
$col = $request->query('col') ?? 'id';
$dir = $request->query('dir') ?? 'desc';
$users = User::select('id', 'username', 'status')
->withCount('statuses')
->orderBy($col, $dir)
->simplePaginate(10);
return view('admin.users.home', compact('users'));
}
public function editUser(Request $request, $id)
{
$user = User::findOrFail($id);
$profile = $user->profile;
return view('admin.users.edit', compact('user', 'profile'));
}
public function statuses(Request $request)
{
$statuses = Status::orderBy('id', 'desc')->simplePaginate(10);
@ -109,22 +93,25 @@ class AdminController extends Controller
'nullable',
'string',
Rule::in(['all', 'local', 'remote'])
],
'limit' => 'nullable|integer|min:1|max:50'
]
]);
$search = $request->input('search');
$filter = $request->input('filter');
$limit = 12;
if($search) {
$profiles = Profile::select('id','username')
->where('username', 'like', "%$search%")
->orderBy('id','desc')
$profiles = Profile::select('id','username')
->whereNull('status')
->when($search, function($q, $search) {
return $q->where('username', 'like', "%$search%");
})->when($filter, function($q, $filter) {
if($filter == 'local') {
return $q->whereNull('domain');
}
if($filter == 'remote') {
return $q->whereNotNull('domain');
}
return $q;
})->orderByDesc('id')
->simplePaginate($limit);
} else if($filter) {
$profiles = Profile::select('id','username')->withCount(['likes','statuses','followers'])->orderBy($filter, $order)->simplePaginate($limit);
} else {
$profiles = Profile::select('id','username')->orderBy('id','desc')->simplePaginate($limit);
}
return view('admin.profiles.home', compact('profiles'));
}