| Current Path : /home/rtorresani/www/vendor/magento/module-sales-rule/Model/Rule/Metadata/ |
| Current File : //home/rtorresani/www/vendor/magento/module-sales-rule/Model/Rule/Metadata/ValueProvider.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\SalesRule\Model\Rule\Metadata;
use Magento\Customer\Api\GroupRepositoryInterface;
use Magento\Framework\Api\SearchCriteriaBuilder;
use Magento\Framework\App\ObjectManager;
use Magento\Framework\Convert\DataObject;
use Magento\SalesRule\Model\Rule;
use Magento\SalesRule\Model\Rule\Action\SimpleActionOptionsProvider;
use Magento\SalesRule\Model\RuleFactory;
use Magento\Store\Model\System\Store;
/**
* Metadata provider for sales rule edit form.
*/
class ValueProvider
{
/**
* @var Store
*/
protected $store;
/**
* @var GroupRepositoryInterface
*/
protected $groupRepository;
/**
* @var SearchCriteriaBuilder
*/
protected $searchCriteriaBuilder;
/**
* @var DataObject
*/
protected $objectConverter;
/**
* @var RuleFactory
*/
protected $salesRuleFactory;
/**
* @var SimpleActionOptionsProvider
*/
private $simpleActionOptionsProvider;
/**
* Initialize dependencies.
*
* @param Store $store
* @param GroupRepositoryInterface $groupRepository
* @param SearchCriteriaBuilder $searchCriteriaBuilder
* @param DataObject $objectConverter
* @param RuleFactory $salesRuleFactory
* @param SimpleActionOptionsProvider|null $simpleActionOptionsProvider
*/
public function __construct(
Store $store,
GroupRepositoryInterface $groupRepository,
SearchCriteriaBuilder $searchCriteriaBuilder,
DataObject $objectConverter,
RuleFactory $salesRuleFactory,
SimpleActionOptionsProvider $simpleActionOptionsProvider = null
) {
$this->store = $store;
$this->groupRepository = $groupRepository;
$this->searchCriteriaBuilder = $searchCriteriaBuilder;
$this->objectConverter = $objectConverter;
$this->salesRuleFactory = $salesRuleFactory;
$this->simpleActionOptionsProvider = $simpleActionOptionsProvider ?:
ObjectManager::getInstance()->get(SimpleActionOptionsProvider::class);
}
/**
* Get metadata for sales rule form. It will be merged with form UI component declaration.
*
* @param Rule $rule
* @return array
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
*/
public function getMetadataValues(Rule $rule)
{
$customerGroups = $this->groupRepository->getList($this->searchCriteriaBuilder->create())->getItems();
$applyOptions = $this->simpleActionOptionsProvider->toOptionArray();
$couponTypesOptions = [];
$couponTypes = $this->salesRuleFactory->create()->getCouponTypes();
foreach ($couponTypes as $key => $couponType) {
$couponTypesOptions[] = [
'label' => $couponType,
'value' => $key,
];
}
$labels = $rule->getStoreLabels();
return [
'rule_information' => [
'children' => [
'website_ids' => [
'arguments' => [
'data' => [
'config' => [
'options' => $this->store->getWebsiteValuesForForm(),
],
],
],
],
'is_active' => [
'arguments' => [
'data' => [
'config' => [
'options' => [
['label' => __('Active'), 'value' => '1'],
['label' => __('Inactive'), 'value' => '0']
],
],
],
],
],
'customer_group_ids' => [
'arguments' => [
'data' => [
'config' => [
'options' => $this->objectConverter->toOptionArray($customerGroups, 'id', 'code'),
],
],
],
],
'coupon_type' => [
'arguments' => [
'data' => [
'config' => [
'options' => $couponTypesOptions,
],
],
],
],
'is_rss' => [
'arguments' => [
'data' => [
'config' => [
'options' => [
['label' => __('Yes'), 'value' => '1'],
['label' => __('No'), 'value' => '0']
],
],
],
],
],
]
],
'actions' => [
'children' => [
'simple_action' => [
'arguments' => [
'data' => [
'config' => [
'options' => $applyOptions
],
]
]
],
'discount_amount' => [
'arguments' => [
'data' => [
'config' => [
'value' => '0',
],
],
],
],
'discount_qty' => [
'arguments' => [
'data' => [
'config' => [
'value' => '0',
],
],
],
],
'apply_to_shipping' => [
'arguments' => [
'data' => [
'config' => [
'options' => [
['label' => __('Yes'), 'value' => '1'],
['label' => __('No'), 'value' => '0']
]
],
],
],
],
'stop_rules_processing' => [
'arguments' => [
'data' => [
'config' => [
'options' => [
['label' => __('Yes'), 'value' => '1'],
['label' => __('No'), 'value' => '0'],
],
],
]
]
],
]
],
'labels' => [
'children' => [
'store_labels[0]' => [
'arguments' => [
'data' => [
'config' => [
'value' => isset($labels[0]) ? $labels[0] : '',
],
]
]
]
]
],
];
}
}