<?php

namespace Uhura\Grossmarkt\ViewHelpers;

use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
use Uhura\Grossmarkt\Utility\DatabaseUtility;

/**
 * Class ResourceViewHelper
 * @package Uhura\Grossmarkt\ViewHelpers
 */
class GetMarketPlanPositionsViewHelper extends AbstractViewHelper
{
	public function initializeArguments(): void
	{
		$this->registerArgument('parentCategoryUid', 'string', 'Parent category uid for return subcategories', false, 1);
	}

	/**
	 * @return array
	 * @throws \Doctrine\DBAL\Exception
	 * @throws \TYPO3\CMS\Extbase\Configuration\Exception\InvalidConfigurationTypeException
	 */
	public function render()
	{
		$mapPositions = DatabaseUtility::generateMarketPlanPositions();

		$queryBuilder = DatabaseUtility::getQueryBuilder('tx_news_domain_model_news');
		$reservedPositions = $queryBuilder->select('uid','title','plan_position as position')
			->from('tx_news_domain_model_news')
			->where(
				$queryBuilder->expr()->neq('plan_position', 0),
				$queryBuilder->expr()->eq('sys_language_uid', $GLOBALS['TSFE']->language->getLanguageId())
			)
			->orderBy('title', 'ASC')
			->execute()->fetchAllAssociative();

		return array_merge($reservedPositions, $mapPositions);
	}
}
