Category::setProductUomService()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2
Metric Value
dl 0
loc 5
ccs 0
cts 5
cp 0
rs 9.4285
cc 1
eloc 3
nc 1
nop 1
crap 2
1
<?php
2
3
namespace SpeckCatalog\Service;
4
5
class Category extends AbstractService
6
{
7
    protected $entityMapper = 'speckcatalog_category_mapper';
8
    protected $productService;
9
    protected $productUomService;
10
    protected $productImageService;
11
    protected $optionService;
12
    protected $siteId;
13
14
    public function findById($categoryId)
15
    {
16
        return $this->find(array('category_id' => $categoryId));
17
    }
18
19
    public function getCategoriesForNavigation()
20
    {
21
        $categories = $this->getChildCategories(null, $this->getSiteId());
22
        foreach ($categories as $cat) {
23
            $cats = $this->getChildCategories($cat->getCategoryId(), $this->getSiteId());
24
            $cat->setCategories($cats);
25
        }
26
        return $categories;
27
    }
28
29
    public function getByProductId($productId)
30
    {
31
        return $this->getEntityMapper()->getByProductId($productId, $this->getSiteId());
32
    }
33
34
    public function getCrumbs($category, $crumbs = array())
35
    {
36
        array_unshift($crumbs, $category);
37
        $parent = $this->getParentCategory($category->getCategoryId());
38
        if ($parent) {
39
            return $this->getCrumbs($parent, $crumbs);
40
        }
41
        return $crumbs;
42
    }
43
44
    public function getParentCategory($categoryId)
45
    {
46
        return $this->getEntityMapper()->getParentCategory($categoryId);
47
    }
48
49
    public function getCategoriesForTreePreview($siteId, $parentCategoryId = null)
50
    {
51
        $categories = $this->getEntityMapper()->getChildCategories($parentCategoryId, $siteId);
52
        foreach ($categories as $category) {
53
            $category->setCategories($this->getCategoriesForTreePreview($siteId, $category->getCategoryId()));
54
            //$products = $this->getProductService()->getByCategoryId($category->getCategoryId());
0 ignored issues
show
Unused Code Comprehensibility introduced by
69% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
55
            //$category->setProducts($products);
0 ignored issues
show
Unused Code Comprehensibility introduced by
86% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
56
        }
57
58
        return $categories;
59
    }
60
61
    public function getCategoryforView($categoryId, $paginationOptions = null)
62
    {
63
        $category = $this->findById($categoryId);
64
        if (!$category) {
65
            return;
66
        }
67
68
        $categories = $this->getChildCategories($categoryId, $this->getSiteId());
69
        $products = $this->getProductService()->usePaginator($paginationOptions)->getByCategoryId($categoryId);
70
        if (count($products) > 0) {
71
            foreach ($products as $product) {
72
                $this->getProductService()->populate($product, array('images', 'uoms', 'options', 'builders'), true);
73
            }
74
            $category->setProducts($products);
75
        }
76
        $category->setCategories($categories);
77
78
        return $category;
79
    }
80
81
    public function getChildCategories($categoryId, $siteId)
82
    {
83
        return $this->getEntityMapper()->getChildCategories($categoryId, $siteId);
84
    }
85
86
    public function addProduct($categoryOrId, $productOrId)
87
    {
88
        $categoryId = ( is_numeric($categoryOrId) ? $categoryOrId : $categoryOrId->getCategoryId() );
89
        $productId = ( is_numeric($productOrId) ? $productOrId  : $productOrId->getProductId() );
90
91
        return $this->getEntityMapper()->addProduct($categoryId, $productId);
92
    }
93
94
    public function addCategory($parentCategoryOrIdOrNull, $categoryOrId)
95
    {
96
        if (null === $categoryOrId) {
97
            throw new \RuntimeException('categoryOrId cannot be null');
98
        }
99
        $categoryId = ( is_numeric($categoryOrId) ? $categoryOrId : $categoryOrId->getCategoryId() );
100
101
        $parentCategoryId = (
102
            is_int($parentCategoryOrIdOrNull)
103
            ? $parentCategoryOrIdOrNull
104
            : (is_null($parentCategoryOrIdOrNull)
105
                ? null
106
                : $parentCategoryOrIdOrNull->getCategoryId()
107
            )
108
        );
109
110
        return $this->getEntityMapper()->addCategory($parentCategoryId, $categoryId);
111
    }
112
113
    public function setImage($categoryOrId, $imageOrId)
114
    {
115
        $categoryId = ( is_int($categoryOrId) ? $categoryOrId : $categoryOrId->getCategoryId() );
116
        $imageId    = ( is_int($imageOrId)    ? $imageOrId    : $imageOrId->getMediaId() );
117
118
        return $this->getImageService()->addLinker('category', $categoryId, $imageId);
0 ignored issues
show
Bug introduced by
The method getImageService() does not seem to exist on object<SpeckCatalog\Service\Category>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
119
    }
120
121
122
    /**
123
     * @return productService
124
     */
125
    public function getProductService()
126
    {
127
        if (null === $this->productService) {
128
            $this->productService = $this->getServiceLocator()->get('speckcatalog_product_service');
129
        }
130
        return $this->productService;
131
    }
132
133
    /**
134
     * @param $productService
135
     * @return self
136
     */
137
    public function setProductService($productService)
138
    {
139
        $this->productService = $productService;
140
        return $this;
141
    }
142
143
    /**
144
     * @return productUomService
145
     */
146
    public function getProductUomService()
147
    {
148
        if (null === $this->productUomService) {
149
            $this->productUomService = $this->getServiceLocator()->get('speckcatalog_product_uom_service');
150
        }
151
        return $this->productUomService;
152
    }
153
154
    /**
155
     * @param $productUomService
156
     * @return self
157
     */
158
    public function setProductUomService($productUomService)
159
    {
160
        $this->productUomService = $productUomService;
161
        return $this;
162
    }
163
164
    /**
165
     * @return optionService
166
     */
167
    public function getOptionService()
168
    {
169
        if (null === $this->optionService) {
170
            $this->optionService = $this->getServiceLocator()->get('speckcatalog_option_service');
171
        }
172
        return $this->optionService;
173
    }
174
175
    /**
176
     * @param $optionService
177
     * @return self
178
     */
179
    public function setOptionService($optionService)
180
    {
181
        $this->optionService = $optionService;
182
        return $this;
183
    }
184
185
    /**
186
     * @return productImageService
187
     */
188
    public function getProductImageService()
189
    {
190
        if (null === $this->productImageService) {
191
            $this->productImageService = $this->getServiceLocator()->get('speckcatalog_product_image_service');
192
        }
193
        return $this->productImageService;
194
    }
195
196
    /**
197
     * @param $productImageService
198
     * @return self
199
     */
200
    public function setProductImageService($productImageService)
201
    {
202
        $this->productImageService = $productImageService;
203
        return $this;
204
    }
205
206
    /**
207
     * @return siteId
208
     */
209
    public function getSiteId()
210
    {
211
        return $this->siteId;
212
    }
213
214
    /**
215
     * @param $siteId
216
     * @return self
217
     */
218
    public function setSiteId($siteId)
219
    {
220
        $this->siteId = $siteId;
221
        return $this;
222
    }
223
}
224