Export Board

Signed-off-by: David Loe <d.loewens24@gmail.com>
This commit is contained in:
David Loe
2021-05-10 15:03:35 +02:00
committed by Julius Härtl
parent d3cad6adf0
commit 88a9fe2161
15 changed files with 153 additions and 27 deletions

View File

@@ -63,7 +63,8 @@ use Psr\Container\NotFoundExceptionInterface;
class BoardService {
private BoardMapper $boardMapper;
private StackMapper $stackMapper;
private LabelMapper $labelMapper;
private LabelMapper $cardMapper;
private $labelMapper;
private AclMapper $aclMapper;
private IConfig $config;
private IL10N $l10n;
@@ -85,6 +86,7 @@ class BoardService {
public function __construct(
BoardMapper $boardMapper,
StackMapper $stackMapper,
CardMapper $cardMapper,
IConfig $config,
IL10N $l10n,
LabelMapper $labelMapper,
@@ -92,7 +94,6 @@ class BoardService {
PermissionService $permissionService,
NotificationHelper $notificationHelper,
AssignmentMapper $assignedUsersMapper,
CardMapper $cardMapper,
IUserManager $userManager,
IGroupManager $groupManager,
ActivityManager $activityManager,
@@ -105,6 +106,7 @@ class BoardService {
) {
$this->boardMapper = $boardMapper;
$this->stackMapper = $stackMapper;
$this->cardMapper = $cardMapper;
$this->labelMapper = $labelMapper;
$this->config = $config;
$this->aclMapper = $aclMapper;
@@ -119,7 +121,6 @@ class BoardService {
$this->changeHelper = $changeHelper;
$this->userId = $userId;
$this->urlGenerator = $urlGenerator;
$this->cardMapper = $cardMapper;
$this->connection = $connection;
$this->boardServiceValidator = $boardServiceValidator;
}
@@ -652,6 +653,27 @@ class BoardService {
}
}
/**
* @param $id
* @return Board
* @throws DoesNotExistException
* @throws \OCA\Deck\NoPermissionException
* @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException
* @throws BadRequestException
*/
public function export($id) {
if (is_numeric($id) === false) {
throw new BadRequestException('board id must be a number');
}
$this->permissionService->checkPermission($this->boardMapper, $id, Acl::PERMISSION_READ);
$board = $this->boardMapper->find($id);
$this->enrichWithCards($board);
$this->enrichWithLabels($board);
return $board;
}
private function enrichWithStacks($board, $since = -1) {
$stacks = $this->stackMapper->findAll($board->getId(), null, null, $since);
@@ -698,4 +720,23 @@ class BoardService {
$this->boardMapper->flushCache($boardId, $boardOwnerId);
unset($this->boardsCache[$boardId]);
}
private function enrichWithCards($board, $since = -1) {
$stacks = $this->stackMapper->findAll($board->getId(), null, null, $since);
foreach ($stacks as $stack) {
$cards = $this->cardMapper->findAllByStack($stack->getId());
$fullCards = [];
foreach ($cards as $card) {
$fullCard = $this->cardMapper->find($card->getId());
array_push($fullCards, $fullCard);
}
$stack->setCards($fullCards);
}
if (\count($stacks) === 0) {
return;
}
$board->setStacks($stacks);
}
}