Completed
Push — develop ( 1fc957...5b3409 )
by Marek
10:45
created

BookmarkService::getBookmarksAndCategories()   B

Complexity

Conditions 4
Paths 5

Size

Total Lines 25
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 25
rs 8.5806
cc 4
eloc 13
nc 5
nop 1
1
<?php
2
namespace AppBundle\Service;
3
4
use AppBundle\Entity\Repository\NodeAccessRepository;
5
6
class BookmarkService
7
{
8
    private $nodeAccessRepository;
9
10
    public function __construct(NodeAccessRepository $nodeAccessRepository)
11
    {
12
        $this->nodeAccessRepository = $nodeAccessRepository;
13
    }
14
15
    /**
16
     * Return list of bookmark NodeAccess-es with preloaded node and bookmark category node
17
     *
18
     * @param int $userId
19
     *
20
     * @return \AppBundle\Entity\NodeAccess[]
21
     */
22
    public function getBookmarks($userId)
23
    {
24
        $bookmarks = $this->nodeAccessRepository->findBookmarksByUserId($userId);
25
26
        return $bookmarks;
27
    }
28
29
    /**
30
     * Return array with array of category Nodes and array of bookmarks grouped by category ID
31
     *
32
     * @param int $userId
33
     *
34
     * @return array
35
     */
36
    public function getBookmarksAndCategories($userId)
37
    {
38
        $bookmarks = $this->getBookmarks($userId);
39
40
        $result = [
41
            'bookmarks' => [],
42
            'categories' => [],
43
        ];
44
45
        foreach ($bookmarks as $bookmark) {
46
            $categoryId = $bookmark->getBookmarkCategoryNodeId();
47
48
            if (!isset($result['categories'][$categoryId])) {
49
                $result['categories'][$categoryId] = $bookmark->getBookmarkCategory();
50
            }
51
52
            if (!isset($result['bookmarks'][$categoryId])) {
53
                $result['bookmarks'][$categoryId] = [];
54
            }
55
56
            $result['bookmarks'][$categoryId][] = $bookmark;
57
        }
58
59
        return $result;
60
    }
61
}
62