<?php

namespace Planaday\Utility\Debug\Checking\Checks;

use Planaday\Config\Course\Detail\DetailSettings;
use Planaday\Platform\PlatformAbstraction\UrlHandler;
use Planaday\Utility\Debug\Checking\Check;
use Planaday\Utility\Debug\Checking\CheckResultTypes;
use Planaday\Utility\GeneralTermEnum;
use Planaday\Utility\PluginData;

class DetailsPageCheck implements Check {
	protected bool $pageSet;

	public function __construct(
		DetailSettings $options,
		protected PluginData $pluginData,
		protected UrlHandler $urlHandler
	) {
		$page = $options->getSelectedDetailPage() === 0 ? $options->getOverriddenDetailPage() : $options->getSelectedDetailPage();
		$this->pageSet = $page !== 0;
	}

	public function check( ?string &$checkMessage ): string {
		if ($this->pageSet){
			$checkMessage = 'De shortcode [' . $this->pluginData->getShortPrefix() . GeneralTermEnum::COURSE_DETAILS_SHORTCODE . '] is aanwezig en geselecteerd. Je kunt hierdoor de details van je cursussen laten zien';
			return CheckResultTypes::SUCCESS;
		}

		if ($this->urlHandler->getPagesWithShortCode($this->pluginData->getShortPrefix() . GeneralTermEnum::COURSE_DETAILS_SHORTCODE)){
			$checkMessage = 'De shortcode [' . $this->pluginData->getShortPrefix() . GeneralTermEnum::COURSE_DETAILS_SHORTCODE . '] is aanwezig, maar niet geselecteerd. Selecteer een pagina als detail pagina bij cursus instellingen.<br> ' .
			                'Anders worden de details van een cursus niet getoond.';
			return CheckResultTypes::FAILED;
		}

		$checkMessage = 'De shortcode [' . $this->pluginData->getShortPrefix() . GeneralTermEnum::COURSE_DETAILS_SHORTCODE . '] is niet aanwezig. Maak een pagina aan met hierin deze shortcode en selecteer deze als detail pagina bij cursus instellingen.<br> ' .
		                'Anders worden de details van een cursus niet getoond.';
		return CheckResultTypes::FAILED;
	}
}