<?php

namespace WoWPress\Frontend\Widgets;

use Peast\Syntax\Node\Class_;
use WoWPress\Frontend\ToggleButton;
use WoWPress\Models\Character;

class CharacterSearch extends Widget
{

	protected $template_path = "char_search.php";
	protected $title = "Charaktersuche";
	protected $base_id = "wowpress_char_search";
	public $name = "Charaktersuche";
	protected $restricted = false;

	protected $classes = [
		'Druid' => [
			'Feral',
			'Balance',
			'Guardian',
			'Restoration',
		],
		'Death Knight' => [
			'Frost',
			'Unholy',
			'Blood'
		],


		'Evoker' => [
			'Augmentation',
			'Devastation',
			'Preservation',
		],
		'Warrior' => [
			'Arms',
			'Fury',
			'Protection',
		],
		'Paladin' => [
			'Holy',
			'Protection',
			'Retribution',
		],
		'Hunter' => [
			'Beast Mastery',
			'Marksmanship',
			'Survival',
		],
		'Rogue' => [
			'Assassination',
			'Outlaw',
			'Subtlety',
		],
		'Priest' => [
			'Discipline',
			'Shadow',
			'Holy',
		],
		'Shaman' => [
			'Elemental',
			'Enhancement',
			'Restoration',
		],
		'Mage' => [
			'Arcane',
			'Fire',
			'Frost',
		],
		'Warlock' => [
			'Affliction',
			'Demonology',
			'Destruction',
		],

		'Monk' => [
			'Brewmaster',
			'Mistweaver',
			'Windwalker',
		],
		'Demon Hunter' => [
			'Havoc',
			'Vengeance',
		],

	];

	public function hasSpec($specs)
	{
		foreach ($specs as $search) {
				if ($search) {
					return true;
				}
			}
		return false;
	}


	public function form($instance)
	{

?>
		<link rel="stylesheet" type="text/css" href="<?= get_template_directory_uri() ?>/style.css">
		<style>
			input[type=radio] {
				display: none !important;
			}
		</style>

		<div class="p-auto">
			<label for="<?php echo esc_attr($this->get_field_id("text")); ?>"><?php echo esc_html__('Freitext', 'wowpress'); ?></label>
			<textarea class="w-full" name="<?php echo esc_attr($this->get_field_name("text")); ?>" id="<?php echo esc_attr($this->get_field_id("text")); ?>" rows="10"><?=$instance['text']?></textarea>
		</div>

		<div class="flex flex-col gap-2 p-auto">
			<?php
			foreach ($this->classes as $class => $specs) {
				$classname = sanitize($class);

			?>
				<div class="bg-<?= $classname ?> bg-opacity-25 p-auto flex flex-col gap-2">
					<div class="text-center flex flex-col justify-center items-center p-auto">

						<img src="<?= Character::classIconLink($class) ?>" alt="" class="h-8">
						<h2 class="text-xl font-bold text-<?= $classname ?>"><?= translate_string($class) ?></h2>
					</div>
					<?php
					foreach ($specs as $spec) {
						$specname = sanitize($spec);
					?>
						<div class="grid grid-cols-5 gap-2 p-auto border border-<?= $classname ?>">

							<div class="col-span-5">
								<h3 class="text-lg font-bold text-<?= $classname ?>"><?= translate_string($spec) ?></h3>
							</div>

							<img src="<?= Character::specIconLink($class, $spec) ?>" alt="" class="">

							<?php
							(new ToggleButton([
								'type' => 'radio',
								'name' => esc_attr($this->get_field_name("classes[$class][$spec]]")),
								'id' => esc_attr($this->get_field_id("classes[$class][$spec]]")) . "_0",
								'value' => 0,
								'text' => "Kein Bedarf",
								'color' => $classname,
								'icon_yes' => 'o-check',
								'checked' => empty($instance['classes'][$class][$spec]),
								'row' => false,
								'fullHeight' => true,
							]))->render();
							?>
							<?php
							(new ToggleButton([
								'type' => 'radio',
								'name' => esc_attr($this->get_field_name("classes[$class][$spec]]")),
								'id' => esc_attr($this->get_field_id("classes[$class][$spec]]")) . "_1",
								'value' => 1,
								'text' => "Niedrig",
								'color' => $classname,
								'icon_yes' => 'o-check',
								'checked' => $instance['classes'][$class][$spec] == 1,
								'row' => false,
								'fullHeight' => true,
							]))->render();
							?>
							<?php
							(new ToggleButton([
								'type' => 'radio',
								'name' => esc_attr($this->get_field_name("classes[$class][$spec]]")),
								'id' => esc_attr($this->get_field_id("classes[$class][$spec]]")) . "_2",
								'value' => 2,
								'text' => "Mittel",
								'color' => $classname,
								'icon_yes' => 'o-check',
								'checked' => $instance['classes'][$class][$spec] == 2,
								'row' => false,
								'fullHeight' => true,
							]))->render();
							?>
							<?php
							(new ToggleButton([
								'type' => 'radio',
								'name' => esc_attr($this->get_field_name("classes[$class][$spec]]")),
								'id' => esc_attr($this->get_field_id("classes[$class][$spec]]")) . "_3",
								'value' => 3,
								'text' => "Hoch",
								'color' => $classname,
								'icon_yes' => 'o-check',
								'checked' => $instance['classes'][$class][$spec] == 3,
								'row' => false,
								'fullHeight' => true,
							]))->render();
							?>
						</div>

					<?php
					}
					?>
				</div>
			<?php
			}
			?>
		</div>


<?php
	}

	public function update($new_instance, $old_instance)
	{
		$instance          = array();
		$instance['text'] = (!empty($new_instance['text'])) ? strip_tags($new_instance['text']) : '';
		foreach ($this->classes as $class => $specs) {
			foreach ($specs as $spec) {
				$instance['classes'][$class][$spec] = (!empty($new_instance['classes'][$class][$spec])) ? strip_tags($new_instance['classes'][$class][$spec]) : '';
			}
		}

		return $instance;
	}
}
