1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
<?php
/* --------------------------------------------------------------
QuickEditProductSpecialPricesRepository.inc.php 2017-03-09
Gambio GmbH
http://www.gambio.de
Copyright (c) 2017 Gambio GmbH
Released under the GNU General Public License (Version 2)
[http://www.gnu.org/licenses/gpl-2.0.html]
--------------------------------------------------------------
*/
/**
* Class QuickEditProductSpecialPricesRepository
*
* @category System
* @package QuickEdit
* @subpackage Repositories
*/
class QuickEditProductSpecialPricesRepository implements QuickEditProductSpecialPricesRepositoryInterface
{
/**
* @var IntType
*/
protected $length;
/**
* @var IntType
*/
protected $start;
/**
* @var StringType
*/
protected $orderBy;
/**
* @var QuickEditProductSpecialPricesReaderInterface
*/
protected $specialPriceReader;
/**
* @var QuickEditProductSpecialPricesWriterInterface
*/
protected $specialPriceWriter;
/**
* QuickEditProductSpecialPricesRepository constructor.
*
* @param QuickEditProductSpecialPricesReaderInterface $specialPricesReader Special prices reader.
* @param QuickEditProductSpecialPricesWriterInterface $specialPricesWriter Special prices writer.
*/
public function __construct(QuickEditProductSpecialPricesReaderInterface $specialPricesReader,
QuickEditProductSpecialPricesWriterInterface $specialPricesWriter)
{
$this->specialPriceReader = $specialPricesReader;
$this->specialPriceWriter = $specialPricesWriter;
}
/**
* Returns the special prices of the indicated products.
*
* @param array $productIds Array containing the product IDs to be processed.
* @param array $filterParameters Contains filter parameters.
*
* @return array Returns the query result as a pure array, or an empty array when no result is produced.
*/
public function getFilteredSpecialPrices(array $productIds, array $filterParameters)
{
$specialPrices = $this->specialPriceReader->paginateSpecialPrices($this->start, $this->length)
->sortSpecialPrices($this->orderBy)
->getFilteredSpecialPrices($productIds, $filterParameters);
return $this->_collectionContentArray($specialPrices);
}
/**
* Returns the record number of the filtered special prices.
*
* @param array $productIds Array containing the product IDs to be processed.
* @param array $filterParameters Contains filter parameters.
*
* @return int Returns the number of special prices found.
*/
public function getFilteredSpecialPricesCount(array $productIds, array $filterParameters)
{
return $this->specialPriceReader->getFilteredSpecialPricesCount($productIds, $filterParameters);
}
/**
* Get special prices record count.
*
* @return int Returns the number of all special prices found.
*/
public function getSpecialPricesCount()
{
return $this->specialPriceReader->getSpecialPricesCount();
}
/**
* Saves the changed data regarding the special price.
*
* @param array $specialPrice Contains the special prices data.
*
* @return bool Returns the operation result.
*/
public function setSpecialPriceById(array $specialPrice)
{
return $this->specialPriceWriter->setSpecialPriceById($specialPrice);
}
/**
* Sets the starting point of the pagination and the number of special prices.
*
* @param IntType|null $start Pagination start index.
* @param IntType|null $length Page length value.
*
* @return QuickEditProductSpecialPricesRepository QuickEdit products special price repository for chained method
* calls.
*/
public function paginateSpecialPrices(IntType $start = null, IntType $length = null)
{
$this->start = $start;
$this->length = $length;
return $this;
}
/**
* Sets the sorting order of the special prices.
*
* @param StringType|null $orderBy Sorting order (ASC or DESC)
*
* @return QuickEditProductSpecialPricesRepository QuickEdit products special price repository for chained method
* calls.
*/
public function sortSpecialPrices(StringType $orderBy = null)
{
$this->orderBy = $orderBy;
return $this;
}
/**
* Returns an array of QuickEditProductSpecialPriceListItem.
*
* @param array $specialPrices An array containing the data required for a product.
*
* @return array Returns an array of QuickEditProductSpecialPriceListItem or an empty array.
*/
protected function _collectionContentArray(array $specialPrices)
{
$collection = [];
foreach($specialPrices as $value)
{
$collection[] = MainFactory::create('QuickEditProductSpecialPriceListItem', $value);
}
return $collection;
}
}