Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
TransactionsCollection.php
Go to the documentation of this file.
1 <?php
7 
14 
19 {
24 
30  protected $_itemObjectClass = TransactionMap::class;
31 
35  private $filtersList = [];
36 
40  private $filterMapper;
41 
45  private $braintreeAdapterFactory;
46 
50  private $collection;
51 
57  public function __construct(
58  EntityFactoryInterface $entityFactory,
59  BraintreeAdapterFactory $braintreeAdapterFactory,
60  FilterMapper $filterMapper
61  ) {
62  parent::__construct($entityFactory);
63  $this->filterMapper = $filterMapper;
64  $this->braintreeAdapterFactory = $braintreeAdapterFactory;
65  }
66 
70  public function getItems()
71  {
72  if (!$this->fetchIdsCollection()) {
73  return [];
74  }
75 
76  $result = [];
77  $counter = 0;
78  $pageSize = $this->getPageSize();
79  $skipCounter = ($this->_curPage - 1) * $pageSize;
80 
81  // To optimize the processing of large searches, data is retrieved from the server lazily.
82  foreach ($this->collection as $item) {
83  if ($skipCounter > 0) {
84  $skipCounter --;
85  } else {
86  $entity = $this->_entityFactory->create($this->_itemObjectClass, ['transaction' => $item]);
87  if ($entity) {
88  $result[] = $entity;
89 
90  $counter ++;
91  if ($pageSize && $counter >= $pageSize) {
92  break;
93  }
94  }
95  }
96  }
97 
98  return $result;
99  }
100 
105  protected function fetchIdsCollection()
106  {
107  if (empty($this->filtersList)) {
108  return null;
109  }
110 
111  // Fetch all transaction IDs in order to filter
112  if (empty($this->collection)) {
113  $filters = $this->getFilters();
114  $this->collection = $this->braintreeAdapterFactory->create()
115  ->search($filters);
116  }
117 
118  return $this->collection;
119  }
120 
128  public function setItems(array $items = null)
129  {
130  return $this;
131  }
132 
136  public function getAggregations()
137  {
138  return null;
139  }
140 
146  public function setAggregations($aggregations)
147  {
148  return $this;
149  }
150 
156  public function getSearchCriteria()
157  {
158  return null;
159  }
160 
169  {
170  return $this;
171  }
172 
178  public function getTotalCount()
179  {
180  $collection = $this->fetchIdsCollection();
181  return null === $collection ? 0 : $collection->maximumCount();
182  }
183 
189  public function getPageSize()
190  {
191  $pageSize = parent::getPageSize();
192  return $pageSize === null ? static::TRANSACTION_MAXIMUM_COUNT : $pageSize;
193  }
194 
202  public function setTotalCount($totalCount)
203  {
204  return $this;
205  }
206 
210  public function addFieldToFilter($field, $condition)
211  {
212  if (is_array($field)) {
213  return $this;
214  }
215 
216  if (!is_array($condition)) {
217  $condition = ['eq' => $condition];
218  }
219 
220  $this->addFilterToList($this->filterMapper->getFilter($field, $condition));
221 
222  return $this;
223  }
224 
231  private function addFilterToList($filter)
232  {
233  if (null !== $filter) {
234  $this->filtersList[] = $filter;
235  }
236  }
237 
241  private function getFilters()
242  {
243  return $this->filtersList;
244  }
245 }
setSearchCriteria(SearchCriteriaInterface $searchCriteria)
$searchCriteria
__construct(EntityFactoryInterface $entityFactory, BraintreeAdapterFactory $braintreeAdapterFactory, FilterMapper $filterMapper)
$entity
Definition: element.phtml:22
$filters
Definition: uploader.phtml:11
$items