Beispiel #1
0
        private IList<int> GetAlleGueltigenSchuelerIds()
        {
            var result = new List<int>();
              command.CommandText = "SELECT _SCHUELER_ID FROM DSchueler";
              using (var cmdResult = command.ExecuteReader())
              {
            var schuelerTable = new SchuelerTableAdapter();
            while (cmdResult.Read())
            {
              int schuelerId = cmdResult.GetInt32(0);

              if (schuelerTable.GetDataById(schuelerId).Count > 0) // Entferne die Schülerdatensätze aus dem Vorjahr oder sonstige Wartelisten- und Spaßdatensätze
              {
            result.Add(schuelerId);
              }
            }
              }

              return result;
        }
        /// <summary>
        /// Die Methode zum Einlesen der Daten.
        /// </summary>
        /// <param name="fileName">Der Dateiname.</param>
        public static void ReadSchueler(string fileName)
        {
            using (StreamReader reader = new StreamReader(fileName, Encoding.GetEncoding("iso-8859-1")))
              using (SchuelerTableAdapter tableAdapter = new SchuelerTableAdapter())
              using (KlasseTableAdapter klasseTableAdapter = new KlasseTableAdapter())
              {
            while (!reader.EndOfStream)
            {
              string line = reader.ReadLine();
              if (string.IsNullOrEmpty(line))
              {
            log.Debug("Ignoriere Leerzeile");
            continue;
              }

              string[] array = line.Split(new string[] { "\t" }, StringSplitOptions.None);
              string[] cleanArray = array.Select(aString => aString.Trim(new char[] { '\"', ' ', '\n' })).ToArray();

              int klasseId = GetKlasseId(klasseTableAdapter, cleanArray[klasseSpalte].Trim());
              if (klasseId == -1)
              {
            log.Debug("Ignoriere einen Schüler ohne richtige Klasse. Übergebene Klasse war " + cleanArray[klasseSpalte]);
            continue;
              }

              // wenn der Schüler noch nicht vorhanden ist
              if (tableAdapter.GetDataById(int.Parse(cleanArray[schuelerIdSpalte])).Count == 0)
              {
            tableAdapter.Insert(
              int.Parse(cleanArray[schuelerIdSpalte]),
              cleanArray[nachnameSpalte],
              cleanArray[vornameSpalte],
              klasseId,
              cleanArray[rufnameSpalte],
              cleanArray[geschlechtSpalte],
              ParseDate(cleanArray[geburtsdatumSpalte]),
              cleanArray[geburtsortSpalte],
              cleanArray[bekenntnisSpalte],
              cleanArray[anschr1PlzSpalte],
              cleanArray[anschr1OrtSpalte],
              cleanArray[anschr1StrasseSpalte],
              cleanArray[anschr1TelefonSpalte],
              ChangeAusbildungsrichtung(cleanArray[ausbildungsrichtungSpalte]),
              cleanArray[fremdsprache2Spalte],
              cleanArray[reliOderEthikSpalte],
              cleanArray[wahlpflichtfachSpalte],
              cleanArray[wahlfach1Spalte],
              cleanArray[wahlfach2Spalte],
              cleanArray[wahlfach3Spalte],
              cleanArray[wahlfach4Spalte],
              cleanArray[wdh1JahrgangsstufeSpalte],
              cleanArray[wdh2JahrgangsstufeSpalte],
              cleanArray[wdh1GrundSpalte],
              cleanArray[wdh2GrundSpalte],
              ParseDate(cleanArray[probezeitBisSpalte]),
              ParseDate(cleanArray[austrittsdatumSpalte]),
              cleanArray[schulischeVorbildungSpalte],
              cleanArray[beruflicheVorbildungSpalte],
              cleanArray[lrsStoerungSpalte] == "1",
              cleanArray[lrsSchwaecheSpalte] == "1",
              ParseDate(cleanArray[lrsBisDatumSpalte]),
              cleanArray[verwandtschaftsbezeichnungEltern1Spalte],
              cleanArray[nachnameEltern1Spalte],
              cleanArray[vornameEltern1Spalte],
              cleanArray[anredeEltern1Spalte],
              cleanArray[nachnameEltern2Spalte],
              cleanArray[vornameEltern2Spalte],
              cleanArray[anredeEltern2Spalte],
              cleanArray[verwandtschaftsbezeichnungEltern2Spalte]
              );
              }
            }
              }
        }
