Converter.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\CatalogRule\Model\Data\Condition;
  7. class Converter
  8. {
  9. /**
  10. * @var \Magento\CatalogRule\Api\Data\ConditionInterfaceFactory
  11. */
  12. protected $ruleConditionFactory;
  13. /**
  14. * @param \Magento\CatalogRule\Api\Data\ConditionInterfaceFactory $ruleConditionFactory
  15. */
  16. public function __construct(\Magento\CatalogRule\Api\Data\ConditionInterfaceFactory $ruleConditionFactory)
  17. {
  18. $this->ruleConditionFactory = $ruleConditionFactory;
  19. }
  20. /**
  21. * @param \Magento\CatalogRule\Api\Data\ConditionInterface $dataModel
  22. * @return array
  23. */
  24. public function dataModelToArray(\Magento\CatalogRule\Api\Data\ConditionInterface $dataModel)
  25. {
  26. $conditionArray = [
  27. 'type' => $dataModel->getType(),
  28. 'attribute' => $dataModel->getAttribute(),
  29. 'operator' => $dataModel->getOperator(),
  30. 'value' => $dataModel->getValue(),
  31. 'is_value_processed' => $dataModel->getIsValueParsed(),
  32. 'aggregator' => $dataModel->getAggregator()
  33. ];
  34. foreach ((array)$dataModel->getConditions() as $condition) {
  35. $conditionArray['conditions'][] = $this->dataModelToArray($condition);
  36. }
  37. return $conditionArray;
  38. }
  39. /**
  40. * @param array $conditionArray
  41. * @return \Magento\CatalogRule\Api\Data\ConditionInterface
  42. * @SuppressWarnings(PHPMD.NPathComplexity)
  43. */
  44. public function arrayToDataModel(array $conditionArray)
  45. {
  46. /** @var \Magento\CatalogRule\Api\Data\ConditionInterface $ruleCondition */
  47. $ruleCondition = $this->ruleConditionFactory->create();
  48. $ruleCondition->setType($conditionArray['type']);
  49. $ruleCondition->setAggregator(isset($conditionArray['aggregator']) ? $conditionArray['aggregator'] : false);
  50. $ruleCondition->setAttribute(isset($conditionArray['attribute']) ? $conditionArray['attribute'] : false);
  51. $ruleCondition->setOperator(isset($conditionArray['operator']) ? $conditionArray['operator'] : false);
  52. $ruleCondition->setValue(isset($conditionArray['value']) ? $conditionArray['value'] : false);
  53. $ruleCondition->setIsValueParsed(
  54. isset($conditionArray['is_value_parsed']) ? $conditionArray['is_value_parsed'] : false
  55. );
  56. if (isset($conditionArray['conditions']) && is_array($conditionArray['conditions'])) {
  57. $conditions = [];
  58. foreach ($conditionArray['conditions'] as $condition) {
  59. $conditions[] = $this->arrayToDataModel($condition);
  60. }
  61. $ruleCondition->setConditions($conditions);
  62. }
  63. return $ruleCondition;
  64. }
  65. }