File: D:/HostingSpaces/SBogers10/hours.komma.pro/app/Komma/Roles/RoleController.php
<?php
namespace App\Komma\Roles;
use App\Http\Controllers\Controller;
use App\Komma\Messages\MessageController;
use App\Komma\Permissions\Permission;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class RoleController extends Controller
{
protected $messageController;
public function __construct(MessageController $messageController)
{
$this->middleware('auth');
// $this->middleware('permission:view_settings');
$this->messageController = $messageController;
}
/**
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function index()
{
$roles = Role::where('name', '!=', 'project_leader')->select('id', 'label')->get();
//return
return view('settings.roles.index', compact('roles'));
}
/**
* @param $role
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function edit($role)
{
$role = Role::find($role);
$permissions = Permission::select('id','label')->get();
$update = true;
//return
return view('settings.roles.edit', compact('role', 'permissions', 'update'));
}
/**
* @param Role $role
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function create(Role $role)
{
$permissions = Permission::select('id','label')->get();
//return
return view('settings.roles.create', compact('role', 'permissions'));
}
/**
* @param Request $request
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
* @throws \Illuminate\Validation\ValidationException
*/
public function store(Request $request)
{
$this->validate($request, [
'name' => 'required',
]);
if (!empty(Role::withTrashed()->where('label', $request->name)->get()->first()->deleted_at)) return $this->update($request, Role::withTrashed()->where('label', $request->name)->get()->first()->id);
//store subproject template
$role = new Role();
$role->name = $request->name;
$role->label = $request->name;
$role->save();
if (!empty($request->permissions)) {
//sync subproject templates with task templates
$role->Permissions()->sync($request->permissions);
}
//message + activity
$this->messageController->create("Nieuwe rol", Role::find($role->id));
return redirect('/instellingen/roles');
}
/**
* @param Request $request
* @param $role
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
*/
public function update(Request $request, $role)
{
$this->validate($request, [
'name' => 'required',
]);
//store subproject template
$role = Role::find($role);
$role->label = $request->name;
$role->save();
if (!empty($request->permissions)) {
//sync subproject templates with task templates
$role->Permissions()->sync($request->permissions);
} else {
$role->Permissions()->detach();
}
//message + activity
$subject = Role::find($role->id);
$value = "Rol";
$this->messageController->changed($value, $subject);
return redirect('/instellingen/roles');
}
}