<?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 BookingFormOnDetailsPageCheck implements Check {
	protected int $page;

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

	public function check( ?string &$checkMessage ): string {
		if ( $this->page === 0 ) {
			$checkMessage = 'De detail pagina is niet geselecteerd. Je kunt hierdoor niet boeken op een cursus.';
			return CheckResultTypes::INFO;
		}

		$pagesWithShortCode = $this->urlHandler->getPagesWithShortCode($this->pluginData->getShortPrefix() . GeneralTermEnum::BOOKING_FORM_SHORTCODE);
		$pagesWithShortCode += $this->urlHandler->getPagesWithShortCode($this->pluginData->getShortPrefix() . strtolower(GeneralTermEnum::BOOKING_FORM_SHORTCODE));


		foreach ($pagesWithShortCode as $page) {
			if ($page['id'] == $this->page) {
				$checkMessage = 'De shortcode [' . $this->pluginData->getShortPrefix() . GeneralTermEnum::BOOKING_FORM_SHORTCODE . '] is aanwezig op de detail pagina. het is dus mogelijk om een cursus te boeken.';
				return CheckResultTypes::SUCCESS;
			}
		}

		$checkMessage = 'De shortcode [' . $this->pluginData->getShortPrefix() . GeneralTermEnum::BOOKING_FORM_SHORTCODE . '] is niet aanwezig op de detail pagina. Dat geeft niet, maar dan kunnen je bezoekers niet zelf een cursus boeken';
		return CheckResultTypes::INFO;
	}
}