Management.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\Tax\Model\TaxClass;
  8. use Magento\Framework\Api\FilterBuilder;
  9. use Magento\Framework\Api\SearchCriteriaBuilder;
  10. use Magento\Tax\Api\Data\TaxClassKeyInterface;
  11. use Magento\Tax\Model\ClassModel;
  12. class Management implements \Magento\Tax\Api\TaxClassManagementInterface
  13. {
  14. /**
  15. * Filter Builder
  16. *
  17. * @var FilterBuilder
  18. */
  19. protected $filterBuilder;
  20. /**
  21. * Search Criteria Builder
  22. *
  23. * @var SearchCriteriaBuilder
  24. */
  25. protected $searchCriteriaBuilder;
  26. /**
  27. * Tax class repository
  28. *
  29. * @var \Magento\Tax\Model\TaxClass\Repository
  30. */
  31. protected $classRepository;
  32. /**
  33. * @param SearchCriteriaBuilder $searchCriteriaBuilder
  34. * @param FilterBuilder $filterBuilder
  35. * @param Repository $classRepository
  36. */
  37. public function __construct(
  38. SearchCriteriaBuilder $searchCriteriaBuilder,
  39. FilterBuilder $filterBuilder,
  40. \Magento\Tax\Model\TaxClass\Repository $classRepository
  41. ) {
  42. $this->searchCriteriaBuilder = $searchCriteriaBuilder;
  43. $this->filterBuilder = $filterBuilder;
  44. $this->classRepository = $classRepository;
  45. }
  46. /**
  47. * {@inheritdoc}
  48. */
  49. public function getTaxClassId($taxClassKey, $taxClassType = self::TYPE_PRODUCT)
  50. {
  51. if (!empty($taxClassKey)) {
  52. switch ($taxClassKey->getType()) {
  53. case TaxClassKeyInterface::TYPE_ID:
  54. return $taxClassKey->getValue();
  55. case TaxClassKeyInterface::TYPE_NAME:
  56. $searchCriteria = $this->searchCriteriaBuilder->addFilters(
  57. [$this->filterBuilder->setField(ClassModel::KEY_TYPE)->setValue($taxClassType)->create()]
  58. )->addFilters(
  59. [
  60. $this->filterBuilder->setField(ClassModel::KEY_NAME)
  61. ->setValue($taxClassKey->getValue())
  62. ->create(),
  63. ]
  64. )->create();
  65. $taxClasses = $this->classRepository->getList($searchCriteria)->getItems();
  66. $taxClass = array_shift($taxClasses);
  67. return (null == $taxClass) ? null : $taxClass->getClassId();
  68. }
  69. }
  70. return null;
  71. }
  72. }