<?php

declare(strict_types=1);

namespace mirzaev\ebala\controllers;

// Файлы проекта
use mirzaev\ebala\controllers\core,
	mirzaev\ebala\models\account;

/**
 * Контроллер основной страницы
 *
 * @package mirzaev\ebala\controllers
 * @author Arsen Mirzaev Tatyano-Muradovich <arsen@mirzaev.sexy>
 */
final class index extends core
{
	/**
	 * Главная страница
	 *
	 * @param array $parameters Параметры запроса
	 */
	public function index(array $parameters = []): ?string
	{
		if ($this->account->status()) {
			// Авторизован аккаунт

			foreach (['from', 'to'] as $name) {
				// Перебор фильтров временного промежутка

				// Инициализация значения (приоритет у cookie)
				if (empty($value = (int) ($_COOKIE["tasks_filter_$name"] ?? @$this->session->buffer[$_SERVER['INTERFACE']]['tasks']['filters'][$name] ?? (($name === 'from') ? time() : strtotime('+1 month'))))) continue;

				// Генерация значения для аттрибута "value" для HTML-элемента <input>
				$this->view->{$name} = (int) $value;
			}

			foreach (['confirmed', 'waiting', 'published', 'unpublished', 'problematic', 'hided', 'completed'] as $name) {
				// Перебор фильтров статусов

				// Инициализация значения (приоритет у cookie)
				$value = $_COOKIE["tasks_filter_$name"] ?? @$this->session->buffer[$_SERVER['INTERFACE']]['tasks']['filters'][$name] ?? null;

				// Найдено значение?
				if ($value === null) continue;

				// Генерация класса для HTML-элемента по его состоянию (0 - ОТСУТСТВУЕТ, 1 - И, 2 - ИЛИ)
				$this->view->{$name} = match ($value) {
					'0', 0 => 'earth',
					'1', 1 => 'sand',
					'2', 2 => 'river',
					default => 'earth'
				};
			}

			// Генерация представления
			$main = $this->view->render(DIRECTORY_SEPARATOR . 'pages' . DIRECTORY_SEPARATOR . 'tasks.html');
		} else $main = $this->authorization();

		// Возврат (успех)
		if ($_SERVER['REQUEST_METHOD'] === 'GET') return $this->view->render(DIRECTORY_SEPARATOR . 'index.html', ['main' => $main]);
		else if ($_SERVER['REQUEST_METHOD'] === 'POST') return $main;

		// Возврат (провал)
		return null;
	}

	/**
	 * Заглушка для отправки формы при аутентификации
	 *
	 * Используется для того, чтобы отработали события браузера связанные с отправкой формы
	 *
	 * @param array $parameters Параметры запроса
	 */
	public function entry(array $parameters = []): ?string
	{
		// Возврат (успех)
		return 'хули смотришь сюда выродок';
	}

	/**
	 * Main menu
	 *
	 * @param array $parameters Параметры запроса
	 */
	public function menu(array $parameters = []): ?string
	{
		if ($this->account->status()) {
			// Авторизован аккаунт

			// Генерация и возврат (успех)
			return $this->view->render(DIRECTORY_SEPARATOR . 'menu.html');
		}

		// Возврат (провал)
		return null;
	}
}
