<?php

return new class implements Restaurace
{

	public function name(): string
	{
		return 'Restaurace Flip';
	}

	public function link(): string
	{
		return 'https://www.menicka.cz/24-restaurace-flip.html';
	}

	public function menu(): ?array
	{
		libxml_use_internal_errors(true);

		$html = @file_get_contents($this->link());

		if (!$html) {
			return null;
		}

		$dom = new DOMDocument;

		if (!$dom->loadHTML(mb_convert_encoding(iconv('Windows-1250', 'UTF-8', $html), 'HTML-ENTITIES', 'UTF-8'))) {
			return null;
		}

		$xPath = new DOMXPath($dom);

		$heading = null;

		foreach ($xPath->query('//div[@class="nadpis"]') as $element) {

			/** @var $element DOMElement */
			if (strcasecmp(mb_strtolower($element->nodeValue), sprintf('%s %s', mb_strtolower(DAY_NAME), date('j.m.Y'))) === 0 ||
				strcasecmp(mb_strtolower($element->nodeValue), sprintf('%s %s', mb_strtolower(DAY_NAME), date('j.n.Y'))) === 0) {
				$heading = $element;
				break;
			}

		}

		if ($heading === null) {
			return null;
		}

		$menu = [];
		$i = 0;

		foreach ($heading->parentNode->getElementsByTagName('li') as $element) {

			if ($element->getAttribute('class') !== 'jidlo') {
				continue;
			}

			$food = null;
			$price = null;

			foreach ($element->getElementsByTagName('div') as $element) {

				switch ($element->getAttribute('class')) {

					case 'polozka':
						$food = trim($element->childNodes[1]->textContent);
						break;

					case 'cena':
						$price = (int) $element->nodeValue;
						break;

				}

			}

			if (!$food || !$price) {
				continue;
			}

			$menu[] = [sprintf('Jídlo #%d *(%d Kč)*', ++$i, $price), $food];

		}

		return $menu;
	}

};