Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
RuleRepository.php
Go to the documentation of this file.
1 <?php
7 
13 
20 {
24  protected $ruleFactory;
25 
29  protected $ruleDataFactory;
30 
35 
40 
44  protected $toModelConverter;
45 
50 
55 
60 
65 
69  private $collectionProcessor;
70 
85  public function __construct(
86  \Magento\SalesRule\Model\RuleFactory $ruleFactory,
87  \Magento\SalesRule\Api\Data\RuleInterfaceFactory $ruleDataFactory,
88  \Magento\SalesRule\Api\Data\ConditionInterfaceFactory $conditionDataFactory,
89  \Magento\SalesRule\Model\Converter\ToDataModel $toDataModelConverter,
90  \Magento\SalesRule\Model\Converter\ToModel $toModelConverter,
91  \Magento\SalesRule\Api\Data\RuleSearchResultInterfaceFactory $searchResultFactory,
92  \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $extensionAttributesJoinProcessor,
93  \Magento\SalesRule\Model\ResourceModel\Rule\CollectionFactory $ruleCollectionFactory,
94  \Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor,
95  CollectionProcessorInterface $collectionProcessor = null
96  ) {
97  $this->ruleFactory = $ruleFactory;
98  $this->ruleDataFactory = $ruleDataFactory;
99  $this->conditionDataFactory = $conditionDataFactory;
100  $this->toDataModelConverter = $toDataModelConverter;
101  $this->toModelConverter = $toModelConverter;
102  $this->searchResultFactory = $searchResultFactory;
103  $this->extensionAttributesJoinProcessor = $extensionAttributesJoinProcessor;
104  $this->ruleCollectionFactory = $ruleCollectionFactory;
105  $this->dataObjectProcessor = $dataObjectProcessor;
106  $this->collectionProcessor = $collectionProcessor ?: $this->getCollectionProcessor();
107  }
108 
112  public function save(\Magento\SalesRule\Api\Data\RuleInterface $rule)
113  {
114  $model = $this->toModelConverter->toModel($rule);
115  $model->save();
116  $model->load($model->getId());
117  $model->getStoreLabels();
118  return $this->toDataModelConverter->toDataModel($model);
119  }
120 
124  public function getById($id)
125  {
126  $model = $this->ruleFactory->create()
127  ->load($id);
128 
129  if (!$model->getId()) {
130  throw new \Magento\Framework\Exception\NoSuchEntityException();
131  }
132 
133  $model->getStoreLabels();
134  $dataModel = $this->toDataModelConverter->toDataModel($model);
135  return $dataModel;
136  }
137 
142  {
144  $collection = $this->ruleCollectionFactory->create();
145  $ruleInterfaceName = \Magento\SalesRule\Api\Data\RuleInterface::class;
146  $this->extensionAttributesJoinProcessor->process($collection, $ruleInterfaceName);
147 
148  $this->collectionProcessor->process($searchCriteria, $collection);
149  $rules = [];
151  foreach ($collection->getItems() as $ruleModel) {
152  $ruleModel->load($ruleModel->getId());
153  $ruleModel->getStoreLabels();
154  $rules[] = $this->toDataModelConverter->toDataModel($ruleModel);
155  }
156 
157  $searchResults = $this->searchResultFactory->create();
158  $searchResults->setSearchCriteria($searchCriteria);
159  $searchResults->setItems($rules);
160  $searchResults->setTotalCount($collection->getSize());
161  return $searchResults;
162  }
163 
172  public function deleteById($id)
173  {
174  $model = $this->ruleFactory->create()->load($id);
175 
176  if (!$model->getId()) {
177  throw new \Magento\Framework\Exception\NoSuchEntityException();
178  }
179  $model->delete();
180  return true;
181  }
182 
191  protected function addFilterGroupToCollection(
192  \Magento\Framework\Api\Search\FilterGroup $filterGroup,
194  ) {
195  $fields = [];
196  $conditions = [];
197  foreach ($filterGroup->getFilters() as $filter) {
198  $condition = $filter->getConditionType() ? $filter->getConditionType() : 'eq';
199  $fields[] = $filter->getField();
200  $conditions[] = [$condition => $filter->getValue()];
201  }
202  if ($fields) {
203  $collection->addFieldToFilter($fields, $conditions);
204  }
205  }
206 
213  private function getCollectionProcessor()
214  {
215  if (!$this->collectionProcessor) {
216  $this->collectionProcessor = \Magento\Framework\App\ObjectManager::getInstance()->get(
217  \Magento\Framework\Api\SearchCriteria\CollectionProcessorInterface::class
218  );
219  }
220  return $this->collectionProcessor;
221  }
222 }
$id
Definition: fieldset.phtml:14
$fields
Definition: details.phtml:14
$searchCriteria
addFilterGroupToCollection(\Magento\Framework\Api\Search\FilterGroup $filterGroup, Collection $collection)
__construct(\Magento\SalesRule\Model\RuleFactory $ruleFactory, \Magento\SalesRule\Api\Data\RuleInterfaceFactory $ruleDataFactory, \Magento\SalesRule\Api\Data\ConditionInterfaceFactory $conditionDataFactory, \Magento\SalesRule\Model\Converter\ToDataModel $toDataModelConverter, \Magento\SalesRule\Model\Converter\ToModel $toModelConverter, \Magento\SalesRule\Api\Data\RuleSearchResultInterfaceFactory $searchResultFactory, \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $extensionAttributesJoinProcessor, \Magento\SalesRule\Model\ResourceModel\Rule\CollectionFactory $ruleCollectionFactory, \Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor, CollectionProcessorInterface $collectionProcessor=null)
getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria)
save(\Magento\SalesRule\Api\Data\RuleInterface $rule)