Avoid duplicate code

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl
2022-08-17 13:32:08 +02:00
parent 15c48b919d
commit e2c5367050

View File

@@ -32,29 +32,18 @@ use OCA\Deck\Db\Card;
use OCA\Deck\Db\CardMapper; use OCA\Deck\Db\CardMapper;
use OCA\Deck\Model\CardDetails; use OCA\Deck\Model\CardDetails;
use OCP\Comments\ICommentsManager; use OCP\Comments\ICommentsManager;
use OCP\IGroupManager;
use OCA\Deck\Db\BoardMapper; use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\LabelMapper; use OCA\Deck\Db\LabelMapper;
use OCP\IUserManager; use OCP\IUserManager;
class OverviewService { class OverviewService {
private BoardMapper $boardMapper;
/** @var BoardMapper */ private LabelMapper $labelMapper;
private $boardMapper; private CardMapper $cardMapper;
/** @var LabelMapper */ private AssignmentMapper $assignedUsersMapper;
private $labelMapper; private IUserManager $userManager;
/** @var CardMapper */ private ICommentsManager $commentsManager;
private $cardMapper; private AttachmentService $attachmentService;
/** @var AssignmentMapper */
private $assignedUsersMapper;
/** @var IUserManager */
private $userManager;
/** @var IGroupManager */
private $groupManager;
/** @var ICommentsManager */
private $commentsManager;
/** @var AttachmentService */
private $attachmentService;
public function __construct( public function __construct(
BoardMapper $boardMapper, BoardMapper $boardMapper,
@@ -62,7 +51,6 @@ class OverviewService {
CardMapper $cardMapper, CardMapper $cardMapper,
AssignmentMapper $assignedUsersMapper, AssignmentMapper $assignedUsersMapper,
IUserManager $userManager, IUserManager $userManager,
IGroupManager $groupManager,
ICommentsManager $commentsManager, ICommentsManager $commentsManager,
AttachmentService $attachmentService AttachmentService $attachmentService
) { ) {
@@ -71,7 +59,6 @@ class OverviewService {
$this->cardMapper = $cardMapper; $this->cardMapper = $cardMapper;
$this->assignedUsersMapper = $assignedUsersMapper; $this->assignedUsersMapper = $assignedUsersMapper;
$this->userManager = $userManager; $this->userManager = $userManager;
$this->groupManager = $groupManager;
$this->commentsManager = $commentsManager; $this->commentsManager = $commentsManager;
$this->attachmentService = $attachmentService; $this->attachmentService = $attachmentService;
} }
@@ -93,7 +80,7 @@ class OverviewService {
} }
public function findAllWithDue(string $userId): array { public function findAllWithDue(string $userId): array {
$userBoards = $this->findAllBoardsFromUser($userId); $userBoards = $this->boardMapper->findAllForUser($userId);
$allDueCards = []; $allDueCards = [];
foreach ($userBoards as $userBoard) { foreach ($userBoards as $userBoard) {
$allDueCards[] = array_map(function ($card) use ($userBoard, $userId) { $allDueCards[] = array_map(function ($card) use ($userBoard, $userId) {
@@ -105,7 +92,7 @@ class OverviewService {
} }
public function findUpcomingCards(string $userId): array { public function findUpcomingCards(string $userId): array {
$userBoards = $this->findAllBoardsFromUser($userId); $userBoards = $this->boardMapper->findAllForUser($userId);
$foundCards = []; $foundCards = [];
foreach ($userBoards as $userBoard) { foreach ($userBoards as $userBoard) {
if (count($userBoard->getAcl()) === 0) { if (count($userBoard->getAcl()) === 0) {
@@ -126,22 +113,4 @@ class OverviewService {
} }
return array_merge(...$foundCards); return array_merge(...$foundCards);
} }
// FIXME: This is duplicate code with the board service
private function findAllBoardsFromUser(string $userId): array {
$userInfo = $this->getBoardPrerequisites($userId);
$userBoards = $this->boardMapper->findAllByUser($userInfo['user'], null, null);
$groupBoards = $this->boardMapper->findAllByGroups($userInfo['user'], $userInfo['groups'], null, null);
$circleBoards = $this->boardMapper->findAllByCircles($userInfo['user'], null, null);
return array_unique(array_merge($userBoards, $groupBoards, $circleBoards));
}
private function getBoardPrerequisites($userId): array {
$user = $this->userManager->get($userId);
$groups = $user !== null ? $this->groupManager->getUserGroupIds($user) : [];
return [
'user' => $userId,
'groups' => $groups
];
}
} }