namespace LehrerApp.Core.Models; // ── Schülerdokumentation ────────────────────────────────────────────────────── public class Documentation { public Guid Id { get; set; } = Guid.NewGuid(); public Guid StudentId { get; set; } public Guid? GroupId { get; set; } // optional – nicht immer kursbezogen public DocumentationType Type { get; set; } public DateOnly Date { get; set; } public string Title { get; set; } = ""; public string Content { get; set; } = ""; public List Participants { get; set; } = []; // für Gesprächsnotizen public AbsenceData? AbsenceData { get; set; } public SupportData? SupportData { get; set; } public bool IsConfidential { get; set; } // DSGVO: besonders schützenswert public DateTime CreatedAt { get; set; } = DateTime.UtcNow; public DateTime UpdatedAt { get; set; } = DateTime.UtcNow; } public class AbsenceData { public int LessonCount { get; set; } public bool Excused { get; set; } public string? Reason { get; set; } } public class SupportData { public List Measures { get; set; } = []; public DateOnly? ReviewDate { get; set; } public SupportStatus Status { get; set; } = SupportStatus.Active; } public enum DocumentationType { Conversation, Incident, SupportPlan, Absence } public enum SupportStatus { Active, Completed, Paused } // ── Arbeitszeit & Aufgaben ──────────────────────────────────────────────────── public class WorkTask { public Guid Id { get; set; } = Guid.NewGuid(); public string Title { get; set; } = ""; public TaskCategory Category { get; set; } public Guid? GroupId { get; set; } public DateOnly? DueDate { get; set; } public int? EstimatedMinutes { get; set; } public WorkTaskStatus Status { get; set; } = WorkTaskStatus.Open; public string? Notes { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; public DateTime UpdatedAt { get; set; } = DateTime.UtcNow; } public class TimeEntry { public Guid Id { get; set; } = Guid.NewGuid(); public Guid? TaskId { get; set; } public string Category { get; set; } = ""; public Guid? GroupId { get; set; } public DateOnly Date { get; set; } public TimeOnly? StartTime { get; set; } public TimeOnly? EndTime { get; set; } public int DurationMinutes { get; set; } public string? Description { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; } public enum TaskCategory { Correction, Preparation, Admin, Meeting, Other } public enum WorkTaskStatus { Open, InProgress, Done }