diff --git a/crafter.cs b/crafter.cs index b1e63ac..c603158 100644 --- a/crafter.cs +++ b/crafter.cs @@ -166,14 +166,24 @@ public class CourseCrafter public static string GenerateStatistics() { + var settings = Settings.Instance; + var students = settings.Students; + if (GeneratedCourses == null || GeneratedCourses.Count == 0) return "Keine Kurse generiert."; + int semesterCount = students + .Where(s => s.Result != null) + .Select(s => s.Result!.Count) + .DefaultIfEmpty(0) + .Max(); + var sb = new System.Text.StringBuilder(); sb.AppendLine($"Anzahl generierter Kurse: {GeneratedCourses.Count}"); sb.AppendLine("Übersicht:"); + // ===== Kursübersicht ===== var grouped = GeneratedCourses .GroupBy(g => new { g.Semester, g.Instance.Sport.Name }) .OrderBy(g => g.Key.Semester) @@ -183,21 +193,35 @@ public class CourseCrafter { int counter = 1; - foreach (var course in group) + foreach (var entry in group) { - string number = counter.ToString("D2"); int semester = group.Key.Semester + 1; string sportName = group.Key.Name; - int studentCount = course.Instance.Students.Count; + string number = counter.ToString("D2"); + int count = entry.Instance.Students.Count; sb.AppendLine( - $"Semester {semester}: {sportName} {number}: {studentCount} Schüler*innen" + $"Semester {semester}: {sportName} {number}: {count} Schüler*innen" ); counter++; } } + sb.AppendLine(); + sb.AppendLine("Fehlerübersicht:"); + + // ===== Fehler pro Semester ===== + for (int sem = 0; sem < semesterCount; sem++) + { + int errors = students.Count(st => + st.Result != null && + st.Result.Count > sem && + st.Result[sem] == "Fehler"); + + sb.AppendLine($"Semester {sem + 1}: {errors} Fehler"); + } + return sb.ToString(); } }