ServiceCollection   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

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

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 10 1
A loadData() 0 15 3
A createFeaturetoggleItem() 0 8 1
1
<?php
2
3
namespace Jcowie\FeatureToggle\Model\Resource\Featuretoggle\Grid;
4
5
use Magento\Framework\Data\Collection\EntityFactory;
6
use Magento\Framework\Api\AbstractServiceCollection;
7
use Magento\Framework\Api\FilterBuilder;
8
use Magento\Framework\Api\SearchCriteriaBuilder;
9
use Magento\Framework\Api\SortOrderBuilder;
10
11
use Jcowie\FeatureToggle\Api\Data\FeaturetoggleInterface;
12
use Jcowie\FeatureToggle\Api\FeaturetoggleRepositoryInterface;
13
14
class ServiceCollection extends AbstractServiceCollection
15
{
16
    /**
17
     * @var FeaturetoggleRepositoryInterface
18
     */
19
    private $featuretoggleRepository;
20
21
    /**
22
     * @param \Magento\Framework\Data\Collection\EntityFactory $entityFactory
23
     * @param FilterBuilder                                    $filterBuilder
24
     * @param SearchCriteriaBuilder                            $searchCriteriaBuilder
25
     * @param SortOrderBuilder                                 $sortOrderBuilder
26
     * @param FeaturetoggleRepositoryInterface                     $featuretoggleRepository
27
     */
28
    public function __construct(
29
        EntityFactory $entityFactory,
30
        FilterBuilder $filterBuilder,
31
        SearchCriteriaBuilder $searchCriteriaBuilder,
32
        SortOrderBuilder $sortOrderBuilder,
33
        FeaturetoggleRepositoryInterface $featuretoggleRepository
34
    ) {
35
        parent::__construct($entityFactory, $filterBuilder, $searchCriteriaBuilder, $sortOrderBuilder);
36
        $this->featuretoggleRepository = $featuretoggleRepository;
37
    }
38
39
    /**
40
     * {@inheritdoc}
41
     */
42
    public function loadData($printQuery = false, $logQuery = false)
43
    {
44
        if (!$this->isLoaded()) {
45
            $searchCriteria = $this->getSearchCriteria();
46
            $searchResults = $this->featuretoggleRepository->getList($searchCriteria);
47
            $this->_totalRecords = $searchResults->getTotalCount();
48
            /** @var featuretoggleInterface[] $featuretoggles */
49
            $featuretoggles = $searchResults->getItems();
50
            foreach ($featuretoggles as $toggle) {
51
                $this->_addItem($this->createFeaturetoggleItem($toggle));
52
            }
53
            $this->_setIsLoaded();
54
        }
55
        return $this;
56
    }
57
58
    /**
59
     * Creates a collection item that represents a featuretoggle for the features Grid.
60
     *
61
     * @param FeaturetoggleInterface $featuretoggle Input data for creating the item.
62
     * @return \Magento\Framework\Object Collection item that represents a warehouse
63
     */
64
    protected function createFeaturetoggleItem(FeaturetoggleInterface $featuretoggle)
65
    {
66
        $featuretoggleItem = new \Magento\Framework\Object();
67
        $featuretoggleItem->setFeaturetoggleId($featuretoggle->getFeaturetoggleId());
68
        $featuretoggleItem->setName($featuretoggle->getName());
69
70
        return $featuretoggleItem;
71
    }
72
}
73