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

BookmarkService   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 6
c 1
b 0
f 0
lcom 1
cbo 2
dl 0
loc 56
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getBookmarks() 0 6 1
B getBookmarksAndCategories() 0 25 4
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