44 $condition = $dataModel->getCondition();
47 $ruleModel->getConditions()->setConditions([])->loadArray($array);
60 $condition = $dataModel->getActionCondition();
63 $ruleModel->getActions()->setActions([])->loadArray($array,
'actions');
74 protected function mapStoreLabels(
Rule $ruleModel, RuleDataModel $dataModel)
77 if ($dataModel->getStoreLabels() !==
null) {
80 foreach ($dataModel->getStoreLabels() as $ruleLabel) {
81 $storeLabels[$ruleLabel->getStoreId()] = $ruleLabel->getStoreLabel();
83 $ruleModel->setStoreLabels($storeLabels);
94 if ($ruleModel->getCouponType()) {
96 switch ($ruleModel->getCouponType()) {
108 $ruleModel->setCouponType($mappedValue);
122 $this->mapStoreLabels($ruleModel, $dataModel);
161 public function toModel(RuleDataModel $dataModel)
163 $ruleId = $dataModel->getRuleId();
166 $ruleModel = $this->ruleFactory->create()->
load(
$ruleId);
167 if (!$ruleModel->
getId()) {
168 throw new \Magento\Framework\Exception\NoSuchEntityException();
171 $ruleModel = $this->ruleFactory->create();
172 $dataModel->setFromDate(
173 $this->formattingDate($dataModel->getFromDate())
175 $dataModel->setToDate(
176 $this->formattingDate($dataModel->getToDate())
180 $modelData = $ruleModel->
getData();
182 $data = $this->dataObjectProcessor->buildOutputDataArray(
184 \
Magento\SalesRule\Api\Data\RuleInterface::class
187 $mergedData = array_merge($modelData,
$data);
189 $validateResult = $ruleModel->
validateData(
new \
Magento\Framework\DataObject($mergedData));
190 if ($validateResult !==
true) {
193 foreach ($validateResult as $errorMessage) {
194 $text .= $errorMessage->getText();
197 throw new \Magento\Framework\Exception\InputException(
new \
Magento\Framework\Phrase(
$text));
200 $ruleModel->
setData($mergedData);
202 $this->
mapFields($ruleModel, $dataModel);
213 private function formattingDate($date)
216 $fromDate = new \DateTime($date);
217 $date = $fromDate->format(\DateTime::ISO8601);
__construct(\Magento\SalesRule\Model\RuleFactory $ruleFactory, \Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor)
mapConditions(\Magento\SalesRule\Model\Rule $ruleModel, RuleDataModel $dataModel)
validateData(\Magento\Framework\DataObject $dataObject)
dataModelToArray(Condition $condition, $key='conditions')
mapActionConditions(\Magento\SalesRule\Model\Rule $ruleModel, RuleDataModel $dataModel)
const COUPON_TYPE_NO_COUPON
mapFields(\Magento\SalesRule\Model\Rule $ruleModel, RuleDataModel $dataModel)
mapCouponType(Rule $ruleModel)
load($modelId, $field=null)
const COUPON_TYPE_SPECIFIC
const COUPON_TYPE_NO_COUPON
const COUPON_TYPE_SPECIFIC_COUPON
getData($key='', $index=null)
setData($key, $value=null)