private static List<Schueler> GetSortedSchuelerList(Klasse klasse) { List<Schueler> schueler = new List<Schueler>(); foreach (var einSchueler in klasse.getSchueler) { schueler.Add(new Schueler(einSchueler)); } schueler.Sort((x, y) => x.NameVorname.CompareTo(y.NameVorname)); return schueler; }
public NotenCheckResults CheckKlasse(Klasse klasse) { IList<INotenCheck> notwendigeNotenchecks = new List<INotenCheck>(); foreach (var ch in alleNotenchecks) { if (ch.CheckIsNecessary(klasse.Jahrgangsstufe, klasse.Schulart, zeitpunkt)) notwendigeNotenchecks.Add(ch); } foreach (var schueler in klasse.getSchueler) { CheckSchueler(new Schueler(schueler),notwendigeNotenchecks); } return res; }
private void Form1_Load(object sender, EventArgs e) { List<Klasse> klassen = new List<Klasse>(); foreach (var klasse in (new KlasseTableAdapter().GetData())) { Klasse dieKlasse = new Klasse(klasse); klassen.Add(dieKlasse); } klassen.Sort((x, y) => x.Bezeichnung.CompareTo(y.Bezeichnung)); treeListView1.Roots = klassen; this.treeListView1.CanExpandGetter = delegate (object x) { return (x is Klasse); }; this.treeListView1.ChildrenGetter = delegate (object x) { return GetSortedSchuelerList((Klasse)x); }; }
public void LoadSchueler(bool nurAktive=true) { diNoDataSet.SchuelerDataTable sListe; int NotStatus = nurAktive?1:255; // Status=1 bedeutet abgemeldet, var ta = new SchuelerTableAdapter(); if (SiehtAlles) sListe = ta.GetDataByStatus(NotStatus); // alle Schüler reinladen else if (IstNurNormalerLehrer) sListe = ta.GetDataByLehrerId(NotStatus,lehrer.Id); // nur eigene Schüler else sListe = ta.GetDataByLehrerIdFPASem(NotStatus,lehrer.Id); // Lehrer mit erweiterten Rollen AnzahlSchueler = sListe.Count; foreach (var sRow in sListe) { Klasse k; Schueler s = new Schueler(sRow); SchuelerRep.Add(s); // Schüler ins Repository aufnehmen if (KlassenRep.Contains(sRow.KlasseId)) { k = KlassenRep.Find(sRow.KlasseId); } else { k = new Klasse(sRow.KlasseId); Klassen.Add(k); KlassenRep.Add(k); } s.getKlasse = k; // dem Schüler die Klasseninstanz zuweisen, damit die nicht jedesmal neu erzeugt werden muss! k.eigeneSchueler.Add(s); // und umgekehrt dieser Klasse den Schüler hinzufügen } // alles sortieren Klassen.Sort((x, y) => x.Bezeichnung.CompareTo(y.Bezeichnung)); foreach (var klasse in Klassen) { klasse.eigeneSchueler.Sort((x, y) => x.NameVorname.CompareTo(y.NameVorname)); if (klasse.KlassenleiterId == lehrer.Id) eigeneKlasse = klasse; } }
// Ermittelt die SA-Wertung für diesen Kurs // todo: strings durch Schlüssel ersetzen public Schulaufgabenwertung GetSchulaufgabenwertung(Klasse klasse) { Jahrgangsstufe jahrgang = klasse.Jahrgangsstufe; // Prüfungsfächer haben immer SA (Vorklasse und 12. 3, sonst 2) if (data.IstSAP) { if (klasse.Jahrgangsstufe == Jahrgangsstufe.Vorklasse || klasse.Jahrgangsstufe == Jahrgangsstufe.Zwoelf) return Schulaufgabenwertung.ZweiZuEins; else return Schulaufgabenwertung.EinsZuEins; } else { if (Kuerzel == "TeIn" || Kuerzel == "VWL" || Kuerzel == "B") return Schulaufgabenwertung.EinsZuEins; else return Schulaufgabenwertung.KurzarbeitenUndExen; } /* oder via SA-Zahl, Problem ist ToString geht grad nicht; ToDo: Strings durch Ids ersetzen var wertung = ada.GetDataByAllInfos(schulart.ToString(), jahrgang.ToString(), zweig.ToString(), fach.Id); if (wertung.Count > 0) { schulaufgabenzahl = wertung[0].AnzahlSA; } wertung = ada.GetDataByAllInfos("ALLE", jahrgang.ToString(), zweig.ToString(), fach.Id); if (wertung.Count > 0) { schulaufgabenzahl = wertung[0].AnzahlSA; } wertung = ada.GetDataByAllInfos("ALLE", jahrgang.ToString(), "ALLE", fach.Id); if (wertung.Count > 0) { schulaufgabenzahl = wertung[0].AnzahlSA; } wertung = ada.GetDataByAllInfos(schulart.ToString(), jahrgang.ToString(), "ALLE", fach.Id); if (wertung.Count > 0) { schulaufgabenzahl = wertung[0].AnzahlSA; } wertung = ada.GetDataByAllInfos("ALLE", "ALLE", zweig.ToString(), fach.Id); if (wertung.Count > 0) { schulaufgabenzahl = wertung[0].AnzahlSA; } wertung = ada.GetDataByAllInfos("ALLE", "ALLE", "ALLE", fach.Id); if (wertung.Count > 0) { schulaufgabenzahl = wertung[0].AnzahlSA; } if (schulaufgabenzahl == 1 || schulaufgabenzahl == 2) { return Schulaufgabenwertung.EinsZuEins; } else if (schulaufgabenzahl > 2) { return Schulaufgabenwertung.ZweiZuEins; } else { log.InfoFormat("keine Schulaufgabenwertung gefunden für: Schulart={0}, Jahrgang={1}, Zweig={2}, Fach={3}. Gehe von Kurzarbeiten und Exen aus.", schulart.ToString(), jahrgang.ToString(), zweig.ToString(), fach.Kuerzel); return Schulaufgabenwertung.KurzarbeitenUndExen; } */ }
public NotenCheckResult(Klasse kl,Kurs k,string m) { schueler = "...mehrmals..."; klasse = kl.Data.Bezeichnung; lehrer = k!=null && k.getLehrer != null ? k.getLehrer.Kuerzel : ""; fach = k!=null ? k.getFach.Kuerzel : ""; meldung = m; }
// Klassenweise Vorauswahl, damit weniger Schüler einzeln erst analysiert werden müssen. private void KlasseInNotenpruefungAufnehmen(Klasse k) { if (zeitpunkt==Zeitpunkt.HalbjahrUndProbezeitFOS || zeitpunkt==Zeitpunkt.ProbezeitBOS && k.Jahrgangsstufe == Jahrgangsstufe.Vorklasse || k.Jahrgangsstufe>=Jahrgangsstufe.Zwoelf && zeitpunkt<=Zeitpunkt.DrittePA || k.Jahrgangsstufe<Jahrgangsstufe.Zwoelf && zeitpunkt==Zeitpunkt.Jahresende) { zuPruefendeKlassen.Add(k); AnzahlSchueler += k.eigeneSchueler.Count; } }
/// <summary> /// Methode für den Klassenwechsel ohne Notenmitnahme. /// </summary> /// <param name="nachKlasse"></param> public void WechsleKlasse(Klasse nachKlasse) { // melde den Schüler aus allen Kursen ab. foreach (var kurs in this.Kurse) { MeldeAb(new Kurs(kurs)); } data.KlasseId = nachKlasse.Data.Id; getKlasse = nachKlasse; Save(); var kurse = AlleNotwendigenKurse(); foreach (var kurs in kurse) { MeldeAn(kurs); } this.Refresh(); }
/// <summary> /// Hole alle Daten von Neuem aus der Datenbank. /// </summary> public void Refresh() { var rst = new SchuelerTableAdapter().GetDataById(this.Id); if (rst.Count == 1) { this.data = rst[0]; } else { throw new InvalidOperationException("Konstruktor Schueler: Ungültige ID."); } this.klasse = null; this.kurse = null; this.noten = null; this.vorkommnisse = null; }