Beispiel #3
0
        /// <summary>
        /// Methode importiert die Zeugnisnoten des Vorjahres.
        /// </summary>
        /// <param name="fileName">Der Dateiname.</param>
        public static void ImportiereNoten(string fileName)
        {
            using (FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
              using (StreamReader reader = new StreamReader(stream))
              {
            var schuelerAdapter = new SchuelerTableAdapter();
            var fpaAdapter = new FpANotenTableAdapter();
            Dictionary<string, Kurs> kurse = GetKursverzeichnis();
            kurse.Add("G", GetGeschichteKurs());

            while (!reader.EndOfStream)
            {
              string[] line = reader.ReadLine().Split(SeparatorChar);
              int schuelerId = int.Parse(line[0]);
              var schuelerGefunden = schuelerAdapter.GetDataById(schuelerId);
              if (schuelerGefunden == null || schuelerGefunden.Count == 0)
              {
            continue;
              }

              var schueler = new Schueler(schuelerGefunden[0]);
              if (schueler.getKlasse.Jahrgangsstufe == Jahrgangsstufe.Zwoelf)
              {
            // nur bei Schülern in der zwölften Klasse wird irgendetwas importiert
            if (line.Length == 5)
            {
              //notenzeile
              string nachname = line[1];
              string fachKuerzel = line[2];
              string lehrerKuerzel = line[3];

              if (string.IsNullOrEmpty(line[4])) // was das heißt ist aber auch fraglich. keine Note?
              {
                continue;
              }

              byte zeugnisnote = byte.Parse(line[4]);

              if (schueler.getKlasse.Jahrgangsstufe == Jahrgangsstufe.Zwoelf)
              {
                schueler.MeldeAn(kurse[fachKuerzel.ToUpper()]);
                BerechneteNote bnote = new BerechneteNote(kurse[fachKuerzel.ToUpper()].Id, schueler.Id);
                bnote.ErstesHalbjahr = false;
                bnote.JahresfortgangGanzzahlig = zeugnisnote;
                bnote.Abschlusszeugnis = zeugnisnote;
                bnote.writeToDB();
              }
            }
            else if (line.Length == 3)
            {
              //FpA-Zeile
              string nachname = line[1];
              int gesamterfolg = int.Parse(line[2]);
              fpaAdapter.Insert(schuelerId, "", null, null, null, null, gesamterfolg, null, null);
            }
            else
              throw new InvalidOperationException("Diese Zeile hat " + line.Length + " Spalten. Das ist mir unbekannt");
              }
            }
              }

              TrageFehlendeSchülerInDummykurseEin();
        }
Beispiel #4
0
        /// <summary>
        /// Methode importiert die Zeugnisnoten des Vorjahres.
        /// </summary>
        /// <param name="fileName">Der Dateiname.</param>
        public static void ImportiereNotenAusWinSD(string fileName)
        {
            using (FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
              using (StreamReader reader = new StreamReader(stream))
              {
            var schuelerAdapter = new SchuelerTableAdapter();
            var fpaAdapter = new FpANotenTableAdapter();
            Kurs geschichte = GetGeschichteKurs();
            Dictionary<string, Kurs> kurse = new Dictionary<string, Kurs>();
            kurse.Add("W11", FindOrCreateDummyKurs("Rechtslehre aus elfter Jahrgangsstufe", "Rl"));
            kurse.Add("S11", FindOrCreateDummyKurs("Chemie aus elfter Jahrgangsstufe", "C"));
            kurse.Add("T11", FindOrCreateDummyKurs("TZ aus elfter Jahrgangsstufe", "TZ"));
            kurse.Add("A11", null); // laut Stundentafel legt der Agrarzweig außer Geschichte nichts ab.

            while (!reader.EndOfStream)
            {
              string[] line = reader.ReadLine().Split(SeparatorChar);
              if (line.Length == 5)
              {
            //notenzeile
            int schuelerId = int.Parse(line[0]);
            string faecherspiegel = line[1];
            fpaNote fpaNote = OmnisDB.Konstanten.GetFpaNoteFromString(line[2]);
            byte? geschichteNote = string.IsNullOrEmpty(line[3]) ? (byte?)null : byte.Parse(line[3]);
            byte? zweitesAbgelegtesFachNote = string.IsNullOrEmpty(line[4]) ? (byte?)null : byte.Parse(line[4]);

            var schuelerGefunden = schuelerAdapter.GetDataById(schuelerId);
            if (schuelerGefunden == null || schuelerGefunden.Count == 0)
            {
              continue;
            }

            var schueler = new Schueler(schuelerGefunden[0]);

            if (geschichteNote != null)
            {
              TrageNoteEin(geschichte, (byte)geschichteNote, schueler);
            }
            Kurs zweitesFach = kurse[faecherspiegel];
            if (zweitesFach != null && zweitesAbgelegtesFachNote != null)
            {
              TrageNoteEin(zweitesFach, (byte)zweitesAbgelegtesFachNote, schueler);
            }

            fpaAdapter.Insert(schuelerId, "", null, null, null, null, (int)fpaNote,null,null);
              }
              else
            throw new InvalidOperationException("Diese Zeile hat " + line.Length + " Spalten. Das ist mir unbekannt");
            }
              }

              TrageFehlendeSchülerInDummykurseEin();
        }
Beispiel #5
0
        /// <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());
            }
              }
        }
