<?php

// Diese Seite lädt alle (Unter)Seiten des Programmeditors

session_start();
$db = new SQLite3('../db-test/test.db');

$view = $_GET["view"];
$meta = $_GET["meta"];

$_SESSION["meta"]=$meta;

$plug = json_decode(file_get_contents("../settings.json"), true)["plug"];


switch($view) {
	default: // Standardseite (Übersicht)
		?>
		<div class="content-header">Programm-Editor - Übersicht</div>
		<div class="action-menu">
			<img src="/vendor/icons/plus.svg" onclick="window.location.href='#program-editor'; pageload('add');" />
		</div>
		<div class="plug-table">
			<?php

			// Hole die Programme aus der Datenbank
			$result = $db->query("SELECT * FROM programs WHERE plug_id = '" . $plug . "';");
			while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
				$results = true;
				?>
				<div class="row">
					<?php
					print('
					<div class="label" style="width: 30%">
						<span>');
							// Stelle die einzelnen Programmziffern dar
							$program_identifiers = $db->query("SELECT * FROM program_id_bits WHERE program_id = '" . $row['id'] . "';");

							while ($program_identifier = $program_identifiers->fetchArray(SQLITE3_ASSOC)) {
								echo '<span class="label-char">' . $program_identifier["value"] . '</span>';
							}
						print('
						</span>
					</div>');

					// Die erforderlichen Brücken werden aus der Datenbank geholt (via program_bridge_relation)
					$bridges_url = [];
					$bridges = $db->query("SELECT * FROM program_bridge_relation WHERE program_id = '" . $row['id'] . "';");

					while ($bridge = $bridges->fetchArray(SQLITE3_ASSOC)) {
						$bridges_url[] = $bridge["bridge_id"];
					}

					$url = '../stecker.php?translate=true&data=' . urlencode(json_encode($bridges_url)); // URL parsen; Modus: Programmanzeige

					print('<img id="bridge-editor-img" style="width: 55%" src="' . $url . '" />');
					// Aktionsmenü (mit hässlichem Inline-Code)
					print('
					<div class="options">
						<img src="/vendor/icons/edit-pencil.svg" onclick="window.location.href=\'#program-editor\'; pageload(\'edit\',\'' . $row['id'] . '\');"/>
						<img src="/vendor/icons/trash.svg"onclick="
						if(confirm(\'Sicher? Diese Änderung kann nicht rückgängig gemacht werden! (Die darin enthaltenen Brücken bleiben erhalten und werden nicht gelöscht	)\') == true){
						save(\'program-editor\',\'remove\',\'' . $row['id'] . '\')
						}" />
					</div>
					');
				?>
				</div>
				<?php
			}
			?>
		</div>
		<?php
		// Wenn Ergebnisliste leer
		if($results != true) {
			print("<p align='center'>Es sind keine Programme für diesen Stecker gespeichert.<br>Eventuell muss ein anderer Stecker gewählt werden.</p>");
		}

	break;

	// Neues Hinzufügen eines Programms
	case "add":

		$meta = json_decode(urldecode($meta), true);
		?>
		<div class="content-header">Programm-Editor - Neu anlegen</div>
		<img id="program-editor-img" src="../stecker.php" />
		<hr />
		<p>Zugehörige Brücken</p>
		<i>Wählen Sie die Brücken, welche von diesem Programm gefordert werden</i>

		<div class="program-field">
			<?php

			//zählen der Ergebnisse
			$result = $db->query("SELECT COUNT(*) as anzahl FROM bridges WHERE plug_id = '" . $plug . "';");
			$row = $result->fetchArray(SQLITE3_ASSOC);
			$results_full = $row['anzahl'];

			$count = 0;
			
			// Holen der Ergebnisse
			$result = $db->query("SELECT * FROM bridges WHERE plug_id = '" . $plug . "';");

			// Zeigt ein horizonales Auswhl-Menü an, das alle Brücken als auswahl bietet
			while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
				?>
				<label class="checkbox-container">
					<input onchange="programBridge(<?php echo $results_full; ?>)" type="checkbox" id="programSelect_<?php echo $count; ?>" value="<?php echo $row['id']; ?>">
					<span class="checkbox-text">
						<?php echo $row['id']; ?>
					</span>
				</label>
				<?php
				$count++;
			}

		?>
		</div>
		<hr />
		<p>Name für dieses Programm</p>
		<i>
			Hinweis: Der Name kann aus Sicherheitsgründen im Nachhinein nicht mehr geändert werden. Bei dieser Stellwerksart ist die ID fünfstellig<br>Ein '-' kennzeichnet ein "Don't-Care". Darüber hinaus sind  nur Großbuchstaben und Zahlen zugelassen
		</i>
		<div class="distinctly-input">
			<input oninput="distinctlyInput(1)" type="text" maxlength="1" class="code-input" id="distinctlyInput1">
			<input oninput="distinctlyInput(2)" type="text" maxlength="1" class="code-input" id="distinctlyInput2">
			<input oninput="distinctlyInput(3)" type="text" maxlength="1" class="code-input" id="distinctlyInput3">
			<input oninput="distinctlyInput(4)" type="text" maxlength="1" class="code-input" id="distinctlyInput4">
			<input oninput="distinctlyInput(5)" type="text" maxlength="1" class="code-input" id="distinctlyInput5">
		</div>
		<hr />
		<p>Beschreibung für dieses Programm</p>
		<textarea id="program-description" placeholder="Wählen Sie eine möglichst präzise Beschreibung. Zum Beispiel: 'Relaisgruppe für eine nicht isolierte Weiche, die eine einfache Kreuzungsweiche mit Bogenfahrt über den Plusstrang ist'"></textarea>
		<hr />
		<div class="save-button" onclick="save('program-editor','add',<?php echo $results_full; ?>)"><img src="/vendor/icons/floppy-disk.svg" \>Speichern</div>

		<?php

	break;

	case "edit":
		$meta = json_decode(urldecode($meta), true);
		?>
		<div class="content-header">Programm-Editor - Bearbeiten</div>
		<?php
		$bridges_url = [];

		$bridges = $db->query("SELECT * FROM program_bridge_relation WHERE program_id = '" . $meta . "';");

		while ($bridge = $bridges->fetchArray(SQLITE3_ASSOC)) {

			$bridges_url[] = $bridge["bridge_id"];

		}

		$url = '../stecker.php?translate=true&data=' . urlencode(json_encode($bridges_url)); // URL parsen

		print('<img id="program-editor-img" src="../stecker.php?translate=true&data=' . $url . '" />');



		?>

		<hr />
		<p>Zugehörige Brücken</p>
		<i>Wählen Sie die Brücken, welche von diesem Programm gefordert werden</i>

		<div class="program-field">

			<?php
			// Hole Anzahl der Brücken aus der DB
			$number_bridges = $db->query("SELECT COUNT(*) as anzahl FROM bridges WHERE plug_id = '" . $plug . "';");

			$number_bridges = $number_bridges->fetchArray(SQLITE3_ASSOC);
			$number_bridges = $number_bridges['anzahl'];
			$number_joined = 0;
			
			// Hole zunächst ALLE Brücken aus der DB
			$bridges = $db->query("SELECT * FROM bridges WHERE plug_id = '" . $plug . "';");

			while ($bridge = $bridges->fetchArray(SQLITE3_ASSOC)) {

				// schaue nun, ob diese Brücke Teil des Programms ist
				$bridges_contained = $db->query("SELECT COUNT(*) as anzahl FROM program_bridge_relation WHERE plug_id = '" . $plug . "' and bridge_id = '" .  $bridge["id"] . "' and program_id = '" .  $meta . "';");

				$row = $bridges_contained->fetchArray(SQLITE3_ASSOC);
				$number = $row['anzahl'];

				// Die Anzahl gibt Aufschlus darüber, ob Brücke von Programm gefordert ist -> wenn schon vorhanden, markiere diese Brücke schon vor ("checked"-Attribut)
				?>
				<label class="checkbox-container">
				<input onchange="programBridge(<?php echo $number_bridges; ?>)" type="checkbox" <?php if($number > 0) { echo "checked"; } ?> id="programSelect_<?php echo $number_joined; ?>" value="<?php echo $bridge["id"]; ?>">
				<span class="checkbox-text">
					<?php echo $bridge["id"]; ?>
				</span>
				</label>
				<?php

			$number_joined++;
			}

			?>
		</div>
		<hr />
		<p>Name für dieses Programm</p>
		<i>Darf auf Sicherheitsgründen nicht mehr geändert werden</i>

		<div class="distinctly-input">
			<?php
			// Hole die ganzen Programmbezeichner raus aus der DB
			$program_identifiers = $db->query("SELECT * FROM program_id_bits WHERE program_id = '" . $meta . "' ORDER BY position;");
			while ($program_identifier = $program_identifiers->fetchArray(SQLITE3_ASSOC)) {
				echo '<input type="text" maxlength="1" value="' . $program_identifier["value"] . '" disabled class="code-input">';
			}
			
			// Vorausgefüllte Programmbezeichnung
			$description = ($row = $db->querySingle("SELECT program_description FROM programs WHERE id = '$meta' and plug_id = '$plug'", true)) ? $row['program_description'] : null;

			?>
		</div>
		<hr />
		<p>Beschreibung für dieses Programm</p>
		<textarea id="program-description" value="Value" placeholder="Wählen Sie eine möglichst präzise Beschreibung. Zum Beispiel: 'Relaisgruppe für eine nicht isolierte Weiche, die eine einfache Kreuzungsweiche mit Bogenfahrt über den Plusstrang ist'"><?php  echo $description;  ?></textarea>
		<hr />
		<div class="save-button" onclick="save('program-editor','edit',<?php echo $number_bridges; ?>)"><img src="/vendor/icons/floppy-disk.svg" \>Speichern</div>

		<?php
	break;
}
