35 Zeilen
1.1 KiB
C#
35 Zeilen
1.1 KiB
C#
namespace PrinterMonitor.Configuration;
|
|
|
|
public class AppSettings
|
|
{
|
|
public List<PrinterConfig> Printers { get; set; } = new();
|
|
|
|
/// <summary>TCP-Port, auf den der Client verbindet (Default: 12164).</summary>
|
|
public int TcpTargetPort { get; set; } = 12164;
|
|
|
|
/// <summary>
|
|
/// Prüft die Konfiguration und gibt eine Liste von Fehlern zurück (leer = gültig).
|
|
/// </summary>
|
|
public List<string> Validate()
|
|
{
|
|
var errors = new List<string>();
|
|
|
|
if (TcpTargetPort < 1 || TcpTargetPort > 65535)
|
|
errors.Add($"TcpTargetPort muss zwischen 1 und 65535 liegen (ist {TcpTargetPort})");
|
|
|
|
foreach (var printer in Printers)
|
|
errors.AddRange(printer.Validate());
|
|
|
|
var duplicateNames = Printers
|
|
.Where(p => !string.IsNullOrWhiteSpace(p.Name))
|
|
.GroupBy(p => p.Name, StringComparer.OrdinalIgnoreCase)
|
|
.Where(g => g.Count() > 1)
|
|
.Select(g => g.Key);
|
|
|
|
foreach (var name in duplicateNames)
|
|
errors.Add($"Druckername '{name}' ist mehrfach vergeben");
|
|
|
|
return errors;
|
|
}
|
|
}
|