return collect($tree);
}
+
+ /**
+ * Get the bookshelves that a book is contained in.
+ * @param Book $book
+ * @return \Illuminate\Database\Eloquent\Collection|static[]
+ */
+ public function getBookParentShelves(Book $book)
+ {
+ return $this->permissionService->enforceEntityRestrictions('shelf', $book->shelves())->get();
+ }
+
/**
* Get the child items for a chapter sorted by priority but
* with draft items floated to the top.
$entity->permissions()->delete();
if ($request->filled('restrictions')) {
- foreach ($request->get('restrictions') as $roleId => $restrictions) {
- foreach ($restrictions as $action => $value) {
- $entity->permissions()->create([
+ $entityPermissionData = collect($request->get('restrictions'))->flatMap(function($restrictions, $roleId) {
+ return collect($restrictions)->keys()->map(function($action) use ($roleId) {
+ return [
'role_id' => $roleId,
- 'action' => strtolower($action),
- ]);
- }
- }
+ 'action' => strtolower($action),
+ ] ;
+ });
+ });
+
+ $entity->permissions()->createMany($entityPermissionData);
}
$entity->save();
/**
* Update entity details from request input.
- * Used for books and chapters.
- * TODO: Remove type param
+ * Used for shelves, books and chapters.
*/
- public function updateFromInput(string $type, Entity $entityModel, array $input = []): Entity
+ public function updateFromInput(Entity $entityModel, array $input): Entity
{
$entityModel->fill($input);
$entityModel->updated_by = user()->id;