Files
ploi-core/app/Http/Controllers/Admin/UserController.php
Dennis 0dbf3bba4d Wip
2020-11-04 13:41:46 +01:00

97 lines
2.6 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Models\User;
use App\Models\Package;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\UserRequest;
class UserController extends Controller
{
public function index()
{
$users = User::with('package:id,name')
->when(request()->input('search'), function ($query, $value) {
return $query->where('name', 'like', '%' . $value . '%')->orWhere('email', 'like', '%' . $value . '%');
})
->latest()
->paginate(5);
return inertia('Admin/Users/Index', [
'filters' => request()->all('search'),
'users' => $users
]);
}
public function create()
{
$packages = Package::orderBy('name')->pluck('name', 'id');
return inertia('Admin/Users/Create', [
'packages' => $packages,
'languages' => languages(),
'defaultPackage' => (string)setting('default_package')
]);
}
public function store(UserRequest $request)
{
$user = User::create($request->all());
if ($request->input('role') === User::ADMIN) {
$user->role = User::ADMIN;
$user->save();
}
if ($package = $request->input('package')) {
$user->package_id = $package;
$user->save();
}
return redirect()->route('admin.users.index')->with('success', 'User ' . $user->name . ' has been created');
}
public function show($id)
{
// TODO: Implement show feature for a user
}
public function edit($id)
{
$packages = Package::orderBy('name')->pluck('name', 'id');
return inertia('Admin/Users/Edit', [
'user' => User::findOrFail($id),
'packages' => $packages,
'languages' => languages()
]);
}
public function update(UserRequest $request, $id)
{
$user = User::findOrFail($id);
$user->update($request->all());
if ($request->input('role') !== $user->role) {
$user->role = $request->input('role');
$user->save();
}
if ($request->input('package') !== $user->package_id) {
$user->package_id = $request->input('package');
$user->save();
}
return redirect()->route('admin.users.index')->with('success', 'User ' . $user->name . ' has been updated');
}
public function destroy($id)
{
User::findOrFail($id)->delete();
return redirect()->route('admin.users.index')->with('success', 'User has been deleted');
}
}