CI / build-and-test (push) Canceled after 0s
Neuer 4. Tab in der Klassenlehreransicht: bündelt Titel, Beschreibung, Schlagwörter, verknüpfte Dokumentation und angeheftete (eingefrorene) WebUntis-Klassenbucheinträge zu einem laufenden Problem mit einer/einem oder mehreren Schüler*innen. Anheften direkt aus dem Klassenbuch-Tab per Rechtsklick. Sync-fähig nach dem bestehenden Documentation-Muster. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
50 lines
2.5 KiB
C#
50 lines
2.5 KiB
C#
namespace LehrerApp.Core.Models;
|
|
|
|
/// <summary>
|
|
/// Fallmappe für ein konkretes, laufendes Problem mit einer/einem oder mehreren Schüler*innen
|
|
/// (z.B. Schuleschwänzen, wiederholte Hausaufgaben-Verweigerung, ein Konflikt) — bündelt Titel,
|
|
/// Problembeschreibung, Schlagwörter sowie die dazugehörigen <see cref="Documentation"/>-Einträge
|
|
/// und eingefrorene WebUntis-Klassenbucheinträge an einem Ort, statt sie über datumsgefilterte
|
|
/// Listen verstreut zu lassen. Bewusst nur Referenzen (<see cref="DocumentationIds"/>) statt
|
|
/// gecachtem Inhalt — die Datenmenge pro Lehrkraft ist klein genug, dass ein Cache nur
|
|
/// Invalidierungs-Komplexität einführen würde, ohne echten Nutzen (siehe TODO.md, Präzedenzfall
|
|
/// 5.3.3: eine Plan-ID-Gruppierung für Förderpläne wurde aus demselben Grund verworfen).
|
|
/// </summary>
|
|
public class Vorgang
|
|
{
|
|
public Guid Id { get; set; } = Guid.NewGuid();
|
|
public string Title { get; set; } = "";
|
|
public string Description { get; set; } = "";
|
|
public List<Guid> StudentIds { get; set; } = [];
|
|
/// Freie Labels, z.B. "Absentismus", "Hausaufgaben", "Verspätungen", "Konflikte" —
|
|
/// siehe VorgangTagDisplay.Suggestions im Desktop-Projekt für die Vorschlagsliste.
|
|
public List<string> Tags { get; set; } = [];
|
|
public VorgangStatus Status { get; set; } = VorgangStatus.Open;
|
|
public List<Guid> DocumentationIds { get; set; } = [];
|
|
public List<VorgangClassRegisterEntry> ClassRegisterEntries { get; set; } = [];
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|
public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
|
|
public DateTime? ClosedAt { get; set; }
|
|
public bool IsDeleted { get; set; }
|
|
public DateTime? DeletedAt { get; set; }
|
|
}
|
|
|
|
public enum VorgangStatus { Open, Closed }
|
|
|
|
/// <summary>
|
|
/// Eingefrorene Kopie einer WebUntis-Klassenbuchzeile zum Zeitpunkt des Anheftens an einen
|
|
/// <see cref="Vorgang"/> — keine Referenz per ID, da weder <c>UntisForeignClassRegisterEventDto</c>
|
|
/// noch <c>UntisClassRegisterCacheEntry</c> eine über einen Cache-Refresh hinweg stabile ID haben.
|
|
/// </summary>
|
|
public class VorgangClassRegisterEntry
|
|
{
|
|
public DateOnly Date { get; set; }
|
|
public string StudentName { get; set; } = "";
|
|
public string? Subject { get; set; }
|
|
public string? TeacherUsername { get; set; }
|
|
public string? CategoryName { get; set; }
|
|
public string? CategoryGroup { get; set; }
|
|
public string? Text { get; set; }
|
|
public DateTime PinnedAt { get; set; } = DateTime.UtcNow;
|
|
}
|