namespace LehrerApp.Desktop.ViewModels.ClassTeacher; /// /// WebUntis liefert Schülernamen je nach Bericht in unterschiedlicher Reihenfolge — der /// Schülerreport baut "Vorname Nachname" (), /// die Fehlzeiten-/Klassenbuchberichte liefern typischerweise "Nachname Vorname". Ein exakter /// String-Vergleich zwischen diesen Quellen schlägt deshalb praktisch immer fehl (Bug: gefilterte /// Listen im Klassenlehrer-Bereich blieben leer, Roster-Symbole waren durchgängig falsch). Der /// Vergleich hier ist deshalb reihenfolge-unabhängig: beide Namen werden in Wörter zerlegt und als /// sortierte Menge verglichen (kein Abgleich über eine externe Schülerkennung möglich, da der /// Klassenbuch-Bericht keine liefert, siehe UntisForeignClassRegisterEventDto). /// public static class UntisNameMatching { public static bool NamesMatch(string? a, string? b) => !string.IsNullOrWhiteSpace(a) && !string.IsNullOrWhiteSpace(b) && NameKey(a) == NameKey(b); public static string NameKey(string value) => string.Join(' ', value.Split(' ', StringSplitOptions.RemoveEmptyEntries) .Select(w => w.Trim().ToLowerInvariant()) .OrderBy(w => w, StringComparer.Ordinal)); }