IMMREX7
<?php
namespace App\Http\Controllers\School;
use Illuminate\Validation\Rule;
use Illuminate\Http\Request;
use Gate;
use Auth;
use DB;
class RoleController extends SchoolController {
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index() {
//
// if (Gate::denies('add-role'))
// return deny();
$roles = \App\Role::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->orderBy('idRole', 'desc')->get();
return view('roles.index', compact('roles'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create() {
// dd('create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request) {
// if (Gate::denies('add-role'))
// return deny();
$request->validate([
'name' => 'required|unique:roles,name,NULL,idRole,idSchool,' . Auth::guard('school')->user()->idSchool,
'label' => 'required|unique:roles,label,NULL,idRole,idSchool,' . Auth::guard('school')->user()->idSchool,
]);
$role = new \App\Role();
$role->fill($request->all());
$role->idSchool = Auth::guard('school')->user()->idSchool;
$role->save();
flash($role->name . ' ' . 'has been saved successfully !!');
return redirect('school/roles');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id) {
//
// return view('roles.show');
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id) {
//
// if (Gate::denies('add-role'))
// return deny();
$roles = \App\Role::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->orderBy('idRole', 'desc')->get();
$role = \App\Role::where('idRole', '=', $id)->first();
return view('roles.index', compact('role', 'roles'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id) {
//
// if (Gate::denies('add-role'))
// return deny();
$role = \App\Role::findOrfail($id);
$request->validate([
'name' => 'required',
]);
$role->fill($request->all());
$role->update();
flash($role->name . ' ' . 'has been updated successfully !!');
return redirect('school/roles');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id) {
//
// if (Gate::denies('add-role'))
// return deny();
$role = \App\Role::findOrfail($id);
$role->delete();
return response()->json(['success' => "SUCCESS"], 200, ['app-status' => 'success']);
}
public function showPermissions($role_id) {
// if (Gate::denies('assign-permission'))
// return deny();
$role = \App\Role::where('idRole', '=', $role_id)->first();
$school_user = Auth::guard('school')->user()->idSchoolUser;
$school_id = Auth::guard('school')->user()->idSchool;
if ($school_id == '14') {
$permissions = \App\Permission::get();
return view('roles.permissions_to_northmodule', compact('role', 'permissions'));
} else {
$modules = DB::table('screenmapping')
->join('school_users', 'screenmapping.idSchoolUser', '=', 'school_users.idSchoolUser')
->join('screen', 'screenmapping.idScreen', '=', 'screen.idScreen')
->join('module', 'screen.idModule', '=', 'module.idModule')
->where('screenmapping.idSchoolUser', '=', $school_user)
->where('module.isActive', '=', 'Y')
->orderBy('module.displayOrder')
->select('moduleName', 'screen.idModule', 'module.displayOrder', 'module.iconName', 'module.screenLink')
->groupBy('moduleName')
->get();
return view('roles.permissions_to_role', compact('role', 'modules'));
}
}
public function savePermissions(Request $request, $role_id) {
//dd($request->all());
// if (Gate::denies('assign-permission'))
// return deny();
$school_id = Auth::guard('school')->user()->idSchool;
if ($school_id != '14') {
$screenmapped = \App\ScreenMapping::where('idRole', '=', $role_id)->get()->pluck('idScreen')->toArray();
$newscr = $request->screens;
$detach = array_diff($screenmapped, $newscr);
\App\ScreenMapping::whereIn('idScreen', $detach)
->where('idRole', '=', $role_id)
->delete();
foreach ($request->screens as $key => $value) {
$screencheck = \App\ScreenMapping::where('idRole', '=', $role_id)
->where('idScreen', '=', $value)->first();
if (!$screencheck) {
$scrmap = new \App\ScreenMapping();
$scrmap->fill($request->all());
$scrmap->idScreen = $value;
$scrmap->idRole = $role_id;
$scrmap->save();
}
}
flash('Screen Access has been assigned Successfully');
return redirect('school/roles');
} else {
$role = \App\Role::where('idRole', '=', $role_id)->first();
$role->permissions()->sync($request->input('permission_id', []));
return redirect('school/roles');
}
}
}
Copyright © 2021 -