Nutzer-Feedback: Klassenlehrer ist eine Rolle für die ganze Klasse, unabhängig vom eigenen Unterricht - die Anbindung an ein LearningGroup.IsClassTeacher-Flag mit Tab in der Gruppendetailansicht war deshalb der falsche Ort. Ersetzt durch: - Klassenauswahl in den WebUntis-Einstellungen (WebUntisSettingsService.HomeroomClassName), über den bestehenden WebUntis-Klassenpicker. - Eigener Sidebar-Bereich "Klassenlehrer" statt Gruppen-Tab. - Zwei Ebenen: kompakte Roster-Übersicht mit Ampel-Symbolen (Fehlzeiten heute, Klassenbuch-Badge) und Details (die bisherigen Rohdaten-Listen, jetzt gefiltert auf einzelne Schüler*innen anspringbar). Noch nicht mit echtem WebUntis-Zugang gegengeprüft (siehe TODO.md). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
52 lines
2.4 KiB
C#
52 lines
2.4 KiB
C#
namespace LehrerApp.Core.Models;
|
|
|
|
public class LearningGroup
|
|
{
|
|
public Guid Id { get; set; } = Guid.NewGuid();
|
|
public string Name { get; set; } = "";
|
|
public GroupType Type { get; set; }
|
|
public Guid? SubjectId { get; set; }
|
|
public string SchoolYear { get; set; } = "";
|
|
public int GradeLevel { get; set; }
|
|
public GradingSystem GradingSystem { get; set; }
|
|
public int? HoursPerWeek { get; set; }
|
|
public bool IsActive { get; set; } = true;
|
|
public bool IsOwnClass { get; set; }
|
|
public bool IsDifferentiated { get; set; }
|
|
/// <summary>
|
|
/// Default true (alte Datensätze ohne dieses Feld verhalten sich damit unverändert wie bisher
|
|
/// - LiteDB liefert den C#-Default für fehlende Felder). Für Gruppen wie Klassenrat oder
|
|
/// Willkommenskreis, die keinen inhaltlichen Verlaufsplan brauchen, in den Stammdaten
|
|
/// deaktivierbar - blendet die Erinnerung "Ungeplante Stunden" im Dashboard für diese Gruppe aus.
|
|
/// </summary>
|
|
public bool RequiresLessonPlanning { get; set; } = true;
|
|
/// <summary>
|
|
/// WebUntis-interne Unterrichtsnummer (lsid) dieser Lerngruppe, Grundlage für den Abruf des
|
|
/// "Fehlzeiten pro Unterricht"-Berichts. Wird von WebUntis pro Schuljahr neu vergeben und muss
|
|
/// deshalb händisch je Lerngruppe/Schuljahr gepflegt werden - keine JSON-RPC-Methode liefert sie.
|
|
/// </summary>
|
|
public int? WebUntisLessonId { get; set; }
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|
public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
|
|
}
|
|
/// <summary>
|
|
/// Mitgliedschaft eines Schülers in einer Lerngruppe. Das Schuljahr gehört zur
|
|
/// Lerngruppe und wird deshalb hier nicht ein zweites Mal gespeichert.
|
|
/// </summary>
|
|
public class GroupMembership
|
|
{
|
|
public Guid Id { get; set; } = Guid.NewGuid();
|
|
public Guid StudentId { get; set; }
|
|
public Guid GroupId { get; set; }
|
|
/// <summary>Tag, an dem die Zuordnung in der App angelegt wurde.</summary>
|
|
public DateOnly AddedOn { get; set; } = DateOnly.FromDateTime(DateTime.Today);
|
|
public MembershipPeriod Period { get; set; } = MembershipPeriod.FullYear;
|
|
public DateOnly? JoinedAt { get; set; }
|
|
public DateOnly? LeftAt { get; set; }
|
|
public Niveau? Niveau { get; set; }
|
|
}
|
|
public enum MembershipPeriod { FullYear, H1Only, H2Only, Custom }
|
|
public enum GroupType { Class, Course }
|
|
public enum GradingSystem { Grades1To6, Points0To15 }
|
|
public enum Niveau { E, G, Foerder }
|