| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | <?phpnamespace App\Http\Controllers\Admin\Roles;use App\Http\Controllers\Controller;use App\Shop\Permissions\Repositories\Interfaces\PermissionRepositoryInterface;use App\Shop\Roles\Repositories\RoleRepository;use App\Shop\Roles\Repositories\RoleRepositoryInterface;use App\Shop\Roles\Requests\CreateRoleRequest;use App\Shop\Roles\Requests\UpdateRoleRequest;class RoleController extends Controller{    /**     * @var RoleRepositoryInterface     */    private $roleRepo;    /**     * @var PermissionRepositoryInterface     */    private $permissionRepository;    /**     * RoleController constructor.     *     * @param RoleRepositoryInterface $roleRepository     * @param PermissionRepositoryInterface $permissionRepository     */    public function __construct(        RoleRepositoryInterface $roleRepository,        PermissionRepositoryInterface $permissionRepository    ) {        $this->roleRepo = $roleRepository;        $this->permissionRepository = $permissionRepository;    }    /**     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View     */    public function index()    {        $list = $this->roleRepo->listRoles('name', 'asc')->all();        $roles = $this->roleRepo->paginateArrayResults($list);        return view('admin.roles.list', compact('roles'));    }    /**     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View     */    public function create()    {        return view('admin.roles.create');    }    /**     * @param CreateRoleRequest $request     *     * @return \Illuminate\Http\RedirectResponse     */    public function store(CreateRoleRequest $request)    {        $this->roleRepo->createRole($request->except('_method', '_token'));        return redirect()->route('admin.roles.index')            ->with('message', 'Create role successful!');    }    /**     * @param $id     *     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View     */    public function edit($id)    {        $role = $this->roleRepo->findRoleById($id);        $roleRepo = new RoleRepository($role);        $attachedPermissionsArrayIds = $roleRepo->listPermissions()->pluck('id')->all();        $permissions = $this->permissionRepository->listPermissions(['*'], 'name', 'asc');        return view('admin.roles.edit', compact(            'role',            'permissions',            'attachedPermissionsArrayIds'        ));    }    /**     * @param UpdateRoleRequest $request     * @param $id     *     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View     */    public function update(UpdateRoleRequest $request, $id)    {        $role = $this->roleRepo->findRoleById($id);        if ($request->has('permissions')) {            $roleRepo = new RoleRepository($role);            $roleRepo->syncPermissions($request->input('permissions'));        }        $this->roleRepo->updateRole($request->except('_method', '_token'), $id);        return redirect()->route('admin.roles.edit', $id)            ->with('message', 'Update role successful!');    }}
 |