<?php
/**
 * @package Hafenstudios\Leadlotse
 */

namespace Hafenstudios\Leadlotse\Admin;

use Hafenstudios\Leadlotse\Templates\PurposeTemplates;

defined( 'ABSPATH' ) || exit;

/**
 * Builder-Seite (Etappe 4b, UX-KONZEPT Screen "Builder" und "Zweck-Galerie").
 *
 * Versteckte Admin-Seite (nicht im Menue): Ziel von "Neues Formular" und
 * "Bearbeiten". Beim Anlegen erscheint zuerst die Zweck-Galerie (8 Vorlagen aus
 * PurposeTemplates), danach der Builder mit drei Bereichen (Felder, Live-
 * Vorschau, Einstellungen). No-Build-React (globale wp.*-Objekte, D13): die
 * eigentliche App liegt in assets/js/builder.js und spricht die REST-API
 * leadlotse/v1/forms (D8).
 */
final class BuilderPage {

	public const SLUG = 'leadlotse-builder';

	/**
	 * URL der Builder-Seite, optional fuer ein Formular.
	 *
	 * @param int $form_id Formular-ID (0 = neues Formular).
	 * @return string
	 */
	public static function url( int $form_id = 0 ): string {
		$args = array( 'page' => self::SLUG );
		if ( $form_id > 0 ) {
			$args['form'] = $form_id;
		}
		return admin_url( add_query_arg( $args, 'admin.php' ) );
	}

	/**
	 * Rendert den Mount-Punkt der Builder-App.
	 *
	 * @return void
	 */
	public function render(): void {
		if ( ! current_user_can( 'hs_manage_forms' ) ) {
			wp_die( esc_html__( 'Sie haben keine Berechtigung, Formulare zu verwalten.', 'leadlotse' ) );
		}

		echo '<div class="wrap hs-leadlotse-builder-wrap">';
		echo '<div id="hs-leadlotse-builder" class="hs-builder-root">';
		echo '<p class="hs-builder-loading">' . esc_html__( 'Der Builder wird geladen.', 'leadlotse' ) . '</p>';
		echo '</div>';
		echo '</div>';
	}

	/**
	 * Liefert die Zweck-Galerie-Daten fuer beide Sprachen (Name, Beschreibung).
	 *
	 * `pro` markiert Vorlagen, die eine Pro-Funktion einschalten (heute nur die
	 * Veranstaltungs-Anmeldung ueber den Event-Block). Sie bleiben in der Galerie
	 * sichtbar und bekommen ohne Lizenz ein Schloss-Schild (L-P1).
	 *
	 * @return array<int, array<string, mixed>>
	 */
	public static function gallery(): array {
		$gallery = array();
		$de      = PurposeTemplates::all( 'de' );
		$en      = PurposeTemplates::all( 'en' );
		foreach ( $de as $key => $tpl ) {
			$gallery[] = array(
				'key'         => $key,
				'name'        => $tpl['name'],
				'description' => $tpl['description'],
				'name_en'     => $en[ $key ]['name'] ?? $tpl['name'],
				'description_en' => $en[ $key ]['description'] ?? $tpl['description'],
				'pro'         => ! empty( $tpl['event'] ),
			);
		}
		return $gallery;
	}
}
