You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

108 lines
3.4 KiB

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\AdminRole;
use Brian2694\Toastr\Facades\Toastr;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Rap2hpoutre\FastExcel\FastExcel;
class CustomRoleController extends Controller
{
public function create()
{
$rl=AdminRole::whereNotIn('id',[1])->latest()->paginate(config('default_pagination'));
return view('admin-views.custom-role.create',compact('rl'));
}
public function store(Request $request)
{
$request->validate([
'name' => 'required|unique:admin_roles|max:191',
'modules'=>'required|array|min:1'
],[
'name.required'=>translate('messages.Role name is required!'),
'modules.required'=>translate('messages.Please select atleast one module')
]);
DB::table('admin_roles')->insert([
'name'=>$request->name,
'modules'=>json_encode($request['modules']),
'status'=>1,
'created_at'=>now(),
'updated_at'=>now()
]);
Toastr::success(translate('messages.role_added_successfully'));
return back();
}
public function edit($id)
{
if($id == 1)
{
return view('errors.404');
}
$role=AdminRole::where(['id'=>$id])->first(['id','name','modules']);
return view('admin-views.custom-role.edit',compact('role'));
}
public function update(Request $request,$id)
{
if($id == 1)
{
return view('errors.404');
}
$request->validate([
'name' => 'required|max:191|unique:admin_roles,name,'.$id,
'modules'=>'required|array|min:1'
],[
'name.required'=>translate('messages.Role name is required!'),
'modules.required'=>translate('messages.Please select atleast one module')
]);
DB::table('admin_roles')->where(['id'=>$id])->update([
'name'=>$request->name,
'modules'=>json_encode($request['modules']),
'status'=>1,
'updated_at'=>now()
]);
Toastr::success(translate('messages.role_updated_successfully'));
return redirect()->route('admin.custom-role.create');
}
public function distroy($id)
{
if($id == 1)
{
return view('errors.404');
}
$role=AdminRole::where(['id'=>$id])->delete();
Toastr::success(translate('messages.role_deleted_successfully'));
return back();
}
public function search(Request $request){
$key = explode(' ', $request['search']);
$rl=AdminRole::where('id','!=','1')
->where(function ($q) use ($key) {
foreach ($key as $value) {
$q->orWhere('name', 'like', "%{$value}%");
}
})->latest()->limit(50)->get();
return response()->json([
'view'=>view('admin-views.custom-role.partials._table',compact('rl'))->render(),
'count'=>$rl->count()
]);
}
public function employee_role_export(Request $request){
$withdraw_request = AdminRole::whereNotIn('id',[1])->get();
if($request->type == 'excel'){
return (new FastExcel($withdraw_request))->download('CustomRole.xlsx');
}elseif($request->type == 'csv'){
return (new FastExcel($withdraw_request))->download('CustomRole.csv');
}
}
}