/// <summary> /// Konstruktor. /// </summary> /// <param name="sourceFileName">Der Dateiname des Exportfiles der leeren DZeugnis-Tabelle.</param> /// <param name="targetFileName">Der Dateiname des zu erstellenden ImportFiles der DZeugnis-Tabelle.</param> public DZeugnisFileController(string sourceFileName, string targetFileName, Zeitpunkt zeitpunkt) { Faecherspiegel faecher = new Faecherspiegel(); SchuelerTableAdapter ada = new SchuelerTableAdapter(); using (FileStream inStream = new FileStream(sourceFileName, FileMode.Open, FileAccess.Read)) using (StreamReader reader = new StreamReader(inStream, Encoding.GetEncoding("iso-8859-1"))) using (FileStream outStream = new FileStream(targetFileName, FileMode.Create, FileAccess.Write)) using (StreamWriter writer = new StreamWriter(outStream, Encoding.GetEncoding("iso-8859-1"))) { while (!reader.EndOfStream) { var zeile = new VerwalteZeile(reader.ReadLine()); int schuelerId = int.Parse(zeile[Konstanten.schuelerIdCol]); // Prüfe vorher, ob der Schüler existiert (hier kommen tausend Schüler aus den Vorjahren) if (ada.GetDataById(schuelerId).Count == 0) { continue; } Schueler schueler = Zugriff.Instance.SchuelerRep.Find(schuelerId); if (BrauchtZeugnis(schueler, zeitpunkt)) { zeile[Konstanten.fpaCol] = Konstanten.GetFpaString(GetFpaNote(zeitpunkt, schueler)); KlassenzielOderGefaehrdung zielerreichung = GetZielerreichung(zeitpunkt, schueler); zeile[Konstanten.klassenzielOderGefaehrdungCol] = Konstanten.GetKlassenzielOderGefaehrdungString(zielerreichung); if (zeitpunkt == Zeitpunkt.ErstePA || zeitpunkt == Zeitpunkt.ZweitePA || zeitpunkt == Zeitpunkt.DrittePA) { zeile[Konstanten.zeugnisartCol] = zielerreichung == KlassenzielOderGefaehrdung.AbschlusspruefungOhneErfolg ? "J" : "A"; zeile[Konstanten.APBestandenCol] = Konstanten.GetBestandenString(GetBestanden(zeitpunkt, schueler)); } zeile[Konstanten.abweisungCol] = Konstanten.GetAbweisungString(schueler.GefahrDerAbweisung); var seminarfachNote = new SeminarfachnoteTableAdapter().GetDataBySchuelerId(schuelerId); if (seminarfachNote != null && seminarfachNote.Count == 1 && !seminarfachNote[0].IsGesamtnoteNull()) { zeile[Konstanten.seminarfachGesamtnote] = string.Format(CultureInfo.CurrentCulture, "{0:00}", seminarfachNote[0].Gesamtnote); zeile[Konstanten.seminarfachThema] = !string.IsNullOrEmpty(seminarfachNote[0].ThemaKurz) ? seminarfachNote[0].ThemaKurz : seminarfachNote[0].ThemaLang.Substring(0, 128); } string faecherspiegel = zeile[Konstanten.faecherspiegelCol]; if (string.IsNullOrEmpty(faecherspiegel)) { log.Warn("Für den Schüler " + schueler.NameVorname + " gibt es keinen passenden Fächerspiegel!"); continue; } for (int i = 0; i < 30; i++) { zeile[Konstanten.notePflichtfach1Col + i] = faecher.GetFachNoteString(faecherspiegel, i, schueler.getKlasse.Schulart, schueler, zeitpunkt); } if (Konstanten.ZeugnisartFromString(zeile[Konstanten.zeugnisartCol]) != Zeugnisart.Zwischenzeugnis) { for (int i = 0; i < 20; i++) { zeile[Konstanten.jahresfortgangPflichtfach1Col + i] = faecher.FindeJahresfortgangsNoten(faecherspiegel, i, schueler.getKlasse.Schulart, schueler, zeitpunkt); zeile[Konstanten.APschriftlichPflichtfach1Col + i] = faecher.FindeAPSchriftlichNoten(faecherspiegel, i, schueler.getKlasse.Schulart, schueler, zeitpunkt); zeile[Konstanten.APmuendlichPflichtfach1Col + i] = faecher.FindeAPMuendlichNoten(faecherspiegel, i, schueler.getKlasse.Schulart, schueler, zeitpunkt); zeile[Konstanten.gesamtNoteMitAPGanzzahlig1Col + i] = faecher.GetFachNoteString(faecherspiegel, i, schueler.getKlasse.Schulart, schueler, zeitpunkt); } } SucheWahlpflichtfach(zeitpunkt, faecher, zeile, schueler, Konstanten.weiteresFach1BezeichnungCol, Konstanten.weiteresFach1NoteCol); SucheWahlpflichtfach(zeitpunkt, faecher, zeile, schueler, Konstanten.weiteresFach2BezeichnungCol, Konstanten.weiteresFach2NoteCol); SucheWahlpflichtfach(zeitpunkt, faecher, zeile, schueler, Konstanten.weiteresFach3BezeichnungCol, Konstanten.weiteresFach3NoteCol); } // rausgeschrieben werden immer alle Zeugnisse, da im Import "ersetzen" angehakt werden muss writer.WriteLine(zeile.ToString()); } } }