DataProvider.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\SalesRule\Model\Rule;
  7. use Magento\SalesRule\Model\ResourceModel\Rule\Collection;
  8. use Magento\SalesRule\Model\ResourceModel\Rule\CollectionFactory;
  9. use Magento\SalesRule\Model\Rule;
  10. /**
  11. * Class DataProvider
  12. */
  13. class DataProvider extends \Magento\Ui\DataProvider\AbstractDataProvider
  14. {
  15. /**
  16. * @var Collection
  17. */
  18. protected $collection;
  19. /**
  20. * @var array
  21. */
  22. protected $loadedData;
  23. /**
  24. * Core registry
  25. *
  26. * @var \Magento\Framework\Registry
  27. */
  28. protected $coreRegistry;
  29. /**
  30. * @var \Magento\SalesRule\Model\Rule\Metadata\ValueProvider
  31. */
  32. protected $metadataValueProvider;
  33. /**
  34. * Initialize dependencies.
  35. *
  36. * @param string $name
  37. * @param string $primaryFieldName
  38. * @param string $requestFieldName
  39. * @param CollectionFactory $collectionFactory
  40. * @param \Magento\Framework\Registry $registry
  41. * @param Metadata\ValueProvider $metadataValueProvider
  42. * @param array $meta
  43. * @param array $data
  44. */
  45. public function __construct(
  46. $name,
  47. $primaryFieldName,
  48. $requestFieldName,
  49. CollectionFactory $collectionFactory,
  50. \Magento\Framework\Registry $registry,
  51. \Magento\SalesRule\Model\Rule\Metadata\ValueProvider $metadataValueProvider,
  52. array $meta = [],
  53. array $data = []
  54. ) {
  55. $this->collection = $collectionFactory->create();
  56. $this->coreRegistry = $registry;
  57. $this->metadataValueProvider = $metadataValueProvider;
  58. $meta = array_replace_recursive($this->getMetadataValues(), $meta);
  59. parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data);
  60. }
  61. /**
  62. * Get metadata values
  63. *
  64. * @return array
  65. */
  66. protected function getMetadataValues()
  67. {
  68. $rule = $this->coreRegistry->registry(\Magento\SalesRule\Model\RegistryConstants::CURRENT_SALES_RULE);
  69. return $this->metadataValueProvider->getMetadataValues($rule);
  70. }
  71. /**
  72. * {@inheritdoc}
  73. */
  74. public function getData()
  75. {
  76. if (isset($this->loadedData)) {
  77. return $this->loadedData;
  78. }
  79. $items = $this->collection->getItems();
  80. /** @var Rule $rule */
  81. foreach ($items as $rule) {
  82. $rule->load($rule->getId());
  83. $rule->setDiscountAmount($rule->getDiscountAmount() * 1);
  84. $rule->setDiscountQty($rule->getDiscountQty() * 1);
  85. $this->loadedData[$rule->getId()] = $rule->getData();
  86. }
  87. return $this->loadedData;
  88. }
  89. }