PaymentTokenRepository.php 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Vault\Model;
  7. use Magento\Framework\Api\FilterBuilder;
  8. use Magento\Framework\Api\Search\FilterGroup;
  9. use Magento\Framework\Api\SearchCriteria\CollectionProcessorInterface;
  10. use Magento\Framework\Api\SearchCriteriaBuilder;
  11. use Magento\Vault\Api\Data;
  12. use Magento\Vault\Api\Data\PaymentTokenSearchResultsInterfaceFactory;
  13. use Magento\Vault\Api\PaymentTokenRepositoryInterface;
  14. use Magento\Vault\Model\ResourceModel\PaymentToken as PaymentTokenResourceModel;
  15. use Magento\Vault\Model\ResourceModel\PaymentToken\Collection;
  16. use Magento\Vault\Model\ResourceModel\PaymentToken\CollectionFactory;
  17. /**
  18. * Vault payment token repository
  19. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  20. */
  21. class PaymentTokenRepository implements PaymentTokenRepositoryInterface
  22. {
  23. /**
  24. * @var PaymentTokenResourceModel
  25. */
  26. protected $resourceModel;
  27. /**
  28. * @var PaymentTokenFactory
  29. */
  30. protected $paymentTokenFactory;
  31. /**
  32. * @var PaymentTokenSearchResultsInterfaceFactory
  33. */
  34. protected $searchResultsFactory;
  35. /**
  36. * @var \Magento\Framework\Api\FilterBuilder
  37. */
  38. protected $filterBuilder;
  39. /**
  40. * @var \Magento\Framework\Api\SearchCriteriaBuilder
  41. */
  42. protected $searchCriteriaBuilder;
  43. /**
  44. * @var CollectionFactory
  45. */
  46. protected $collectionFactory;
  47. /**
  48. * @var \Magento\Framework\Api\SearchCriteria\CollectionProcessorInterface
  49. */
  50. private $collectionProcessor;
  51. /**
  52. * PaymentTokenRepository constructor.
  53. *
  54. * @param PaymentTokenResourceModel $resourceModel
  55. * @param PaymentTokenFactory $paymentTokenFactory
  56. * @param FilterBuilder $filterBuilder
  57. * @param SearchCriteriaBuilder $searchCriteriaBuilder
  58. * @param PaymentTokenSearchResultsInterfaceFactory $searchResultsFactory
  59. * @param CollectionFactory $collectionFactory
  60. * @param CollectionProcessorInterface|null $collectionProcessor
  61. */
  62. public function __construct(
  63. PaymentTokenResourceModel $resourceModel,
  64. PaymentTokenFactory $paymentTokenFactory,
  65. FilterBuilder $filterBuilder,
  66. SearchCriteriaBuilder $searchCriteriaBuilder,
  67. PaymentTokenSearchResultsInterfaceFactory $searchResultsFactory,
  68. CollectionFactory $collectionFactory,
  69. CollectionProcessorInterface $collectionProcessor = null
  70. ) {
  71. $this->resourceModel = $resourceModel;
  72. $this->paymentTokenFactory = $paymentTokenFactory;
  73. $this->filterBuilder = $filterBuilder;
  74. $this->searchCriteriaBuilder = $searchCriteriaBuilder;
  75. $this->searchResultsFactory = $searchResultsFactory;
  76. $this->collectionFactory = $collectionFactory;
  77. $this->collectionProcessor = $collectionProcessor ?: $this->getCollectionProcessor();
  78. }
  79. /**
  80. * Lists payment tokens that match specified search criteria.
  81. *
  82. * @param \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria The search criteria.
  83. * @return \Magento\Vault\Api\Data\PaymentTokenSearchResultsInterface Payment token search result interface.
  84. */
  85. public function getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria)
  86. {
  87. /** @var \Magento\Vault\Model\ResourceModel\PaymentToken\Collection $collection */
  88. $collection = $this->collectionFactory->create();
  89. $this->collectionProcessor->process($searchCriteria, $collection);
  90. /** @var \Magento\Vault\Api\Data\PaymentTokenSearchResultsInterface $searchResults */
  91. $searchResults = $this->searchResultsFactory->create();
  92. $searchResults->setSearchCriteria($searchCriteria);
  93. $searchResults->setItems($collection->getItems());
  94. $searchResults->setTotalCount($collection->getSize());
  95. return $searchResults;
  96. }
  97. /**
  98. * Loads a specified payment token.
  99. *
  100. * @param int $entityId The payment token entity ID.
  101. * @return \Magento\Vault\Api\Data\PaymentTokenInterface Payment token interface.
  102. */
  103. public function getById($entityId)
  104. {
  105. $tokenModel = $this->paymentTokenFactory->create();
  106. $this->resourceModel->load($tokenModel, $entityId);
  107. return $tokenModel;
  108. }
  109. /**
  110. * Deletes a specified payment token.
  111. *
  112. * @param \Magento\Vault\Api\Data\PaymentTokenInterface $paymentToken The invoice.
  113. * @return bool
  114. */
  115. public function delete(Data\PaymentTokenInterface $paymentToken)
  116. {
  117. /** @var PaymentToken $tokenModel */
  118. $tokenModel = $this->getById($paymentToken->getEntityId());
  119. if (empty($tokenModel->getPublicHash())) {
  120. return false;
  121. }
  122. $tokenModel->setIsActive(false);
  123. $tokenModel->setIsVisible(false);
  124. $tokenModel->save();
  125. return true;
  126. }
  127. /**
  128. * Performs persist operations for a specified payment token.
  129. *
  130. * @param \Magento\Vault\Api\Data\PaymentTokenInterface $paymentToken The payment token.
  131. * @return \Magento\Vault\Api\Data\PaymentTokenInterface Saved payment token data.
  132. */
  133. public function save(Data\PaymentTokenInterface $paymentToken)
  134. {
  135. /** @var PaymentToken $paymentToken */
  136. $this->resourceModel->save($paymentToken);
  137. return $paymentToken;
  138. }
  139. /**
  140. * Helper function that adds a FilterGroup to the collection.
  141. *
  142. * @param FilterGroup $filterGroup
  143. * @param Collection $collection
  144. * @return void
  145. * @deprecated 101.0.0
  146. * @throws \Magento\Framework\Exception\InputException
  147. */
  148. protected function addFilterGroupToCollection(FilterGroup $filterGroup, Collection $collection)
  149. {
  150. foreach ($filterGroup->getFilters() as $filter) {
  151. $condition = $filter->getConditionType() ? $filter->getConditionType() : 'eq';
  152. $collection->addFieldToFilter($filter->getField(), [$condition => $filter->getValue()]);
  153. }
  154. }
  155. /**
  156. * Retrieve collection processor
  157. *
  158. * @deprecated 101.0.0
  159. * @return CollectionProcessorInterface
  160. */
  161. private function getCollectionProcessor()
  162. {
  163. if (!$this->collectionProcessor) {
  164. $this->collectionProcessor = \Magento\Framework\App\ObjectManager::getInstance()->get(
  165. \Magento\Framework\Api\SearchCriteria\CollectionProcessorInterface::class
  166. );
  167. }
  168. return $this->collectionProcessor;
  169. }
  170. }