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

namespace Hafenstudios\Leadlotse\WhatsApp;

defined( 'ABSPATH' ) || exit;

/**
 * WhatsApp Click-to-Chat (v1): baut aus einer Telefonnummer und einem optionalen
 * Vorbefuellungstext eine wa.me-URL. Bewusst NUR Click-to-Chat, keine
 * WhatsApp-Business-API in v1. Der Erweiterungspunkt fuer eine spaetere
 * API-Anbindung ist der Filter `leadlotse_whatsapp_url` im FormRenderer.
 *
 * Reine statische Logik ohne WordPress-Abhaengigkeiten (gut testbar).
 */
final class ClickToChat {

	/**
	 * Normalisiert eine Rohnummer auf reine Ziffern im internationalen Format.
	 *
	 * Entfernt alles ausser Ziffern (Plus, Leerzeichen, Klammern, Bindestriche);
	 * ein fuehrendes "00" (internationaler Waehl-Prefix) wird abgeschnitten. Eine
	 * Nummer mit fuehrender "0" (nationales Format, Land unbekannt) oder mit
	 * weniger als 8 Ziffern gilt als ungueltig und liefert einen Leerstring.
	 *
	 * @param string $raw Rohnummer.
	 * @return string Reine Ziffern oder '' (ungueltig).
	 */
	public static function normalize_number( string $raw ): string {
		$digits = (string) preg_replace( '/\D+/', '', $raw );

		// Fuehrendes "00" ist der internationale Waehl-Prefix und faellt weg.
		if ( 0 === strpos( $digits, '00' ) ) {
			$digits = substr( $digits, 2 );
		}

		// Fuehrende "0" bedeutet nationales Format ohne bekanntes Land: ungueltig.
		if ( '' === $digits || '0' === $digits[0] ) {
			return '';
		}

		if ( strlen( $digits ) < 8 ) {
			return '';
		}

		return $digits;
	}

	/**
	 * Baut die wa.me-Chat-URL zu einer Nummer.
	 *
	 * @param string $raw_number   Rohnummer.
	 * @param string $prefill_text Optionaler vorbefuellter Nachrichtentext.
	 * @return string wa.me-URL oder '' bei ungueltiger Nummer.
	 */
	public static function chat_url( string $raw_number, string $prefill_text ): string {
		$digits = self::normalize_number( $raw_number );
		if ( '' === $digits ) {
			return '';
		}

		$url = 'https://wa.me/' . $digits;
		if ( '' !== $prefill_text ) {
			$url .= '?text=' . rawurlencode( $prefill_text );
		}

		return $url;
	}
}