Beispiel #6
0
        /// <summary>
        /// Die Methode zum Einlesen der Daten.
        /// </summary>
        /// <param name="fileName">Der Dateiname.</param>
        public static void ReadSchueler(string fileName)
        {
            using (StreamReader reader = new StreamReader(fileName, Encoding.GetEncoding("iso-8859-1")))
              using (SchuelerTableAdapter tableAdapter = new SchuelerTableAdapter())
              using (KlasseTableAdapter klasseTableAdapter = new KlasseTableAdapter())
              {
            while (!reader.EndOfStream)
            {
              string line = reader.ReadLine();
              if (string.IsNullOrEmpty(line))
              {
            log.Debug("Ignoriere Leerzeile");
            continue;
              }

              string[] array = line.Split(new string[] { "\t" }, StringSplitOptions.None);
              string[] cleanArray = array.Select(aString => aString.Trim(new char[] { '\"', ' ', '\n' })).ToArray();

              //TODO: Schueler nicht in Teilklassen stecken (bei Mischklassen, vor allem FOS/BOS-Mischung problematisch)
              var klasse = GetKlasseId(klasseTableAdapter, cleanArray[klasseSpalte].Trim());
              if (klasse == null)
              {
            log.Debug("Ignoriere einen Schüler ohne richtige Klasse. Übergebene Klasse war " + cleanArray[klasseSpalte]);
            continue;
              }

              // wenn der Schüler noch nicht vorhanden ist
              var table = tableAdapter.GetDataById(int.Parse(cleanArray[schuelerIdSpalte]));
              diNoDataSet.SchuelerRow row = (table.Count == 0) ? table.NewSchuelerRow() : table[0];
              FillRow(cleanArray, klasse, row);
              if (table.Count == 0)
              {
            table.AddSchuelerRow(row);
              }

              row.AcceptChanges();
              tableAdapter.Update(row);

              // Diese Zeile meldet den Schüler bei allen notwendigen Kursen seiner Klasse an
              new Schueler(row).WechsleKlasse(new Klasse(klasse));
            }
              }
        }