Notenübersicht der Gruppe (Matrix, Gesamt-Spalte, Sortierung, Halbjahresfilter), Einzelnoten-Pflege samt Sammelerfassung, Gewichtungsschema mit Voreinstellung je Gruppentyp, Zeugnisnoten-Berechnung mit Übersteuern/Festschreiben/Export und Notenentwicklung im Schülerdetail. Dazu Anwesenheits-/Hausaufgaben-Tracking je Mitarbeit-Sitzung, ein neuer Mitarbeits-Assistent (Zeitleiste mit Abschnitten, automatischer Notenvorschlag, Zusammenzug zur Halbjahresnote) und eine Dashboard-Kachel für offene Entschuldigungen. Außerdem: verbliebene englische Begriffe in Auswahlfeldern und Buttons auf Deutsch umgestellt.
83 lines
3.3 KiB
C#
83 lines
3.3 KiB
C#
namespace LehrerApp.Core.Models;
|
|
|
|
public class Grade
|
|
{
|
|
public Guid Id { get; set; } = Guid.NewGuid();
|
|
public Guid StudentId { get; set; }
|
|
public Guid GroupId { get; set; }
|
|
public GradeCategory Category { get; set; }
|
|
public string Value { get; set; } = "";
|
|
public DateOnly Date { get; set; }
|
|
public double Weight { get; set; } = 1.0;
|
|
public string? Note { get; set; }
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|
}
|
|
public enum GradeCategory { Oral, Homework, Participation, Project, Other }
|
|
|
|
/// <summary>
|
|
/// Prozentuale Gewichtung von Klausuren/Mitarbeit/sonstigen Leistungen für die Zeugnisnote.
|
|
/// Entweder gruppenspezifisch (<see cref="GroupId"/> gesetzt) oder als Voreinstellung je
|
|
/// Gruppentyp (<see cref="GroupType"/> gesetzt, <see cref="GroupId"/> null).
|
|
/// </summary>
|
|
public class GradingScheme
|
|
{
|
|
public Guid Id { get; set; } = Guid.NewGuid();
|
|
public Guid? GroupId { get; set; }
|
|
public GroupType? GroupType { get; set; }
|
|
public double ExamsPercent { get; set; }
|
|
public double ParticipationPercent { get; set; }
|
|
public double OtherPercent { get; set; }
|
|
public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
|
|
}
|
|
|
|
public class Unit
|
|
{
|
|
public Guid Id { get; set; } = Guid.NewGuid();
|
|
public Guid GroupId { get; set; }
|
|
public string Title { get; set; } = "";
|
|
public DateOnly? StartDate { get; set; }
|
|
public DateOnly? EndDate { get; set; }
|
|
public List<string> Competencies { get; set; } = [];
|
|
public UnitStatus Status { get; set; } = UnitStatus.Planned;
|
|
public string? Notes { get; set; }
|
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
|
public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
|
|
}
|
|
public class Lesson
|
|
{
|
|
public Guid Id { get; set; } = Guid.NewGuid();
|
|
public Guid UnitId { get; set; }
|
|
public Guid GroupId { get; set; }
|
|
public DateOnly Date { get; set; }
|
|
public int? LessonNumber { get; set; }
|
|
public string Topic { get; set; } = "";
|
|
public string? Phase { get; set; }
|
|
public List<string> Methods { get; set; } = [];
|
|
public List<string> Materials { get; set; } = [];
|
|
public string? Homework { get; set; }
|
|
public string? Reflection { get; set; }
|
|
public LessonStatus Status { get; set; } = LessonStatus.Planned;
|
|
public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
|
|
}
|
|
public enum UnitStatus { Planned, Active, Completed }
|
|
public enum LessonStatus { Planned, Conducted }
|
|
|
|
/// <summary>
|
|
/// Zeugnisnote eines Schülers in einer Lerngruppe für einen Zeitraum (Halbjahr/Gesamtjahr).
|
|
/// <see cref="CalculatedValue"/> ist das zuletzt berechnete Ergebnis; <see cref="OverrideValue"/>
|
|
/// überschreibt es bei pädagogischem Ermessen (erfordert <see cref="OverrideReason"/>).
|
|
/// Nach dem Festschreiben (<see cref="IsLocked"/>) wird der Datensatz nicht mehr neu berechnet.
|
|
/// </summary>
|
|
public class ReportGrade
|
|
{
|
|
public Guid Id { get; set; } = Guid.NewGuid();
|
|
public Guid StudentId { get; set; }
|
|
public Guid GroupId { get; set; }
|
|
public string Period { get; set; } = "";
|
|
public string CalculatedValue { get; set; } = "";
|
|
public string? OverrideValue { get; set; }
|
|
public string? OverrideReason { get; set; }
|
|
public bool IsLocked { get; set; }
|
|
public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
|
|
}
|