<?php
namespace Medienreaktor\Products\Domain\Repository;

use GeorgRinger\News\Database\QueryGenerator;
use TYPO3\CMS\Core\Utility\GeneralUtility;

/***
 *
 * This file is part of the "Products" Extension for TYPO3 CMS.
 *
 * For the full copyright and license information, please read the
 * LICENSE.txt file that was distributed with this source code.
 *
 *  (c) 2017 Daniel Kestler &lt;daniel.kestler@medienreaktor&gt;, medienreaktor GmbH
 *
 ***/

/**
 * The repository for Products
 */
class ProductRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
{
    public function findAll() {
        $query = $this->createQuery();
        $query->getQuerySettings()->setRespectStoragePage(FALSE);
        return $query->execute();
    }

    public function findOneBySku($sku) {
        $query = $this->createQuery();
        $query->getQuerySettings()->setRespectStoragePage(FALSE);
        $query->matching($query->equals('sku', $sku));
        return $query->execute()->getFirst();
    }

    public function findByPidRecursively($pid, $languageUid = 0) {
        $queryGenerator = GeneralUtility::makeInstance(QueryGenerator::class);
        $rootline = $queryGenerator->getTreeList($pid, 9999, 0, 'hidden = 0 AND deleted = 0');
        $rootlineArray = explode(',', $rootline);

        $query = $this->createQuery();
        $query->getQuerySettings()->setStoragePageIds($rootlineArray);
        $query->getQuerySettings()->setLanguageUid($languageUid);
//        $query->getQuerySettings()->setLanguageMode('strict');

        return $query->execute();
    }
}
