1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Setup\Fixtures;
use Magento\Customer\Api\Data\GroupInterfaceFactory;
use Magento\Customer\Api\GroupRepositoryInterface;
use Magento\Customer\Model\ResourceModel\Group\CollectionFactory;
/**
* Fixture for creating a Customer Groups
*/
class CustomerGroupsFixture extends Fixture
{
const DEFAULT_TAX_CLASS_ID = 3;
/**
* @var int
*/
protected $priority = 60;
/**
* @var CollectionFactory
*/
private $groupCollectionFactory;
/**
* @var GroupRepositoryInterface
*/
private $groupRepository;
/**
* @var GroupInterfaceFactory
*/
private $groupFactory;
/**
* @inheritDoc
*/
public function __construct(
FixtureModel $fixtureModel,
CollectionFactory $groupCollectionFactory,
GroupRepositoryInterface $groupRepository,
GroupInterfaceFactory $groupFactory
) {
parent::__construct($fixtureModel);
$this->groupCollectionFactory = $groupCollectionFactory;
$this->groupRepository = $groupRepository;
$this->groupFactory = $groupFactory;
}
/**
* @inheritdoc
*/
public function execute()
{
$existingCustomerGroupsCount = $this->groupCollectionFactory->create()->getSize();
$customerGroupsCount = $this->fixtureModel->getValue('customer_groups', 0);
if ($customerGroupsCount < 1) {
return;
}
for ($i = $existingCustomerGroupsCount; $i < $customerGroupsCount; ++$i) {
$groupDataObject = $this->groupFactory->create();
$groupDataObject
->setCode('customer_group_' . $i)
->setTaxClassId(self::DEFAULT_TAX_CLASS_ID);
$this->groupRepository->save($groupDataObject);
}
}
/**
* @inheritdoc
*/
public function getActionTitle()
{
return 'Generating customer groups';
}
/**
* @inheritdoc
*/
public function introduceParamLabels()
{
return [
'customer_groups' => 'Customer groups'
];
}
}