<?php

namespace Uhura\Grossmarkt\Controller\Api;

use GeorgRinger\News\Domain\Repository\NewsRepository;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
use TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder;
use Uhura\Grossmarkt\Utility\ConfigurationUtility;
use Wga\Core\Utility\DatabaseUtility;

class DealerController extends ActionController
{
	/**
	 * @return string
	 * @throws \Psr\Container\ContainerExceptionInterface
	 * @throws \Psr\Container\NotFoundExceptionInterface
	 */
	public function detailForPlanAction()
	{
		$queryParams = $GLOBALS['TYPO3_REQUEST']->getQueryParams();
		if(isset($queryParams['uid'])){
			$uid = $queryParams['uid'];
			/** @var NewsRepository $newsRepository */
			$newsRepository = GeneralUtility::getContainer()->get(NewsRepository::class);
			$record = $newsRepository->findByUid($uid);
			/** @var UriBuilder $uriBuilder */
			$uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
			$detailPid = isset($queryParams['detailPid']) ? $queryParams['detailPid'] : 34;
			$link = $uriBuilder->reset()->setTargetPageUid((int)$detailPid)->setArguments([
				'tx_news_pi1' => [
					'news' => $uid,
					'controller' => 'News',
					'action' => 'detail',
				],
			])->buildFrontendUri();

			$view =ConfigurationUtility::getStandaloneView();
			$view->setTemplatePathAndFilename(GeneralUtility::getFileAbsFileName('EXT:grossmarkt/Resources/Private/Templates/Api/Dealer/DetailForPlan.html'));
			$view->assignMultiple([
				'item' => $record,
				'link' => $link,
			]);

			return $view->render();
		}

		return '';
	}

	/**
	 * @return false|string
	 * @throws \Doctrine\DBAL\Exception
	 */
	public function searchAction()
	{
		if(isset($_GET['q']) && $searchWord = $_GET['q']){
			$sysLanguageUid = $GLOBALS['TSFE']->language->getLanguageId();
			$queryBuilder = DatabaseUtility::getQueryBuilderForTable('tx_news_domain_model_news');
			$result = $queryBuilder->select('title as text')
				->from('tx_news_domain_model_news')
				->where(
					$queryBuilder->expr()->like('title', $queryBuilder->createNamedParameter('%' . $queryBuilder->escapeLikeWildcards($searchWord) . '%', \PDO::PARAM_STR)),
					$queryBuilder->expr()->eq('sys_language_uid', $sysLanguageUid),
				)->execute()->fetchAllAssociative();


			return json_encode($result);
		}

		return '';
	}
}