This commit is contained in:
@@ -379,35 +379,42 @@ public partial class ClassTeacherDetailsViewModel : ObservableObject
|
||||
continue;
|
||||
}
|
||||
|
||||
var events = new List<ClassTeacherCalendarEvent>();
|
||||
foreach (var absence in absences.Where(a => a.Date == date).OrderBy(a => a.StudentDisplayName))
|
||||
{
|
||||
var (code, label, color, kind) = absence.IsUnexcused
|
||||
? ("U", "Unentschuldigt gefehlt", "#C62828", ClassTeacherCalendarEventKind.Unexcused)
|
||||
: absence.IsLate
|
||||
? ("V", "Verspätet", "#EF6C00", ClassTeacherCalendarEventKind.Late)
|
||||
: absence.FriendlyStatusLabel.Contains("Entschuldigt", StringComparison.OrdinalIgnoreCase)
|
||||
? ("E", "Entschuldigt gefehlt", "#2E7D32", ClassTeacherCalendarEventKind.Excused)
|
||||
: ("A", "Abwesend", "#1565C0", ClassTeacherCalendarEventKind.Absent);
|
||||
events.Add(new ClassTeacherCalendarEvent(absence.StudentDisplayName, code, label, color, kind));
|
||||
}
|
||||
|
||||
foreach (var entry in registerEntries.Where(e => e.Date == date).OrderBy(e => e.StudentDisplayName))
|
||||
{
|
||||
var isHomework = ContainsHomework(entry);
|
||||
if (isHomework && !includeHomework) continue;
|
||||
if (!entry.IsDangerStatus && !isHomework) continue;
|
||||
events.Add(new ClassTeacherCalendarEvent(entry.StudentDisplayName,
|
||||
isHomework ? "H" : "!", isHomework ? "Hausaufgaben" : "Negativer Klassenbucheintrag",
|
||||
isHomework ? "#6A1B9A" : "#8E24AA",
|
||||
isHomework ? ClassTeacherCalendarEventKind.Homework : ClassTeacherCalendarEventKind.ClassRegister));
|
||||
}
|
||||
|
||||
result.Add(new ClassTeacherCalendarDay(date, events));
|
||||
result.Add(new ClassTeacherCalendarDay(date,
|
||||
BuildDayEvents(date, absences, registerEntries, includeHomework)));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static IReadOnlyList<ClassTeacherCalendarEvent> BuildDayEvents(DateOnly date,
|
||||
IReadOnlyList<ClassAbsenceDaySummaryRow> absences,
|
||||
IReadOnlyList<ClassTeacherClassRegisterRow> registerEntries, bool includeHomework)
|
||||
{
|
||||
var events = new List<ClassTeacherCalendarEvent>();
|
||||
foreach (var absence in absences.Where(a => a.Date == date).OrderBy(a => a.StudentDisplayName))
|
||||
{
|
||||
var (code, label, color, kind) = absence.IsUnexcused
|
||||
? ("U", "Unentschuldigt gefehlt", "#C62828", ClassTeacherCalendarEventKind.Unexcused)
|
||||
: absence.IsLate
|
||||
? ("V", "Verspätet", "#EF6C00", ClassTeacherCalendarEventKind.Late)
|
||||
: absence.FriendlyStatusLabel.Contains("Entschuldigt", StringComparison.OrdinalIgnoreCase)
|
||||
? ("E", "Entschuldigt gefehlt", "#2E7D32", ClassTeacherCalendarEventKind.Excused)
|
||||
: ("A", "Abwesend", "#1565C0", ClassTeacherCalendarEventKind.Absent);
|
||||
events.Add(new ClassTeacherCalendarEvent(absence.StudentDisplayName, code, label, color, kind));
|
||||
}
|
||||
|
||||
foreach (var entry in registerEntries.Where(e => e.Date == date).OrderBy(e => e.StudentDisplayName))
|
||||
{
|
||||
var isHomework = ContainsHomework(entry);
|
||||
if (isHomework && !includeHomework) continue;
|
||||
if (!entry.IsDangerStatus && !isHomework) continue;
|
||||
events.Add(new ClassTeacherCalendarEvent(entry.StudentDisplayName,
|
||||
isHomework ? "H" : "!", isHomework ? "Hausaufgaben" : "Negativer Klassenbucheintrag",
|
||||
isHomework ? "#6A1B9A" : "#8E24AA",
|
||||
isHomework ? ClassTeacherCalendarEventKind.Homework : ClassTeacherCalendarEventKind.ClassRegister));
|
||||
}
|
||||
return events;
|
||||
}
|
||||
|
||||
private static bool ContainsHomework(ClassTeacherClassRegisterRow entry) =>
|
||||
entry.CategoryName?.Contains("Hausauf", StringComparison.OrdinalIgnoreCase) == true ||
|
||||
entry.Text?.Contains("Hausauf", StringComparison.OrdinalIgnoreCase) == true;
|
||||
|
||||
Reference in New Issue
Block a user