File: /home/xedaptot/ai.naniguide.com/app/Http/Controllers/Refactor/Admin/AdminGroupController.php
<?php
namespace App\Http\Controllers\Refactor\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Model\AdminGroup;
class AdminGroupController extends Controller
{
public function index(Request $request)
{
if (\Gate::denies('read', new AdminGroup())) {
return $this->notAuthorized();
}
$stats = [
'total' => AdminGroup::count(),
'admins' => \App\Model\Admin::count(),
];
return view('refactor.pages.admin.admin-groups.index', compact('stats'));
}
public function listing(Request $request)
{
if (\Gate::denies('read', new AdminGroup())) {
return $this->notAuthorized();
}
if (!$request->user()->admin->can('readAll', new AdminGroup())) {
$request->merge(['creator_id' => $request->user()->id]);
}
$query = AdminGroup::search($request);
$items = $query->paginate($request->per_page ?? 15);
return view('refactor.pages.admin.admin-groups._list', compact('items'));
}
public function create(Request $request)
{
$group = new AdminGroup([
'backend_access' => false,
'frontend_access' => true,
]);
if (\Gate::denies('create', $group)) {
return $this->notAuthorized();
}
$permissions = $group->getPermissions();
return view('refactor.pages.admin.admin-groups.create', compact('group', 'permissions'));
}
public function store(Request $request)
{
$group = new AdminGroup();
if (\Gate::denies('create', $group)) {
return response()->json(['status' => 'error', 'message' => 'Not authorized'], 403);
}
$rules = ['name' => 'required'];
$validator = \Validator::make($request->all(), $rules);
if ($validator->fails()) {
return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422);
}
$group->fill($request->all());
$group->permissions = json_encode($request->permissions);
$group->creator_id = $request->user()->id;
$group->save();
return response()->json([
'status' => 'success',
'message' => trans('refactor/admin_admin_groups.flash.created'),
]);
}
public function edit(Request $request, $id)
{
$group = AdminGroup::find($id);
if (!$group) {
return response()->json(['status' => 'error', 'message' => 'Not found'], 404);
}
if (\Gate::denies('update', $group)) {
return $this->notAuthorized();
}
$permissions = $group->getPermissions();
return view('refactor.pages.admin.admin-groups.edit', compact('group', 'permissions'));
}
public function update(Request $request, $id)
{
$group = AdminGroup::find($id);
if (!$group) {
return response()->json(['status' => 'error', 'message' => 'Not found'], 404);
}
if (\Gate::denies('update', $group)) {
return response()->json(['status' => 'error', 'message' => 'Not authorized'], 403);
}
$rules = ['name' => 'required'];
$validator = \Validator::make($request->all(), $rules);
if ($validator->fails()) {
return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422);
}
$group->fill($request->all());
$group->permissions = json_encode($request->permissions);
$group->save();
return response()->json([
'status' => 'success',
'message' => trans('refactor/admin_admin_groups.flash.updated'),
]);
}
public function delete(Request $request)
{
$items = AdminGroup::whereIn('id', is_array($request->ids) ? $request->ids : explode(',', $request->ids));
foreach ($items->get() as $item) {
if ($request->user()->admin->can('delete', $item)) {
$item->delete();
}
}
return response()->json(['status' => 'success', 'message' => trans('refactor/admin_admin_groups.flash.deleted')]);
}
}