using Inspectron.Epson.PrintServer.ConfigurationSources; namespace EpsonPrintService; public static class HtmlPageBuilder { public static string BuildConfigPage( EpsonPrintServiceConfiguration? currentConfig, bool printServerRunning, UsbKeyResult? usbResult, string? errorMessage = null) { var statusColor = printServerRunning ? "#2e7d32" : "#e65100"; var statusText = printServerRunning ? "Running" : "Not Configured"; return $@" Epson Print Server

Epson Print Server

Status: {statusText}

{(currentConfig != null ? $@"

Restaurant ID: {Escape(currentConfig.RestaurantId)}

API URL: {Escape(currentConfig.ApiUrl ?? "(not set)")}

" : "")}
{(errorMessage != null ? $@"
{Escape(errorMessage)}
" : "")} {BuildUsbSection(usbResult)}
Refresh
"; } private static string BuildUsbSection(UsbKeyResult? usbResult) { if (usbResult == null) return ""; if (usbResult.Error != null && !usbResult.Found) return $@"

{Escape(usbResult.Error)}

"; if (!usbResult.Found) return @"

No USB drive with print_server_key.txt found. Insert a USB drive and press Refresh.

"; if (usbResult.Error != null) return $@"
USB key found but invalid: {Escape(usbResult.Error)}
"; return $@"
USB Key Found

Restaurant ID: {Escape(usbResult.DecodedRestaurantId ?? "?")}

API URL: {Escape(usbResult.DecodedApiUrl ?? "?")}

"; } public static string BuildSuccessPage(EpsonPrintServiceConfiguration newConfig) { return $@" Configuration Updated

Configuration Updated!

The configuration has been saved. The service will restart automatically.

Restaurant ID: {Escape(newConfig.RestaurantId)}

API URL: {Escape(newConfig.ApiUrl ?? "(not set)")}

This page will refresh in 10 seconds...

"; } private static string Escape(string value) => System.Net.WebUtility.HtmlEncode(value); }