Archive boards

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl
2017-05-04 10:58:35 +02:00
parent fa5cba631f
commit 8c04ea8dc9
23 changed files with 305 additions and 80 deletions

View File

@@ -26,15 +26,22 @@ namespace OCA\Deck\Service;
use OCA\Deck\Db\Label;
use OCA\Deck\Db\Acl;
use OCA\Deck\Db\LabelMapper;
use OCA\Deck\StatusException;
class LabelService {
/** @var LabelMapper */
private $labelMapper;
/** @var PermissionService */
private $permissionService;
/** @var BoardService */
private $boardService;
public function __construct(LabelMapper $labelMapper, PermissionService $permissionService) {
public function __construct(LabelMapper $labelMapper, PermissionService $permissionService, BoardService $boardService) {
$this->labelMapper = $labelMapper;
$this->permissionService = $permissionService;
$this->boardService = $boardService;
}
public function find($labelId) {
@@ -44,6 +51,9 @@ class LabelService {
public function create($title, $color, $boardId) {
$this->permissionService->checkPermission(null, $boardId, Acl::PERMISSION_MANAGE);
if($this->boardService->isArchived(null, $boardId)) {
throw new StatusException('Operation not allowed. This board is archived.');
}
$label = new Label();
$label->setTitle($title);
$label->setColor($color);
@@ -53,11 +63,17 @@ class LabelService {
public function delete($id) {
$this->permissionService->checkPermission($this->labelMapper, $id, Acl::PERMISSION_MANAGE);
if($this->boardService->isArchived($this->labelMapper, $id)) {
throw new StatusException('Operation not allowed. This board is archived.');
}
return $this->labelMapper->delete($this->find($id));
}
public function update($id, $title, $color) {
$this->permissionService->checkPermission($this->labelMapper, $id, Acl::PERMISSION_MANAGE);
if($this->boardService->isArchived($this->labelMapper, $id)) {
throw new StatusException('Operation not allowed. This board is archived.');
}
$label = $this->find($id);
$label->setTitle($title);
$label->setColor($color);