File: /var/www/vhost/disk-apps/magento.bikenow.co/vendor/magento/module-tax/Model/Rate/Source.php
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Tax\Model\Rate;
use Magento\Framework\Api\SearchCriteriaBuilder;
use Magento\Framework\App\ObjectManager;
use Magento\Framework\Convert\DataObject as Converter;
use Magento\Tax\Api\TaxRateRepositoryInterface;
use Magento\Tax\Model\Rate\Provider as RateProvider;
/**
* Tax rate source model.
*/
class Source implements \Magento\Framework\Data\OptionSourceInterface
{
/**
* @var array
*/
protected $options;
/**
* @var \Magento\Tax\Api\TaxRateRepositoryInterface
*/
protected $taxRateRepository;
/**
* @var \Magento\Framework\Api\SearchCriteriaBuilder
*/
protected $searchCriteriaBuilder;
/**
* @var \Magento\Framework\Convert\DataObject
*/
protected $converter;
/**
* @var \Magento\Tax\Model\Rate\Provider
*/
protected $rateProvider;
/**
* Initialize dependencies.
*
* @param TaxRateRepositoryInterface $taxRateRepository
* @param SearchCriteriaBuilder $searchCriteriaBuilder
* @param Converter $converter
* @param RateProvider $rateProvider
*/
public function __construct(
TaxRateRepositoryInterface $taxRateRepository,
SearchCriteriaBuilder $searchCriteriaBuilder,
Converter $converter,
RateProvider $rateProvider = null
) {
$this->taxRateRepository = $taxRateRepository;
$this->searchCriteriaBuilder = $searchCriteriaBuilder;
$this->converter = $converter;
$this->rateProvider = $rateProvider ?: ObjectManager::getInstance()->get(RateProvider::class);
}
/**
* Retrieve all tax rates as an options array.
*
* @return array
*/
public function toOptionArray()
{
if (!$this->options) {
$searchCriteria = $this->searchCriteriaBuilder
->setPageSize($this->rateProvider->getPageSize())
->setCurrentPage(1)
->create();
$this->options = $this->rateProvider->toOptionArray($searchCriteria);
}
return $this->options;
}
}