- $roles = $this->role->newQuery()->get();
- $book = ($entity->isA('book')) ? $entity : $entity->book;
- $this->buildJointPermissionsForBooks(collect([$book]), $roles, true);
+ $entities = [$entity];
+ if ($entity->isA('book')) {
+ $books = $this->bookFetchQuery()->where('id', '=', $entity->id)->get();
+ $this->buildJointPermissionsForBooks($books, $this->role->newQuery()->get(), true);
+ return;
+ }
+
+ $entities[] = $entity->book;
+ if ($entity->isA('page') && $entity->chapter_id) $entities[] = $entity->chapter;
+ if ($entity->isA('chapter')) {
+ foreach ($entity->pages as $page) {
+ $entities[] = $page;
+ }
+ }
+ $this->deleteManyJointPermissionsForEntities($entities);
+ $this->buildJointPermissionsForEntities(collect($entities));