* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ declare(strict_types=1); namespace PrestaShop\PrestaShop\Core\Grid\Data\Factory; use CartRule; use Customer; use PrestaShop\PrestaShop\Core\Grid\Data\GridData; use PrestaShop\PrestaShop\Core\Grid\Record\RecordCollection; use PrestaShop\PrestaShop\Core\Grid\Search\SearchCriteriaInterface; /** * Class CustomerDiscountGridDataFactory is responsible of returning grid data for customer's discounts. */ final class CustomerDiscountGridDataFactory implements GridDataFactoryInterface { /** * @var Customer */ private $customer; /** * @param Customer $customer */ public function __construct(Customer $customer) { $this->customer = $customer; } /** * {@inheritdoc} */ public function getData(SearchCriteriaInterface $searchCriteria) { $allDiscounts = CartRule::getAllCustomerCartRules( $this->customer->id ); $discountsToDisplay = array_slice( $allDiscounts, (int) $searchCriteria->getOffset(), (int) $searchCriteria->getLimit() ); $records = new RecordCollection($discountsToDisplay); return new GridData( $records, count($allDiscounts) ); } }