Completed
Push — feature/filter-visibility ( 937ddc...e06bbd )
by Steven
02:33
created

Crosssell::_getPersonalisedProductCollection()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 6

Duplication

Lines 8
Ratio 100 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 8
loc 8
rs 9.4286
cc 1
eloc 6
nc 1
nop 1
1
<?php
2
3
namespace Richdynamix\PersonalisedProducts\Block\Checkout\Cart;
4
5
use \Magento\Catalog\Block\Product\Context as Context;
6
use \Richdynamix\PersonalisedProducts\Helper\Config as Config;
7
use \Richdynamix\PersonalisedProducts\Model\Frontend\Checkout\Cart\Crosssell as CrosssellModel;
8
use \Magento\Catalog\Model\ProductFactory as ProductFactory;
9
use \Magento\CatalogInventory\Helper\Stock as StockHelper;
10
use \Magento\Framework\Module\Manager as Manager;
11
use \Magento\Catalog\Model\Product\Visibility;
12
use \Magento\Checkout\Model\Session;
13
use \Magento\Catalog\Model\Product\LinkFactory;
14
use \Magento\Quote\Model\Quote\Item\RelatedProducts;
15
use \Richdynamix\PersonalisedProducts\Model\Products;
16
17
/**
18
 * Class Crosssel
19
 *
20
 * @category  Richdynamix
21
 * @package   PersonalisedProducts
22
 * @author    Steven Richardson ([email protected]) @mage_gizmo
23
 */
24
class Crosssell extends \Magento\Checkout\Block\Cart\Crosssell
25
{
26
    /**
27
     * @var Config
28
     */
29
    private $_config;
30
31
    /**
32
     * @var CrosssellModel
33
     */
34
    private $_crosssell;
35
36
    /**
37
     * @var
38
     */
39
    private $_itemCollection;
40
41
    /**
42
     * @var Manager
43
     */
44
    private $_moduleManager;
45
46
    /**
47
     * @var Products
48
     */
49
    private $_products;
50
51
    /**
52
     * Crosssell constructor.
53
     * @param Context $context
54
     * @param Config $config
55
     * @param CrosssellModel $crosssell
56
     * @param ProductFactory $productFactory
57
     * @param Manager $moduleManager
58
     * @param Visibility $productVisibility
59
     * @param Session $checkoutSession
60
     * @param LinkFactory $productLinkFactory
61
     * @param RelatedProducts $itemRelationsList
62
     * @param StockHelper $stockHelper
63
     * @param Products $products
64
     * @param array $data
65
     */
66 View Code Duplication
    public function __construct(
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
67
        Context $context,
68
        Config $config,
69
        CrosssellModel $crosssell,
70
        ProductFactory $productFactory,
71
        Manager $moduleManager,
72
        Visibility $productVisibility,
73
        Session $checkoutSession,
74
        LinkFactory $productLinkFactory,
75
        RelatedProducts $itemRelationsList,
76
        StockHelper $stockHelper,
77
        Products $products,
78
        array $data = []
79
    ) {
80
        $this->_config = $config;
81
        $this->_crosssell = $crosssell;
82
        $this->_productFactory = $productFactory;
83
        $this->_moduleManager = $moduleManager;
84
        $this->_products = $products;
85
        parent::__construct(
86
            $context,
87
            $checkoutSession,
88
            $productVisibility,
89
            $productLinkFactory,
90
            $itemRelationsList,
91
            $stockHelper,
92
            $data
93
        );
94
    }
95
96
    /**
97
     * Get the crossell items for the basket page
98
     *
99
     * @return array
100
     */
101
    public function getItems()
102
    {
103
        if (!$this->_config->isEnabled()) {
104
            return parent::getItems();
105
        }
106
107
        $ninProductIds = $this->_getCartProductIds();
108
        $personalisedIds = $this->_crosssell->getProductCollection($ninProductIds);
109
110
        if (!$personalisedIds) {
111
            return parent::getItems();
112
        }
113
114
        $collection = $this->_products->getPersonalisedProductCollection($personalisedIds);
115
116
        $this->_itemCollection = $collection;
117
118
        if ($this->_moduleManager->isEnabled('Magento_Checkout')) {
119
            $this->_addProductAttributesAndPrices($this->_itemCollection);
120
        }
121
122
        $items = [];
123
        foreach ($collection as $item) {
0 ignored issues
show
Bug introduced by
The expression $collection of type object<Richdynamix\Perso...roducts\Model\Products> is not traversable.
Loading history...
124
            $items[] = $item;
125
        }
126
127
        return $items;
128
    }
129
}
130