toTree(); } public function allNoTree(): ?Collection { return Permission::all(); } public function find(int $id): ?Permission { return Permission::find($id); } public function findByScope(string $scope): ?Permission { return Permission::where('scope', $scope)->first(); } public function update(PermissionDto $permissionDto, int $id): ?Permission { $permission = Permission::find($id); $permission->update([ 'name' => $permissionDto->name, 'description' => $permissionDto->description, 'bits' => $permissionDto->bits, 'parent_id' => $permissionDto->parent_id, ]); return $permission; } public function store(PermissionDto $permissionDto): Permission { $permission = Permission::create([ 'name' => $permissionDto->name, 'description' => $permissionDto->description, 'bits' => $permissionDto->bits, 'parent_id' => $permissionDto->parent_id, ]); if ($permissionDto->parent_id) { $parent = Permission::find($permissionDto->parent_id); $permission->prependToNode($parent); } return $permission; } public function delete(int $id): bool { return Permission::destroy($id) > 0; } }