HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/MdnDirecteur/hours.komma.cloud/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');
    }

}