internal void Unterrichte() { ExportLessons exportLessons = new ExportLessons(); StudentgroupStudents studentgroupStudents = new StudentgroupStudents(exportLessons); Noten noten = new Noten(); Sortierung sortierung = new Sortierung(); foreach (var schueler in this) { // Alle Unterrichte ohne Studentgroup seiner Klasse werden zugeordnet foreach (var e in exportLessons) { if (e.Klassen.Split('~').Contains(schueler.Klasse.NameUntis) && e.Teacher != null && e.Teacher != "" && e.Subject != null && e.Subject != "" && !Global.ZuIgnorierendeFächer.Contains(e.Subject) && e.StartDate < DateTime.Now && e.Studentgroup == "") { // Wenn es noch keine Note für das Fach gibt if (!(from n in noten where n.Fach == e.Subject where n.StudentId == schueler.Id select n).Any()) { // ... und das Fach mit diesem Lehrer auch noch nicht existiert if (!(from s in schueler.Fächer where s.Lehrerkürzel == e.Teacher where s.KürzelUntis == e.Subject select s).Any()) { schueler.Fächer.Add(new Fach( schueler.Id, schueler.Klasse.NameUntis, e.Subject, e.Teacher, null, sortierung )); } } // Wenn es mehr als eine Note für das selbe Fach vom selben Kollegen gibt. foreach (var note in (from n in noten where n.Fach == e.Subject where n.StudentId == schueler.Id select n).ToList()) { // ... und es das Fach mit dieser Note noch nicht gibt ... if (!(from s in schueler.Fächer where s.KürzelUntis == e.Subject where s.Note == note.PrüfungsartNote select s).Any()) { // ... wird es erneut angelegt if (!(from f in schueler.Fächer where f.KürzelUntis == note.Fach where f.Lehrerkürzel == note.LehrerKürzel where f.Note == note.PrüfungsartNote select f).Any()) { if (e.StartDate < DateTime.Now) { schueler.Fächer.Add(new Fach( schueler.Id, schueler.Klasse.NameUntis, e.Subject, e.Teacher, note, sortierung )); } } } } } } // Alle Gruppen werden zu Unterrichten foreach (var s in studentgroupStudents) { if (s.StudentId == schueler.Id && s.Subject != null && s.Subject != "" && s.StartDate < DateTime.Now) { // Wenn es noch keine Note für das Fach gibt if (!(from n in noten where n.Fach == s.Subject where n.StudentId == schueler.Id select n).Any()) { if (!(from f in schueler.Fächer where f.Lehrerkürzel == (from e in exportLessons where e.Studentgroup == s.Studentgroup where e.Subject == s.Subject where !Global.ZuIgnorierendeFächer.Contains(e.Subject) select e.Teacher).FirstOrDefault() where f.KürzelUntis == s.Subject select f).Any()) { // Fächer, die erst in der Zukunft beginnen, weil Sie extra für die Prüfung angelegt wurde, werden ignoriert. if (s.StartDate < DateTime.Now) { schueler.Fächer.Add(new Fach( schueler.Id, schueler.Klasse.NameUntis, s.Subject, (from e in exportLessons where e.Studentgroup == s.Studentgroup where e.Subject == s.Subject select e.Teacher).FirstOrDefault(), null, sortierung )); } } } // Wenn es mehr als eine Note für das selbe Fach vom selben Kollegen gibt. foreach (var note in (from n in noten where n.Fach == s.Subject where n.StudentId == schueler.Id select n).ToList()) { // ... und es das Fach mit dieser Note noch nicht gibt wird es ... if (!(from f in schueler.Fächer where f.KürzelUntis == s.Subject where f.Note == note.PrüfungsartNote select f).Any()) { // ... sofern das Fach mit diesem Kollegen und dieser Note nicht schon existiert ... if (!(from f in schueler.Fächer where f.KürzelUntis == note.Fach where f.Lehrerkürzel == note.LehrerKürzel where f.Note == note.PrüfungsartNote select f).Any()) { // ... angelegt. if (s.StartDate < DateTime.Now) { schueler.Fächer.Add(new Fach( schueler.Id, schueler.Klasse.NameUntis, s.Subject, note.LehrerKürzel, note, sortierung )); } } } } } } // Prüfung, ob es noch Noten ohne Unterricht gibt. Das ist der Fall, wenn Fächer nach der Unterstuf nicht fortgeführt wurden. foreach (var note in noten) { if (note.StudentId == schueler.Id && (note.Fach.StartsWith("BI") || note.Fach.StartsWith("PH"))) { if (!(from f in schueler.Fächer where f.KürzelUntis == note.Fach select f).Any()) { Console.WriteLine(schueler.Klasse.NameUntis + " " + schueler.Nachname + " hat eine Note in " + note.Fach + " bekommen, aber dieses Fach nicht im Unterricht."); schueler.Fächer.Add(new Fach( schueler.Id, schueler.Klasse.NameUntis, note.Fach + "*", note.LehrerKürzel, note, sortierung )); } } } } }
public Fach(int id, string klasse, string subject, string lehrerkürzel, Note note, Sortierung sortierung) { KürzelUntis = subject; Lehrerkürzel = lehrerkürzel; Note = note == null ? "" : note.PrüfungsartNote; foreach (var s in sortierung) { if (s.FachkürzelAtlantis == KürzelUntis) { if (klasse.StartsWith(s.Bezeichnung)) { Nummer = s.Position1 == 0 ? 99 : s.Position1; break; } } } if (Nummer == 0) { Nummer = 99; } }