Die App aus der letzten Lektion hat saubere ViewModels, aber ihre Daten stehen im Code. Jetzt kommen sie aus der Web-API der Kladde aus K2, die App meldet sich bei Entra ID an, die Termine liegen als Zwischenspeicher auf dem Rechner, und drei Fehlerfälle sind Zustand im ViewModel: kein Netz, keine gültige Anmeldung, ein Termin, der sich überschneidet.
Wo die Kladde steht
Es gilt W5.2.1: die Bibliothek mit ViewModels, Schnittstellen und Tests. Aus K2 brauchen Sie die Web-API für Kontakte und Termine mit Entra-Anmeldung und der Regel, dass eine Überschneidung mit 409 und dem Code appointment.time.overlaps beantwortet wird. Die API-Seite der Anmeldung (Bearer-Token neben dem Cookie, Rollen) steht in W2.2.2 und ist für WinUI dieselbe; hier steht der Client. IKladdeData wächst um zwei Rückgabetypen:
public enum CreateOutcome { Created, Overlaps, Rejected }
public enum DataSource { Server, Cache }
public sealed record AppointmentList(IReadOnlyList<Appointment> Items, DataSource Source, DateTimeOffset? CachedAt);
// in IKladdeData:
Task<AppointmentList> GetAppointmentsAsync(CancellationToken cancellationToken);
Task<CreateOutcome> AddAppointmentAsync(NewAppointment appointment, CancellationToken cancellationToken);