File: /home/xedaptot/be.naniguide.com/app/Http/Controllers/Refactor/Admin/RoleController.php
<?php
namespace App\Http\Controllers\Refactor\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Model\Role;
class RoleController extends Controller
{
public function index(Request $request)
{
$totalGlobal = Role::global()->count();
$activeGlobal = Role::global()->active()->count();
$stats = [
'total' => $totalGlobal,
'active' => $activeGlobal,
'inactive' => $totalGlobal - $activeGlobal,
];
return view('refactor.pages.admin.roles.index', compact('stats'));
}
public function listing(Request $request)
{
$query = Role::global()->search($request->keyword);
if ($request->status && in_array($request->status, [Role::STATUS_ACTIVE, Role::STATUS_INACTIVE])) {
$query->where('status', $request->status);
}
$items = $query->orderBy($request->sort_order ?? 'created_at', $request->sort_direction ?? 'desc')
->paginate($request->per_page ?? 15);
return view('refactor.pages.admin.roles._list', compact('items'));
}
public function create(Request $request)
{
$role = Role::newGlobalRole();
return view('refactor.pages.admin.roles.form', [
'role' => $role,
'mode' => 'create',
]);
}
public function store(Request $request)
{
$role = Role::newGlobalRole();
$errors = $role->saveRole(
$request->name,
$request->description,
$request->permissions ?? []
);
if (!$errors->isEmpty()) {
return response()->view('refactor.pages.admin.roles.form', [
'role' => $role,
'mode' => 'create',
'errors' => $errors,
], 400);
}
return redirect()->route('refactor.admin.roles.index')
->with('alert-success', trans('refactor/admin_roles.flash.created'));
}
public function edit(Request $request, $uid)
{
$role = Role::findByUid($uid);
if (!$role) {
return redirect()->route('refactor.admin.roles.index');
}
return view('refactor.pages.admin.roles.form', [
'role' => $role,
'mode' => 'edit',
]);
}
public function update(Request $request, $uid)
{
$role = Role::findByUid($uid);
if (!$role) {
return redirect()->route('refactor.admin.roles.index');
}
if (!$request->user()->admin->can('update', $role)) {
return $this->notAuthorized();
}
$errors = $role->saveRole(
$request->name,
$request->description,
$request->permissions ?? []
);
if (!$errors->isEmpty()) {
return response()->view('refactor.pages.admin.roles.form', [
'role' => $role,
'mode' => 'edit',
'errors' => $errors,
], 400);
}
return redirect()->route('refactor.admin.roles.index')
->with('alert-success', trans('refactor/admin_roles.flash.updated'));
}
public function delete(Request $request)
{
$roles = Role::whereIn(
'uid',
is_array($request->uids) ? $request->uids : explode(',', $request->uids)
);
$total = $roles->count();
$deleted = 0;
foreach ($roles->get() as $role) {
if ($request->user()->admin->can('delete', $role)) {
$role->delete();
$deleted++;
}
}
return response()->json([
'status' => 'success',
'message' => trans('refactor/admin_roles.flash.deleted'),
]);
}
public function enable(Request $request)
{
$roles = Role::whereIn(
'uid',
is_array($request->uids) ? $request->uids : explode(',', $request->uids)
);
foreach ($roles->get() as $role) {
if ($request->user()->admin->can('enable', $role)) {
$role->enable();
}
}
return response()->json([
'status' => 'success',
'message' => trans('refactor/admin_roles.flash.enabled'),
]);
}
public function disable(Request $request)
{
$roles = Role::whereIn(
'uid',
is_array($request->uids) ? $request->uids : explode(',', $request->uids)
);
foreach ($roles->get() as $role) {
if ($request->user()->admin->can('disable', $role)) {
$role->disable();
}
}
return response()->json([
'status' => 'success',
'message' => trans('refactor/admin_roles.flash.disabled'),
]);
}
}