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 } /// /// Prozentuale Gewichtung von Klausuren/Mitarbeit/sonstigen Leistungen für die Zeugnisnote. /// Entweder gruppenspezifisch ( gesetzt) oder als Voreinstellung je /// Gruppentyp ( gesetzt, null). /// 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 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 Methods { get; set; } = []; public List 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 } /// /// Zeugnisnote eines Schülers in einer Lerngruppe für einen Zeitraum (Halbjahr/Gesamtjahr). /// ist das zuletzt berechnete Ergebnis; /// überschreibt es bei pädagogischem Ermessen (erfordert ). /// Nach dem Festschreiben () wird der Datensatz nicht mehr neu berechnet. /// 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; }