Store::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 5
ccs 0
cts 5
cp 0
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
crap 2
1
<?php
2
/**
3
 * File: Store.php
4
 *
5
 * @author      Maciej Sławik <[email protected]>
6
 * Github:      https://github.com/maciejslawik
7
 */
8
9
namespace MSlwk\ICatalogue\Model\ResourceModel\Catalogue\Relation;
10
11
use Magento\Framework\Model\AbstractModel;
12
use MSlwk\ICatalogue\Api\Catalogue\StoreInterface;
13
use Magento\Framework\App\ResourceConnection;
14
use MSlwk\ICatalogue\Model\ResourceModel\Catalogue;
15
use MSlwk\ICatalogue\Api\CatalogueInterface;
16
17
/**
18
 * Class Store
19
 *
20
 * @package MSlwk\ICatalogue\Model\ResourceModel\Catalogue\Relation
21
 */
22
class Store implements StoreInterface
23
{
24
    /**
25
     * @var ResourceConnection
26
     */
27
    protected $resourceConnection;
28
29
    /**
30
     * Store constructor.
31
     *
32
     * @param ResourceConnection $resourceConnection
33
     */
34
    public function __construct(
35
        ResourceConnection $resourceConnection
36
    ) {
37
        $this->resourceConnection = $resourceConnection;
38
    }
39
40
    /**
41
     * @inheritdoc
42
     */
43
    public function loadStores(AbstractModel $object)
44
    {
45
        $connection = $this->resourceConnection->getConnection(ResourceConnection::DEFAULT_CONNECTION);
46
        $storeIds = $connection->fetchCol(
47
            'SELECT ' . StoreInterface::STORE_ID .
48
            ' FROM ' . Catalogue::CATALOGUE_STORE_TABLE .
49
            ' WHERE ' . CatalogueInterface::CATALOGUE_ID . ' = :catalog_id;',
50
            [
51
                ':catalog_id' => $object->getId()
52
            ]
53
        );
54
55
        $object->setStores($storeIds);
56
    }
57
58
    /**
59
     * @inheritdoc
60
     */
61
    public function saveStores(AbstractModel $object)
62
    {
63
        $connection = $this->resourceConnection->getConnection(ResourceConnection::DEFAULT_CONNECTION);
64
65
        $connection->delete(
66
            Catalogue::CATALOGUE_STORE_TABLE,
67
            [
68
                CatalogueInterface::CATALOGUE_ID . ' = ' . $object->getId()
69
            ]
70
        );
71
72
        if (is_array($object->getStores())) {
73
            foreach ($object->getStores() as $store_id) {
74
                $connection->insert(
75
                    Catalogue::CATALOGUE_STORE_TABLE,
76
                    [
77
                        StoreInterface::STORE_ID => $store_id,
78
                        CatalogueInterface::CATALOGUE_ID => $object->getId()
79
                    ]
80
                );
81
            }
82
        }
83
    }
84
85
}
86