Moved shelf book append logic

This commit is contained in:
Dan Brown 2019-09-19 18:20:09 +01:00
parent 615b2de433
commit f7a5a0705b
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
3 changed files with 18 additions and 20 deletions

View File

@ -104,4 +104,18 @@ class Bookshelf extends Entity
{
return $this->books()->where('id', '=', $book->id)->count() > 0;
}
/**
* Add a book to the end of this shelf.
* @param Book $book
*/
public function appendBook(Book $book)
{
if (!$this->contains($book)) {
return;
}
$maxOrder = $this->books()->max('order');
$this->books()->attach($book->id, ['order' => $maxOrder + 1]);
}
}

View File

@ -3,9 +3,7 @@
namespace BookStack\Entities\Repos;
use BookStack\Entities\Book;
use BookStack\Entities\Bookshelf;
use BookStack\Exceptions\NotFoundException;
use BookStack\Exceptions\NotifyException;
@ -25,21 +23,6 @@ class BookRepo extends EntityRepo
return $book;
}
/**
* Append a Book to a BookShelf.
* @param Bookshelf $shelf
* @param Book $book
*/
public function appendBookToShelf(Bookshelf $shelf, Book $book)
{
if ($shelf->contains($book)) {
return;
}
$maxOrder = $shelf->books()->max('order');
$shelf->books()->attach($book->id, ['order' => $maxOrder + 1]);
}
/**
* Destroy the provided book and all its child entities.
* @param Book $book

View File

@ -3,10 +3,9 @@
use Activity;
use BookStack\Auth\UserRepo;
use BookStack\Entities\Book;
use BookStack\Entities\Bookshelf;
use BookStack\Entities\EntityContextManager;
use BookStack\Entities\Repos\BookRepo;
use BookStack\Entities\Repos\EntityRepo;
use BookStack\Entities\ExportService;
use BookStack\Exceptions\ImageUploadException;
use BookStack\Exceptions\NotFoundException;
use BookStack\Exceptions\NotifyException;
@ -121,16 +120,18 @@ class BookController extends Controller
$bookshelf = null;
if ($shelfSlug !== null) {
/** @var Bookshelf $bookshelf */
$bookshelf = $this->bookRepo->getEntityBySlug('bookshelf', $shelfSlug);
$this->checkOwnablePermission('bookshelf-update', $bookshelf);
}
/** @var Book $book */
$book = $this->bookRepo->createFromInput('book', $request->all());
$this->bookUpdateActions($book, $request);
Activity::add($book, 'book_create', $book->id);
if ($bookshelf) {
$this->bookRepo->appendBookToShelf($bookshelf, $book);
$bookshelf->appendBook($book);
Activity::add($bookshelf, 'bookshelf_update');
}